<?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>101448</bug_id>
          
          <creation_ts>2012-11-07 04:50:05 -0800</creation_ts>
          <short_desc>Move childrenAffectedBy bits from RenderStyle to Element</short_desc>
          <delta_ts>2012-11-28 05:10:37 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>robin</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>760531</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-07 04:50:05 -0800</bug_when>
    <thetext>RenderStyle currently contains a number of observed dependencies used for dynamic restyle. Many of these are recorded when children of the element are being styled and not when the element who owns the style is being styled. This complicates the code in a number of places since this changes the style after styling is considered done. It also leads to subtle bugs as seen in bug #98021, and similar bugs must be assumed to exists for accidently sharing other dynamic set flags (though those bugs only leeds to unnecessary restyles).

Since these dependencies do not belong with the style, they should instead be moved to Node or Element. To begin with I suggest moving them to RareData, if they turn out to be too common, we can try to fit some of them into the Node bitflags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760535</commentid>
    <comment_count>1</comment_count>
      <attachid>172759</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-07 04:56:37 -0800</bug_when>
    <thetext>Created attachment 172759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760538</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 04:59:49 -0800</bug_when>
    <thetext>Attachment 172759 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/style/RenderStyle.h:247:  _explicitInheritance is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:251:  _page_break_before is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:257:  _unique is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:258:  _emptyState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:259:  _firstChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:260:  _lastChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760542</commentid>
    <comment_count>3</comment_count>
      <attachid>172759</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-07 05:05:21 -0800</bug_when>
    <thetext>Comment on attachment 172759
Patch

Attachment 172759 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14764122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760544</commentid>
    <comment_count>4</comment_count>
      <attachid>172759</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-07 05:06:11 -0800</bug_when>
    <thetext>Comment on attachment 172759
Patch

Attachment 172759 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14758310</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760562</commentid>
    <comment_count>5</comment_count>
      <attachid>172759</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-07 05:28:23 -0800</bug_when>
    <thetext>Comment on attachment 172759
Patch

Attachment 172759 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14745658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760593</commentid>
    <comment_count>6</comment_count>
      <attachid>172759</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-07 05:47:28 -0800</bug_when>
    <thetext>Comment on attachment 172759
Patch

Attachment 172759 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14763174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760595</commentid>
    <comment_count>7</comment_count>
      <attachid>172776</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-07 05:47:49 -0800</bug_when>
    <thetext>Created attachment 172776
Patch

Sorry for making RenderStyle smaller</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760600</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 05:51:42 -0800</bug_when>
    <thetext>Attachment 172776 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/style/RenderStyle.h:247:  _explicitInheritance is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:251:  _page_break_before is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:257:  _unique is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:258:  _emptyState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:259:  _firstChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:260:  _lastChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760692</commentid>
    <comment_count>9</comment_count>
      <attachid>172776</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-07 07:40:13 -0800</bug_when>
    <thetext>Comment on attachment 172776
Patch

Attachment 172776 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14757390

New failing tests:
fast/css-generated-content/drag-state.html
mathml/presentation/roots.xhtml
mathml/presentation/under.xhtml
mathml/presentation/underover.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760926</commentid>
    <comment_count>10</comment_count>
      <attachid>172776</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-07 11:34:16 -0800</bug_when>
    <thetext>Comment on attachment 172776
Patch

Four tests fail consistently on both mac on chrome. The three mathml tests doesn&apos;t run on Qt (no mathml), and the last test passes on Qt. Where can I see the detailed results from the EWS bots these days?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761129</commentid>
    <comment_count>11</comment_count>
      <attachid>172776</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 16:00:56 -0800</bug_when>
    <thetext>Comment on attachment 172776
Patch

Attachment 172776 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14760507

New failing tests:
touchadjustment/touch-links-active.html
fast/css-generated-content/drag-state.html
mathml/presentation/roots.xhtml
mathml/presentation/under.xhtml
touchadjustment/event-triggered-widgets.html
mathml/presentation/underover.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775393</commentid>
    <comment_count>12</comment_count>
      <attachid>175980</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-26 05:51:38 -0800</bug_when>
    <thetext>Created attachment 175980
Patch

Rebased and fixed regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775398</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 05:57:06 -0800</bug_when>
    <thetext>Attachment 175980 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/rendering/style/RenderStyle.h:249:  _explicitInheritance is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:253:  _page_break_before is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:259:  _affectedByUncommonAttributeSelectors is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:260:  _unique is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:261:  _emptyState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:262:  _firstChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:263:  _lastChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 7 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775459</commentid>
    <comment_count>14</comment_count>
      <attachid>175980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 07:19:28 -0800</bug_when>
    <thetext>Comment on attachment 175980
Patch

Attachment 175980 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14987656

New failing tests:
touchadjustment/touch-links-active.html
touchadjustment/event-triggered-widgets.html
fast/text/atsui-small-caps-punctuation-size.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775482</commentid>
    <comment_count>15</comment_count>
      <attachid>175980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 07:55:05 -0800</bug_when>
    <thetext>Comment on attachment 175980
Patch

Attachment 175980 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14983684

New failing tests:
touchadjustment/touch-links-active.html
touchadjustment/event-triggered-widgets.html
fast/text/atsui-small-caps-punctuation-size.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775533</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-26 09:06:08 -0800</bug_when>
    <thetext>This looks great. Only concern I have is the potential explosion in number of ElementRareDatas if these selectors are used heavily. Do you think that might be an issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775574</commentid>
    <comment_count>17</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-26 09:46:57 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; This looks great. Only concern I have is the potential explosion in number of ElementRareDatas if these selectors are used heavily. Do you think that might be an issue?

It is a possible. The patch needs to be checked for memory-usage regression before landing. If some of the flags turns out to be too common (perhaps affectedByHover), the flag can be moved to Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775589</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-26 10:00:17 -0800</bug_when>
    <thetext>Patch looks like a big improvement to me. Just as a sanity check, could you instrument your local build to count the extra number of RareDatas we make on popular sites (e.g. gmail, facebook, twitter)?

Also, could you add COMPILE_ASSERTS for the sizes of RenderStyle and NodeRareData? Ideally you would do this in a separate patch that we land first. That way, it&apos;s easier to see the effect this patch has on the sizes of these classes. http://trac.webkit.org/browser/trunk/Source/WebCore/css/RuleSet.h#L99 is an example of what I&apos;m asking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775646</commentid>
    <comment_count>19</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-26 10:46:35 -0800</bug_when>
    <thetext>The bug could also use a better title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775757</commentid>
    <comment_count>20</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-26 12:12:36 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 175980 [details])
&gt; Attachment 175980 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/14983684
&gt; 
&gt; New failing tests:
&gt; touchadjustment/touch-links-active.html
&gt; touchadjustment/event-triggered-widgets.html
&gt; fast/text/atsui-small-caps-punctuation-size.html

touchadjustment/event-triggered-widgets.html fails due to an error in the test which is exposed by this patch. The last of the test cases shares style with the earlier test-cases, and therefore also used to share their dependencies, which made touch-adjustment think it was affected by hover/active. 

I think fast/text/atsui-small-caps-punctuation-size.html is currently flaky? 

Still trying to figure out what is going on with touchadjustment/touch-links-active.html.

(In reply to comment #19)
&gt; The bug could also use a better title.

I am open to suggestions. I am also incorporating the test-case from bug #98021 since it also solves that bug, but that bug tittle might be too specific.

Uncouple style-dependencies and style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775764</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-26 12:21:28 -0800</bug_when>
    <thetext>&quot;Style dependencies&quot; is very generic. &quot;Move affectedBy bits from RenderStyle to Element&quot; or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776699</commentid>
    <comment_count>22</comment_count>
      <attachid>176254</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-27 06:18:38 -0800</bug_when>
    <thetext>Created attachment 176254
Patch

Copy local affectedBy bits when style sharing. Perhaps later local and parent affectedBy bits should be split</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776700</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 06:20:58 -0800</bug_when>
    <thetext>Attachment 176254 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/rendering/style/RenderStyle.h:249:  _explicitInheritance is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:253:  _page_break_before is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:259:  _affectedByUncommonAttributeSelectors is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:260:  _unique is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:261:  _emptyState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:262:  _firstChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/rendering/style/RenderStyle.h:263:  _lastChildState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 7 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776736</commentid>
    <comment_count>24</comment_count>
      <attachid>176265</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-27 07:34:09 -0800</bug_when>
    <thetext>Created attachment 176265
Patch

Split affectedBy Hover/Active/Drag into childrenAffectedBy and Style::affectedBy. Further cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776759</commentid>
    <comment_count>25</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-27 08:12:43 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; This looks great. Only concern I have is the potential explosion in number of ElementRareDatas if these selectors are used heavily. Do you think that might be an issue?

With the local affectedBy kept in RenderStyle in the latest version, it is certainly not a problem. I get roughly the same amount of rareData objects created on facebook with an without the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776765</commentid>
    <comment_count>26</comment_count>
      <attachid>176265</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 08:20:12 -0800</bug_when>
    <thetext>Comment on attachment 176265
Patch

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

This patch hides lots of duplicate hasRareData() checks all over the code. Could we return a struct of flags instead?

&gt; Source/WebCore/dom/Element.cpp:1316
&gt; +    bool hasIndirectAdjacentRules = childrenAffectedByForwardPositionalRules();

Again this checks for hasRareData() repeatedly.

&gt; Source/WebCore/page/TouchAdjustment.cpp:79
&gt; +    if (node-&gt;childrenAffectedByActive() || node-&gt;childrenAffectedByHover())

This means you check for the rare data twice now inside those methods. Can we instead use a struct that contains these bitfields and you just return the struct? I don&apos;t like that this means hidden hasRareData() checks all over.

const AffectedByFlags&amp; Node::affectedByFlags() const { return hasRareData() ? rareData()-&gt;styleFlags() : staticDefaultStyleFlags; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776802</commentid>
    <comment_count>27</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-27 08:44:58 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; This means you check for the rare data twice now inside those methods. Can we instead use a struct that contains these bitfields and you just return the struct? I don&apos;t like that this means hidden hasRareData() checks all over.

hasRareData() is a bit test. There is no point in doing anything complicated to avoid it. Inlining the getters in Element might be a good move though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777067</commentid>
    <comment_count>28</comment_count>
      <attachid>176265</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-27 11:59:56 -0800</bug_when>
    <thetext>Comment on attachment 176265
Patch

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

r-, all accessors should move up to Element. Looks good otherwise.

&gt; Source/WebCore/ChangeLog:5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=101448
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=98021

You should probably dupe one of these bugs to another.

&gt; Source/WebCore/dom/Element.cpp:1963
&gt; +bool Element::childrenAffectedByFirstChildRules() const
&gt; +{
&gt; +    return hasRareData() &amp;&amp; elementRareData()-&gt;childrenAffectedByFirstChildRules();
&gt; +}

Might make sense to inline the getters though it is ok to do it if this actually shows up in profiles.

&gt; Source/WebCore/dom/Element.cpp:1968
&gt; +void Element::setChildrenAffectedByFirstChildRules()
&gt; +{
&gt; +    ensureElementRareData()-&gt;setChildrenAffectedByFirstChildRules(true);
&gt; +}

I&apos;m still slightly worried that a bad rule can make large number of Elements have RareData. I guess we&apos;ll see if this is a real problem.

We have some room in the Node bitfield and more could be made. Perhaps the most popular bits could go there instead of RareData.

&gt; Source/WebCore/dom/Node.h:556
&gt; +    bool childrenAffectedByHover() const;
&gt; +    void setChildrenAffectedByHover(bool);
&gt; +    bool childrenAffectedByActive() const;
&gt; +    void setChildrenAffectedByActive(bool);
&gt; +    bool childrenAffectedByDrag() const;
&gt; +    void setChildrenAffectedByDrag(bool);

I don&apos;t think these bits can be set for non-elements either. The accessors should be in Element and the clients should cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777079</commentid>
    <comment_count>29</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-27 12:02:26 -0800</bug_when>
    <thetext>*** Bug 98021 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777108</commentid>
    <comment_count>30</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 12:26:07 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; This means you check for the rare data twice now inside those methods. Can we instead use a struct that contains these bitfields and you just return the struct? I don&apos;t like that this means hidden hasRareData() checks all over.
&gt; 
&gt; hasRareData() is a bit test. There is no point in doing anything complicated to avoid it. Inlining the getters in Element might be a good move though.

Do we know adding this really isn&apos;t slower? When I changed ::renderer() to have a hasRareData check in it there was a 1-2% regression in html5-full-render.html just from accessing renderer() repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777638</commentid>
    <comment_count>31</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-28 01:46:50 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; This means you check for the rare data twice now inside those methods. Can we instead use a struct that contains these bitfields and you just return the struct? I don&apos;t like that this means hidden hasRareData() checks all over.
&gt; &gt; 
&gt; &gt; hasRareData() is a bit test. There is no point in doing anything complicated to avoid it. Inlining the getters in Element might be a good move though.
&gt; 
&gt; Do we know adding this really isn&apos;t slower? When I changed ::renderer() to have a hasRareData check in it there was a 1-2% regression in html5-full-render.html just from accessing renderer() repeatedly.

The overhead of an uninlined function-call is an order of magnitude larger than a bit-check, but moving the definitions to the header files, the calls should be much better optimized, plus a good compiler should be able to optimize the bit-check as well.

The only call that would be called relatively often though is probably the hover-check which is called for every mouse-move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777712</commentid>
    <comment_count>32</comment_count>
      <attachid>176447</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-28 03:42:41 -0800</bug_when>
    <thetext>Created attachment 176447
Patch

Move all the bits to Element, and partially inline accessors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777724</commentid>
    <comment_count>33</comment_count>
      <attachid>176447</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-28 04:04:20 -0800</bug_when>
    <thetext>Comment on attachment 176447
Patch

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

r=me

&gt; Source/WebCore/page/TouchAdjustment.cpp:85
&gt; +        if (renderStyle-&gt;affectedByActive() || renderStyle-&gt;affectedByHover())

This could move to the Node bitfield in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777749</commentid>
    <comment_count>34</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-11-28 04:42:29 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 176447 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176447&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/page/TouchAdjustment.cpp:85
&gt; &gt; +        if (renderStyle-&gt;affectedByActive() || renderStyle-&gt;affectedByHover())
&gt; 
&gt; This could move to the Node bitfield in the future.

Just note that if you do that (like the earlier patches did), that you will need to copy the flags when elements share styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777771</commentid>
    <comment_count>35</comment_count>
      <attachid>176447</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 05:10:30 -0800</bug_when>
    <thetext>Comment on attachment 176447
Patch

Clearing flags on attachment: 176447

Committed r136001: &lt;http://trac.webkit.org/changeset/136001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777772</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 05:10:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172759</attachid>
            <date>2012-11-07 04:56:37 -0800</date>
            <delta_ts>2012-11-07 05:47:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121107135424.patch</filename>
            <type>text/plain</type>
            <size>62328</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM1MGJlOTVlOWFlYTI0
ZTFkYjcyM2MzM2RlZDNiNTU3MzNmN2Q3Ny4uMzAyYjU1MWNiYzdiM2E0ODFkOTA3ZDIxMGUwMmQ0
NDBiODA3YjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTExLTA3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIE1v
dmUgc3R5bGUgZGVwZW5kZW5jaWVzIG91dCBvZiBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZXMgZmFjdHMgb2JzZXJ2ZWQgYWJvdXQgcmVz
dHlsaW5nIGRlcGVuZGVuY2llcyBvdXQgb2YgUmVuZGVyU3R5bGUgYW5kCisgICAgICAgIGludG8g
UmFyZURhdGEgZm9yIE5vZGUgYW5kIEVsZW1lbnQuIFRoaXMgYWxzbyBlbmFibGVzIGZ1cnRoZXIg
Y2xlYW51cAorICAgICAgICBpbiByZWxhdGVkIGNvZGUgdGhhdCB0cmllZCB0byBkZWFsIHdpdGgg
cHJvYmxlbXMgY2F1c2VkIHdpdGggdGhlIHBsYWNlbWVudAorICAgICAgICBvZiB0aGUgZGF0YS4K
KworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01TaWJsaW5nVHJhdmVyc2Fs
U3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYW5TaGFy
ZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudFByZXZl
bnRzU2hhcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFy
ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZEluZGV4KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgor
ICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c3R5bGVBZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFm
ZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6Cisg
ICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVE
YXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZl
Y3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRBZmZlY3Rl
ZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZlY3RlZEJ5QWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeUFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmFmZmVjdGVkQnlEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeURyYWcpOgorICAgICAg
ICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRy
ZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENo
aWxkSW5kZXgpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUb3VjaEFkanVzdG1lbnQ6Om5vZGVSZXNwb25kc1RvVGFwR2VzdHVyZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnVwZGF0ZURyYWdTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVk
RnJvbSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTIt
MTEtMDcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAog
ICAgICAgICBBZGQgcmVwbGFjZVdpdGhMaXRlcmFsKCkgbWV0aG9kIHRvIFdURjo6U3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDM4ZDQxZjc4NDg4NjVkYzhh
YzNjMTY0OTE5MjYzODY0NjU5MWJkMzIuLmVmMTg3M2YwMDMxOTc1Mjk2Mjc3Y2I3MDE2ZGNjNTky
NWYzNDBiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01MjMs
MTAgKzUyMyw5IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCkt
PnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAg
ICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVs
ZXMoKTsKKyAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAg
ICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dENvbnRl
eHQuZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwog
ICAgICAgICBpZiAoIW5leHRDb250ZXh0LmVsZW1lbnQpCkBAIC01MzcsMTAgKzUzNiw5IEBAIFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRD
b250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6Oklu
ZGlyZWN0QWRqYWNlbnQ6Ci0gICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUgJiYg
Y29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUo
KTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAg
ICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICBpZiAoRWxl
bWVudCogcGFyZW50RWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgfQogICAgICAgICBuZXh0Q29udGV4dC5lbGVt
ZW50ID0gY29udGV4dC5lbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CiAgICAgICAg
IG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKQEAgLTgxNCw2ICs4MTIsNyBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEVtcHR5U3RhdGUocmVzdWx0
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSAm
JiAoZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc1NpYmxp
bmdSdWxlcygpIHx8IGVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnVuaXF1ZSgpKSkKQEAgLTgyMywx
MyArODIyLDExIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBm
aXJzdC1jaGlsZCBtYXRjaGVzIHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKLSAg
ICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlm
IChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNG
aXJzdENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Rmlyc3RDaGlsZFN0YXRlKCk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtODM4LDEzICs4MzUsMTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQs
IGMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9G
aXJzdE9mVHlwZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmly
c3QgZWxlbWVudCBvZiBpdHMgdHlwZQotICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHNp
YmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0ZpcnN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBh
cmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVu
dFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAg
ICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1NCw5ICs4NDgsNyBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCwgYwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5p
c0xhc3RDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
OiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRTdHlsZS0+c2V0TGFzdENoaWxkU3RhdGUoKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC04NjYsMTEgKzg1OCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBsYXN0
LW9mLXR5cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwog
ICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RPZlR5cGUoZWxlbWVudCwg
ZWxlbWVudC0+dGFnUU5hbWUoKSk7CkBAIC04ODIsMTEgKzg3MSw4IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYm
IHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
YXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsK
KyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYg
Y2hpbGRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEZpcnN0
Q2hpbGRTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAob25seUNoaWxkICYmIGNoaWxk
U3R5bGUpCkBAIC04OTksMTEgKzg4NSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENo
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTkxNiwxMiArODk5LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0LCBjCiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJs
aW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxl
ID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRTdHlsZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkU3R5bGUtPnNldENoaWxkSW5kZXgoY291bnQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRDaGlsZEluZGV4KGNvdW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dG9yLT5tYXRjaE50aChjb3VudCkpCkBAIC05MzMsMTEgKzkxNCw4IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVu
dCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVt
ZW50c09mVHlwZUJlZm9yZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29u
dGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRD
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC05NDcsMTEgKzkyNSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50
LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBw
YXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFy
ZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlz
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3Ry
YXRlZ3kuY291bnRFbGVtZW50c0FmdGVyKGVsZW1lbnQpOwpAQCAtOTYzLDExICs5MzgsOCBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VO
dGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVz
b2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAg
aWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTAwNSwxMCArOTc3LDggQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIC8vIC4uLmV4Y2VwdCBpZiA6dmlzaXRlZCBt
YXRjaGluZyBpcyBkaXNhYmxlZCBmb3IgYW5jZXN0b3Ivc2libGluZyBtYXRjaGluZy4KICAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50LT5pc0xpbmsoKSAmJiBjb250ZXh0LnZpc2l0ZWRNYXRjaFR5
cGUgPT0gVmlzaXRlZE1hdGNoRW5hYmxlZDsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRHJhZzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0cnVl
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCi0gICAgICAg
ICAgICAgICAgZWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0
cnVlKTsKKyAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RHJhZyh0cnVlKTsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRHJh
Z2dpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTAxOCwxMCArOTg4LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBt
YXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92ZXIgc2hv
dWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ug
d3NqLmNvbS4KICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgY29udGV4dC5pc1N1
YlNlbGVjdG9yIHx8IChzZWxlY3Rvci0+aGFzVGFnKCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
YVRhZykpIHx8IGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZWxlbWVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7CiAgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNl
UHNldWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMDMwLDEwICs5OTgs
OCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4g
cXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRo
IG5vCiAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2ZSBzaG91bGQgbm90IG1hdGNoIGFu
eXRoaW5nLgogICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBjb250ZXh0LmlzU3Vi
U2VsZWN0b3IgfHwgKHNlbGVjdG9yLT5oYXNUYWcoKSAmJiAhZWxlbWVudC0+aGFzVGFnTmFtZShh
VGFnKSkgfHwgZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC5lbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxl
LT5zZXRBZmZlY3RlZEJ5QWN0aXZlUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOworICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsKICAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3Jj
ZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgKaW5kZXggZTU4M2U2YzEzMGM5
N2JkZjU0MDg0YjM3YzQ0MDExZmI2NzQyNDViZC4uYmViZmVmOGU1OWVkOGRmOTViZDJmMmNmZTg5
ZWFmNDU5ZWY2ZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJz
YWxTdHJhdGVnaWVzLmgKQEAgLTgwLDggKzgwLDcgQEAgaW5saW5lIGludCBET01TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCogZWxlbWVudCkgY28K
IHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBSZW5kZXJTdHlsZSog
cyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/
IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2libGluZy0+
Y2hpbGRJbmRleCgpOwogICAgICAgICBpZiAoaW5kZXgpIHsKICAgICAgICAgICAgIGNvdW50ICs9
IGluZGV4OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggN2NjZGZmZmQ3MDY0NWI2MWYxNmM2YzcxNGY0Y2MyZTA3NDFmMGNlNy4uMjQzZDZl
ZWM3MDBkMzJmYjAyOTM1OWU4MzUxYjNjYWE0NDE5YWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzMxLDggKzczMSw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAgICAgLy8gRklY
TUU6IFRoaXMgc3Vja3MsIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGdldCB0aGUgc3R5bGUgZnJvbSB0
aGUgdmlzaXRlZCBzdHlsZSBpdHNlbGYuCiAgICAgYm9vbCBzd2FwVmlzaXRlZFVudmlzaXRlZCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShtX2VsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9tYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKG1fc3R5bGUgJiYgbV9t
YXRjaGVkUnVsZXNbaV0tPmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3Jz
KCk7CisgICAgICAgIGlmIChtX21hdGNoZWRSdWxlc1tpXS0+Y29udGFpbnNVbmNvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9yKCkpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKICAgICAg
ICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IG1fbWF0Y2hlZFJ1bGVzW2ldLT5saW5rTWF0Y2hU
eXBlKCk7CiAgICAgICAgIGlmIChzd2FwVmlzaXRlZFVudmlzaXRlZCAmJiBsaW5rTWF0Y2hUeXBl
ICYmIGxpbmtNYXRjaFR5cGUgIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkKICAgICAgICAg
ICAgIGxpbmtNYXRjaFR5cGUgPSAobGlua01hdGNoVHlwZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZCkgPyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluayA6IFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hWaXNpdGVkOwpAQCAtMTE4Nyw4ICsxMTg3LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVy
OjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2Vs
ZW1lbnQtPmlzTGluaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlLT5h
ZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChlbGVtZW50LT5ob3ZlcmVkKCkgIT0gbV9lbGVtZW50LT5ob3ZlcmVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgIT0gbV9l
bGVtZW50LT5hY3RpdmUoKSkKQEAgLTEyOTEsMTIgKzEyODksMTQgQEAgaW5saW5lIFN0eWxlZEVs
ZW1lbnQqIFN0eWxlUmVzb2x2ZXI6OmZpbmRTaWJsaW5nRm9yU3R5bGVTaGFyaW5nKE5vZGUqIG5v
ZGUsIHVuc2kKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOwog
fQogCi1zdGF0aWMgaW5saW5lIGJvb2wgcGFyZW50U3R5bGVQcmV2ZW50c1NoYXJpbmcoY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorc3RhdGljIGlubGluZSBib29sIHBhcmVudEVsZW1l
bnRQcmV2ZW50c1NoYXJpbmcoY29uc3QgRWxlbWVudCogcGFyZW50RWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpCi0g
ICAgICAgIHx8IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KQotICAgICAgICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSAKLSAgICAgICAgfHwgcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXMoKTsKKyAgICBpZiAoIXBhcmVudEVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRp
b25hbFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKQorICAgICAgICB8fCBwYXJlbnRFbGVtZW50LT5jaGlsZHJl
bkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiB9CiAKIFJlbmRlclN0eWxlKiBTdHls
ZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSgpCkBAIC0xMzEzLDcgKzEzMTMsNyBAQCBSZW5k
ZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogICAgIC8vIElkcyBz
dG9wIHN0eWxlIHNoYXJpbmcgaWYgdGhleSBzaG93IHVwIGluIHRoZSBzdHlsZXNoZWV0cy4KICAg
ICBpZiAobV9zdHlsZWRFbGVtZW50LT5oYXNJRCgpICYmIG1fZmVhdHVyZXMuaWRzSW5SdWxlcy5j
b250YWlucyhtX3N0eWxlZEVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHBhcmVudFN0eWxlUHJldmVudHNTaGFyaW5nKG1f
cGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKG1fZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG1fc3R5
bGVkRWxlbWVudC0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRl
U2hhcmVkU3R5bGUoKQogICAgIGlmIChzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1
bGVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIFRyYWNraW5nIGNoaWxkIGluZGV4IHJl
cXVpcmVzIHVuaXF1ZSBzdHlsZSBmb3IgZWFjaCBub2RlLiBUaGlzIG1heSBnZXQgc2V0IGJ5IHRo
ZSBzaWJsaW5nIHJ1bGUgbWF0Y2ggYWJvdmUuCi0gICAgaWYgKHBhcmVudFN0eWxlUHJldmVudHNT
aGFyaW5nKG1fcGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVudHNTaGFy
aW5nKG1fZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIHNoYXJlRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAppbmRleCBhNjA1Y2QwOGViZGU3ZmI5ZTcyMmQ5ODMyMTBmYTQyZDhkODM2
YmE5Li5kN2RiNjRjOGRhYmZlYWQ5Y2Q1NzNiN2Q0N2U3YTc2ODk1NDE2YzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQogICAgIC8vIG5vdGUgdGhh
dCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5bGUKICAgICAvLyBGSVhNRTogTW92ZSB0byBFbGVt
ZW50CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgYm9vbCByZWFjdHNUb1ByZXNzID0g
cmVuZGVyZXIoKS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCk7CisgICAgICAgIGJv
b2wgcmVhY3RzVG9QcmVzcyA9IHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpOwogICAgICAgICBpZiAo
cmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
KSB7CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVkKGJv
b2wgb3ZlcikKICAgICAvLyBub3RlIHRoYXQgd2UgbmVlZCB0byByZWNhbGMgdGhlIHN0eWxlCiAg
ICAgLy8gRklYTUU6IE1vdmUgdG8gRWxlbWVudAogICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAg
ICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQorICAg
ICAgICBpZiAoc3R5bGVBZmZlY3RlZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDI2NjcyZWNiODlhOWFjNzk2NjhhZjJlOWY0NWVkMzQyNTAzNTNmZGIuLjEzYTg0M2Q2YWY4
Yjc3YjBjNjkxMDc4OGMyN2YzOTVlOTUwNzRlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTExNDMsNiArMTE0Myw3IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgRWxlbWVu
dFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7CiAgICAgICAgIGRhdGEtPnNldElz
SW5DYW52YXNTdWJ0cmVlKGZhbHNlKTsKICAgICAgICAgZGF0YS0+cmVzZXRDb21wdXRlZFN0eWxl
KCk7CisgICAgICAgIGRhdGEtPnJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMoKTsKICAg
ICB9CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdGhpcy0+c2hhZG93KCkpIHsK
QEAgLTEyMTAsMTQgKzEyMTEsMTQgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCiAgICAgLy8gUmVmIGN1cnJlbnRTdHlsZSBpbiBjYXNlIGl0IHdvdWxkIG90
aGVyd2lzZSBiZSBkZWxldGVkIHdoZW4gc2V0dGluZyB0aGUgbmV3IHN0eWxlIGluIHRoZSByZW5k
ZXJlci4KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1cnJlbnRTdHlsZShyZW5kZXJTdHlsZSgp
KTsKICAgICBib29sIGhhc1BhcmVudFN0eWxlID0gcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCkgPyBzdGF0aWNfY2FzdDxib29sPihwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KS0+cmVuZGVyU3R5bGUoKSkgOiBmYWxzZTsKLSAgICBib29sIGhhc0RpcmVjdEFkamFjZW50UnVs
ZXMgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCk7Ci0gICAgYm9vbCBoYXNJbmRpcmVjdEFkamFjZW50UnVsZXMgPSBj
dXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBoYXNEaXJlY3RBZGphY2VudFJ1bGVzID0gY2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOworICAgIGJvb2wgaGFzSW5kaXJlY3RB
ZGphY2VudFJ1bGVzID0gY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwogCiAgICAgaWYgKChjaGFuZ2UgPiBOb0NoYW5nZSB8fCBuZWVkc1N0eWxlUmVjYWxjKCkpKSB7
CiAgICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBFbGVtZW50UmFyZURh
dGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnJlc2V0Q29t
cHV0ZWRTdHlsZSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHko
ZmFsc2UpOworICAgICAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnJlc2V0Q29tcHV0ZWRTdHls
ZSgpOworICAgICAgICAgICAgaWYgKGNoYW5nZSA9PSBGb3JjZSkKKyAgICAgICAgICAgICAgICBl
bGVtZW50UmFyZURhdGEoKS0+cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwogICAg
ICAgICB9CiAgICAgfQogICAgIGlmIChoYXNQYXJlbnRTdHlsZSAmJiAoY2hhbmdlID49IEluaGVy
aXQgfHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewpAQCAtMTIzNSwyNyArMTIzNiw2IEBAIHZvaWQg
RWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSkgewotICAgICAgICAg
ICAgLy8gUHJlc2VydmUgImFmZmVjdGVkIGJ5IiBiaXRzIHRoYXQgd2VyZSBwcm9wYWdhdGVkIHRv
IHVzIGZyb20gZGVzY2VuZGFudHMgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZGlkbid0IGRvIGEgZnVs
bAotICAgICAgICAgICAgLy8gc3R5bGUgY2hhbmdlIChlLmcuLCBvbmx5IGlubGluZSBzdHlsZSBj
aGFuZ2VkKS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlIb3ZlclJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVz
KHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxl
cyh0cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlEcmFnUnVs
ZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0
cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgaWYg
KGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgIGlm
IChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCi0gICAg
ICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
KCk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgaWYgKGNoICE9IE5vQ2hhbmdlIHx8IHBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY3VycmVu
dFN0eWxlLmdldCgpLCBuZXdTdHlsZS5nZXQoKSkgfHwgKGNoYW5nZSA9PSBGb3JjZSAmJiByZW5k
ZXJlci0+cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkpIHx8IHN0eWxlQ2hh
bmdlVHlwZSgpID09IFN5bnRoZXRpY1N0eWxlQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXRBbmltYXRhYmxlU3R5bGUobmV3U3R5bGUuZ2V0KCkpOwpAQCAtMTM4OCw3ICsxMzY4
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBpZiAoIXN0eWxlICYmICFlbGVtZW50LT5zdHls
ZUFmZmVjdGVkQnlFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXN0eWxlIHx8
IChzdHlsZS0+YWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVs
ZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSkpKQorICAgIGlmICghc3R5bGUgfHwgKGVsZW1lbnQtPnN0
eWxlQWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQt
Pmhhc0NoaWxkTm9kZXMoKSkpKQogICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiB9CiAKQEAgLTEzOTgsMTMgKzEzNzgsMTMgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4K
ICAgICAvLyA6ZW1wdHkgc2VsZWN0b3IuCiAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKGUs
IHN0eWxlKTsKICAgICAKLSAgICBpZiAoIXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkg
JiYgc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpKSkKKyAgICBpZiAo
IXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkgJiYgZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
UG9zaXRpb25hbFJ1bGVzKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA6Zmlyc3QtY2hp
bGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sg
YW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSW4g
dGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5n
ZXwgaXMgbm90IDAuCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2Fz
ZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgotICAgIGlmIChz
dHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2Up
IHsKKyAgICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0
ZXJDaGFuZ2UpIHsKICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgogICAgICAg
ICBOb2RlKiBuZXdGaXJzdENoaWxkID0gMDsKICAgICAgICAgZm9yIChuZXdGaXJzdENoaWxkID0g
ZS0+Zmlyc3RDaGlsZCgpOyBuZXdGaXJzdENoaWxkICYmICFuZXdGaXJzdENoaWxkLT5pc0VsZW1l
bnROb2RlKCk7IG5ld0ZpcnN0Q2hpbGQgPSBuZXdGaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7
fTsKQEAgLTE0MjcsNyArMTQwNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxl
Q2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAv
LyA6bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2
ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4K
ICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYg
fGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CisgICAgaWYgKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CiAgICAgICAgIC8v
IEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgogICAgICAgICBOb2RlKiBuZXdMYXN0Q2hpbGQgPSAw
OwogICAgICAgICBmb3IgKG5ld0xhc3RDaGlsZCA9IGUtPmxhc3RDaGlsZCgpOyBuZXdMYXN0Q2hp
bGQgJiYgIW5ld0xhc3RDaGlsZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdMYXN0Q2hpbGQgPSBuZXdM
YXN0Q2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7fTsKQEAgLTE0NTAsNyArMTQzMCw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAvLyBUaGUgKyBzZWxlY3Rvci4gIFdlIG5lZWQg
dG8gaW52YWxpZGF0ZSB0aGUgZmlyc3QgZWxlbWVudCBmb2xsb3dpbmcgdGhlIGluc2VydGlvbiBw
b2ludC4gIEl0IGlzIHRoZSBvbmx5IHBvc3NpYmxlIGVsZW1lbnQKICAgICAvLyB0aGF0IGNvdWxk
IGJlIGFmZmVjdGVkIGJ5IHRoaXMgRE9NIGNoYW5nZS4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgeworICAgIGlm
IChlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgJiYgYWZ0ZXJDaGFu
Z2UpIHsKICAgICAgICAgTm9kZSogZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSAwOwogICAg
ICAgICBmb3IgKGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uID0gYWZ0ZXJDaGFuZ2U7CiAgICAg
ICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gJiYgIWZpcnN0RWxlbWVudEFmdGVy
SW5zZXJ0aW9uLT5pc0VsZW1lbnROb2RlKCk7CkBAIC0xNDY2LDggKzE0NDYsOCBAQCBzdGF0aWMg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBib29sIGZpbgogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2Vy
IGNhbGxiYWNrIGNhc2UsIHNvIHdlIHdvbid0IGRvIGFueSB3b3JrIGZvciB0aGUgZm9yd2FyZCBj
YXNlIGlmIHdlIGRvbid0IGhhdmUgdG8uCiAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
d2UganVzdCBtYXJrIHRoZSBwYXJlbnQgbm9kZSBhcyBjaGFuZ2VkLCBzaW5jZSB3ZSBkb24ndCB3
YW50IHRvIG1ha2UgY2hpbGRyZW5DaGFuZ2VkIE8obl4yKSBieSBjcmF3bGluZyBhbGwgb3VyIGtp
ZHMKICAgICAvLyBoZXJlLiAgcmVjYWxjU3R5bGUgd2lsbCB0aGVuIGZvcmNlIGEgd2FsayBvZiB0
aGUgY2hpbGRyZW4gd2hlbiBpdCBzZWVzIHRoYXQgdGhpcyBoYXMgaGFwcGVuZWQuCi0gICAgaWYg
KChzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGFm
dGVyQ2hhbmdlKSB8fAotICAgICAgICAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSkKKyAgICBpZiAoKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSAmJiBhZnRlckNoYW5nZSkKKyAgICAg
ICAgfHwgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYg
YmVmb3JlQ2hhbmdlKSkKICAgICAgICAgZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBA
IC0xODcxLDE0ICsxODUxLDgyIEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxl
KFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIgPyBkYXRhLT5tX2NvbXB1dGVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxl
KHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIDogZGF0YS0+bV9jb21wdXRlZFN0eWxlLmdldCgpOwog
fQogCitib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKTsKK30KKwogdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCiB7
CiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KHRy
dWUpOwogfQogCi1ib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK2Jv
b2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAoZWxlbWVudFJhcmVE
YXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIHx8IGVsZW1lbnRSYXJl
RGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSk7Cit9CisKK2Jvb2wg
RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29s
IEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29sIEVs
ZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXModHJ1
ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJh
cmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKK30K
Kwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKK30KKworYm9vbCBFbGVtZW50OjpjaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cyh0cnVlKTsKK30KKwordW5zaWduZWQgRWxlbWVudDo6Y2hpbGRJbmRleCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgp
IDogMDsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KQor
eworICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyU3R5bGUoKSkKKyAgICAgICAg
c3R5bGUtPnNldFVuaXF1ZSgpOworICAgIHJhcmVEYXRhLT5zZXRDaGlsZEluZGV4KGluZGV4KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRJc0luQ2FudmFzU3VidHJlZShib29sIGlzSW5DYW52YXNT
dWJ0cmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjc3YjM0NzU0Mjk0ZmUxNjY2MDllZTZmZTVi
NzMzNjQyYjQ1NDcxOS4uZDk5ZTBmMzMwODRiNjc2MTBiMDZjMDNjZmQwMzQ5OTU5MTIxOGNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0yODQsOSArMjg0LDI0IEBAIHB1YmxpYzoKIAogICAgIFJl
bmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCisgICAgLy8g
TWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1
cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGlu
IG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCiAgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0
eSgpOwogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKIAorICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGph
Y2VudFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RB
ZGphY2VudFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKKwogICAgIHZvaWQgc2V0SXNJbkNh
bnZhc1N1YnRyZWUoYm9vbCk7CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNGIxOWNkNDJiMzQ5ZDIxYmIw
NTA5NGM2OTNlZDU3YWNkYjM0ZmU2MS4uMjFmYTY4M2UxMzQ0ZGZkMDdjOGMzYjRjNjJjNWU0M2I1
ZTk1ZTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKICAgICB2b2lk
IHJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2Vy
dmF0aW9ucygpOwogCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5j
ZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwpAQCAtNTMsNiArNTQsMTkgQEAg
cHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7
CiAjZW5kaWYKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0
aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0
YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsKKyAgICB1c2luZyBO
b2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7Cisg
ICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURh
dGE6OmNoaWxkSW5kZXg7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZEluZGV4Owog
CiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVjdGlvbnMoKSBjb25zdAogICAgIHsKQEAgLTE0
MSw2ICsxNTUsMjAgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6fkVsZW1lbnRSYXJlRGF0YSgp
CiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCiB7CiAg
ICAgbV9jb21wdXRlZFN0eWxlLmNsZWFyKCk7CisgICAgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHko
ZmFsc2UpOworICAgIHNldENoaWxkSW5kZXgoMCk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnRS
YXJlRGF0YTo6cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpCit7CisgICAgc2V0QWZm
ZWN0ZWRCeUhvdmVyKGZhbHNlKTsKKyAgICBzZXRBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKKyAg
ICBzZXRBZmZlY3RlZEJ5RHJhZyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlcyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxl
cyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoZmFsc2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMmRjY2EyNmFjODU0NDY4ZGE5
NzZkMTc5YzZkNDEwZjJhODQ3M2NiZC4uZWM5NjQ3ZDMwZWNiY2UxNDQzZjRhYjAwZDZjYzk0ZjA2
MzI4MmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzQxLDEyICszNDEsNiBAQCBOb2RlOjpTdHls
ZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5
bGUqIHMyLCBEb2N1bQogICAgIGVsc2UgaWYgKHMxLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpIHx8IHMyLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQogICAg
ICAgICBjaCA9IEluaGVyaXQ7CiAKLSAgICAvLyBGb3IgbnRoLWNoaWxkIGFuZCBvdGhlciBwb3Np
dGlvbmFsIHJ1bGVzLCB0cmVhdCBzdHlsZXMgYXMgZGlmZmVyZW50IGlmIHRoZXkgaGF2ZQotICAg
IC8vIGNoYW5nZWQgcG9zaXRpb25hbGx5IGluIHRoZSBET00uIFRoaXMgd2F5IHN1YnNlcXVlbnQg
c2libGluZyByZXNvbHV0aW9ucyB3b24ndCBiZSBjb25mdXNlZAotICAgIC8vIGJ5IHRoZSB3cm9u
ZyBjaGlsZCBpbmRleCBhbmQgZXZhbHVhdGUgdG8gaW5jb3JyZWN0IHJlc3VsdHMuCi0gICAgaWYg
KGNoID09IE5vQ2hhbmdlICYmIHMxLT5jaGlsZEluZGV4KCkgIT0gczItPmNoaWxkSW5kZXgoKSkK
LSAgICAgICAgY2ggPSBOb0luaGVyaXQ7Ci0KICAgICAvLyBJZiB0aGUgcHNldWRvU3R5bGVzIGhh
dmUgY2hhbmdlZCwgd2Ugd2FudCBhbnkgU3R5bGVDaGFuZ2UgdGhhdCBpcyBub3QgTm9DaGFuZ2UK
ICAgICAvLyBiZWNhdXNlIHNldFN0eWxlIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggYW55
dGhpbmcgZWxzZS4KICAgICBpZiAoY2ggPT0gTm9DaGFuZ2UgJiYgczEtPmhhc0FueVB1YmxpY1Bz
ZXVkb1N0eWxlcygpKSB7CkBAIC0zODAsNiArMzc0LDM5IEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5v
ZGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIsIERv
Y3VtCiAgICAgcmV0dXJuIGNoOwogfQogCitib29sIE5vZGU6OnN0eWxlQWZmZWN0ZWRCeUFjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+YWZm
ZWN0ZWRCeUFjdGl2ZSgpOworfQorCit2b2lkIE5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2
ZShib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRBZmZlY3RlZEJ5QWN0aXZlKHZhbHVlKTsKK30KKworYm9v
bCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+YWZmZWN0ZWRCeUhvdmVyKCk7Cit9CisKK3ZvaWQgTm9k
ZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUg
fHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0QWZmZWN0ZWRC
eUhvdmVyKHZhbHVlKTsKK30KKworYm9vbCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlEcmFnKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5hZmZlY3RlZEJ5
RHJhZygpOworfQorCit2b2lkIE5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUgfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFy
ZURhdGEoKS0+c2V0QWZmZWN0ZWRCeURyYWcodmFsdWUpOworfQorCiB2b2lkIE5vZGU6OnRyYWNr
Rm9yRGVidWdnaW5nKCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NmU2MjEx
ZDY3OTIwZmFiMDVjNzkxNzViMjQxZjEzOTA4YmUwZjIxLi41ZGYwNGY5YTZkNDdlNzJlMGE4MWEx
YTA4NDA0ZDQyNGFmN2U2MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTU1Myw2ICs1NTMsMTMgQEAgcHVi
bGljOgogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxl
bWVudFNwZWNpZmllciA9IE5PUFNFVURPKSB7IHJldHVybiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsgfQogCisgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlIb3Zl
cigpIGNvbnN0OworICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIoYm9vbCk7CisgICAg
Ym9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0eWxlQWZm
ZWN0ZWRCeUFjdGl2ZShib29sKTsKKyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeURyYWcoKSBjb25z
dDsKKyAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeURyYWcoYm9vbCk7CisKICAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIE5vdGlmaWNhdGlvbiBvZiBkb2N1bWVudCBzdHJ1Y3R1
cmUgY2hhbmdlcyAoc2VlIENvbnRhaW5lck5vZGUuaCBmb3IgbW9yZSBub3RpZmljYXRpb24gbWV0
aG9kcykKICAgICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmY4YThi
MDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkuLmI4YjMzYzY5MzlmMmFjOTQ5M2E0MDRiNTgz
NmY2NDE0YjE0ZTA4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4NSwxNCAr
MTg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3RyZWVTY29wZSgwKQogICAgICAgICAsIG1f
Y2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKKyAgICAgICAgLCBtX2No
aWxkSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkK
ICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKICAgICAgICAgLCBtX25lZWRzRm9jdXNBcHBl
YXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQotICAgICAgICAsIG1fc3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0luQ2FudmFzU3VidHJlZShmYWxzZSkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICwgbV9jb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KGZhbHNlKQogI2VuZGlmCisgICAgICAgICwgbV9zdHlsZUFmZmVjdGVkQnlFbXB0
eShmYWxzZSkKKyAgICAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUhvdmVyKGZhbHNlKQorICAgICAg
ICAsIG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKQorICAgICAgICAsIG1fc3R5bGVBZmZl
Y3RlZEJ5RHJhZyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyhmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC0yOTcsNiArMzA2LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb2N1c2Vk
OyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkgeyBtX2lzRm9jdXNlZCA9IGZv
Y3VzZWQ7IH0KIAorICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyKGJvb2wg
dmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlIb3ZlciA9IHZhbHVlOyB9CisgICAgYm9vbCBhZmZl
Y3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmU7IH0K
KyAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0
ZWRCeUFjdGl2ZSA9IHZhbHVlOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5RHJhZzsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURy
YWcoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsgfQorCiAgICAg
dmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJvdGVjdGVkOgpAQCAtMzExLDIwICszMjcsNDUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZh
bHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB8fCBjaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxk
UnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOyB9
CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZhbHVl
KSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQorICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsgfQorICAgIHZvaWQgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9CisgICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KKyAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsgfQor
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0g
dmFsdWU7IH0KKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGls
ZEluZGV4OyB9CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY2hp
bGRJbmRleCA9IGluZGV4OyB9CiAKIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29w
ZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxk
Tm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBzaG9ydCBtX3RhYkluZGV4OworICAgIHVu
c2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleDsKICAgICBib29sIG1fdGFiSW5kZXhXYXNTZXRFeHBs
aWNpdGx5IDogMTsKICAgICBib29sIG1faXNGb2N1c2VkIDogMTsKICAgICBib29sIG1fbmVlZHNG
b2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggOiAxOwotICAgIGJvb2wgbV9zdHls
ZUFmZmVjdGVkQnlFbXB0eSA6IDE7CiAgICAgYm9vbCBtX2lzSW5DYW52YXNTdWJ0cmVlIDogMTsK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQgOiAxOwogI2VuZGlmCisgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDog
MTsKKyAgICBib29sIG1fc3R5bGVBZmZlY3RlZEJ5SG92ZXIgOiAxOworICAgIGJvb2wgbV9zdHls
ZUFmZmVjdGVkQnlBY3RpdmUgOiAxOworICAgIGJvb2wgbV9zdHlsZUFmZmVjdGVkQnlEcmFnIDog
MTsKKyAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgorICAgIC8vIFdlIG9w
dGltaXplIGZvciA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRp
b25hbCBjaGlsZCBzZWxlY3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKKyAgICAvLyAqLWNoaWxkLW9m
LXR5cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGls
ZHJlbiBjaGFuZ2UgYXQgYWxsLgorICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENo
aWxkUnVsZXMgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyA6IDE7CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMg
OiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
IDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMgOiAxOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBPd25QdHI8VmVj
dG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+ID4gbV9tdXRhdGlvbk9i
c2VydmVyUmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCAyMWYxYzNmODk5ZmIwOTNmYmZmYjgyNDYxYWMxZTBjNWI1M2E4MTlkLi4zODNh
NDY2ZWExNzM0ZmFhMzY1MzMwMTQyOWU1ODI0YmVhNjI1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIzOSwxMSArMjM5LDggQEAgdm9pZCBO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAgICBlbHNlIGlm
IChSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gbV9jb250ZXh0LnBhcmVudFJlbmRlcmVy
KCkpCiAgICAgICAgIG1fY29udGV4dC5zZXRTdHlsZShwYXJlbnRSZW5kZXJlci0+c3R5bGUoKSk7
CiAKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVySXNOZWVkZWQobV9jb250ZXh0KSkgewotICAgICAg
ICBpZiAoZWxlbWVudCAmJiBtX2NvbnRleHQuc3R5bGUoKS0+YWZmZWN0ZWRCeUVtcHR5KCkpCi0g
ICAgICAgICAgICBlbGVtZW50LT5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOworICAgIGlmICgh
bm9kZS0+cmVuZGVyZXJJc05lZWRlZChtX2NvbnRleHQpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNGbG93
VGhyZWFkUGFyZW50KCkgPyBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCkgOiBtX2NvbnRl
eHQucGFyZW50UmVuZGVyZXIoKTsKICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJl
bmRlcmVyKCkgaGVyZSBpbiB0aGUgZmlyc3QgY2xhdXNlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8g
aGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IDNhOTU2OTU2
ZTVmZDc1ODdlYjE2MGVlZTU3ZmY3ZTlkYjNjOTI2MjguLmEwNTZjNDc5NWRmNzNiYjMxMDEzYjhj
ZDlhZThhY2I5Mjg1MDc0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBub2RlUmVzcG9uZHNUb1RhcEdlc3R1cmUoTm9kZSog
bm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG5vZGUtPnJlbmRlclN0eWxlKCkp
IHsKICAgICAgICAgLy8gQWNjZXB0IG5vZGVzIHRoYXQgaGFzIGEgQ1NTIGVmZmVjdCB3aGVuIHRv
dWNoZWQuCi0gICAgICAgIGlmIChub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5QWN0aXZl
UnVsZXMoKSB8fCBub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQor
ICAgICAgICBpZiAobm9kZS0+c3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgfHwgbm9kZS0+c3R5bGVB
ZmZlY3RlZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDRiYjBhM2RjZGIzMmE0YjRkZmM0YjI5MTZjOWNkY2FiYjM3MGNhOTYuLjYyMTA5ODg3YjE4
MDgyZTI4OTFkNTg3MTkyNDBiM2QzYjg4YWNjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTMwLDcgKzI1MzAsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIGJvb2wgdmFsdWVDaGFuZ2Vk
ID0gKGRyYWdPbiAhPSBpc0RyYWdnaW5nKCkpOwogICAgIHNldElzRHJhZ2dpbmcoZHJhZ09uKTsK
LSAgICBpZiAodmFsdWVDaGFuZ2VkICYmIHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnUnVsZXMoKSAm
JiBub2RlKCkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBub2RlKCktPnN0eWxlQWZmZWN0ZWRC
eURyYWcoKSAmJiBub2RlKCkpCiAgICAgICAgIG5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJy
ID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3Vyci0+dXBkYXRlRHJhZ1N0YXRlKGRy
YWdPbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCAxNzlkMzI1NDk1MjZkNzRmNjZmOGJiNWZkOGFhYzZhZWFjOWQ5MmE1Li43MTUwMGJi
NzRmNWEwYjgxNjEwY2NjN2FmMWU3NWM2YWYyY2NhZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTIwMiw2ICsyMDIsNyBAQCB2b2lk
IFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSogb3Ro
ZXIpCiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9IG90aGVyLT5ub25pbmhlcml0
ZWRfZmxhZ3MuX3Bvc2l0aW9uOwogICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgPSBv
dGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZzsKICAgICBub25pbmhlcml0ZWRfZmxh
Z3MuX3RhYmxlX2xheW91dCA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3RhYmxlX2xheW91
dDsKKyAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2V4cGxpY2l0SW5oZXJpdGFuY2UgPSBvdGhlci0+
bm9uaW5oZXJpdGVkX2ZsYWdzLl9leHBsaWNpdEluaGVyaXRhbmNlOwogICAgIG5vbmluaGVyaXRl
ZF9mbGFncy5fdW5pY29kZUJpZGkgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2Rl
QmlkaTsKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlID0gb3RoZXIt
Pm5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmU7CiAgICAgbm9uaW5oZXJpdGVk
X2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcGFn
ZV9icmVha19hZnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKaW5kZXggZWJlOTFiNDI3ZDFhZDNmM2M2MzI2NjQ0MTI4MTQ1NjA1MGFhYzhkZi4uZTQz
ZTlmNGVhMDVjNTE2OTM4MTQxMjRkNTUzNjM2YTI3ZWY1NmRjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEzMyw3NyArMTMzLDYgQEAgY2xh
c3MgUmVuZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclN0eWxlPiB7CiAgICAgZnJp
ZW5kIGNsYXNzIFN0eWxlUmVzb2x2ZXI7IC8vIFNldHMgbWVtYmVycyBkaXJlY3RseS4KIHByb3Rl
Y3RlZDoKIAotICAgIGNsYXNzIFJlbmRlclN0eWxlQml0ZmllbGRzIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFJlbmRlclN0eWxlQml0ZmllbGRzKCkKLSAgICAgICAgICAgIDogbV9hZmZlY3RlZEJ5
VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCi0gICAgICAgICAgICAsIG1fdW5pcXVl
KGZhbHNlKQotICAgICAgICAgICAgLCBtX2FmZmVjdGVkQnlFbXB0eShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9lbXB0eVN0YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgICAgICAgICAsIG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fZmlyc3RDaGlsZFN0YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2xhc3RDaGls
ZFN0YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2V4cGxpY2l0SW5oZXJpdGFuY2UoZmFsc2Up
Ci0gICAgICAgICAgICAsIG1fY2hpbGRJbmRleCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIGFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIGNvbnN0
IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzOyB9Ci0gICAg
ICAgIHZvaWQgc2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKGJvb2wgdmFs
dWUpIHsgbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMgPSB2YWx1ZTsgfQot
ICAgICAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlOyB9Ci0gICAgICAg
IHZvaWQgc2V0VW5pcXVlKGJvb2wgdmFsdWUpIHsgbV91bmlxdWUgPSB2YWx1ZTsgfQotICAgICAg
ICBib29sIGFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeUVtcHR5
OyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUVtcHR5KGJvb2wgdmFsdWUpIHsgbV9hZmZl
Y3RlZEJ5RW1wdHkgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX2VtcHR5U3RhdGU7IH0KLSAgICAgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wg
dmFsdWUpIHsgbV9lbXB0eVN0YXRlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQotICAgICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RD
aGlsZFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1
ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7
IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzID0g
dmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9v
bCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGRTdGF0ZTsgfQot
ICAgICAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IG1fZmlyc3RDaGls
ZFN0YXRlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdENoaWxkU3RhdGU7IH0KLSAgICAgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0
ZShib29sIHZhbHVlKSB7IG1fbGFzdENoaWxkU3RhdGUgPSB2YWx1ZTsgfQotICAgICAgICBib29s
IGV4cGxpY2l0SW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2V4cGxpY2l0SW5oZXJpdGFu
Y2U7IH0KLSAgICAgICAgdm9pZCBzZXRFeHBsaWNpdEluaGVyaXRhbmNlKGJvb2wgdmFsdWUpIHsg
bV9leHBsaWNpdEluaGVyaXRhbmNlID0gdmFsdWU7IH0KLQotICAgICAgICB1bnNpZ25lZCBjaGls
ZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZEluZGV4OyB9Ci0gICAgICAgIHZvaWQgc2V0
Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBiaXRmaWVsZCBpcyAzMi1iaXRz
IGxvbmcsIHdoaWNoIG9wdGltaXplcyBwYWRkaW5nIHdpdGggdGhlCi0gICAgICAgIC8vIGludCBy
ZWZDb3VudCBpbiB0aGUgYmFzZSBjbGFzcy4gQmV3YXJlIHdoZW4gYWRkaW5nIG1vcmUgYml0cy4K
LSAgICAgICAgdW5zaWduZWQgbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMg
OiAxOwotICAgICAgICB1bnNpZ25lZCBtX3VuaXF1ZSA6IDE7Ci0KLSAgICAgICAgLy8gQml0cyBm
b3IgZHluYW1pYyBjaGlsZCBtYXRjaGluZy4KLSAgICAgICAgdW5zaWduZWQgbV9hZmZlY3RlZEJ5
RW1wdHkgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2VtcHR5U3RhdGUgOiAxOwotCi0gICAgICAg
IC8vIFdlIG9wdGltaXplIGZvciA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3Ro
ZXIgcG9zaXRpb25hbCBjaGlsZCBzZWxlY3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKLSAgICAgICAg
Ly8gKi1jaGlsZC1vZi10eXBlLCB3ZSB3aWxsIGp1c3QgZ2l2ZSB1cCBhbmQgcmUtZXZhbHVhdGUg
d2hlbmV2ZXIgY2hpbGRyZW4gY2hhbmdlIGF0IGFsbC4KLSAgICAgICAgdW5zaWduZWQgbV9jaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9j
aGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzIDogMTsKLSAgICAgICAgdW5zaWdu
ZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKLSAgICAg
ICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6
IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fZmlyc3RDaGlsZFN0YXRlIDogMTsKLSAgICAgICAgdW5z
aWduZWQgbV9sYXN0Q2hpbGRTdGF0ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fZXhwbGljaXRJ
bmhlcml0YW5jZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRJbmRleCA6IDIwOyAvLyBQ
bGVudHkgb2YgYml0cyB0byBjYWNoZSBhbiBpbmRleC4KLSAgICB9OwotICAgIFJlbmRlclN0eWxl
Qml0ZmllbGRzIG1fYml0ZmllbGRzOwotCiAgICAgLy8gbm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVz
CiAgICAgRGF0YVJlZjxTdHlsZUJveERhdGE+IG1fYm94OwogICAgIERhdGFSZWY8U3R5bGVWaXN1
YWxEYXRhPiB2aXN1YWw7CkBAIC0yOTQsMTEgKzIyMywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICAgICAgICAgJiYgX3BhZ2VfYnJlYWtfYWZ0ZXIgPT0gb3RoZXIuX3BhZ2VfYnJlYWtfYWZ0ZXIK
ICAgICAgICAgICAgICAgICAmJiBfcGFnZV9icmVha19pbnNpZGUgPT0gb3RoZXIuX3BhZ2VfYnJl
YWtfaW5zaWRlCiAgICAgICAgICAgICAgICAgJiYgX3N0eWxlVHlwZSA9PSBvdGhlci5fc3R5bGVU
eXBlCi0gICAgICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlIb3ZlciA9PSBvdGhlci5fYWZmZWN0
ZWRCeUhvdmVyCi0gICAgICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlBY3RpdmUgPT0gb3RoZXIu
X2FmZmVjdGVkQnlBY3RpdmUKLSAgICAgICAgICAgICAgICAmJiBfYWZmZWN0ZWRCeURyYWcgPT0g
b3RoZXIuX2FmZmVjdGVkQnlEcmFnCiAgICAgICAgICAgICAgICAgJiYgX3BzZXVkb0JpdHMgPT0g
b3RoZXIuX3BzZXVkb0JpdHMKKyAgICAgICAgICAgICAgICAmJiBfZXhwbGljaXRJbmhlcml0YW5j
ZSA9PSBvdGhlci5fZXhwbGljaXRJbmhlcml0YW5jZQogICAgICAgICAgICAgICAgICYmIF91bmlj
b2RlQmlkaSA9PSBvdGhlci5fdW5pY29kZUJpZGkKKyAgICAgICAgICAgICAgICAmJiBfdW5pcXVl
ID09IG90aGVyLl91bmlxdWUKKyAgICAgICAgICAgICAgICAmJiBfZW1wdHlTdGF0ZSA9PSBvdGhl
ci5fZW1wdHlTdGF0ZQorICAgICAgICAgICAgICAgICYmIF9maXJzdENoaWxkU3RhdGUgPT0gb3Ro
ZXIuX2ZpcnN0Q2hpbGRTdGF0ZQorICAgICAgICAgICAgICAgICYmIF9sYXN0Q2hpbGRTdGF0ZSA9
PSBvdGhlci5fbGFzdENoaWxkU3RhdGUKICAgICAgICAgICAgICAgICAmJiBfaXNMaW5rID09IG90
aGVyLl9pc0xpbms7CiAgICAgICAgIH0KIApAQCAtMzEzLDMxICsyNDQsMjcgQEAgcHJvdGVjdGVk
OgogICAgICAgICB1bnNpZ25lZCBfcG9zaXRpb24gOiAzOyAvLyBFUG9zaXRpb24KICAgICAgICAg
dW5zaWduZWQgX2Zsb2F0aW5nIDogMjsgLy8gRUZsb2F0CiAgICAgICAgIHVuc2lnbmVkIF90YWJs
ZV9sYXlvdXQgOiAxOyAvLyBFVGFibGVMYXlvdXQKKyAgICAgICAgdW5zaWduZWQgX2V4cGxpY2l0
SW5oZXJpdGFuY2UgOiAxOyAvLyBFeHBsaWNpdGx5IGluaGVyaXRzIGEgbm9uLWluaGVyaXRlZCBw
cm9wZXJ0eQogCiAgICAgICAgIHVuc2lnbmVkIF91bmljb2RlQmlkaSA6IDM7IC8vIEVVbmljb2Rl
QmlkaQotICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19iZWZvcmUgOiAyOyAvLyBFUGFnZUJy
ZWFrCiAgICAgICAgIC8vIDMyIGJpdHMKKyAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfYmVm
b3JlIDogMjsgLy8gRVBhZ2VCcmVhawogICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19hZnRl
ciA6IDI7IC8vIEVQYWdlQnJlYWsKICAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfaW5zaWRl
IDogMjsgLy8gRVBhZ2VCcmVhawogCiAgICAgICAgIHVuc2lnbmVkIF9zdHlsZVR5cGUgOiA2OyAv
LyBQc2V1ZG9JZAogICAgICAgICB1bnNpZ25lZCBfcHNldWRvQml0cyA6IDc7CisgICAgICAgIHVu
c2lnbmVkIF91bmlxdWUgOiAxOyAvLyBTdHlsZSBjYW4gbm90IGJlIHNoYXJlZC4KKyAgICAgICAg
dW5zaWduZWQgX2VtcHR5U3RhdGUgOiAxOworICAgICAgICB1bnNpZ25lZCBfZmlyc3RDaGlsZFN0
YXRlIDogMTsKKyAgICAgICAgdW5zaWduZWQgX2xhc3RDaGlsZFN0YXRlIDogMTsKIAotICAgICAg
ICBib29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIF9hZmZlY3RlZEJ5SG92ZXI7
IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0
ZWRCeUhvdmVyID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gX2FmZmVjdGVkQnlBY3RpdmU7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3Rl
ZEJ5QWN0aXZlKGJvb2wgdmFsdWUpIHsgX2FmZmVjdGVkQnlBY3RpdmUgPSB2YWx1ZTsgfQotICAg
ICAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gX2FmZmVjdGVkQnlEcmFn
OyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0
ZWRCeURyYWcgPSB2YWx1ZTsgfQogICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJu
IF9pc0xpbms7IH0KICAgICAgICAgdm9pZCBzZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyBfaXNMaW5r
ID0gdmFsdWU7IH0KICAgICBwcml2YXRlOgotICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRCeUhv
dmVyIDogMTsKLSAgICAgICAgdW5zaWduZWQgX2FmZmVjdGVkQnlBY3RpdmUgOiAxOwotICAgICAg
ICB1bnNpZ25lZCBfYWZmZWN0ZWRCeURyYWcgOiAxOwogICAgICAgICB1bnNpZ25lZCBfaXNMaW5r
IDogMTsKICAgICAgICAgLy8gSWYgeW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdp
bGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20o
KQotICAgICAgICAvLyA1NCBiaXRzCisgICAgICAgIC8vIDU2IGJpdHMKICAgICB9IG5vbmluaGVy
aXRlZF9mbGFnczsKIAogLy8gIUVORCBTWU5DIQpAQCAtMzcyLDE1ICsyOTksMTcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uID0gaW5pdGlhbFBvc2l0
aW9uKCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgPSBpbml0aWFsRmxv
YXRpbmcoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQgPSBpbml0
aWFsVGFibGVMYXlvdXQoKTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9leHBsaWNpdElu
aGVyaXRhbmNlID0gZmFsc2U7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJp
ZGkgPSBpbml0aWFsVW5pY29kZUJpZGkoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9w
YWdlX2JyZWFrX2JlZm9yZSA9IGluaXRpYWxQYWdlQnJlYWsoKTsKICAgICAgICAgbm9uaW5oZXJp
dGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gaW5pdGlhbFBhZ2VCcmVhaygpOwogICAgICAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlID0gaW5pdGlhbFBhZ2VCcmVh
aygpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3N0eWxlVHlwZSA9IE5PUFNFVURPOwog
ICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BzZXVkb0JpdHMgPSAwOwotICAgICAgICBub25p
bmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKGZhbHNlKTsKLSAgICAgICAgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUoZmFsc2UpOwotICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWcoZmFsc2UpOworICAgICAgICBub25pbmhlcml0
ZWRfZmxhZ3MuX3VuaXF1ZSA9IGZhbHNlOworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2Vt
cHR5U3RhdGUgPSBmYWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9maXJzdENoaWxk
U3RhdGUgPSBmYWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9sYXN0Q2hpbGRTdGF0
ZSA9IGZhbHNlOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNMaW5rKGZhbHNlKTsK
ICAgICB9CiAKQEAgLTQxOCwxNCArMzQ3LDYgQEAgcHVibGljOgogICAgIGNvbnN0IEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBTdHJpbmc+KiB2YXJpYWJsZXMoKSB7IHJldHVybiAmKHJhcmVJbmhlcml0
ZWREYXRhLT5tX3ZhcmlhYmxlcy0+bV9kYXRhKTsgfQogI2VuZGlmCiAKLSAgICBib29sIGFmZmVj
dGVkQnlIb3ZlclJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVj
dGVkQnlIb3ZlcigpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlUnVsZXMoKSBjb25zdCB7
IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9Ci0gICAgYm9v
bCBhZmZlY3RlZEJ5RHJhZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
LmFmZmVjdGVkQnlEcmFnKCk7IH0KLQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXMo
Ym9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIoYik7IH0KLSAg
ICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyhib29sIGIpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLnNldEFmZmVjdGVkQnlBY3RpdmUoYik7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFn
UnVsZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyhiKTsg
fQotCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3Q7
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7
IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nICE9IE5vRmxvYXQ7IH0KQEAgLTE1
MjIsMzkgKzE0NDMsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0
aW5nTW9kZSB2KSB7IGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gdjsgfQogCi0gICAg
Ly8gVG8gdGVsbCBpZiB0aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmlidXRlIHNlbGVjdG9ycy4gVGhp
cyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgotICAgIGJvb2wgYWZmZWN0ZWRCeVVuY29t
bW9uQXR0cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuYWZmZWN0
ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCk7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVk
QnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIHsgbV9iaXRmaWVsZHMuc2V0QWZmZWN0ZWRC
eVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKHRydWUpOyB9Ci0KLSAgICBib29sIHVuaXF1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLnVuaXF1ZSgpOyB9Ci0gICAgdm9pZCBzZXRVbmlx
dWUoKSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgfQotCi0gICAgLy8gTWV0aG9kcyBm
b3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1cGRhdGVzIChl
LmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGluIG91ciBzaWJs
aW5nIGxpc3QsIGV0Yy4pCi0gICAgYm9vbCBhZmZlY3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2JpdGZpZWxkcy5hZmZlY3RlZEJ5RW1wdHkoKTsgfQotICAgIGJvb2wgZW1wdHlTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmVtcHR5U3RhdGUoKTsgfQotICAgIHZvaWQgc2V0
RW1wdHlTdGF0ZShib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0QWZmZWN0ZWRCeUVtcHR5KHRydWUp
OyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRzLnNldEVtcHR5U3RhdGUo
Yik7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB8fCBj
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXModHJ1ZSk7IH0KLSAgICBib29sIGNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSB7IG1fYml0ZmllbGRzLnNldENoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlE
aXJlY3RBZGphY2VudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRyZW5B
ZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVs
ZHMuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgdm9p
ZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgeyBtX2JpdGZp
ZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHRydWUpOyB9
Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZmlyc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNl
dEZpcnN0Q2hpbGRTdGF0ZSgpIHsgbV9iaXRmaWVsZHMuc2V0VW5pcXVlKHRydWUpOyBtX2JpdGZp
ZWxkcy5zZXRGaXJzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAgICBib29sIGxhc3RDaGlsZFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMubGFzdENoaWxkU3RhdGUoKTsgfQotICAgIHZv
aWQgc2V0TGFzdENoaWxkU3RhdGUoKSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgbV9i
aXRmaWVsZHMuc2V0TGFzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAgICB1bnNpZ25lZCBjaGlsZElu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRJbmRleCgpOyB9Ci0gICAgdm9p
ZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0
cnVlKTsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRJbmRleChpbmRleCk7IH0KKyAgICAvLyBBIHVuaXF1
ZSBzdHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhpbmcgdGhhdCBtYWtlcyBpdCBp
bXBvc3NpYmxlIHRvIHNoYXJlLgorICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLl91bmlxdWU7IH0KKyAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLl91bmlxdWUgPSB0cnVlOyB9CisKKyAgICBib29sIGVtcHR5U3RhdGUoKSBj
b25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5U3RhdGU7IH0KKyAgICB2b2lk
IHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3Mu
X2VtcHR5U3RhdGUgPSBiOyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2ZpcnN0Q2hpbGRTdGF0ZTsgfQorICAgIHZvaWQgc2V0
Rmlyc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9maXJz
dENoaWxkU3RhdGUgPSB0cnVlOyB9CisgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fbGFzdENoaWxkU3RhdGU7IH0KKyAgICB2b2lkIHNl
dExhc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9sYXN0
Q2hpbGRTdGF0ZSA9IHRydWU7IH0KIAogICAgIENvbG9yIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihp
bnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhl
cml0ZWRQcm9wZXJ0aWVzKCkgeyBtX2JpdGZpZWxkcy5zZXRFeHBsaWNpdEluaGVyaXRhbmNlKHRy
dWUpOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmV4cGxpY2l0SW5oZXJpdGFuY2UoKTsgfQorICAgIHZvaWQg
c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB7IG5vbmluaGVyaXRlZF9mbGFn
cy5fZXhwbGljaXRJbmhlcml0YW5jZSA9IHRydWU7IH0KKyAgICBib29sIGhhc0V4cGxpY2l0bHlJ
bmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLl9l
eHBsaWNpdEluaGVyaXRhbmNlOyB9CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172776</attachid>
            <date>2012-11-07 05:47:49 -0800</date>
            <delta_ts>2012-11-26 05:51:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121107144536.patch</filename>
            <type>text/plain</type>
            <size>62647</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM1MGJlOTVlOWFlYTI0
ZTFkYjcyM2MzM2RlZDNiNTU3MzNmN2Q3Ny4uMzAyYjU1MWNiYzdiM2E0ODFkOTA3ZDIxMGUwMmQ0
NDBiODA3YjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTExLTA3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIE1v
dmUgc3R5bGUgZGVwZW5kZW5jaWVzIG91dCBvZiBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZXMgZmFjdHMgb2JzZXJ2ZWQgYWJvdXQgcmVz
dHlsaW5nIGRlcGVuZGVuY2llcyBvdXQgb2YgUmVuZGVyU3R5bGUgYW5kCisgICAgICAgIGludG8g
UmFyZURhdGEgZm9yIE5vZGUgYW5kIEVsZW1lbnQuIFRoaXMgYWxzbyBlbmFibGVzIGZ1cnRoZXIg
Y2xlYW51cAorICAgICAgICBpbiByZWxhdGVkIGNvZGUgdGhhdCB0cmllZCB0byBkZWFsIHdpdGgg
cHJvYmxlbXMgY2F1c2VkIHdpdGggdGhlIHBsYWNlbWVudAorICAgICAgICBvZiB0aGUgZGF0YS4K
KworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01TaWJsaW5nVHJhdmVyc2Fs
U3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYW5TaGFy
ZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudFByZXZl
bnRzU2hhcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFy
ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZEluZGV4KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgor
ICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c3R5bGVBZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFm
ZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6Cisg
ICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVE
YXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZl
Y3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRBZmZlY3Rl
ZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZlY3RlZEJ5QWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeUFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmFmZmVjdGVkQnlEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeURyYWcpOgorICAgICAg
ICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRy
ZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENo
aWxkSW5kZXgpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUb3VjaEFkanVzdG1lbnQ6Om5vZGVSZXNwb25kc1RvVGFwR2VzdHVyZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnVwZGF0ZURyYWdTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVk
RnJvbSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTIt
MTEtMDcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAog
ICAgICAgICBBZGQgcmVwbGFjZVdpdGhMaXRlcmFsKCkgbWV0aG9kIHRvIFdURjo6U3RyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDM4ZDQxZjc4NDg4NjVkYzhh
YzNjMTY0OTE5MjYzODY0NjU5MWJkMzIuLmVmMTg3M2YwMDMxOTc1Mjk2Mjc3Y2I3MDE2ZGNjNTky
NWYzNDBiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01MjMs
MTAgKzUyMyw5IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCkt
PnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAg
ICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVs
ZXMoKTsKKyAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAg
ICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dENvbnRl
eHQuZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwog
ICAgICAgICBpZiAoIW5leHRDb250ZXh0LmVsZW1lbnQpCkBAIC01MzcsMTAgKzUzNiw5IEBAIFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0
b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRD
b250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6Oklu
ZGlyZWN0QWRqYWNlbnQ6Ci0gICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUgJiYg
Y29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUo
KTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAg
ICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICBpZiAoRWxl
bWVudCogcGFyZW50RWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgfQogICAgICAgICBuZXh0Q29udGV4dC5lbGVt
ZW50ID0gY29udGV4dC5lbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CiAgICAgICAg
IG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKQEAgLTgxNCw2ICs4MTIsNyBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEVtcHR5U3RhdGUocmVzdWx0
KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSAm
JiAoZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc1NpYmxp
bmdSdWxlcygpIHx8IGVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnVuaXF1ZSgpKSkKQEAgLTgyMywx
MyArODIyLDExIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBm
aXJzdC1jaGlsZCBtYXRjaGVzIHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKLSAg
ICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlm
IChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNG
aXJzdENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Rmlyc3RDaGlsZFN0YXRlKCk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtODM4LDEzICs4MzUsMTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQs
IGMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9G
aXJzdE9mVHlwZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmly
c3QgZWxlbWVudCBvZiBpdHMgdHlwZQotICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHNp
YmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0ZpcnN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBh
cmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVu
dFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAg
ICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1NCw5ICs4NDgsNyBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCwgYwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5p
c0xhc3RDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
OiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRTdHlsZS0+c2V0TGFzdENoaWxkU3RhdGUoKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC04NjYsMTEgKzg1OCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBsYXN0
LW9mLXR5cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwog
ICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RPZlR5cGUoZWxlbWVudCwg
ZWxlbWVudC0+dGFnUU5hbWUoKSk7CkBAIC04ODIsMTEgKzg3MSw4IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYm
IHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50
U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
YXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFz
dENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsK
KyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYg
Y2hpbGRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEZpcnN0
Q2hpbGRTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAob25seUNoaWxkICYmIGNoaWxk
U3R5bGUpCkBAIC04OTksMTEgKzg4NSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENo
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTkxNiwxMiArODk5LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0LCBjCiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJs
aW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxl
ID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRTdHlsZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkU3R5bGUtPnNldENoaWxkSW5kZXgoY291bnQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRDaGlsZEluZGV4KGNvdW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dG9yLT5tYXRjaE50aChjb3VudCkpCkBAIC05MzMsMTEgKzkxNCw4IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVu
dCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVt
ZW50c09mVHlwZUJlZm9yZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29u
dGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRD
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC05NDcsMTEgKzkyNSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50
LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29s
dmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBw
YXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFy
ZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlz
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3Ry
YXRlZ3kuY291bnRFbGVtZW50c0FmdGVyKGVsZW1lbnQpOwpAQCAtOTYzLDExICs5MzgsOCBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VO
dGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVz
b2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAg
aWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTAwNSwxMCArOTc3LDggQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIC8vIC4uLmV4Y2VwdCBpZiA6dmlzaXRlZCBt
YXRjaGluZyBpcyBkaXNhYmxlZCBmb3IgYW5jZXN0b3Ivc2libGluZyBtYXRjaGluZy4KICAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50LT5pc0xpbmsoKSAmJiBjb250ZXh0LnZpc2l0ZWRNYXRjaFR5
cGUgPT0gVmlzaXRlZE1hdGNoRW5hYmxlZDsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRHJhZzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0cnVl
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCi0gICAgICAg
ICAgICAgICAgZWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0
cnVlKTsKKyAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAg
ICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RHJhZyh0cnVlKTsKICAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRHJh
Z2dpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTAxOCwxMCArOTg4LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBt
YXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92ZXIgc2hv
dWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ug
d3NqLmNvbS4KICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgY29udGV4dC5pc1N1
YlNlbGVjdG9yIHx8IChzZWxlY3Rvci0+aGFzVGFnKCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
YVRhZykpIHx8IGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZWxlbWVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7CiAgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNl
UHNldWRvU3RhdGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMDMwLDEwICs5OTgs
OCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4g
cXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRo
IG5vCiAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2ZSBzaG91bGQgbm90IG1hdGNoIGFu
eXRoaW5nLgogICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBjb250ZXh0LmlzU3Vi
U2VsZWN0b3IgfHwgKHNlbGVjdG9yLT5oYXNUYWcoKSAmJiAhZWxlbWVudC0+aGFzVGFnTmFtZShh
VGFnKSkgfHwgZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC5lbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxl
LT5zZXRBZmZlY3RlZEJ5QWN0aXZlUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOworICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsKICAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3Jj
ZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgKaW5kZXggZTU4M2U2YzEzMGM5
N2JkZjU0MDg0YjM3YzQ0MDExZmI2NzQyNDViZC4uYmViZmVmOGU1OWVkOGRmOTViZDJmMmNmZTg5
ZWFmNDU5ZWY2ZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJz
YWxTdHJhdGVnaWVzLmgKQEAgLTgwLDggKzgwLDcgQEAgaW5saW5lIGludCBET01TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCogZWxlbWVudCkgY28K
IHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9
IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBSZW5kZXJTdHlsZSog
cyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/
IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2libGluZy0+
Y2hpbGRJbmRleCgpOwogICAgICAgICBpZiAoaW5kZXgpIHsKICAgICAgICAgICAgIGNvdW50ICs9
IGluZGV4OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggN2NjZGZmZmQ3MDY0NWI2MWYxNmM2YzcxNGY0Y2MyZTA3NDFmMGNlNy4uMjQzZDZl
ZWM3MDBkMzJmYjAyOTM1OWU4MzUxYjNjYWE0NDE5YWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzMxLDggKzczMSw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAgICAgLy8gRklY
TUU6IFRoaXMgc3Vja3MsIHRoZSBpbnNwZWN0b3Igc2hvdWxkIGdldCB0aGUgc3R5bGUgZnJvbSB0
aGUgdmlzaXRlZCBzdHlsZSBpdHNlbGYuCiAgICAgYm9vbCBzd2FwVmlzaXRlZFVudmlzaXRlZCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShtX2VsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9tYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKG1fc3R5bGUgJiYgbV9t
YXRjaGVkUnVsZXNbaV0tPmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3Jz
KCk7CisgICAgICAgIGlmIChtX21hdGNoZWRSdWxlc1tpXS0+Y29udGFpbnNVbmNvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9yKCkpCisgICAgICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKICAgICAg
ICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9IG1fbWF0Y2hlZFJ1bGVzW2ldLT5saW5rTWF0Y2hU
eXBlKCk7CiAgICAgICAgIGlmIChzd2FwVmlzaXRlZFVudmlzaXRlZCAmJiBsaW5rTWF0Y2hUeXBl
ICYmIGxpbmtNYXRjaFR5cGUgIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaEFsbCkKICAgICAgICAg
ICAgIGxpbmtNYXRjaFR5cGUgPSAobGlua01hdGNoVHlwZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZCkgPyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluayA6IFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hWaXNpdGVkOwpAQCAtMTE4Nyw4ICsxMTg3LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVy
OjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2Vs
ZW1lbnQtPmlzTGluaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlLT5h
ZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChlbGVtZW50LT5ob3ZlcmVkKCkgIT0gbV9lbGVtZW50LT5ob3ZlcmVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgIT0gbV9l
bGVtZW50LT5hY3RpdmUoKSkKQEAgLTEyOTEsMTIgKzEyODksMTQgQEAgaW5saW5lIFN0eWxlZEVs
ZW1lbnQqIFN0eWxlUmVzb2x2ZXI6OmZpbmRTaWJsaW5nRm9yU3R5bGVTaGFyaW5nKE5vZGUqIG5v
ZGUsIHVuc2kKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUpOwog
fQogCi1zdGF0aWMgaW5saW5lIGJvb2wgcGFyZW50U3R5bGVQcmV2ZW50c1NoYXJpbmcoY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorc3RhdGljIGlubGluZSBib29sIHBhcmVudEVsZW1l
bnRQcmV2ZW50c1NoYXJpbmcoY29uc3QgRWxlbWVudCogcGFyZW50RWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpCi0g
ICAgICAgIHx8IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KQotICAgICAgICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSAKLSAgICAgICAgfHwgcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXMoKTsKKyAgICBpZiAoIXBhcmVudEVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRp
b25hbFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKQorICAgICAgICB8fCBwYXJlbnRFbGVtZW50LT5jaGlsZHJl
bkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiB9CiAKIFJlbmRlclN0eWxlKiBTdHls
ZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSgpCkBAIC0xMzEzLDcgKzEzMTMsNyBAQCBSZW5k
ZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogICAgIC8vIElkcyBz
dG9wIHN0eWxlIHNoYXJpbmcgaWYgdGhleSBzaG93IHVwIGluIHRoZSBzdHlsZXNoZWV0cy4KICAg
ICBpZiAobV9zdHlsZWRFbGVtZW50LT5oYXNJRCgpICYmIG1fZmVhdHVyZXMuaWRzSW5SdWxlcy5j
b250YWlucyhtX3N0eWxlZEVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHBhcmVudFN0eWxlUHJldmVudHNTaGFyaW5nKG1f
cGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKG1fZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG1fc3R5
bGVkRWxlbWVudC0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRl
U2hhcmVkU3R5bGUoKQogICAgIGlmIChzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1
bGVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIFRyYWNraW5nIGNoaWxkIGluZGV4IHJl
cXVpcmVzIHVuaXF1ZSBzdHlsZSBmb3IgZWFjaCBub2RlLiBUaGlzIG1heSBnZXQgc2V0IGJ5IHRo
ZSBzaWJsaW5nIHJ1bGUgbWF0Y2ggYWJvdmUuCi0gICAgaWYgKHBhcmVudFN0eWxlUHJldmVudHNT
aGFyaW5nKG1fcGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVudHNTaGFy
aW5nKG1fZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIHNoYXJlRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAppbmRleCBhNjA1Y2QwOGViZGU3ZmI5ZTcyMmQ5ODMyMTBmYTQyZDhkODM2
YmE5Li5kN2RiNjRjOGRhYmZlYWQ5Y2Q1NzNiN2Q0N2U3YTc2ODk1NDE2YzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQogICAgIC8vIG5vdGUgdGhh
dCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5bGUKICAgICAvLyBGSVhNRTogTW92ZSB0byBFbGVt
ZW50CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgYm9vbCByZWFjdHNUb1ByZXNzID0g
cmVuZGVyZXIoKS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCk7CisgICAgICAgIGJv
b2wgcmVhY3RzVG9QcmVzcyA9IHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpOwogICAgICAgICBpZiAo
cmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
KSB7CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVkKGJv
b2wgb3ZlcikKICAgICAvLyBub3RlIHRoYXQgd2UgbmVlZCB0byByZWNhbGMgdGhlIHN0eWxlCiAg
ICAgLy8gRklYTUU6IE1vdmUgdG8gRWxlbWVudAogICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAg
ICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQorICAg
ICAgICBpZiAoc3R5bGVBZmZlY3RlZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDI2NjcyZWNiODlhOWFjNzk2NjhhZjJlOWY0NWVkMzQyNTAzNTNmZGIuLjEzYTg0M2Q2YWY4
Yjc3YjBjNjkxMDc4OGMyN2YzOTVlOTUwNzRlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTExNDMsNiArMTE0Myw3IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgRWxlbWVu
dFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7CiAgICAgICAgIGRhdGEtPnNldElz
SW5DYW52YXNTdWJ0cmVlKGZhbHNlKTsKICAgICAgICAgZGF0YS0+cmVzZXRDb21wdXRlZFN0eWxl
KCk7CisgICAgICAgIGRhdGEtPnJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMoKTsKICAg
ICB9CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdGhpcy0+c2hhZG93KCkpIHsK
QEAgLTEyMTAsMTQgKzEyMTEsMTQgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCiAgICAgLy8gUmVmIGN1cnJlbnRTdHlsZSBpbiBjYXNlIGl0IHdvdWxkIG90
aGVyd2lzZSBiZSBkZWxldGVkIHdoZW4gc2V0dGluZyB0aGUgbmV3IHN0eWxlIGluIHRoZSByZW5k
ZXJlci4KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1cnJlbnRTdHlsZShyZW5kZXJTdHlsZSgp
KTsKICAgICBib29sIGhhc1BhcmVudFN0eWxlID0gcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCkgPyBzdGF0aWNfY2FzdDxib29sPihwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KS0+cmVuZGVyU3R5bGUoKSkgOiBmYWxzZTsKLSAgICBib29sIGhhc0RpcmVjdEFkamFjZW50UnVs
ZXMgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCk7Ci0gICAgYm9vbCBoYXNJbmRpcmVjdEFkamFjZW50UnVsZXMgPSBj
dXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBoYXNEaXJlY3RBZGphY2VudFJ1bGVzID0gY2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOworICAgIGJvb2wgaGFzSW5kaXJlY3RB
ZGphY2VudFJ1bGVzID0gY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwogCiAgICAgaWYgKChjaGFuZ2UgPiBOb0NoYW5nZSB8fCBuZWVkc1N0eWxlUmVjYWxjKCkpKSB7
CiAgICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAgICAgICAgICBFbGVtZW50UmFyZURh
dGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKLSAgICAgICAgICAgIGRhdGEtPnJlc2V0Q29t
cHV0ZWRTdHlsZSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHko
ZmFsc2UpOworICAgICAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnJlc2V0Q29tcHV0ZWRTdHls
ZSgpOworICAgICAgICAgICAgaWYgKGNoYW5nZSA9PSBGb3JjZSkKKyAgICAgICAgICAgICAgICBl
bGVtZW50UmFyZURhdGEoKS0+cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwogICAg
ICAgICB9CiAgICAgfQogICAgIGlmIChoYXNQYXJlbnRTdHlsZSAmJiAoY2hhbmdlID49IEluaGVy
aXQgfHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewpAQCAtMTIzNSwyNyArMTIzNiw2IEBAIHZvaWQg
RWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSkgewotICAgICAgICAg
ICAgLy8gUHJlc2VydmUgImFmZmVjdGVkIGJ5IiBiaXRzIHRoYXQgd2VyZSBwcm9wYWdhdGVkIHRv
IHVzIGZyb20gZGVzY2VuZGFudHMgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZGlkbid0IGRvIGEgZnVs
bAotICAgICAgICAgICAgLy8gc3R5bGUgY2hhbmdlIChlLmcuLCBvbmx5IGlubGluZSBzdHlsZSBj
aGFuZ2VkKS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlIb3ZlclJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVz
KHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxl
cyh0cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlEcmFnUnVs
ZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0
cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgaWYg
KGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgIGlm
IChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCi0gICAg
ICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
KCk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgaWYgKGNoICE9IE5vQ2hhbmdlIHx8IHBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY3VycmVu
dFN0eWxlLmdldCgpLCBuZXdTdHlsZS5nZXQoKSkgfHwgKGNoYW5nZSA9PSBGb3JjZSAmJiByZW5k
ZXJlci0+cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkpIHx8IHN0eWxlQ2hh
bmdlVHlwZSgpID09IFN5bnRoZXRpY1N0eWxlQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXRBbmltYXRhYmxlU3R5bGUobmV3U3R5bGUuZ2V0KCkpOwpAQCAtMTM4OCw3ICsxMzY4
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBpZiAoIXN0eWxlICYmICFlbGVtZW50LT5zdHls
ZUFmZmVjdGVkQnlFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXN0eWxlIHx8
IChzdHlsZS0+YWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVs
ZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSkpKQorICAgIGlmICghc3R5bGUgfHwgKGVsZW1lbnQtPnN0
eWxlQWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQt
Pmhhc0NoaWxkTm9kZXMoKSkpKQogICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiB9CiAKQEAgLTEzOTgsMTMgKzEzNzgsMTMgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4K
ICAgICAvLyA6ZW1wdHkgc2VsZWN0b3IuCiAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKGUs
IHN0eWxlKTsKICAgICAKLSAgICBpZiAoIXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkg
JiYgc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpKSkKKyAgICBpZiAo
IXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkgJiYgZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
UG9zaXRpb25hbFJ1bGVzKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA6Zmlyc3QtY2hp
bGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sg
YW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSW4g
dGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5n
ZXwgaXMgbm90IDAuCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2Fz
ZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgotICAgIGlmIChz
dHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2Up
IHsKKyAgICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0
ZXJDaGFuZ2UpIHsKICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgogICAgICAg
ICBOb2RlKiBuZXdGaXJzdENoaWxkID0gMDsKICAgICAgICAgZm9yIChuZXdGaXJzdENoaWxkID0g
ZS0+Zmlyc3RDaGlsZCgpOyBuZXdGaXJzdENoaWxkICYmICFuZXdGaXJzdENoaWxkLT5pc0VsZW1l
bnROb2RlKCk7IG5ld0ZpcnN0Q2hpbGQgPSBuZXdGaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7
fTsKQEAgLTE0MjcsNyArMTQwNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxl
Q2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAv
LyA6bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2
ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4K
ICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYg
fGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CisgICAgaWYgKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CiAgICAgICAgIC8v
IEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgogICAgICAgICBOb2RlKiBuZXdMYXN0Q2hpbGQgPSAw
OwogICAgICAgICBmb3IgKG5ld0xhc3RDaGlsZCA9IGUtPmxhc3RDaGlsZCgpOyBuZXdMYXN0Q2hp
bGQgJiYgIW5ld0xhc3RDaGlsZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdMYXN0Q2hpbGQgPSBuZXdM
YXN0Q2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7fTsKQEAgLTE0NTAsNyArMTQzMCw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAvLyBUaGUgKyBzZWxlY3Rvci4gIFdlIG5lZWQg
dG8gaW52YWxpZGF0ZSB0aGUgZmlyc3QgZWxlbWVudCBmb2xsb3dpbmcgdGhlIGluc2VydGlvbiBw
b2ludC4gIEl0IGlzIHRoZSBvbmx5IHBvc3NpYmxlIGVsZW1lbnQKICAgICAvLyB0aGF0IGNvdWxk
IGJlIGFmZmVjdGVkIGJ5IHRoaXMgRE9NIGNoYW5nZS4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgeworICAgIGlm
IChlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgJiYgYWZ0ZXJDaGFu
Z2UpIHsKICAgICAgICAgTm9kZSogZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSAwOwogICAg
ICAgICBmb3IgKGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uID0gYWZ0ZXJDaGFuZ2U7CiAgICAg
ICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gJiYgIWZpcnN0RWxlbWVudEFmdGVy
SW5zZXJ0aW9uLT5pc0VsZW1lbnROb2RlKCk7CkBAIC0xNDY2LDggKzE0NDYsOCBAQCBzdGF0aWMg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBib29sIGZpbgogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2Vy
IGNhbGxiYWNrIGNhc2UsIHNvIHdlIHdvbid0IGRvIGFueSB3b3JrIGZvciB0aGUgZm9yd2FyZCBj
YXNlIGlmIHdlIGRvbid0IGhhdmUgdG8uCiAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
d2UganVzdCBtYXJrIHRoZSBwYXJlbnQgbm9kZSBhcyBjaGFuZ2VkLCBzaW5jZSB3ZSBkb24ndCB3
YW50IHRvIG1ha2UgY2hpbGRyZW5DaGFuZ2VkIE8obl4yKSBieSBjcmF3bGluZyBhbGwgb3VyIGtp
ZHMKICAgICAvLyBoZXJlLiAgcmVjYWxjU3R5bGUgd2lsbCB0aGVuIGZvcmNlIGEgd2FsayBvZiB0
aGUgY2hpbGRyZW4gd2hlbiBpdCBzZWVzIHRoYXQgdGhpcyBoYXMgaGFwcGVuZWQuCi0gICAgaWYg
KChzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGFm
dGVyQ2hhbmdlKSB8fAotICAgICAgICAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSkKKyAgICBpZiAoKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSAmJiBhZnRlckNoYW5nZSkKKyAgICAg
ICAgfHwgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYg
YmVmb3JlQ2hhbmdlKSkKICAgICAgICAgZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBA
IC0xODcxLDE0ICsxODUxLDgyIEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxl
KFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIgPyBkYXRhLT5tX2NvbXB1dGVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxl
KHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIDogZGF0YS0+bV9jb21wdXRlZFN0eWxlLmdldCgpOwog
fQogCitib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKTsKK30KKwogdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCiB7
CiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KHRy
dWUpOwogfQogCi1ib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK2Jv
b2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAoZWxlbWVudFJhcmVE
YXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIHx8IGVsZW1lbnRSYXJl
RGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSk7Cit9CisKK2Jvb2wg
RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29s
IEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29sIEVs
ZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXModHJ1
ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJh
cmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKK30K
Kwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKK30KKworYm9vbCBFbGVtZW50OjpjaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cyh0cnVlKTsKK30KKwordW5zaWduZWQgRWxlbWVudDo6Y2hpbGRJbmRleCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgp
IDogMDsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KQor
eworICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyU3R5bGUoKSkKKyAgICAgICAg
c3R5bGUtPnNldFVuaXF1ZSgpOworICAgIHJhcmVEYXRhLT5zZXRDaGlsZEluZGV4KGluZGV4KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRJc0luQ2FudmFzU3VidHJlZShib29sIGlzSW5DYW52YXNT
dWJ0cmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjc3YjM0NzU0Mjk0ZmUxNjY2MDllZTZmZTVi
NzMzNjQyYjQ1NDcxOS4uZDk5ZTBmMzMwODRiNjc2MTBiMDZjMDNjZmQwMzQ5OTU5MTIxOGNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0yODQsOSArMjg0LDI0IEBAIHB1YmxpYzoKIAogICAgIFJl
bmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCisgICAgLy8g
TWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1
cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGlu
IG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCiAgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0
eSgpOwogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKIAorICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGph
Y2VudFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RB
ZGphY2VudFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKKwogICAgIHZvaWQgc2V0SXNJbkNh
bnZhc1N1YnRyZWUoYm9vbCk7CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNGIxOWNkNDJiMzQ5ZDIxYmIw
NTA5NGM2OTNlZDU3YWNkYjM0ZmU2MS4uMjFmYTY4M2UxMzQ0ZGZkMDdjOGMzYjRjNjJjNWU0M2I1
ZTk1ZTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKICAgICB2b2lk
IHJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2Vy
dmF0aW9ucygpOwogCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5j
ZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwpAQCAtNTMsNiArNTQsMTkgQEAg
cHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7
CiAjZW5kaWYKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0
aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0
YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsKKyAgICB1c2luZyBO
b2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7Cisg
ICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURh
dGE6OmNoaWxkSW5kZXg7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZEluZGV4Owog
CiAgICAgYm9vbCBoYXNDYWNoZWRIVE1MQ29sbGVjdGlvbnMoKSBjb25zdAogICAgIHsKQEAgLTE0
MSw2ICsxNTUsMjAgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6fkVsZW1lbnRSYXJlRGF0YSgp
CiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCiB7CiAg
ICAgbV9jb21wdXRlZFN0eWxlLmNsZWFyKCk7CisgICAgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHko
ZmFsc2UpOworICAgIHNldENoaWxkSW5kZXgoMCk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnRS
YXJlRGF0YTo6cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpCit7CisgICAgc2V0QWZm
ZWN0ZWRCeUhvdmVyKGZhbHNlKTsKKyAgICBzZXRBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKKyAg
ICBzZXRBZmZlY3RlZEJ5RHJhZyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlcyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxl
cyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoZmFsc2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMmRjY2EyNmFjODU0NDY4ZGE5
NzZkMTc5YzZkNDEwZjJhODQ3M2NiZC4uZWM5NjQ3ZDMwZWNiY2UxNDQzZjRhYjAwZDZjYzk0ZjA2
MzI4MmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzQxLDEyICszNDEsNiBAQCBOb2RlOjpTdHls
ZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5
bGUqIHMyLCBEb2N1bQogICAgIGVsc2UgaWYgKHMxLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpIHx8IHMyLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQogICAg
ICAgICBjaCA9IEluaGVyaXQ7CiAKLSAgICAvLyBGb3IgbnRoLWNoaWxkIGFuZCBvdGhlciBwb3Np
dGlvbmFsIHJ1bGVzLCB0cmVhdCBzdHlsZXMgYXMgZGlmZmVyZW50IGlmIHRoZXkgaGF2ZQotICAg
IC8vIGNoYW5nZWQgcG9zaXRpb25hbGx5IGluIHRoZSBET00uIFRoaXMgd2F5IHN1YnNlcXVlbnQg
c2libGluZyByZXNvbHV0aW9ucyB3b24ndCBiZSBjb25mdXNlZAotICAgIC8vIGJ5IHRoZSB3cm9u
ZyBjaGlsZCBpbmRleCBhbmQgZXZhbHVhdGUgdG8gaW5jb3JyZWN0IHJlc3VsdHMuCi0gICAgaWYg
KGNoID09IE5vQ2hhbmdlICYmIHMxLT5jaGlsZEluZGV4KCkgIT0gczItPmNoaWxkSW5kZXgoKSkK
LSAgICAgICAgY2ggPSBOb0luaGVyaXQ7Ci0KICAgICAvLyBJZiB0aGUgcHNldWRvU3R5bGVzIGhh
dmUgY2hhbmdlZCwgd2Ugd2FudCBhbnkgU3R5bGVDaGFuZ2UgdGhhdCBpcyBub3QgTm9DaGFuZ2UK
ICAgICAvLyBiZWNhdXNlIHNldFN0eWxlIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggYW55
dGhpbmcgZWxzZS4KICAgICBpZiAoY2ggPT0gTm9DaGFuZ2UgJiYgczEtPmhhc0FueVB1YmxpY1Bz
ZXVkb1N0eWxlcygpKSB7CkBAIC0zODAsNiArMzc0LDM5IEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5v
ZGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIsIERv
Y3VtCiAgICAgcmV0dXJuIGNoOwogfQogCitib29sIE5vZGU6OnN0eWxlQWZmZWN0ZWRCeUFjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+YWZm
ZWN0ZWRCeUFjdGl2ZSgpOworfQorCit2b2lkIE5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2
ZShib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRBZmZlY3RlZEJ5QWN0aXZlKHZhbHVlKTsKK30KKworYm9v
bCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+YWZmZWN0ZWRCeUhvdmVyKCk7Cit9CisKK3ZvaWQgTm9k
ZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUg
fHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0QWZmZWN0ZWRC
eUhvdmVyKHZhbHVlKTsKK30KKworYm9vbCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlEcmFnKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5hZmZlY3RlZEJ5
RHJhZygpOworfQorCit2b2lkIE5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUgfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFy
ZURhdGEoKS0+c2V0QWZmZWN0ZWRCeURyYWcodmFsdWUpOworfQorCiB2b2lkIE5vZGU6OnRyYWNr
Rm9yRGVidWdnaW5nKCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NmU2MjEx
ZDY3OTIwZmFiMDVjNzkxNzViMjQxZjEzOTA4YmUwZjIxLi41ZGYwNGY5YTZkNDdlNzJlMGE4MWEx
YTA4NDA0ZDQyNGFmN2U2MjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTU1Myw2ICs1NTMsMTMgQEAgcHVi
bGljOgogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxl
bWVudFNwZWNpZmllciA9IE5PUFNFVURPKSB7IHJldHVybiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsgfQogCisgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlIb3Zl
cigpIGNvbnN0OworICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIoYm9vbCk7CisgICAg
Ym9vbCBzdHlsZUFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0eWxlQWZm
ZWN0ZWRCeUFjdGl2ZShib29sKTsKKyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeURyYWcoKSBjb25z
dDsKKyAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeURyYWcoYm9vbCk7CisKICAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIE5vdGlmaWNhdGlvbiBvZiBkb2N1bWVudCBzdHJ1Y3R1
cmUgY2hhbmdlcyAoc2VlIENvbnRhaW5lck5vZGUuaCBmb3IgbW9yZSBub3RpZmljYXRpb24gbWV0
aG9kcykKICAgICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmY4YThi
MDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkuLmI4YjMzYzY5MzlmMmFjOTQ5M2E0MDRiNTgz
NmY2NDE0YjE0ZTA4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4NSwxNCAr
MTg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3RyZWVTY29wZSgwKQogICAgICAgICAsIG1f
Y2hpbGROb2RlTGlzdCgwKQogICAgICAgICAsIG1fdGFiSW5kZXgoMCkKKyAgICAgICAgLCBtX2No
aWxkSW5kZXgoMCkKICAgICAgICAgLCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkK
ICAgICAgICAgLCBtX2lzRm9jdXNlZChmYWxzZSkKICAgICAgICAgLCBtX25lZWRzRm9jdXNBcHBl
YXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQotICAgICAgICAsIG1fc3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0luQ2FudmFzU3VidHJlZShmYWxzZSkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICwgbV9jb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KGZhbHNlKQogI2VuZGlmCisgICAgICAgICwgbV9zdHlsZUFmZmVjdGVkQnlFbXB0
eShmYWxzZSkKKyAgICAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUhvdmVyKGZhbHNlKQorICAgICAg
ICAsIG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKQorICAgICAgICAsIG1fc3R5bGVBZmZl
Y3RlZEJ5RHJhZyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyhmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC0yOTcsNiArMzA2LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb2N1c2Vk
OyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkgeyBtX2lzRm9jdXNlZCA9IGZv
Y3VzZWQ7IH0KIAorICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZUFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyKGJvb2wg
dmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlIb3ZlciA9IHZhbHVlOyB9CisgICAgYm9vbCBhZmZl
Y3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlBY3RpdmU7IH0K
KyAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0
ZWRCeUFjdGl2ZSA9IHZhbHVlOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5RHJhZzsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURy
YWcoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsgfQorCiAgICAg
dmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJvdGVjdGVkOgpAQCAtMzExLDIwICszMjcsNDUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZh
bHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CiAjZW5kaWYKKyAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB8fCBjaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxk
UnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOyB9
CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZhbHVl
KSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQorICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsgfQorICAgIHZvaWQgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9CisgICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KKyAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsgfQor
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0g
dmFsdWU7IH0KKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGls
ZEluZGV4OyB9CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY2hp
bGRJbmRleCA9IGluZGV4OyB9CiAKIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29w
ZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOwogICAgIENoaWxk
Tm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBzaG9ydCBtX3RhYkluZGV4OworICAgIHVu
c2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleDsKICAgICBib29sIG1fdGFiSW5kZXhXYXNTZXRFeHBs
aWNpdGx5IDogMTsKICAgICBib29sIG1faXNGb2N1c2VkIDogMTsKICAgICBib29sIG1fbmVlZHNG
b2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggOiAxOwotICAgIGJvb2wgbV9zdHls
ZUFmZmVjdGVkQnlFbXB0eSA6IDE7CiAgICAgYm9vbCBtX2lzSW5DYW52YXNTdWJ0cmVlIDogMTsK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2NvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQgOiAxOwogI2VuZGlmCisgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDog
MTsKKyAgICBib29sIG1fc3R5bGVBZmZlY3RlZEJ5SG92ZXIgOiAxOworICAgIGJvb2wgbV9zdHls
ZUFmZmVjdGVkQnlBY3RpdmUgOiAxOworICAgIGJvb2wgbV9zdHlsZUFmZmVjdGVkQnlEcmFnIDog
MTsKKyAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgorICAgIC8vIFdlIG9w
dGltaXplIGZvciA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRp
b25hbCBjaGlsZCBzZWxlY3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKKyAgICAvLyAqLWNoaWxkLW9m
LXR5cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGls
ZHJlbiBjaGFuZ2UgYXQgYWxsLgorICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENo
aWxkUnVsZXMgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyA6IDE7CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMg
OiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
IDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMgOiAxOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBPd25QdHI8VmVj
dG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+ID4gbV9tdXRhdGlvbk9i
c2VydmVyUmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCAyMWYxYzNmODk5ZmIwOTNmYmZmYjgyNDYxYWMxZTBjNWI1M2E4MTlkLi4zODNh
NDY2ZWExNzM0ZmFhMzY1MzMwMTQyOWU1ODI0YmVhNjI1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIzOSwxMSArMjM5LDggQEAgdm9pZCBO
b2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAgICBlbHNlIGlm
IChSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gbV9jb250ZXh0LnBhcmVudFJlbmRlcmVy
KCkpCiAgICAgICAgIG1fY29udGV4dC5zZXRTdHlsZShwYXJlbnRSZW5kZXJlci0+c3R5bGUoKSk7
CiAKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVySXNOZWVkZWQobV9jb250ZXh0KSkgewotICAgICAg
ICBpZiAoZWxlbWVudCAmJiBtX2NvbnRleHQuc3R5bGUoKS0+YWZmZWN0ZWRCeUVtcHR5KCkpCi0g
ICAgICAgICAgICBlbGVtZW50LT5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOworICAgIGlmICgh
bm9kZS0+cmVuZGVyZXJJc05lZWRlZChtX2NvbnRleHQpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IG1fY29udGV4dC5oYXNGbG93
VGhyZWFkUGFyZW50KCkgPyBtX2NvbnRleHQucGFyZW50Rmxvd1JlbmRlcmVyKCkgOiBtX2NvbnRl
eHQucGFyZW50UmVuZGVyZXIoKTsKICAgICAvLyBEbyBub3QgY2FsbCBtX2NvbnRleHQubmV4dFJl
bmRlcmVyKCkgaGVyZSBpbiB0aGUgZmlyc3QgY2xhdXNlLCBiZWNhdXNlIGl0IGV4cGVjdHMgdG8g
aGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IDNhOTU2OTU2
ZTVmZDc1ODdlYjE2MGVlZTU3ZmY3ZTlkYjNjOTI2MjguLmEwNTZjNDc5NWRmNzNiYjMxMDEzYjhj
ZDlhZThhY2I5Mjg1MDc0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBub2RlUmVzcG9uZHNUb1RhcEdlc3R1cmUoTm9kZSog
bm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG5vZGUtPnJlbmRlclN0eWxlKCkp
IHsKICAgICAgICAgLy8gQWNjZXB0IG5vZGVzIHRoYXQgaGFzIGEgQ1NTIGVmZmVjdCB3aGVuIHRv
dWNoZWQuCi0gICAgICAgIGlmIChub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5QWN0aXZl
UnVsZXMoKSB8fCBub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQor
ICAgICAgICBpZiAobm9kZS0+c3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgfHwgbm9kZS0+c3R5bGVB
ZmZlY3RlZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDRiYjBhM2RjZGIzMmE0YjRkZmM0YjI5MTZjOWNkY2FiYjM3MGNhOTYuLjYyMTA5ODg3YjE4
MDgyZTI4OTFkNTg3MTkyNDBiM2QzYjg4YWNjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTMwLDcgKzI1MzAsNyBAQCB2b2lkIFJlbmRlck9iamVj
dDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIGJvb2wgdmFsdWVDaGFuZ2Vk
ID0gKGRyYWdPbiAhPSBpc0RyYWdnaW5nKCkpOwogICAgIHNldElzRHJhZ2dpbmcoZHJhZ09uKTsK
LSAgICBpZiAodmFsdWVDaGFuZ2VkICYmIHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnUnVsZXMoKSAm
JiBub2RlKCkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBub2RlKCktPnN0eWxlQWZmZWN0ZWRC
eURyYWcoKSAmJiBub2RlKCkpCiAgICAgICAgIG5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJy
ID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3Vyci0+dXBkYXRlRHJhZ1N0YXRlKGRy
YWdPbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCAxNzlkMzI1NDk1MjZkNzRmNjZmOGJiNWZkOGFhYzZhZWFjOWQ5MmE1Li41MDMwMzcy
ODI1OTliNGY3MzQ3MTIxNWE0N2EzNmQzZTBiODY5ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTYwLDggKzYwLDYgQEAgc3RydWN0
IFNhbWVTaXplQXNCb3JkZXJWYWx1ZSB7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoQm9yZGVyVmFs
dWUpID09IHNpemVvZihTYW1lU2l6ZUFzQm9yZGVyVmFsdWUpLCBCb3JkZXJWYWx1ZV9zaG91bGRf
bm90X2dyb3cpOwogCiBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIDogcHVibGljIFJlZkNv
dW50ZWQ8U2FtZVNpemVBc1JlbmRlclN0eWxlPiB7Ci0gICAgdW5zaWduZWQgbV9iaXRmaWVsZHM7
Ci0KICAgICB2b2lkKiBkYXRhUmVmc1s3XTsKICAgICB2b2lkKiBvd25QdHJzWzFdOwogI2lmIEVO
QUJMRShTVkcpCkBAIC0yMDIsNiArMjAwLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Y29weU5vbklu
aGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKQogICAgIG5vbmluaGVyaXRlZF9m
bGFncy5fcG9zaXRpb24gPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbjsKICAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFn
cy5fZmxvYXRpbmc7CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQgPSBvdGhl
ci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQ7CisgICAgbm9uaW5oZXJpdGVkX2Zs
YWdzLl9leHBsaWNpdEluaGVyaXRhbmNlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fZXhw
bGljaXRJbmhlcml0YW5jZTsKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0g
b3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGk7CiAgICAgbm9uaW5oZXJpdGVk
X2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3Bh
Z2VfYnJlYWtfYmVmb3JlOwogICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19hZnRl
ciA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGViZTkxYjQyN2Qx
YWQzZjNjNjMyNjY0NDEyODE0NTYwNTBhYWM4ZGYuLmU0M2U5ZjRlYTA1YzUxNjkzODE0MTI0ZDU1
MzYzNmEyN2VmNTZkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC0xMzMsNzcgKzEzMyw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOiBwdWJsaWMg
UmVmQ291bnRlZDxSZW5kZXJTdHlsZT4gewogICAgIGZyaWVuZCBjbGFzcyBTdHlsZVJlc29sdmVy
OyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCiBwcm90ZWN0ZWQ6CiAKLSAgICBjbGFzcyBSZW5k
ZXJTdHlsZUJpdGZpZWxkcyB7Ci0gICAgcHVibGljOgotICAgICAgICBSZW5kZXJTdHlsZUJpdGZp
ZWxkcygpCi0gICAgICAgICAgICA6IG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3JzKGZhbHNlKQotICAgICAgICAgICAgLCBtX3VuaXF1ZShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9hZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZW1wdHlTdGF0ZShmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoZmFs
c2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFs
c2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxl
cyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZpcnN0Q2hpbGRTdGF0
ZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9sYXN0Q2hpbGRTdGF0ZShmYWxzZSkKLSAgICAgICAg
ICAgICwgbV9leHBsaWNpdEluaGVyaXRhbmNlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxk
SW5kZXgoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5
VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yczsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyhib29sIHZhbHVlKSB7IG1fYWZmZWN0ZWRCeVVuY29t
bW9uQXR0cmlidXRlU2VsZWN0b3JzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCB1bmlxdWUoKSBj
b25zdCB7IHJldHVybiBtX3VuaXF1ZTsgfQotICAgICAgICB2b2lkIHNldFVuaXF1ZShib29sIHZh
bHVlKSB7IG1fdW5pcXVlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlFbXB0eTsgfQotICAgICAgICB2b2lkIHNldEFm
ZmVjdGVkQnlFbXB0eShib29sIHZhbHVlKSB7IG1fYWZmZWN0ZWRCeUVtcHR5ID0gdmFsdWU7IH0K
LSAgICAgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lbXB0eVN0YXRlOyB9
Ci0gICAgICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIHZhbHVlKSB7IG1fZW1wdHlTdGF0ZSA9
IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7IH0K
LSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoYm9vbCB2
YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0g
ICAgICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQg
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQotICAgICAgICB2
b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1
ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsg
fQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlczsgfQotICAgICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdENoaWxkU3RhdGU7IH0KLSAgICAgICAgdm9pZCBzZXRGaXJzdENo
aWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyBtX2ZpcnN0Q2hpbGRTdGF0ZSA9IHZhbHVlOyB9Ci0gICAg
ICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZFN0YXRl
OyB9Ci0gICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyBtX2xhc3RD
aGlsZFN0YXRlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBleHBsaWNpdEluaGVyaXRhbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBsaWNpdEluaGVyaXRhbmNlOyB9Ci0gICAgICAgIHZvaWQgc2V0
RXhwbGljaXRJbmhlcml0YW5jZShib29sIHZhbHVlKSB7IG1fZXhwbGljaXRJbmhlcml0YW5jZSA9
IHZhbHVlOyB9Ci0KLSAgICAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRJbmRleDsgfQotICAgICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5k
ZXgpIHsgbV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8v
IFRoZSBmb2xsb3dpbmcgYml0ZmllbGQgaXMgMzItYml0cyBsb25nLCB3aGljaCBvcHRpbWl6ZXMg
cGFkZGluZyB3aXRoIHRoZQotICAgICAgICAvLyBpbnQgcmVmQ291bnQgaW4gdGhlIGJhc2UgY2xh
c3MuIEJld2FyZSB3aGVuIGFkZGluZyBtb3JlIGJpdHMuCi0gICAgICAgIHVuc2lnbmVkIG1fYWZm
ZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzIDogMTsKLSAgICAgICAgdW5zaWduZWQg
bV91bmlxdWUgOiAxOwotCi0gICAgICAgIC8vIEJpdHMgZm9yIGR5bmFtaWMgY2hpbGQgbWF0Y2hp
bmcuCi0gICAgICAgIHVuc2lnbmVkIG1fYWZmZWN0ZWRCeUVtcHR5IDogMTsKLSAgICAgICAgdW5z
aWduZWQgbV9lbXB0eVN0YXRlIDogMTsKLQotICAgICAgICAvLyBXZSBvcHRpbWl6ZSBmb3IgOmZp
cnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZC4gVGhlIG90aGVyIHBvc2l0aW9uYWwgY2hpbGQgc2Vs
ZWN0b3JzIGxpa2UgbnRoLWNoaWxkIG9yCi0gICAgICAgIC8vICotY2hpbGQtb2YtdHlwZSwgd2Ug
d2lsbCBqdXN0IGdpdmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVuIGNoYW5n
ZSBhdCBhbGwuCi0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hp
bGRSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBt
X2ZpcnN0Q2hpbGRTdGF0ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGFzdENoaWxkU3RhdGUg
OiAxOwotICAgICAgICB1bnNpZ25lZCBtX2V4cGxpY2l0SW5oZXJpdGFuY2UgOiAxOwotICAgICAg
ICB1bnNpZ25lZCBtX2NoaWxkSW5kZXggOiAyMDsgLy8gUGxlbnR5IG9mIGJpdHMgdG8gY2FjaGUg
YW4gaW5kZXguCi0gICAgfTsKLSAgICBSZW5kZXJTdHlsZUJpdGZpZWxkcyBtX2JpdGZpZWxkczsK
LQogICAgIC8vIG5vbi1pbmhlcml0ZWQgYXR0cmlidXRlcwogICAgIERhdGFSZWY8U3R5bGVCb3hE
YXRhPiBtX2JveDsKICAgICBEYXRhUmVmPFN0eWxlVmlzdWFsRGF0YT4gdmlzdWFsOwpAQCAtMjk0
LDExICsyMjMsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgICYmIF9wYWdlX2JyZWFr
X2FmdGVyID09IG90aGVyLl9wYWdlX2JyZWFrX2FmdGVyCiAgICAgICAgICAgICAgICAgJiYgX3Bh
Z2VfYnJlYWtfaW5zaWRlID09IG90aGVyLl9wYWdlX2JyZWFrX2luc2lkZQogICAgICAgICAgICAg
ICAgICYmIF9zdHlsZVR5cGUgPT0gb3RoZXIuX3N0eWxlVHlwZQotICAgICAgICAgICAgICAgICYm
IF9hZmZlY3RlZEJ5SG92ZXIgPT0gb3RoZXIuX2FmZmVjdGVkQnlIb3ZlcgotICAgICAgICAgICAg
ICAgICYmIF9hZmZlY3RlZEJ5QWN0aXZlID09IG90aGVyLl9hZmZlY3RlZEJ5QWN0aXZlCi0gICAg
ICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlEcmFnID09IG90aGVyLl9hZmZlY3RlZEJ5RHJhZwog
ICAgICAgICAgICAgICAgICYmIF9wc2V1ZG9CaXRzID09IG90aGVyLl9wc2V1ZG9CaXRzCisgICAg
ICAgICAgICAgICAgJiYgX2V4cGxpY2l0SW5oZXJpdGFuY2UgPT0gb3RoZXIuX2V4cGxpY2l0SW5o
ZXJpdGFuY2UKICAgICAgICAgICAgICAgICAmJiBfdW5pY29kZUJpZGkgPT0gb3RoZXIuX3VuaWNv
ZGVCaWRpCisgICAgICAgICAgICAgICAgJiYgX3VuaXF1ZSA9PSBvdGhlci5fdW5pcXVlCisgICAg
ICAgICAgICAgICAgJiYgX2VtcHR5U3RhdGUgPT0gb3RoZXIuX2VtcHR5U3RhdGUKKyAgICAgICAg
ICAgICAgICAmJiBfZmlyc3RDaGlsZFN0YXRlID09IG90aGVyLl9maXJzdENoaWxkU3RhdGUKKyAg
ICAgICAgICAgICAgICAmJiBfbGFzdENoaWxkU3RhdGUgPT0gb3RoZXIuX2xhc3RDaGlsZFN0YXRl
CiAgICAgICAgICAgICAgICAgJiYgX2lzTGluayA9PSBvdGhlci5faXNMaW5rOwogICAgICAgICB9
CiAKQEAgLTMxMywzMSArMjQ0LDI3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgX3Bv
c2l0aW9uIDogMzsgLy8gRVBvc2l0aW9uCiAgICAgICAgIHVuc2lnbmVkIF9mbG9hdGluZyA6IDI7
IC8vIEVGbG9hdAogICAgICAgICB1bnNpZ25lZCBfdGFibGVfbGF5b3V0IDogMTsgLy8gRVRhYmxl
TGF5b3V0CisgICAgICAgIHVuc2lnbmVkIF9leHBsaWNpdEluaGVyaXRhbmNlIDogMTsgLy8gRXhw
bGljaXRseSBpbmhlcml0cyBhIG5vbi1pbmhlcml0ZWQgcHJvcGVydHkKIAogICAgICAgICB1bnNp
Z25lZCBfdW5pY29kZUJpZGkgOiAzOyAvLyBFVW5pY29kZUJpZGkKLSAgICAgICAgdW5zaWduZWQg
X3BhZ2VfYnJlYWtfYmVmb3JlIDogMjsgLy8gRVBhZ2VCcmVhawogICAgICAgICAvLyAzMiBiaXRz
CisgICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2JlZm9yZSA6IDI7IC8vIEVQYWdlQnJlYWsK
ICAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfYWZ0ZXIgOiAyOyAvLyBFUGFnZUJyZWFrCiAg
ICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2luc2lkZSA6IDI7IC8vIEVQYWdlQnJlYWsKIAog
ICAgICAgICB1bnNpZ25lZCBfc3R5bGVUeXBlIDogNjsgLy8gUHNldWRvSWQKICAgICAgICAgdW5z
aWduZWQgX3BzZXVkb0JpdHMgOiA3OworICAgICAgICB1bnNpZ25lZCBfdW5pcXVlIDogMTsgLy8g
U3R5bGUgY2FuIG5vdCBiZSBzaGFyZWQuCisgICAgICAgIHVuc2lnbmVkIF9lbXB0eVN0YXRlIDog
MTsKKyAgICAgICAgdW5zaWduZWQgX2ZpcnN0Q2hpbGRTdGF0ZSA6IDE7CisgICAgICAgIHVuc2ln
bmVkIF9sYXN0Q2hpbGRTdGF0ZSA6IDE7CiAKLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIo
KSBjb25zdCB7IHJldHVybiBfYWZmZWN0ZWRCeUhvdmVyOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZm
ZWN0ZWRCeUhvdmVyKGJvb2wgdmFsdWUpIHsgX2FmZmVjdGVkQnlIb3ZlciA9IHZhbHVlOyB9Ci0g
ICAgICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIF9hZmZlY3RlZEJ5
QWN0aXZlOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVlKSB7
IF9hZmZlY3RlZEJ5QWN0aXZlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RHJh
ZygpIGNvbnN0IHsgcmV0dXJuIF9hZmZlY3RlZEJ5RHJhZzsgfQotICAgICAgICB2b2lkIHNldEFm
ZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgX2FmZmVjdGVkQnlEcmFnID0gdmFsdWU7IH0KICAg
ICAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBfaXNMaW5rOyB9CiAgICAgICAgIHZv
aWQgc2V0SXNMaW5rKGJvb2wgdmFsdWUpIHsgX2lzTGluayA9IHZhbHVlOyB9CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdW5zaWduZWQgX2FmZmVjdGVkQnlIb3ZlciA6IDE7Ci0gICAgICAgIHVuc2ln
bmVkIF9hZmZlY3RlZEJ5QWN0aXZlIDogMTsKLSAgICAgICAgdW5zaWduZWQgX2FmZmVjdGVkQnlE
cmFnIDogMTsKICAgICAgICAgdW5zaWduZWQgX2lzTGluayA6IDE7CiAgICAgICAgIC8vIElmIHlv
dSBhZGQgbW9yZSBzdHlsZSBiaXRzIGhlcmUsIHlvdSB3aWxsIGFsc28gbmVlZCB0byB1cGRhdGUg
UmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKCkKLSAgICAgICAgLy8gNTQgYml0cwor
ICAgICAgICAvLyA1NiBiaXRzCiAgICAgfSBub25pbmhlcml0ZWRfZmxhZ3M7CiAKIC8vICFFTkQg
U1lOQyEKQEAgLTM3MiwxNSArMjk5LDE3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbm9uaW5oZXJp
dGVkX2ZsYWdzLl9wb3NpdGlvbiA9IGluaXRpYWxQb3NpdGlvbigpOwogICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX2Zsb2F0aW5nID0gaW5pdGlhbEZsb2F0aW5nKCk7CiAgICAgICAgIG5vbmlu
aGVyaXRlZF9mbGFncy5fdGFibGVfbGF5b3V0ID0gaW5pdGlhbFRhYmxlTGF5b3V0KCk7CisgICAg
ICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZXhwbGljaXRJbmhlcml0YW5jZSA9IGZhbHNlOwogICAg
ICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gaW5pdGlhbFVuaWNvZGVCaWRp
KCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmUgPSBpbml0
aWFsUGFnZUJyZWFrKCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19h
ZnRlciA9IGluaXRpYWxQYWdlQnJlYWsoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9w
YWdlX2JyZWFrX2luc2lkZSA9IGluaXRpYWxQYWdlQnJlYWsoKTsKICAgICAgICAgbm9uaW5oZXJp
dGVkX2ZsYWdzLl9zdHlsZVR5cGUgPSBOT1BTRVVETzsKICAgICAgICAgbm9uaW5oZXJpdGVkX2Zs
YWdzLl9wc2V1ZG9CaXRzID0gMDsKLSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVj
dGVkQnlIb3ZlcihmYWxzZSk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3Rl
ZEJ5QWN0aXZlKGZhbHNlKTsKLSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVk
QnlEcmFnKGZhbHNlKTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl91bmlxdWUgPSBmYWxz
ZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eVN0YXRlID0gZmFsc2U7CisgICAg
ICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZmlyc3RDaGlsZFN0YXRlID0gZmFsc2U7CisgICAgICAg
IG5vbmluaGVyaXRlZF9mbGFncy5fbGFzdENoaWxkU3RhdGUgPSBmYWxzZTsKICAgICAgICAgbm9u
aW5oZXJpdGVkX2ZsYWdzLnNldElzTGluayhmYWxzZSk7CiAgICAgfQogCkBAIC00MTgsMTQgKzM0
Nyw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiog
dmFyaWFibGVzKCkgeyByZXR1cm4gJihyYXJlSW5oZXJpdGVkRGF0YS0+bV92YXJpYWJsZXMtPm1f
ZGF0YSk7IH0KICNlbmRpZgogCi0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXJSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5SG92ZXIoKTsgfQotICAgIGJv
b2wgYWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLmFmZmVjdGVkQnlBY3RpdmUoKTsgfQotICAgIGJvb2wgYWZmZWN0ZWRCeURyYWdSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9Ci0K
LSAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKGJvb2wgYikgeyBub25pbmhlcml0ZWRf
ZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKGIpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0
aXZlUnVsZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5QWN0aXZl
KGIpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5RHJhZ1J1bGVzKGJvb2wgYikgeyBub25pbmhl
cml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWcoYik7IH0KLQogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAgICAgYm9vbCBpc0Zsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLl9mbG9hdGluZyAhPSBOb0Zsb2F0OyB9CkBAIC0xNTIyLDM5ICsxNDQzLDIxIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgdikgeyBpbmhlcml0ZWRf
ZmxhZ3MubV93cml0aW5nTW9kZSA9IHY7IH0KIAotICAgIC8vIFRvIHRlbGwgaWYgdGhpcyBzdHls
ZSBtYXRjaGVkIGF0dHJpYnV0ZSBzZWxlY3RvcnMuIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0
byBzaGFyZS4KLSAgICBib29sIGFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9ycygpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxl
Y3RvcnMoKSB7IG1fYml0ZmllbGRzLnNldEFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9ycyh0cnVlKTsgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy51bmlxdWUoKTsgfQotICAgIHZvaWQgc2V0VW5pcXVlKCkgeyBtX2JpdGZpZWxkcy5zZXRV
bmlxdWUodHJ1ZSk7IH0KLQotICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhlIHN0eWxl
IGlzIGFmZmVjdGVkIGJ5IGR5bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hhbmdpbmcs
IG91ciBwb3NpdGlvbiBjaGFuZ2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQotICAgIGJv
b2wgYWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuYWZmZWN0ZWRC
eUVtcHR5KCk7IH0KLSAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5lbXB0eVN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IG1f
Yml0ZmllbGRzLnNldEFmZmVjdGVkQnlFbXB0eSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0VW5pcXVl
KHRydWUpOyBtX2JpdGZpZWxkcy5zZXRFbXB0eVN0YXRlKGIpOyB9Ci0gICAgYm9vbCBjaGlsZHJl
bkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBjaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgfHwgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RD
aGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0
Q2hpbGRSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
KCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyh0cnVl
KTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50
UnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcyh0cnVlKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgdm9p
ZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgbV9iaXRm
aWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7
IH0KLSAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmZpcnN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRGaXJzdENoaWxkU3RhdGUoKSB7IG1f
Yml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0Rmlyc3RDaGlsZFN0YXRl
KHRydWUpOyB9Ci0gICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
ZmllbGRzLmxhc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKCkg
eyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRzLnNldExhc3RDaGlsZFN0
YXRlKHRydWUpOyB9Ci0gICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0ZmllbGRzLmNoaWxkSW5kZXgoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25l
ZCBpbmRleCkgeyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRzLnNldENo
aWxkSW5kZXgoaW5kZXgpOyB9CisgICAgLy8gQSB1bmlxdWUgc3R5bGUgaXMgb25lIHRoYXQgaGFz
IG1hdGNoZXMgc29tZXRoaW5nIHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KKyAg
ICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pcXVl
OyB9CisgICAgdm9pZCBzZXRVbmlxdWUoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5fdW5pcXVlID0g
dHJ1ZTsgfQorCisgICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJp
dGVkX2ZsYWdzLl9lbXB0eVN0YXRlOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikg
eyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eVN0YXRlID0gYjsgfQorICAg
IGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
Ll9maXJzdENoaWxkU3RhdGU7IH0KKyAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZSgpIHsgc2V0
VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5fZmlyc3RDaGlsZFN0YXRlID0gdHJ1ZTsgfQor
ICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxh
Z3MuX2xhc3RDaGlsZFN0YXRlOyB9CisgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0
VW5pcXVlKCk7IG5vbmluaGVyaXRlZF9mbGFncy5fbGFzdENoaWxkU3RhdGUgPSB0cnVlOyB9CiAK
ICAgICBDb2xvciB2aXNpdGVkRGVwZW5kZW50Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbV9i
aXRmaWVsZHMuc2V0RXhwbGljaXRJbmhlcml0YW5jZSh0cnVlKTsgfQotICAgIGJvb2wgaGFzRXhw
bGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5l
eHBsaWNpdEluaGVyaXRhbmNlKCk7IH0KKyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0
ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2V4cGxpY2l0SW5oZXJpdGFuY2Ug
PSB0cnVlOyB9CisgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fZXhwbGljaXRJbmhlcml0YW5jZTsgfQog
CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175980</attachid>
            <date>2012-11-26 05:51:38 -0800</date>
            <delta_ts>2012-11-27 06:18:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121126144849.patch</filename>
            <type>text/plain</type>
            <size>61660</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4OTk4YTFhZGM1Zjcz
OWNiMWZiODlmNzQyNGJkNDI4MDAyZGVmNy4uYzViNWUyNjU0ZmYyYWIyZjQ3ZjJjYWRkNGQ1ZDAw
NWQ1ZGM3OWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTExLTA3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIE1v
dmUgc3R5bGUgZGVwZW5kZW5jaWVzIG91dCBvZiBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZXMgZmFjdHMgb2JzZXJ2ZWQgYWJvdXQgcmVz
dHlsaW5nIGRlcGVuZGVuY2llcyBvdXQgb2YgUmVuZGVyU3R5bGUgYW5kCisgICAgICAgIGludG8g
UmFyZURhdGEgZm9yIE5vZGUgYW5kIEVsZW1lbnQuIFRoaXMgYWxzbyBlbmFibGVzIGZ1cnRoZXIg
Y2xlYW51cAorICAgICAgICBpbiByZWxhdGVkIGNvZGUgdGhhdCB0cmllZCB0byBkZWFsIHdpdGgg
cHJvYmxlbXMgY2F1c2VkIHdpdGggdGhlIHBsYWNlbWVudAorICAgICAgICBvZiB0aGUgZGF0YS4K
KworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NpYmxpbmdUcmF2
ZXJzYWxTdHJhdGVnaWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01TaWJsaW5nVHJhdmVyc2Fs
U3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zl
ck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYW5TaGFy
ZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50RWxlbWVudFByZXZl
bnRzU2hhcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFy
ZWRTdHlsZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZEluZGV4KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgor
ICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6cmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6c3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c3R5bGVBZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTdHlsZUFm
ZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6Cisg
ICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVE
YXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZl
Y3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRBZmZlY3Rl
ZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZlY3RlZEJ5QWN0
aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeUFjdGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmFmZmVjdGVkQnlEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0QWZmZWN0ZWRCeURyYWcpOgorICAgICAg
ICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRy
ZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6
OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6Y2hpbGRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENo
aWxkSW5kZXgpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5kZXJlcklmTmVlZGVk
KToKKyAgICAgICAgKiBwYWdlL1RvdWNoQWRqdXN0bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUb3VjaEFkanVzdG1lbnQ6Om5vZGVSZXNwb25kc1RvVGFwR2VzdHVyZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnVwZGF0ZURyYWdTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVk
RnJvbSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTIt
MTEtMjYgIEt1bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIEVuYWJsZSBpbnB1dCB0eXBlIGRhdGV0aW1lLWxvY2FsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDM4ZDQxZjc4NDg4NjVkYzhhYzNjMTY0
OTE5MjYzODY0NjU5MWJkMzIuLjc1YWRhZjljNTRiNWY3YjJhOTg3NTFhMGE3MWViMzM4ZjNjY2Zi
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01MjMsMTAgKzUy
Myw5IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVja1NlbGVj
dG9yKG5leHRDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0
eWxlICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAg
cGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsK
KyAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAgICAgaWYg
KEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlE
aXJlY3RBZGphY2VudFJ1bGVzKCk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dENvbnRleHQuZWxl
bWVudCA9IGNvbnRleHQuZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwogICAgICAg
ICBpZiAoIW5leHRDb250ZXh0LmVsZW1lbnQpCkBAIC01MzcsMTAgKzUzNiw5IEBAIFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0
LCBpZ25vcmVEeW5hbWljUHNldWRvKTsKIAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0
QWRqYWNlbnQ6Ci0gICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUgJiYgY29udGV4
dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclN0eWxlKiBw
YXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50
U3R5bGUgOiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAg
ICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICBpZiAoRWxlbWVudCog
cGFyZW50RWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKQorICAgICAg
ICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMoKTsKICAgICAgICAgfQogICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0g
Y29udGV4dC5lbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CiAgICAgICAgIG5leHRD
b250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKQEAgLTgxNCw2ICs4MTIsNyBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEVtcHR5U3RhdGUocmVzdWx0KTsKICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSAmJiAoZWxl
bWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXNlc1NpYmxpbmdSdWxl
cygpIHx8IGVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnVuaXF1ZSgpKSkKQEAgLTgyMywxMyArODIy
LDExIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBmaXJzdC1j
aGlsZCBtYXRjaGVzIHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKLSAgICAgICAg
ICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNGaXJzdENo
aWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1l
bnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENo
aWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgICAgICAgICAgICAgICAgICBw
YXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Rmlyc3RDaGlsZFN0YXRlKCk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtODM4LDEzICs4MzUsMTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9m
VHlwZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxl
bWVudCBvZiBpdHMgdHlwZQotICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHNpYmxpbmdU
cmF2ZXJzYWxTdHJhdGVneS5pc0ZpcnN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1l
KCkpOwotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTg1NCw5ICs4NDgsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCwgYwogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5p
c2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RD
aGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0
eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29u
dGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJl
bnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50
U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxl
bWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCAmJiBjaGlsZFN0eWxlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hpbGRTdHlsZS0+c2V0TGFzdENoaWxkU3RhdGUoKTsKICAgICAgICAgICAgICAgICB9CkBA
IC04NjYsMTEgKzg1OCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBsYXN0LW9mLXR5
cGUgbWF0Y2hlcyB0aGUgbGFzdCBlbGVtZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAo
RWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAg
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9t
b2RlID09IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgICAg
ICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVu
dC0+dGFnUU5hbWUoKSk7CkBAIC04ODIsMTEgKzg3MSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0
LCBjCiAgICAgICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVu
dEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJhdmVyc2Fs
U3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9k
ZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
Y2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUg
OiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBh
cmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJl
bnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0Q2hpbGQgJiYgY2hpbGRT
dHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEZpcnN0Q2hpbGRT
dGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAob25seUNoaWxkICYmIGNoaWxkU3R5bGUp
CkBAIC04OTksMTEgKzg4NSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCiAgICAgICAgICAgICBpZiAo
RWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRD
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAg
cGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVt
ZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTkxNywxMSArOTAwLDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVn
eS5jb3VudEVsZW1lbnRzQmVmb3JlKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21v
ZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxl
IDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQ
YXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGVsZW1lbnQtPnNldENoaWxkSW5kZXgoY291bnQpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNl
dENoaWxkSW5kZXgoY291bnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hp
bGRTdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50
KSkKQEAgLTkzMywxMSArOTE1LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0g
MSArIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5jb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGVs
ZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwotICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRT
dHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisg
ICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKIAogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk0
NywxMSArOTI2LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIGlmICgh
c2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwog
ICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgaW50IGNvdW50ID0gMSArIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5jb3VudEVsZW1lbnRz
QWZ0ZXIoZWxlbWVudCk7CkBAIC05NjMsMTEgKzkzOSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0
LCBjCiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJl
c29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
OiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
cGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAg
ICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQt
PmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xMDA1LDEwICs5NzgsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwog
ICAgICAgICAgICAgLy8gLi4uZXhjZXB0IGlmIDp2aXNpdGVkIG1hdGNoaW5nIGlzIGRpc2FibGVk
IGZvciBhbmNlc3Rvci9zaWJsaW5nIG1hdGNoaW5nLgogICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmlzTGluaygpICYmIGNvbnRleHQudmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0Y2hF
bmFibGVkOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOgotICAgICAgICAg
ICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQotICAgICAgICAgICAgICAgIGNvbnRleHQuZWxl
bWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5RHJhZ1J1bGVzKHRydWUpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5y
ZW5kZXJTdHlsZSgpLT5zZXRBZmZlY3RlZEJ5RHJhZ1J1bGVzKHRydWUpOworICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5z
ZXRTdHlsZUFmZmVjdGVkQnlEcmFnKHRydWUpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnJl
bmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNEcmFnZ2luZygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDE4LDEwICs5ODks
OCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4g
cXVpcmtzIG1vZGUsIHRoZW4gaG92ZXIgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBu
bwogICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjpob3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRo
aW5nLiBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2l0ZXMgbGlrZSB3c2ouY29tLgogICAgICAgICAg
ICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBjb250ZXh0LmlzU3ViU2VsZWN0b3IgfHwgKHNlbGVj
dG9yLT5oYXNUYWcoKSAmJiAhZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZWxlbWVudC0+
aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92
ZXJSdWxlcyh0cnVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LT5yZW5kZXJT
dHlsZSgpKQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5zZXRB
ZmZlY3RlZEJ5SG92ZXJSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRTdHlsZUFm
ZmVjdGVkQnlIb3Zlcih0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aG92ZXJl
ZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlbGVtZW50
LCBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEwMzAsMTAgKzk5OSw4IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0LCBjCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiA6
YWN0aXZlIHNob3VsZCBuZXZlciBtYXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgIC8v
IGhyZWYgYW5kICo6YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuCiAgICAgICAgICAg
ICBpZiAobV9zdHJpY3RQYXJzaW5nIHx8IGNvbnRleHQuaXNTdWJTZWxlY3RvciB8fCAoc2VsZWN0
b3ItPmhhc1RhZygpICYmICFlbGVtZW50LT5oYXNUYWdOYW1lKGFUYWcpKSB8fCBlbGVtZW50LT5p
c0xpbmsoKSkgewotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEFmZmVjdGVkQnlBY3Rp
dmVSdWxlcyh0cnVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LT5yZW5kZXJT
dHlsZSgpKQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5zZXRB
ZmZlY3RlZEJ5QWN0aXZlUnVsZXModHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9
PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0U3R5bGVB
ZmZlY3RlZEJ5QWN0aXZlKHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5hY3Rp
dmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZWxlbWVu
dCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Np
YmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWdpZXMuaAppbmRleCBlNTgzZTZjMTMwYzk3YmRmNTQwODRiMzdjNDQwMTFm
YjY3NDI0NWJkLi5iZWJmZWY4ZTU5ZWQ4ZGY5NWJkMmYyY2ZlODllYWY0NTllZjZkMWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaApAQCAt
ODAsOCArODAsNyBAQCBpbmxpbmUgaW50IERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291
bnRFbGVtZW50c0JlZm9yZShFbGVtZW50KiBlbGVtZW50KSBjbwogewogICAgIGludCBjb3VudCA9
IDA7CiAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNF
bGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVt
ZW50U2libGluZygpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBzID0gc2libGluZy0+cmVuZGVy
U3R5bGUoKTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzID8gcy0+Y2hpbGRJbmRleCgpIDog
MDsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzaWJsaW5nLT5jaGlsZEluZGV4KCk7CiAgICAg
ICAgIGlmIChpbmRleCkgewogICAgICAgICAgICAgY291bnQgKz0gaW5kZXg7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzMGRiYzU2YjY2
N2VkZGNjNzdhNTBjNjEyN2NiMDIyZTBjYjY4YTE0Li41ZTk5M2Q0MWQ0OWI4YjJmZTM0MmQ5YTBm
NTU4YjU0NDVjZDc0NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0x
MjQ5LDEyICsxMjQ5LDE0IEBAIGlubGluZSBTdHlsZWRFbGVtZW50KiBTdHlsZVJlc29sdmVyOjpm
aW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiBub2RlLCB1bnNpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihub2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IHBhcmVudFN0eWxlUHJldmVudHNTaGFyaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKGNvbnN0
IEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHBhcmVudFN0eWxlLT5jaGls
ZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKQotICAgICAgICB8fCBwYXJlbnRTdHlsZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKLSAgICAgICAgfHwgcGFyZW50U3R5
bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgCi0gICAgICAgIHx8IHBhcmVu
dFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CisgICAgaWYg
KCFwYXJlbnRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHBhcmVu
dEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpCisgICAgICAgIHx8
IHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpCisgICAg
ICAgIHx8IHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkK
KyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNl
bnRSdWxlcygpOwogfQogCiBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVk
U3R5bGUoKQpAQCAtMTI3MSw3ICsxMjczLDcgQEAgUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6
OmxvY2F0ZVNoYXJlZFN0eWxlKCkKICAgICAvLyBJZHMgc3RvcCBzdHlsZSBzaGFyaW5nIGlmIHRo
ZXkgc2hvdyB1cCBpbiB0aGUgc3R5bGVzaGVldHMuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudC0+
aGFzSUQoKSAmJiBtX2ZlYXR1cmVzLmlkc0luUnVsZXMuY29udGFpbnMobV9zdHlsZWRFbGVtZW50
LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwoKSkpCiAgICAgICAgIHJldHVybiAwOwotICAg
IGlmIChwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhtX3BhcmVudFN0eWxlKSkKKyAgICBpZiAo
cGFyZW50RWxlbWVudFByZXZlbnRzU2hhcmluZyhtX2VsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX3N0eWxlZEVsZW1lbnQtPmhhc1Njb3BlZEhU
TUxTdHlsZUNoaWxkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTMwNiw3ICsxMzA4LDcgQEAg
UmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6OmxvY2F0ZVNoYXJlZFN0eWxlKCkKICAgICBpZiAo
c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcygpKQogICAgICAgICByZXR1cm4g
MDsKICAgICAvLyBUcmFja2luZyBjaGlsZCBpbmRleCByZXF1aXJlcyB1bmlxdWUgc3R5bGUgZm9y
IGVhY2ggbm9kZS4gVGhpcyBtYXkgZ2V0IHNldCBieSB0aGUgc2libGluZyBydWxlIG1hdGNoIGFi
b3ZlLgotICAgIGlmIChwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhtX3BhcmVudFN0eWxlKSkK
KyAgICBpZiAocGFyZW50RWxlbWVudFByZXZlbnRzU2hhcmluZyhtX2VsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzaGFyZUVsZW1lbnQtPnJl
bmRlclN0eWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjBm
OWM0YzAwYzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4uN2YwM2YyMDA3ODFmMzRhNjQw
YmZiMjRmNTY1NWI1NjczOTAxYjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cApAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wg
ZG93biwgYm9vbCBwYXVzZSkKICAgICAvLyBub3RlIHRoYXQgd2UgbmVlZCB0byByZWNhbGMgdGhl
IHN0eWxlCiAgICAgLy8gRklYTUU6IE1vdmUgdG8gRWxlbWVudAogICAgIGlmIChyZW5kZXJlcigp
KSB7Ci0gICAgICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmFm
ZmVjdGVkQnlBY3RpdmVSdWxlcygpOworICAgICAgICBib29sIHJlYWN0c1RvUHJlc3MgPSBzdHls
ZUFmZmVjdGVkQnlBY3RpdmUoKTsKICAgICAgICAgaWYgKHJlYWN0c1RvUHJlc3MpCiAgICAgICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJl
bmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkgewpAQCAtOTMwLDcgKzkzMCw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0SG92ZXJlZChib29sIG92ZXIpCiAgICAgLy8gbm90ZSB0
aGF0IHdlIG5lZWQgdG8gcmVjYWxjIHRoZSBzdHlsZQogICAgIC8vIEZJWE1FOiBNb3ZlIHRvIEVs
ZW1lbnQKICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5
bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKKyAgICAgICAgaWYgKHN0eWxlQWZmZWN0ZWRC
eUhvdmVyKCkpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIGlm
IChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAg
ICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBI
b3ZlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhNGY3ZDcyYWZmMzkxNzI4ODQ1
NDhkY2ZkNWNkZDJjMWUzY2IwODQxLi43YTE3ZjU0NGMwNzdjMzk4ZTRjNzBjZTRkZjk5MWI2ZTgz
M2VmNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMjQzLDYgKzEyNDMsNyBAQCB2b2lk
IEVsZW1lbnQ6OmRldGFjaCgpCiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVsZW1l
bnRSYXJlRGF0YSgpOwogICAgICAgICBkYXRhLT5zZXRJc0luQ2FudmFzU3VidHJlZShmYWxzZSk7
CiAgICAgICAgIGRhdGEtPnJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgICAgICBkYXRhLT5yZXNl
dER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CiAgICAgfQogCiAgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIHNoYWRvdyA9IHRoaXMtPnNoYWRvdygpKSB7CkBAIC0xMzEwLDE1ICsxMzExLDEyIEBA
IHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIC8vIFJl
ZiBjdXJyZW50U3R5bGUgaW4gY2FzZSBpdCB3b3VsZCBvdGhlcndpc2UgYmUgZGVsZXRlZCB3aGVu
IHNldHRpbmcgdGhlIG5ldyBzdHlsZSBpbiB0aGUgcmVuZGVyZXIuCiAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBjdXJyZW50U3R5bGUocmVuZGVyU3R5bGUoKSk7CiAgICAgYm9vbCBoYXNQYXJlbnRT
dHlsZSA9IHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpID8gc3RhdGljX2Nhc3Q8Ym9v
bD4ocGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCktPnJlbmRlclN0eWxlKCkpIDogZmFs
c2U7Ci0gICAgYm9vbCBoYXNEaXJlY3RBZGphY2VudFJ1bGVzID0gY3VycmVudFN0eWxlICYmIGN1
cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwotICAg
IGJvb2wgaGFzSW5kaXJlY3RBZGphY2VudFJ1bGVzID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRT
dHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIGJv
b2wgaGFzRGlyZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFj
ZW50UnVsZXMoKTsKKyAgICBib29sIGhhc0luZGlyZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKIAogICAgIGlmICgoY2hhbmdlID4g
Tm9DaGFuZ2UgfHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewotICAgICAgICBpZiAoaGFzUmFyZURh
dGEoKSkgewotICAgICAgICAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVE
YXRhKCk7Ci0gICAgICAgICAgICBkYXRhLT5yZXNldENvbXB1dGVkU3R5bGUoKTsKLSAgICAgICAg
ICAgIGRhdGEtPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoaGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5y
ZXNldENvbXB1dGVkU3R5bGUoKTsKICAgICB9CiAgICAgaWYgKGhhc1BhcmVudFN0eWxlICYmIChj
aGFuZ2UgPj0gSW5oZXJpdCB8fCBuZWVkc1N0eWxlUmVjYWxjKCkpKSB7CiAgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CkBAIC0xMzM1LDI3
ICsxMzMzLDYgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2Up
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY3VycmVudFN0
eWxlKSB7Ci0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSAiYWZmZWN0ZWQgYnkiIGJpdHMgdGhhdCB3
ZXJlIHByb3BhZ2F0ZWQgdG8gdXMgZnJvbSBkZXNjZW5kYW50cyBpbiB0aGUgY2FzZSB3aGVyZSB3
ZSBkaWRuJ3QgZG8gYSBmdWxsCi0gICAgICAgICAgICAvLyBzdHlsZSBjaGFuZ2UgKGUuZy4sIG9u
bHkgaW5saW5lIHN0eWxlIGNoYW5nZWQpLgotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+
YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZm
ZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5h
ZmZlY3RlZEJ5QWN0aXZlUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZm
ZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+
YWZmZWN0ZWRCeURyYWdSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRBZmZl
Y3RlZEJ5RHJhZ1J1bGVzKHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+Y2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpKQotICAgICAgICAgICAgICAg
IG5ld1N0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgaWYgKGN1
cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkpCi0gICAgICAg
ICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygp
OwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwotICAgICAg
ICB9Ci0KICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICBpZiAoY2ggIT0gTm9DaGFuZ2UgfHwgcHNldWRvU3R5bGVDYWNo
ZUlzSW52YWxpZChjdXJyZW50U3R5bGUuZ2V0KCksIG5ld1N0eWxlLmdldCgpKSB8fCAoY2hhbmdl
ID09IEZvcmNlICYmIHJlbmRlcmVyLT5yZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRp
b24oKSkgfHwgc3R5bGVDaGFuZ2VUeXBlKCkgPT0gU3ludGhldGljU3R5bGVDaGFuZ2UpCiAgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShuZXdTdHlsZS5nZXQoKSk7
CkBAIC0xNDgzLDcgKzE0NjAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghc3R5bGUg
JiYgIWVsZW1lbnQtPnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghc3R5bGUgfHwgKHN0eWxlLT5hZmZlY3RlZEJ5RW1wdHkoKSAmJiAoIXN0eWxlLT5l
bXB0eVN0YXRlKCkgfHwgZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKSkpCisgICAgaWYgKCFzdHls
ZSB8fCAoZWxlbWVudC0+c3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSAmJiAoIXN0eWxlLT5lbXB0eVN0
YXRlKCkgfHwgZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKSkpCiAgICAgICAgIGVsZW1lbnQtPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIApAQCAtMTQ5MywxMyArMTQ3MCwxMyBAQCBzdGF0aWMg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBib29sIGZpbgogICAgIC8vIDplbXB0eSBzZWxlY3Rvci4KICAgICBjaGVja0ZvckVt
cHR5U3R5bGVDaGFuZ2UoZSwgc3R5bGUpOwogICAgIAotICAgIGlmICghc3R5bGUgfHwgKGUtPm5l
ZWRzU3R5bGVSZWNhbGMoKSAmJiBzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1
bGVzKCkpKQorICAgIGlmICghc3R5bGUgfHwgKGUtPm5lZWRzU3R5bGVSZWNhbGMoKSAmJiBlLT5j
aGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9u
J3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3Qg
dGltZS4KICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhp
bmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KICAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAg
aW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQgdGhhdCB3ZSdsbCBza2lwIHRoaXMg
YmxvY2suCi0gICAgaWYgKHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KSAmJiBhZnRlckNoYW5nZSkgeworICAgIGlmIChlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENo
aWxkUnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmly
c3QgY2hpbGQuCiAgICAgICAgIE5vZGUqIG5ld0ZpcnN0Q2hpbGQgPSAwOwogICAgICAgICBmb3Ig
KG5ld0ZpcnN0Q2hpbGQgPSBlLT5maXJzdENoaWxkKCk7IG5ld0ZpcnN0Q2hpbGQgJiYgIW5ld0Zp
cnN0Q2hpbGQtPmlzRWxlbWVudE5vZGUoKTsgbmV3Rmlyc3RDaGlsZCA9IG5ld0ZpcnN0Q2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHt9OwpAQCAtMTUyMiw3ICsxNDk5LDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwg
Ym9vbCBmaW4KIAogICAgIC8vIDpsYXN0LWNoaWxkLiAgSW4gdGhlIHBhcnNlciBjYWxsYmFjayBj
YXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0
IHRoZSBmaXJzdCB0aW1lLgogICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRv
IGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgotICAgIGlmIChzdHlsZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpIHsKKyAg
ICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBiZWZvcmVDaGFu
Z2UpIHsKICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCiAgICAgICAgIE5vZGUq
IG5ld0xhc3RDaGlsZCA9IDA7CiAgICAgICAgIGZvciAobmV3TGFzdENoaWxkID0gZS0+bGFzdENo
aWxkKCk7IG5ld0xhc3RDaGlsZCAmJiAhbmV3TGFzdENoaWxkLT5pc0VsZW1lbnROb2RlKCk7IG5l
d0xhc3RDaGlsZCA9IG5ld0xhc3RDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHt9OwpAQCAtMTU0
NSw3ICsxNTIyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4KIAogICAgIC8vIFRoZSArIHNl
bGVjdG9yLiAgV2UgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBmaXJzdCBlbGVtZW50IGZvbGxvd2lu
ZyB0aGUgaW5zZXJ0aW9uIHBvaW50LiAgSXQgaXMgdGhlIG9ubHkgcG9zc2libGUgZWxlbWVudAog
ICAgIC8vIHRoYXQgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBET00gY2hhbmdlLgotICAgIGlm
IChzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpICYmIGFmdGVy
Q2hhbmdlKSB7CisgICAgaWYgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVs
ZXMoKSAmJiBhZnRlckNoYW5nZSkgewogICAgICAgICBOb2RlKiBmaXJzdEVsZW1lbnRBZnRlcklu
c2VydGlvbiA9IDA7CiAgICAgICAgIGZvciAoZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSBh
ZnRlckNoYW5nZTsKICAgICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiAmJiAh
Zmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24tPmlzRWxlbWVudE5vZGUoKTsKQEAgLTE1NjEsOCAr
MTUzOCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50
KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgZmluCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBp
cyAwIGluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgc28gd2Ugd29uJ3QgZG8gYW55IHdvcmsg
Zm9yIHRoZSBmb3J3YXJkIGNhc2UgaWYgd2UgZG9uJ3QgaGF2ZSB0by4KICAgICAvLyBGb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucyB3ZSBqdXN0IG1hcmsgdGhlIHBhcmVudCBub2RlIGFzIGNoYW5nZWQs
IHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gbWFrZSBjaGlsZHJlbkNoYW5nZWQgTyhuXjIpIGJ5IGNy
YXdsaW5nIGFsbCBvdXIga2lkcwogICAgIC8vIGhlcmUuICByZWNhbGNTdHlsZSB3aWxsIHRoZW4g
Zm9yY2UgYSB3YWxrIG9mIHRoZSBjaGlsZHJlbiB3aGVuIGl0IHNlZXMgdGhhdCB0aGlzIGhhcyBo
YXBwZW5lZC4KLSAgICBpZiAoKHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2UpIHx8Ci0gICAgICAgIChzdHlsZS0+Y2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpKQorICAg
IGlmICgoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGFm
dGVyQ2hhbmdlKQorICAgICAgICB8fCAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpKQogICAgICAgICBlLT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CiB9CiAKQEAgLTE5NjQsMTQgKzE5NDEsODIgQEAgUmVuZGVyU3R5bGUqIEVsZW1l
bnQ6OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICBy
ZXR1cm4gcHNldWRvRWxlbWVudFNwZWNpZmllciA/IGRhdGEtPm1fY29tcHV0ZWRTdHlsZS0+Z2V0
Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikgOiBkYXRhLT5tX2NvbXB1
dGVkU3R5bGUuZ2V0KCk7CiB9CiAKK2Jvb2wgRWxlbWVudDo6c3R5bGVBZmZlY3RlZEJ5RW1wdHko
KSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgp
LT5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpOworfQorCiB2b2lkIEVsZW1lbnQ6OnNldFN0eWxlQWZm
ZWN0ZWRCeUVtcHR5KCkKIHsKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0U3R5bGVB
ZmZlY3RlZEJ5RW1wdHkodHJ1ZSk7CiB9CiAKLWJvb2wgRWxlbWVudDo6c3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKSBjb25zdAorYm9vbCBFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFs
UnVsZXMoKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJl
RGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ICYmIChlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KCkgfHwgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxl
cygpKTsKK30KKworYm9vbCBFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0
YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKK30KKwordm9pZCBFbGVt
ZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKQoreworICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
dHJ1ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXMoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0
YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpOworfQorCit2b2lkIEVsZW1l
bnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXModHJ1
ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRS
dWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVE
YXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKK30KKwordm9p
ZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkKK3sK
KyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcyh0cnVlKTsKK30KKworYm9vbCBFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURh
dGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHRydWUpOworfQorCiti
b29sIEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKK30KKwordm9pZCBF
bGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCit7
CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKHRydWUpOworfQorCit1bnNpZ25lZCBFbGVtZW50OjpjaGlsZElu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0
YSgpLT5jaGlsZEluZGV4KCkgOiAwOworfQorCit2b2lkIEVsZW1lbnQ6OnNldENoaWxkSW5kZXgo
dW5zaWduZWQgaW5kZXgpCit7CisgICAgRWxlbWVudFJhcmVEYXRhKiByYXJlRGF0YSA9IGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpOworICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJT
dHlsZSgpKQorICAgICAgICBzdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgcmFyZURhdGEtPnNldENo
aWxkSW5kZXgoaW5kZXgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzSW5DYW52YXNTdWJ0cmVl
KGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4MjMzOWM5NmJl
MWVhMmRlZTBhNjI0ZWFiYzJlMDdjNTQ2Yzg2ZTE3Li42NjdkZjYwYzBkMWE4NDYxMGQxODQ0ZDc1
M2Q2MDc4NjFjMmU2NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI4Niw5ICsyODYsMjQgQEAg
cHVibGljOgogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BT
RVVETyk7CiAKKyAgICAvLyBNZXRob2RzIGZvciBpbmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZl
Y3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4sIGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9z
aXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcgbGlzdCwgZXRjLikKICAgICB2b2lkIHNldFN0
eWxlQWZmZWN0ZWRCeUVtcHR5KCk7CiAgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNv
bnN0OwogCisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSBjb25z
dDsKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7CisgICAgYm9v
bCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKKyAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIHVuc2lnbmVkIGNo
aWxkSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQpOworCiAg
ICAgdm9pZCBzZXRJc0luQ2FudmFzU3VidHJlZShib29sKTsKICAgICBib29sIGlzSW5DYW52YXNT
dWJ0cmVlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCA0
NTAxZjE5MmIxMzNmM2ExMjViYjQ3OWYxMTBmOTI2NmIwZTc5M2Y4Li43ZWM2NWE3OTViZDYyYWEx
N2Y1ZTlhOWEwZWE4MmNhNTdhNmFmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbGVtZW50UmFyZURh
dGEoKTsKIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CisgICAgdm9pZCByZXNldER5
bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CiAKICAgICB1c2luZyBOb2RlUmFyZURhdGE6Om5l
ZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwogICAgIHVzaW5nIE5vZGVS
YXJlRGF0YTo6c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CkBA
IC01Nyw2ICs1OCwxOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjppc0luVG9w
TGF5ZXI7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJc0luVG9wTGF5ZXI7CiAjZW5kaWYK
KyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxl
czsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRS
dWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0
Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURh
dGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcg
Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
OworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxk
SW5kZXg7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZEluZGV4OwogCiAgICAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRWxlbWVu
dCosIENvbGxlY3Rpb25UeXBlKTsKICAgICBIVE1MQ29sbGVjdGlvbiogY2FjaGVkSFRNTENvbGxl
Y3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKQEAgLTEwMSw2ICsxMTUsMjAgQEAgaW5saW5lIEVs
ZW1lbnRSYXJlRGF0YTo6fkVsZW1lbnRSYXJlRGF0YSgpCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFy
ZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCiB7CiAgICAgbV9jb21wdXRlZFN0eWxlLmNsZWFy
KCk7CisgICAgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpOworICAgIHNldENoaWxkSW5k
ZXgoMCk7Cit9CisKK2lubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXREeW5hbWljUmVz
dHlsZU9ic2VydmF0aW9ucygpCit7CisgICAgc2V0QWZmZWN0ZWRCeUhvdmVyKGZhbHNlKTsKKyAg
ICBzZXRBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKKyAgICBzZXRBZmZlY3RlZEJ5RHJhZyhmYWxz
ZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKGZhbHNlKTsKKyAg
ICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSk7CisgICAgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhmYWxzZSk7CisgICAgc2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CisgICAgc2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKaW5kZXggNTY4NmU2YjZiOGQ0MzcyZTBmOTk2NTdhM2E4OTAzZWY1Njk3OTYyZi4u
OWIzNzMyNTMxMDNkYmViNmQyYzZhZGYyZTM1MjY1YjY4OWY1MTg5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMzQ1LDEyICszNDUsNiBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0
IFJlbmRlclN0eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5bGUqIHMyLCBEb2N1bQogICAgIGVsc2Ug
aWYgKHMxLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHx8IHMyLT5oYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQogICAgICAgICBjaCA9IEluaGVyaXQ7CiAKLSAg
ICAvLyBGb3IgbnRoLWNoaWxkIGFuZCBvdGhlciBwb3NpdGlvbmFsIHJ1bGVzLCB0cmVhdCBzdHls
ZXMgYXMgZGlmZmVyZW50IGlmIHRoZXkgaGF2ZQotICAgIC8vIGNoYW5nZWQgcG9zaXRpb25hbGx5
IGluIHRoZSBET00uIFRoaXMgd2F5IHN1YnNlcXVlbnQgc2libGluZyByZXNvbHV0aW9ucyB3b24n
dCBiZSBjb25mdXNlZAotICAgIC8vIGJ5IHRoZSB3cm9uZyBjaGlsZCBpbmRleCBhbmQgZXZhbHVh
dGUgdG8gaW5jb3JyZWN0IHJlc3VsdHMuCi0gICAgaWYgKGNoID09IE5vQ2hhbmdlICYmIHMxLT5j
aGlsZEluZGV4KCkgIT0gczItPmNoaWxkSW5kZXgoKSkKLSAgICAgICAgY2ggPSBOb0luaGVyaXQ7
Ci0KICAgICAvLyBJZiB0aGUgcHNldWRvU3R5bGVzIGhhdmUgY2hhbmdlZCwgd2Ugd2FudCBhbnkg
U3R5bGVDaGFuZ2UgdGhhdCBpcyBub3QgTm9DaGFuZ2UKICAgICAvLyBiZWNhdXNlIHNldFN0eWxl
IHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggYW55dGhpbmcgZWxzZS4KICAgICBpZiAoY2gg
PT0gTm9DaGFuZ2UgJiYgczEtPmhhc0FueVB1YmxpY1BzZXVkb1N0eWxlcygpKSB7CkBAIC0zODQs
NiArMzc4LDM5IEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5
bGUqIHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIsIERvY3VtCiAgICAgcmV0dXJuIGNoOwogfQog
Citib29sIE5vZGU6OnN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+YWZmZWN0ZWRCeUFjdGl2ZSgpOworfQorCit2
b2lkIE5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVlKQoreworICAgIGlm
ICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRB
ZmZlY3RlZEJ5QWN0aXZlKHZhbHVlKTsKK30KKworYm9vbCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlI
b3ZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+
YWZmZWN0ZWRCeUhvdmVyKCk7Cit9CisKK3ZvaWQgTm9kZTo6c2V0U3R5bGVBZmZlY3RlZEJ5SG92
ZXIoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgfHwgaGFzUmFyZURhdGEoKSkKKyAgICAg
ICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyKHZhbHVlKTsKK30KKworYm9v
bCBOb2RlOjpzdHlsZUFmZmVjdGVkQnlEcmFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSAmJiByYXJlRGF0YSgpLT5hZmZlY3RlZEJ5RHJhZygpOworfQorCit2b2lkIE5vZGU6
OnNldFN0eWxlQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgfHwg
aGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0QWZmZWN0ZWRCeURy
YWcodmFsdWUpOworfQorCiB2b2lkIE5vZGU6OnRyYWNrRm9yRGVidWdnaW5nKCkKIHsKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkM2FiM2JiNzg4YmQ0ZjFjM2QwZWNhMDk2MGU5NjVh
MjQ4ZGExOWE1Li44YTc2NjQ1ZDY3MjI2Y2ZlZGQ1YTBlOWIxMWMzNGQyNzBkYzVlNWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTU0Niw2ICs1NDYsMTMgQEAgcHVibGljOgogCiAgICAgUmVuZGVyU3R5bGUq
IGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciA9IE5PUFNFVURP
KSB7IHJldHVybiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsg
fQogCisgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0OworICAgIHZvaWQgc2V0
U3R5bGVBZmZlY3RlZEJ5SG92ZXIoYm9vbCk7CisgICAgYm9vbCBzdHlsZUFmZmVjdGVkQnlBY3Rp
dmUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZShib29sKTsKKyAg
ICBib29sIHN0eWxlQWZmZWN0ZWRCeURyYWcoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0eWxlQWZm
ZWN0ZWRCeURyYWcoYm9vbCk7CisKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8v
IE5vdGlmaWNhdGlvbiBvZiBkb2N1bWVudCBzdHJ1Y3R1cmUgY2hhbmdlcyAoc2VlIENvbnRhaW5l
ck5vZGUuaCBmb3IgbW9yZSBub3RpZmljYXRpb24gbWV0aG9kcykKICAgICAvLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCmluZGV4IDY1OTU5Zjc4YmJhZWU0NjM5NWMzOTQ2MGU3M2JhOWNlNDc1
ODAzNzEuLmMxZjkwMmRkMjczZjEwM2IyNGY5NjQxMmIxM2I4MTVlMjVkZGRkZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTIwNSwxMCArMjA1LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgOiBtX3RyZWVTY29wZSgwKQogICAgICAgICAsIG1fY2hpbGROb2RlTGlzdCgwKQogICAgICAg
ICAsIG1fdGFiSW5kZXgoMCkKKyAgICAgICAgLCBtX2NoaWxkSW5kZXgoMCkKICAgICAgICAgLCBt
X3RhYkluZGV4V2FzU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAgICAgLCBtX2lzRm9jdXNlZChm
YWxzZSkKICAgICAgICAgLCBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0
YWNoKGZhbHNlKQotICAgICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAg
ICAgICwgbV9pc0luQ2FudmFzU3VidHJlZShmYWxzZSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgICAgICwgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZhbHNlKQpAQCAtMjE2
LDYgKzIxNiwxNSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgICAg
ICAsIG1faXNJblRvcExheWVyKGZhbHNlKQogI2VuZGlmCisgICAgICAgICwgbV9zdHlsZUFmZmVj
dGVkQnlFbXB0eShmYWxzZSkKKyAgICAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUhvdmVyKGZhbHNl
KQorICAgICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKQorICAgICAgICAsIG1f
c3R5bGVBZmZlY3RlZEJ5RHJhZyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC0zMjAsNiAr
MzI5LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNGb2N1c2VkOyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkgeyBtX2lzRm9j
dXNlZCA9IGZvY3VzZWQ7IH0KIAorICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhv
dmVyKGJvb2wgdmFsdWUpIHsgbV9zdHlsZUFmZmVjdGVkQnlIb3ZlciA9IHZhbHVlOyB9CisgICAg
Ym9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUFmZmVjdGVkQnlB
Y3RpdmU7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX3N0
eWxlQWZmZWN0ZWRCeUFjdGl2ZSA9IHZhbHVlOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVBZmZlY3RlZEJ5RHJhZzsgfQorICAgIHZvaWQgc2V0QWZm
ZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsg
fQorCiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAogcHJvdGVjdGVkOgpAQCAtMzM4LDE2ICszNTQsMjkgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0luVG9wTGF5ZXI7IH0K
ICAgICB2b2lkIHNldElzSW5Ub3BMYXllcihib29sIHZhbHVlKSB7IG1faXNJblRvcExheWVyID0g
dmFsdWU7IH0KICNlbmRpZgorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpIHx8IGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0K
KyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOyB9CisgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1
bGVzOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzID0g
dmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQorICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2NoaWxkSW5kZXg7IH0KKyAgICB2b2lkIHNldENoaWxkSW5kZXgodW5z
aWduZWQgaW5kZXgpIHsgbV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KIAogcHJpdmF0ZToKICAgICBU
cmVlU2NvcGUqIG1fdHJlZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9u
b2RlTGlzdHM7CiAgICAgQ2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVMaXN0OwogICAgIHNob3J0
IG1fdGFiSW5kZXg7CisgICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZEluZGV4OwogICAgIGJvb2wg
bV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgOiAxOwogICAgIGJvb2wgbV9pc0ZvY3VzZWQgOiAx
OwogICAgIGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCA6
IDE7Ci0gICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKICAgICBib29sIG1faXNJ
bkNhbnZhc1N1YnRyZWUgOiAxOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29s
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CkBAIC0zNTUsNiArMzg0LDE4IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgIGJvb2wgbV9pc0luVG9wTGF5
ZXIgOiAxOwogI2VuZGlmCisgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKKyAg
ICBib29sIG1fc3R5bGVBZmZlY3RlZEJ5SG92ZXIgOiAxOworICAgIGJvb2wgbV9zdHlsZUFmZmVj
dGVkQnlBY3RpdmUgOiAxOworICAgIGJvb2wgbV9zdHlsZUFmZmVjdGVkQnlEcmFnIDogMTsKKyAg
ICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgorICAgIC8vIFdlIG9wdGltaXpl
IGZvciA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRpb25hbCBj
aGlsZCBzZWxlY3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKKyAgICAvLyAqLWNoaWxkLW9mLXR5cGUs
IHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGlsZHJlbiBj
aGFuZ2UgYXQgYWxsLgorICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA6IDE7
CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgOiAxOwor
ICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsK
KyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAx
OwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBPd25QdHI8VmVjdG9yPE93
blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+ID4gbV9tdXRhdGlvbk9ic2VydmVy
UmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCA5YmJmNjBhYmFiOGNhOWZlZTIxMGFlZTk4NmRmMWE5YzllMmM2NWI2Li4xMzNhMmQ4YTk4
N2UzMzA0NGEwM2VlOTFhNmNkYmI0MDBjNGE2MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIxNywxMSArMjE3LDkgQEAgdm9pZCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50SWZOZWVkZWQoKQogCiAgICAg
bW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKLSAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVy
SXNOZWVkZWQoKnRoaXMpKSB7Ci0gICAgICAgIGlmIChtX3N0eWxlLT5hZmZlY3RlZEJ5RW1wdHko
KSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7CisgICAg
aWYgKCFlbGVtZW50LT5yZW5kZXJlcklzTmVlZGVkKCp0aGlzKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KKwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRS
ZW5kZXJlcigpOwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyID0gdGhpcy0+bmV4dFJl
bmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3Rt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCAz
YTk1Njk1NmU1ZmQ3NTg3ZWIxNjBlZWU1N2ZmN2U5ZGIzYzkyNjI4Li5hMDU2YzQ3OTVkZjczYmIz
MTAxM2I4Y2Q5YWU4YWNiOTI4NTA3NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgbm9kZVJlc3BvbmRzVG9UYXBHZXN0dXJl
KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChub2RlLT5yZW5kZXJT
dHlsZSgpKSB7CiAgICAgICAgIC8vIEFjY2VwdCBub2RlcyB0aGF0IGhhcyBhIENTUyBlZmZlY3Qg
d2hlbiB0b3VjaGVkLgotICAgICAgICBpZiAobm9kZS0+cmVuZGVyU3R5bGUoKS0+YWZmZWN0ZWRC
eUFjdGl2ZVJ1bGVzKCkgfHwgbm9kZS0+cmVuZGVyU3R5bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVs
ZXMoKSkKKyAgICAgICAgaWYgKG5vZGUtPnN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIHx8IG5vZGUt
PnN0eWxlQWZmZWN0ZWRCeUhvdmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAppbmRleCAxNWRjZGQwNTgyOWU0ZTc2ZDhhMTQyNzZmMWJhN2Y2NDg0Yzc3NzIwLi5hZTA5
ZDQ2NDNiNjg0ZTRmMzIwMGI3Y2E4N2ZjYzI1MTNjMzE2MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjU0MCw3ICsyNTQwLDcgQEAgdm9pZCBSZW5k
ZXJPYmplY3Q6OnVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbikKIHsKICAgICBib29sIHZhbHVl
Q2hhbmdlZCA9IChkcmFnT24gIT0gaXNEcmFnZ2luZygpKTsKICAgICBzZXRJc0RyYWdnaW5nKGRy
YWdPbik7Ci0gICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBzdHlsZSgpLT5hZmZlY3RlZEJ5RHJhZ1J1
bGVzKCkgJiYgbm9kZSgpKQorICAgIGlmICh2YWx1ZUNoYW5nZWQgJiYgbm9kZSgpICYmIG5vZGUo
KS0+c3R5bGVBZmZlY3RlZEJ5RHJhZygpKQogICAgICAgICBub2RlKCktPnNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3Vy
cjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGN1cnItPnVwZGF0ZURyYWdT
dGF0ZShkcmFnT24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKaW5kZXggNmVjYWEwNDE3YTgwYWJmMDEyNmVjMTU2NWMyMGZiZDI2ZjAxMjNhNC4u
ZDczMzlmZTZhNmRkMmFiMmRkMDVjYWY1NDYzZDkwNWZkNjFiOTk0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC02MSw4ICs2MSw2IEBA
IHN0cnVjdCBTYW1lU2l6ZUFzQm9yZGVyVmFsdWUgewogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEJv
cmRlclZhbHVlKSA9PSBzaXplb2YoU2FtZVNpemVBc0JvcmRlclZhbHVlKSwgQm9yZGVyVmFsdWVf
c2hvdWxkX25vdF9ncm93KTsKIAogc3RydWN0IFNhbWVTaXplQXNSZW5kZXJTdHlsZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNhbWVTaXplQXNSZW5kZXJTdHlsZT4gewotICAgIHVuc2lnbmVkIG1fYml0
ZmllbGRzOwotCiAgICAgdm9pZCogZGF0YVJlZnNbN107CiAgICAgdm9pZCogb3duUHRyc1sxXTsK
ICNpZiBFTkFCTEUoU1ZHKQpAQCAtMjAzLDYgKzIwMSw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmNv
cHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikKICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX3Bvc2l0aW9uID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRp
b247CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZyA9IG90aGVyLT5ub25pbmhlcml0
ZWRfZmxhZ3MuX2Zsb2F0aW5nOwogICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdGFibGVfbGF5b3V0
ID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fdGFibGVfbGF5b3V0OworICAgIG5vbmluaGVy
aXRlZF9mbGFncy5fZXhwbGljaXRJbmhlcml0YW5jZSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxh
Z3MuX2V4cGxpY2l0SW5oZXJpdGFuY2U7CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2Rl
QmlkaSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpOwogICAgIG5vbmlu
aGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmUgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2Zs
YWdzLl9wYWdlX2JyZWFrX2JlZm9yZTsKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJl
YWtfYWZ0ZXIgPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzMTk5
NmZhMDVhYmI1Y2QwNTg5NDExYTU2ZmFjZjNjNzA3M2M1ZWMwLi41MDUzNzRlNWU5MTE3ZDk0MGEx
YjNkZmRiMjM3MjYxYTY3YTUzN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtMTM0LDc3ICsxMzQsNiBAQCBjbGFzcyBSZW5kZXJTdHlsZTog
cHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyU3R5bGU+IHsKICAgICBmcmllbmQgY2xhc3MgU3R5bGVS
ZXNvbHZlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgogcHJvdGVjdGVkOgogCi0gICAgY2xh
c3MgUmVuZGVyU3R5bGVCaXRmaWVsZHMgewotICAgIHB1YmxpYzoKLSAgICAgICAgUmVuZGVyU3R5
bGVCaXRmaWVsZHMoKQotICAgICAgICAgICAgOiBtX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9ycyhmYWxzZSkKLSAgICAgICAgICAgICwgbV91bmlxdWUoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fYWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2VtcHR5U3Rh
dGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFj
ZW50UnVsZXMoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9maXJzdENo
aWxkU3RhdGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbGFzdENoaWxkU3RhdGUoZmFsc2UpCi0g
ICAgICAgICAgICAsIG1fZXhwbGljaXRJbmhlcml0YW5jZShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9jaGlsZEluZGV4KDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYWZm
ZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4gbV9hZmZl
Y3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnM7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZl
Y3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoYm9vbCB2YWx1ZSkgeyBtX2FmZmVjdGVk
QnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgdW5p
cXVlKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWU7IH0KLSAgICAgICAgdm9pZCBzZXRVbmlxdWUo
Ym9vbCB2YWx1ZSkgeyBtX3VuaXF1ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgYWZmZWN0ZWRC
eUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5RW1wdHk7IH0KLSAgICAgICAgdm9p
ZCBzZXRBZmZlY3RlZEJ5RW1wdHkoYm9vbCB2YWx1ZSkgeyBtX2FmZmVjdGVkQnlFbXB0eSA9IHZh
bHVlOyB9Ci0gICAgICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlT
dGF0ZTsgfQotICAgICAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkgeyBtX2VtcHR5
U3RhdGUgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMgPSB2YWx1
ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsgfQotICAgICAg
ICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsg
bV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsgfQotICAgICAgICB2b2lk
IHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoYm9vbCB2YWx1ZSkgeyBt
X2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgPSB2YWx1ZTsgfQotICAgICAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7IH0KLSAg
ICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJv
b2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0g
dmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGZpcnN0Q2hpbGRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZFN0YXRlOyB9Ci0gICAgICAgIHZvaWQgc2V0
Rmlyc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgbV9maXJzdENoaWxkU3RhdGUgPSB2YWx1ZTsg
fQotICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hp
bGRTdGF0ZTsgfQotICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsg
bV9sYXN0Q2hpbGRTdGF0ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgZXhwbGljaXRJbmhlcml0
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwbGljaXRJbmhlcml0YW5jZTsgfQotICAgICAgICB2
b2lkIHNldEV4cGxpY2l0SW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkgeyBtX2V4cGxpY2l0SW5oZXJp
dGFuY2UgPSB2YWx1ZTsgfQotCi0gICAgICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkSW5kZXg7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2ln
bmVkIGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9Ci0KLSAgICBwcml2YXRlOgotICAg
ICAgICAvLyBUaGUgZm9sbG93aW5nIGJpdGZpZWxkIGlzIDMyLWJpdHMgbG9uZywgd2hpY2ggb3B0
aW1pemVzIHBhZGRpbmcgd2l0aCB0aGUKLSAgICAgICAgLy8gaW50IHJlZkNvdW50IGluIHRoZSBi
YXNlIGNsYXNzLiBCZXdhcmUgd2hlbiBhZGRpbmcgbW9yZSBiaXRzLgotICAgICAgICB1bnNpZ25l
ZCBtX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyA6IDE7Ci0gICAgICAgIHVu
c2lnbmVkIG1fdW5pcXVlIDogMTsKLQotICAgICAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxk
IG1hdGNoaW5nLgotICAgICAgICB1bnNpZ25lZCBtX2FmZmVjdGVkQnlFbXB0eSA6IDE7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fZW1wdHlTdGF0ZSA6IDE7Ci0KLSAgICAgICAgLy8gV2Ugb3B0aW1pemUg
Zm9yIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3NpdGlvbmFsIGNo
aWxkIHNlbGVjdG9ycyBsaWtlIG50aC1jaGlsZCBvcgotICAgICAgICAvLyAqLWNoaWxkLW9mLXR5
cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGlsZHJl
biBjaGFuZ2UgYXQgYWxsLgotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKLSAgICAgICAgdW5z
aWduZWQgbV9maXJzdENoaWxkU3RhdGUgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2xhc3RDaGls
ZFN0YXRlIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9leHBsaWNpdEluaGVyaXRhbmNlIDogMTsK
LSAgICAgICAgdW5zaWduZWQgbV9jaGlsZEluZGV4IDogMjA7IC8vIFBsZW50eSBvZiBiaXRzIHRv
IGNhY2hlIGFuIGluZGV4LgotICAgIH07Ci0gICAgUmVuZGVyU3R5bGVCaXRmaWVsZHMgbV9iaXRm
aWVsZHM7Ci0KICAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKICAgICBEYXRhUmVmPFN0
eWxlQm94RGF0YT4gbV9ib3g7CiAgICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+IHZpc3VhbDsK
QEAgLTI5NSwxMSArMjI0LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAmJiBfcGFn
ZV9icmVha19hZnRlciA9PSBvdGhlci5fcGFnZV9icmVha19hZnRlcgogICAgICAgICAgICAgICAg
ICYmIF9wYWdlX2JyZWFrX2luc2lkZSA9PSBvdGhlci5fcGFnZV9icmVha19pbnNpZGUKICAgICAg
ICAgICAgICAgICAmJiBfc3R5bGVUeXBlID09IG90aGVyLl9zdHlsZVR5cGUKLSAgICAgICAgICAg
ICAgICAmJiBfYWZmZWN0ZWRCeUhvdmVyID09IG90aGVyLl9hZmZlY3RlZEJ5SG92ZXIKLSAgICAg
ICAgICAgICAgICAmJiBfYWZmZWN0ZWRCeUFjdGl2ZSA9PSBvdGhlci5fYWZmZWN0ZWRCeUFjdGl2
ZQotICAgICAgICAgICAgICAgICYmIF9hZmZlY3RlZEJ5RHJhZyA9PSBvdGhlci5fYWZmZWN0ZWRC
eURyYWcKICAgICAgICAgICAgICAgICAmJiBfcHNldWRvQml0cyA9PSBvdGhlci5fcHNldWRvQml0
cworICAgICAgICAgICAgICAgICYmIF9leHBsaWNpdEluaGVyaXRhbmNlID09IG90aGVyLl9leHBs
aWNpdEluaGVyaXRhbmNlCiAgICAgICAgICAgICAgICAgJiYgX3VuaWNvZGVCaWRpID09IG90aGVy
Ll91bmljb2RlQmlkaQorICAgICAgICAgICAgICAgICYmIF9hZmZlY3RlZEJ5VW5jb21tb25BdHRy
aWJ1dGVTZWxlY3RvcnMgPT0gb3RoZXIuX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9ycworICAgICAgICAgICAgICAgICYmIF91bmlxdWUgPT0gb3RoZXIuX3VuaXF1ZQorICAgICAg
ICAgICAgICAgICYmIF9lbXB0eVN0YXRlID09IG90aGVyLl9lbXB0eVN0YXRlCisgICAgICAgICAg
ICAgICAgJiYgX2ZpcnN0Q2hpbGRTdGF0ZSA9PSBvdGhlci5fZmlyc3RDaGlsZFN0YXRlCisgICAg
ICAgICAgICAgICAgJiYgX2xhc3RDaGlsZFN0YXRlID09IG90aGVyLl9sYXN0Q2hpbGRTdGF0ZQog
ICAgICAgICAgICAgICAgICYmIF9pc0xpbmsgPT0gb3RoZXIuX2lzTGluazsKICAgICAgICAgfQog
CkBAIC0zMTQsMzEgKzI0NiwyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVuc2lnbmVkIF9wb3Np
dGlvbiA6IDM7IC8vIEVQb3NpdGlvbgogICAgICAgICB1bnNpZ25lZCBfZmxvYXRpbmcgOiAyOyAv
LyBFRmxvYXQKICAgICAgICAgdW5zaWduZWQgX3RhYmxlX2xheW91dCA6IDE7IC8vIEVUYWJsZUxh
eW91dAorICAgICAgICB1bnNpZ25lZCBfZXhwbGljaXRJbmhlcml0YW5jZSA6IDE7IC8vIEV4cGxp
Y2l0bHkgaW5oZXJpdHMgYSBub24taW5oZXJpdGVkIHByb3BlcnR5CiAKICAgICAgICAgdW5zaWdu
ZWQgX3VuaWNvZGVCaWRpIDogMzsgLy8gRVVuaWNvZGVCaWRpCi0gICAgICAgIHVuc2lnbmVkIF9w
YWdlX2JyZWFrX2JlZm9yZSA6IDI7IC8vIEVQYWdlQnJlYWsKICAgICAgICAgLy8gMzIgYml0cwor
ICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19iZWZvcmUgOiAyOyAvLyBFUGFnZUJyZWFrCiAg
ICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2FmdGVyIDogMjsgLy8gRVBhZ2VCcmVhawogICAg
ICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19pbnNpZGUgOiAyOyAvLyBFUGFnZUJyZWFrCiAKICAg
ICAgICAgdW5zaWduZWQgX3N0eWxlVHlwZSA6IDY7IC8vIFBzZXVkb0lkCiAgICAgICAgIHVuc2ln
bmVkIF9wc2V1ZG9CaXRzIDogNzsKKyAgICAgICAgdW5zaWduZWQgX2FmZmVjdGVkQnlVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9ycyA6IDE7CisgICAgICAgIHVuc2lnbmVkIF91bmlxdWUgOiAxOyAv
LyBTdHlsZSBjYW4gbm90IGJlIHNoYXJlZC4KKyAgICAgICAgdW5zaWduZWQgX2VtcHR5U3RhdGUg
OiAxOworICAgICAgICB1bnNpZ25lZCBfZmlyc3RDaGlsZFN0YXRlIDogMTsKKyAgICAgICAgdW5z
aWduZWQgX2xhc3RDaGlsZFN0YXRlIDogMTsKIAotICAgICAgICBib29sIGFmZmVjdGVkQnlIb3Zl
cigpIGNvbnN0IHsgcmV0dXJuIF9hZmZlY3RlZEJ5SG92ZXI7IH0KLSAgICAgICAgdm9pZCBzZXRB
ZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0ZWRCeUhvdmVyID0gdmFsdWU7IH0K
LSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gX2FmZmVjdGVk
QnlBY3RpdmU7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKGJvb2wgdmFsdWUp
IHsgX2FmZmVjdGVkQnlBY3RpdmUgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGFmZmVjdGVkQnlE
cmFnKCkgY29uc3QgeyByZXR1cm4gX2FmZmVjdGVkQnlEcmFnOyB9Ci0gICAgICAgIHZvaWQgc2V0
QWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsgfQog
ICAgICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIF9pc0xpbms7IH0KICAgICAgICAg
dm9pZCBzZXRJc0xpbmsoYm9vbCB2YWx1ZSkgeyBfaXNMaW5rID0gdmFsdWU7IH0KICAgICBwcml2
YXRlOgotICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRCeUhvdmVyIDogMTsKLSAgICAgICAgdW5z
aWduZWQgX2FmZmVjdGVkQnlBY3RpdmUgOiAxOwotICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRC
eURyYWcgOiAxOwogICAgICAgICB1bnNpZ25lZCBfaXNMaW5rIDogMTsKICAgICAgICAgLy8gSWYg
eW91IGFkZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0
ZSBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKQotICAgICAgICAvLyA1NCBiaXRz
CisgICAgICAgIC8vIDU3IGJpdHMKICAgICB9IG5vbmluaGVyaXRlZF9mbGFnczsKIAogLy8gIUVO
RCBTWU5DIQpAQCAtMzczLDE1ICszMDIsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX3Bvc2l0aW9uID0gaW5pdGlhbFBvc2l0aW9uKCk7CiAgICAgICAgIG5vbmlu
aGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgPSBpbml0aWFsRmxvYXRpbmcoKTsKICAgICAgICAgbm9u
aW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQgPSBpbml0aWFsVGFibGVMYXlvdXQoKTsKKyAg
ICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9leHBsaWNpdEluaGVyaXRhbmNlID0gZmFsc2U7CiAg
ICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGkgPSBpbml0aWFsVW5pY29kZUJp
ZGkoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSA9IGlu
aXRpYWxQYWdlQnJlYWsoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFr
X2FmdGVyID0gaW5pdGlhbFBhZ2VCcmVhaygpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Mu
X3BhZ2VfYnJlYWtfaW5zaWRlID0gaW5pdGlhbFBhZ2VCcmVhaygpOwogICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX3N0eWxlVHlwZSA9IE5PUFNFVURPOwogICAgICAgICBub25pbmhlcml0ZWRf
ZmxhZ3MuX3BzZXVkb0JpdHMgPSAwOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZm
ZWN0ZWRCeUhvdmVyKGZhbHNlKTsKLSAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVj
dGVkQnlBY3RpdmUoZmFsc2UpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0
ZWRCeURyYWcoZmFsc2UpOworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2FmZmVjdGVkQnlV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyA9IGZhbHNlOworICAgICAgICBub25pbmhlcml0ZWRf
ZmxhZ3MuX3VuaXF1ZSA9IGZhbHNlOworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5
U3RhdGUgPSBmYWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9maXJzdENoaWxkU3Rh
dGUgPSBmYWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9sYXN0Q2hpbGRTdGF0ZSA9
IGZhbHNlOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0SXNMaW5rKGZhbHNlKTsKICAg
ICB9CiAKQEAgLTQxOSwxNCArMzUxLDYgQEAgcHVibGljOgogICAgIGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+KiB2YXJpYWJsZXMoKSB7IHJldHVybiAmKHJhcmVJbmhlcml0ZWRE
YXRhLT5tX3ZhcmlhYmxlcy0+bV9kYXRhKTsgfQogI2VuZGlmCiAKLSAgICBib29sIGFmZmVjdGVk
QnlIb3ZlclJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVk
QnlIb3ZlcigpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlUnVsZXMoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9Ci0gICAgYm9vbCBh
ZmZlY3RlZEJ5RHJhZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFm
ZmVjdGVkQnlEcmFnKCk7IH0KLQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXMoYm9v
bCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIoYik7IH0KLSAgICB2
b2lkIHNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyhib29sIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldEFmZmVjdGVkQnlBY3RpdmUoYik7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnUnVs
ZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyhiKTsgfQot
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3Q7CiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nICE9IE5vRmxvYXQ7IH0KQEAgLTE1Mjcs
MzkgKzE0NTEsMjQgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0aW5n
TW9kZSB2KSB7IGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2RlID0gdjsgfQogCi0gICAgLy8g
VG8gdGVsbCBpZiB0aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmlidXRlIHNlbGVjdG9ycy4gVGhpcyBt
YWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgotICAgIGJvb2wgYWZmZWN0ZWRCeVVuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuYWZmZWN0ZWRC
eVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCk7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlV
bmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIHsgbV9iaXRmaWVsZHMuc2V0QWZmZWN0ZWRCeVVu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKHRydWUpOyB9Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLnVuaXF1ZSgpOyB9Ci0gICAgdm9pZCBzZXRVbmlxdWUo
KSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgfQotCi0gICAgLy8gTWV0aG9kcyBmb3Ig
aW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1cGRhdGVzIChlLmcu
LCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGluIG91ciBzaWJsaW5n
IGxpc3QsIGV0Yy4pCi0gICAgYm9vbCBhZmZlY3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5hZmZlY3RlZEJ5RW1wdHkoKTsgfQotICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmVtcHR5U3RhdGUoKTsgfQotICAgIHZvaWQgc2V0RW1w
dHlTdGF0ZShib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0QWZmZWN0ZWRCeUVtcHR5KHRydWUpOyBt
X2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRzLnNldEVtcHR5U3RhdGUoYik7
IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB8fCBjaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXModHJ1ZSk7IH0KLSAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKSB7IG1fYml0ZmllbGRzLnNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRyZW5BZmZl
Y3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9Ci0gICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgeyBtX2JpdGZpZWxk
cy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHRydWUpOyB9Ci0g
ICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRmaWVsZHMuZmlyc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEZp
cnN0Q2hpbGRTdGF0ZSgpIHsgbV9iaXRmaWVsZHMuc2V0VW5pcXVlKHRydWUpOyBtX2JpdGZpZWxk
cy5zZXRGaXJzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMubGFzdENoaWxkU3RhdGUoKTsgfQotICAgIHZvaWQg
c2V0TGFzdENoaWxkU3RhdGUoKSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgbV9iaXRm
aWVsZHMuc2V0TGFzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAgICB1bnNpZ25lZCBjaGlsZEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRJbmRleCgpOyB9Ci0gICAgdm9pZCBz
ZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVl
KTsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRJbmRleChpbmRleCk7IH0KKyAgICBib29sIGFmZmVjdGVk
QnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRl
ZF9mbGFncy5fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzOyB9CisgICAgdm9p
ZCBzZXRBZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSB7IG5vbmluaGVyaXRl
ZF9mbGFncy5fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzID0gdHJ1ZTsgfQor
CisgICAgLy8gQSB1bmlxdWUgc3R5bGUgaXMgb25lIHRoYXQgaGFzIG1hdGNoZXMgc29tZXRoaW5n
IHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KKyAgICBib29sIHVuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pcXVlOyB9CisgICAgdm9pZCBzZXRV
bmlxdWUoKSB7IG5vbmluaGVyaXRlZF9mbGFncy5fdW5pcXVlID0gdHJ1ZTsgfQorCisgICAgYm9v
bCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eVN0
YXRlOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsgbm9u
aW5oZXJpdGVkX2ZsYWdzLl9lbXB0eVN0YXRlID0gYjsgfQorICAgIGJvb2wgZmlyc3RDaGlsZFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLl9maXJzdENoaWxkU3RhdGU7
IH0KKyAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVy
aXRlZF9mbGFncy5fZmlyc3RDaGlsZFN0YXRlID0gdHJ1ZTsgfQorICAgIGJvb2wgbGFzdENoaWxk
U3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2xhc3RDaGlsZFN0YXRl
OyB9CisgICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVy
aXRlZF9mbGFncy5fbGFzdENoaWxkU3RhdGUgPSB0cnVlOyB9CiAKICAgICBDb2xvciB2aXNpdGVk
RGVwZW5kZW50Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRI
YXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbV9iaXRmaWVsZHMuc2V0RXhwbGlj
aXRJbmhlcml0YW5jZSh0cnVlKTsgfQotICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5leHBsaWNpdEluaGVyaXRhbmNl
KCk7IH0KKyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBu
b25pbmhlcml0ZWRfZmxhZ3MuX2V4cGxpY2l0SW5oZXJpdGFuY2UgPSB0cnVlOyB9CisgICAgYm9v
bCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5fZXhwbGljaXRJbmhlcml0YW5jZTsgfQogCiAgICAgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176254</attachid>
            <date>2012-11-27 06:18:38 -0800</date>
            <delta_ts>2012-11-27 07:34:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121127151547.patch</filename>
            <type>text/plain</type>
            <size>65568</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTM4OTk4YTFhZGM1Zjcz
OWNiMWZiODlmNzQyNGJkNDI4MDAyZGVmNy4uMDFmMDcxMGVmNjBmNzM3NmYxM2UzOTY5MGUzNmRm
ZWY0OGVhYjgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTExLTA3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIE1v
dmUgYWZmZWN0ZWRCeSBiaXRzIGZyb20gUmVuZGVyU3R5bGUgdG8gRWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAyMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVzIGZhY3RzIG9ic2VydmVk
IGFib3V0IHJlc3R5bGluZyBkZXBlbmRlbmNpZXMgb3V0IG9mIFJlbmRlclN0eWxlIGFuZAorICAg
ICAgICBpbnRvIFJhcmVEYXRhIGZvciBOb2RlIGFuZCBFbGVtZW50LiBUaGlzIGFsc28gZW5hYmxl
cyBmdXJ0aGVyIGNsZWFudXAKKyAgICAgICAgaW4gcmVsYXRlZCBjb2RlIHRoYXQgdHJpZWQgdG8g
ZGVhbCB3aXRoIHByb2JsZW1zIGNhdXNlZCB3aXRoIHRoZSBwbGFjZW1lbnQKKyAgICAgICAgb2Yg
dGhlIGRhdGEuCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9T
aWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2libGlu
Z1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzb3J0
QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEVs
ZW1lbnRQcmV2ZW50c1NoYXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
bG9jYXRlU2hhcmVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGb3JFbXB0
eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hh
bmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzdHlsZUFmZmVjdGVkQnlFbXB0eSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFs
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkSW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRJbmRleCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UmFyZURhdGE6OnJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZmYpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c3R5bGVBZmZlY3RlZEJ5QWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnN0eWxlQWZmZWN0ZWRCeUhvdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldFN0eWxlQWZmZWN0ZWRCeUhvdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnN0eWxlQWZmZWN0ZWRCeURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c2V0U3R5bGVBZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6YWZmZWN0ZWRCeUhvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6
c2V0QWZmZWN0ZWRCeUhvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6YWZm
ZWN0ZWRCeUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldEFmZmVj
dGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjphZmZlY3RlZEJ5
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldEFmZmVjdGVkQnlEcmFn
KToKKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURh
dGE6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRq
YWNlbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmNoaWxkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVE
YXRhOjpzZXRDaGlsZEluZGV4KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVy
ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpub2RlUmVzcG9uZHNUb1RhcEdlc3R1cmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0Ojp1cGRhdGVEcmFnU3RhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29weU5v
bkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OgorCiAyMDEyLTExLTI2ICBLdW5paGlrbyBTYWthbW90byAgPGtzYWthbW90b0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgaW5wdXQgdHlwZSBkYXRldGltZS1sb2Nh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAzOGQ0MWY3ODQ4ODY1
ZGM4YWMzYzE2NDkxOTI2Mzg2NDY1OTFiZDMyLi43NWFkYWY5YzU0YjVmN2IyYTk4NzUxYTBhNzFl
YjMzOGYzY2NmYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAt
NTIzLDEwICs1MjMsOSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICByZXR1cm4g
Y2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAKICAgICBj
YXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKLSAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZXNvbHZpbmdTdHlsZSAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9k
ZSgpLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2Vu
dFJ1bGVzKCk7CisgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKKyAgICAg
ICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gY29udGV4dC5lbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwogICAgICAgICB9CiAgICAgICAgIG5leHRD
b250ZXh0LmVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmco
KTsKICAgICAgICAgaWYgKCFuZXh0Q29udGV4dC5lbGVtZW50KQpAQCAtNTM3LDEwICs1MzYsOSBA
QCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1Nl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihu
ZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAKICAgICBjYXNlIENTU1NlbGVjdG9y
OjpJbmRpcmVjdEFkamFjZW50OgotICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxl
ICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0
eWxlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgcGFy
ZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
KyAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAgICAgaWYg
KEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dENvbnRleHQu
ZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwogICAg
ICAgICBuZXh0Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CkBAIC04MTQsNiArODEyLDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxl
KSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRFbXB0eVN0YXRlKHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxl
KCkgJiYgKGVsZW1lbnQtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNT
aWJsaW5nUnVsZXMoKSB8fCBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT51bmlxdWUoKSkpCkBAIC04
MjMsMTMgKzgyMiwxMSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihj
b25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdENoaWxkOgogICAgICAgICAgICAg
Ly8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50
Ci0gICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewogICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5
LmlzRmlyc3RDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJl
c29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5
bGUgOiBlbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0
eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgY2hpbGRTdHlsZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTgzOCwxMyArODM1LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250
ZXh0LCBjCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRmlyc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBmaXJzdC1vZi10eXBlIG1hdGNoZXMgdGhl
IGZpcnN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKLSAgICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQg
PSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNGaXJzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50
LT50YWdRTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0
eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNv
bnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50
LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChw
YXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAg
ICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC04NTQsOSArODQ4LDcgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRl
Z3kuaXNMYXN0Q2hpbGQoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBS
ZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRT
dHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVt
ZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0
eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CisgICAgICAgICAgICAgICAgICAg
IHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgY2hpbGRTdHlsZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtODY2LDExICs4NTgsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYXN0T2ZUeXBlOgogICAgICAgICAgICAgLy8g
bGFzdC1vZi10eXBlIG1hdGNoZXMgdGhlIGxhc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5y
ZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIHJldHVybiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNMYXN0T2ZUeXBlKGVsZW1l
bnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwpAQCAtODgyLDExICs4NzEsOCBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCwgYwogICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGls
ZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgc2libGlu
Z1RyYXZlcnNhbFN0cmF0ZWd5LmlzTGFzdENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAg
IGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxl
bWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdENoaWxk
ICYmIGNoaWxkU3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRG
aXJzdENoaWxkU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlDaGlsZCAmJiBj
aGlsZFN0eWxlKQpAQCAtODk5LDExICs4ODUsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VsZWN0b3IgaXMgdmVyeSBzbG93LgogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5y
ZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgICAgICAg
ICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgh
cGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MTcsMTEgKzkwMCwxMCBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCwgYwogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVy
c2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAgICAgICAgICAg
ICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
bmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOworICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXRDaGlsZEluZGV4KGNvdW50KTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGls
ZFN0eWxlLT5zZXRDaGlsZEluZGV4KGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkU3R5bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAgICAgICBwYXJl
bnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aE50aChjb3VudCkpCkBAIC05MzMsMTEgKzkxNSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50
RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlu
dCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c09mVHlw
ZUJlZm9yZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVt
ZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJl
bnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmlu
Z1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAKICAgICAgICAgICAgICAgICBpZiAo
c2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC05NDcsMTEgKzkyNiw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAg
ICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVt
ZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXMoKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQ
YXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291
bnRFbGVtZW50c0FmdGVyKGVsZW1lbnQpOwpAQCAtOTYzLDExICs5MzksOCBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCwgYwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
bW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBh
cmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5
bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTAwNSwxMCArOTc4LDggQEAgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQsIGMKICAgICAgICAgICAgIC8vIC4uLmV4Y2VwdCBpZiA6dmlzaXRlZCBtYXRjaGluZyBp
cyBkaXNhYmxlZCBmb3IgYW5jZXN0b3Ivc2libGluZyBtYXRjaGluZy4KICAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50LT5pc0xpbmsoKSAmJiBjb250ZXh0LnZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlz
aXRlZE1hdGNoRW5hYmxlZDsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzoK
LSAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKLSAgICAgICAgICAgICAgICBj
b250ZXh0LmVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0cnVlKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0cnVlKTsKKyAg
ICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAg
ZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RHJhZyh0cnVlKTsKICAgICAgICAgICAgIGlmIChl
bGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRHJhZ2dpbmcoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAx
OCwxMCArOTg5LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIC8vIElm
IHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBtYXRjaCBhbmNo
b3JzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92ZXIgc2hvdWxkIG5vdCBt
YXRjaCBhbnl0aGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ugd3NqLmNvbS4K
ICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgY29udGV4dC5pc1N1YlNlbGVjdG9y
IHx8IChzZWxlY3Rvci0+aGFzVGFnKCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUoYVRhZykpIHx8
IGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVu
dFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHlsZS0+c2V0QWZm
ZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVu
dC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+cmVuZGVyU3R5
bGUoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
c2V0U3R5bGVBZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGUoZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMDMwLDEwICs5OTksOCBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5n
Q29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1v
ZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCiAgICAg
ICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2ZSBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLgog
ICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFyc2luZyB8fCBjb250ZXh0LmlzU3ViU2VsZWN0b3Ig
fHwgKHNlbGVjdG9yLT5oYXNUYWcoKSAmJiAhZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkgfHwg
ZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbGVtZW50
U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZl
Y3RlZEJ5QWN0aXZlUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVu
dC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+cmVuZGVyU3R5
bGUoKS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOworICAgICAgICAgICAgICAgIGlm
IChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQt
PnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0
YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgKaW5kZXggZTU4M2U2YzEzMGM5N2JkZjU0MDg0
YjM3YzQ0MDExZmI2NzQyNDViZC4uYmViZmVmOGU1OWVkOGRmOTViZDJmMmNmZTg5ZWFmNDU5ZWY2
ZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJh
dGVnaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVn
aWVzLmgKQEAgLTgwLDggKzgwLDcgQEAgaW5saW5lIGludCBET01TaWJsaW5nVHJhdmVyc2FsU3Ry
YXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCogZWxlbWVudCkgY28KIHsKICAgICBp
bnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQt
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxp
bmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxk
SW5kZXgoKSA6IDA7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gc2libGluZy0+Y2hpbGRJbmRl
eCgpOwogICAgICAgICBpZiAoaW5kZXgpIHsKICAgICAgICAgICAgIGNvdW50ICs9IGluZGV4Owog
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
MzBkYmM1NmI2NjdlZGRjYzc3YTUwYzYxMjdjYjAyMmUwY2I2OGExNC4uMzhhYWIxYTMxZTQwZTBl
NGZhNTY4MWNkODgxNGVlM2ZhNTI5NTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTI0OSwxMiArMTI0OSwxNCBAQCBpbmxpbmUgU3R5bGVkRWxlbWVudCogU3R5bGVS
ZXNvbHZlcjo6ZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcoTm9kZSogbm9kZSwgdW5zaQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obm9kZSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpCitzdGF0aWMgaW5saW5lIGJvb2wgcGFyZW50RWxlbWVudFByZXZlbnRzU2hh
cmluZyhjb25zdCBFbGVtZW50KiBwYXJlbnRFbGVtZW50KQogewotICAgIHJldHVybiBwYXJlbnRT
dHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkKLSAgICAgICAgfHwgcGFy
ZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpCi0gICAgICAgIHx8
IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIAotICAgICAg
ICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygp
OworICAgIGlmICghcGFyZW50RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBwYXJlbnRFbGVtZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKQor
ICAgICAgICB8fCBwYXJlbnRFbGVtZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMoKQorICAgICAgICB8fCBwYXJlbnRFbGVtZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hp
bGRSdWxlcygpCisgICAgICAgIHx8IHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXMoKTsKIH0KIAogUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6Omxv
Y2F0ZVNoYXJlZFN0eWxlKCkKQEAgLTEyNzEsNyArMTI3Myw3IEBAIFJlbmRlclN0eWxlKiBTdHls
ZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSgpCiAgICAgLy8gSWRzIHN0b3Agc3R5bGUgc2hh
cmluZyBpZiB0aGV5IHNob3cgdXAgaW4gdGhlIHN0eWxlc2hlZXRzLgogICAgIGlmIChtX3N0eWxl
ZEVsZW1lbnQtPmhhc0lEKCkgJiYgbV9mZWF0dXJlcy5pZHNJblJ1bGVzLmNvbnRhaW5zKG1fc3R5
bGVkRWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpKQogICAgICAgICByZXR1
cm4gMDsKLSAgICBpZiAocGFyZW50U3R5bGVQcmV2ZW50c1NoYXJpbmcobV9wYXJlbnRTdHlsZSkp
CisgICAgaWYgKHBhcmVudEVsZW1lbnRQcmV2ZW50c1NoYXJpbmcobV9lbGVtZW50LT5wYXJlbnRF
bGVtZW50KCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobV9zdHlsZWRFbGVtZW50LT5o
YXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzMDYsOCAr
MTMwOCwxNiBAQCBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUo
KQogICAgIGlmIChzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIC8vIFRyYWNraW5nIGNoaWxkIGluZGV4IHJlcXVpcmVzIHVuaXF1
ZSBzdHlsZSBmb3IgZWFjaCBub2RlLiBUaGlzIG1heSBnZXQgc2V0IGJ5IHRoZSBzaWJsaW5nIHJ1
bGUgbWF0Y2ggYWJvdmUuCi0gICAgaWYgKHBhcmVudFN0eWxlUHJldmVudHNTaGFyaW5nKG1fcGFy
ZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKG1fZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgLy8gU2V0IGxvY2Fs
IGFmZmVjdGVkQnkgZGVwZW5kZW5jaWVzIHRoYXQgd291bGQgaGF2ZSBiZWVuIG9ic2VydmVkIGR1
cmluZyBzdHlsaW5nLiBOb3RlICdmYWxzZScgY2FuIG5vdCBiZSBjb3BpZWQKKyAgICAvLyBzaW5j
ZSB0aGVzZSBjYW4gYWxzbyBoYXZlIGJlZW4gc2V0IGJ5IGNoaWxkcmVuLgorICAgIGlmIChzaGFy
ZUVsZW1lbnQtPnN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpKQorICAgICAgICBtX3N0eWxlZEVsZW1l
bnQtPnNldFN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsKKyAgICBpZiAoc2hhcmVFbGVtZW50
LT5zdHlsZUFmZmVjdGVkQnlIb3ZlcigpKQorICAgICAgICBtX3N0eWxlZEVsZW1lbnQtPnNldFN0
eWxlQWZmZWN0ZWRCeUhvdmVyKHRydWUpOworICAgIGlmIChzaGFyZUVsZW1lbnQtPnN0eWxlQWZm
ZWN0ZWRCeURyYWcoKSkKKyAgICAgICAgbV9zdHlsZWRFbGVtZW50LT5zZXRTdHlsZUFmZmVjdGVk
QnlEcmFnKHRydWUpOwogICAgIHJldHVybiBzaGFyZUVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyMGY5YzRjMDBjNGRhODY1
NmY2Y2VhMzA3MTBjYzNkNzVkN2YwNjAyLi43ZjAzZjIwMDc4MWYzNGE2NDBiZmIyNGY1NjU1YjU2
NzM5MDFiMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04ODcsNyAr
ODg3LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBh
dXNlKQogICAgIC8vIG5vdGUgdGhhdCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5bGUKICAgICAv
LyBGSVhNRTogTW92ZSB0byBFbGVtZW50CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAg
Ym9vbCByZWFjdHNUb1ByZXNzID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUFjdGl2
ZVJ1bGVzKCk7CisgICAgICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IHN0eWxlQWZmZWN0ZWRCeUFj
dGl2ZSgpOwogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+aGFzQXBwZWFyYW5jZSgpKSB7CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpzZXRIb3ZlcmVkKGJvb2wgb3ZlcikKICAgICAvLyBub3RlIHRoYXQgd2UgbmVlZCB0
byByZWNhbGMgdGhlIHN0eWxlCiAgICAgLy8gRklYTUU6IE1vdmUgdG8gRWxlbWVudAogICAgIGlm
IChyZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZlY3Rl
ZEJ5SG92ZXJSdWxlcygpKQorICAgICAgICBpZiAoc3R5bGVBZmZlY3RlZEJ5SG92ZXIoKSkKICAg
ICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGE0ZjdkNzJhZmYzOTE3Mjg4NDU0OGRjZmQ1Y2RkMmMx
ZTNjYjA4NDEuLjdhMTdmNTQ0YzA3N2MzOThlNGM3MGNlNGRmOTkxYjZlODMzZWY2YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyNDMsNiArMTI0Myw3IEBAIHZvaWQgRWxlbWVudDo6ZGV0
YWNoKCkKICAgICAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7
CiAgICAgICAgIGRhdGEtPnNldElzSW5DYW52YXNTdWJ0cmVlKGZhbHNlKTsKICAgICAgICAgZGF0
YS0+cmVzZXRDb21wdXRlZFN0eWxlKCk7CisgICAgICAgIGRhdGEtPnJlc2V0RHluYW1pY1Jlc3R5
bGVPYnNlcnZhdGlvbnMoKTsKICAgICB9CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93
ID0gdGhpcy0+c2hhZG93KCkpIHsKQEAgLTEzMTAsMTUgKzEzMTEsMTIgQEAgdm9pZCBFbGVtZW50
OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgLy8gUmVmIGN1cnJlbnRTdHls
ZSBpbiBjYXNlIGl0IHdvdWxkIG90aGVyd2lzZSBiZSBkZWxldGVkIHdoZW4gc2V0dGluZyB0aGUg
bmV3IHN0eWxlIGluIHRoZSByZW5kZXJlci4KICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1cnJl
bnRTdHlsZShyZW5kZXJTdHlsZSgpKTsKICAgICBib29sIGhhc1BhcmVudFN0eWxlID0gcGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkgPyBzdGF0aWNfY2FzdDxib29sPihwYXJlbnROb2Rl
Rm9yUmVuZGVyaW5nQW5kU3R5bGUoKS0+cmVuZGVyU3R5bGUoKSkgOiBmYWxzZTsKLSAgICBib29s
IGhhc0RpcmVjdEFkamFjZW50UnVsZXMgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5j
aGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Ci0gICAgYm9vbCBoYXNJbmRp
cmVjdEFkamFjZW50UnVsZXMgPSBjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5jaGlsZHJl
bkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBoYXNEaXJlY3RB
ZGphY2VudFJ1bGVzID0gY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwor
ICAgIGJvb2wgaGFzSW5kaXJlY3RBZGphY2VudFJ1bGVzID0gY2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpOwogCiAgICAgaWYgKChjaGFuZ2UgPiBOb0NoYW5nZSB8fCBu
ZWVkc1N0eWxlUmVjYWxjKCkpKSB7Ci0gICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7Ci0gICAg
ICAgICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKLSAgICAg
ICAgICAgIGRhdGEtPnJlc2V0Q29tcHV0ZWRTdHlsZSgpOwotICAgICAgICAgICAgZGF0YS0+c2V0
U3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpOwotICAgICAgICB9CisgICAgICAgIGlmIChoYXNS
YXJlRGF0YSgpKQorICAgICAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnJlc2V0Q29tcHV0ZWRT
dHlsZSgpOwogICAgIH0KICAgICBpZiAoaGFzUGFyZW50U3R5bGUgJiYgKGNoYW5nZSA+PSBJbmhl
cml0IHx8IG5lZWRzU3R5bGVSZWNhbGMoKSkpIHsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBuZXdTdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKTsKQEAgLTEzMzUsMjcgKzEzMzMsNiBAQCB2
b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjdXJyZW50U3R5bGUpIHsKLSAgICAg
ICAgICAgIC8vIFByZXNlcnZlICJhZmZlY3RlZCBieSIgYml0cyB0aGF0IHdlcmUgcHJvcGFnYXRl
ZCB0byB1cyBmcm9tIGRlc2NlbmRhbnRzIGluIHRoZSBjYXNlIHdoZXJlIHdlIGRpZG4ndCBkbyBh
IGZ1bGwKLSAgICAgICAgICAgIC8vIHN0eWxlIGNoYW5nZSAoZS5nLiwgb25seSBpbmxpbmUgc3R5
bGUgY2hhbmdlZCkuCi0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5hZmZlY3RlZEJ5SG92
ZXJSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXJS
dWxlcyh0cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlBY3Rp
dmVSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRBZmZlY3RlZEJ5QWN0aXZl
UnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5hZmZlY3RlZEJ5RHJh
Z1J1bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlEcmFnUnVs
ZXModHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAg
IGlmIChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5j
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdT
dHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpKQot
ICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlcygpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
RGlyZWN0QWRqYWNlbnRSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Ci0gICAgICAgIH0KLQogICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAg
ICAgICAgIGlmIChjaCAhPSBOb0NoYW5nZSB8fCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKGN1
cnJlbnRTdHlsZS5nZXQoKSwgbmV3U3R5bGUuZ2V0KCkpIHx8IChjaGFuZ2UgPT0gRm9yY2UgJiYg
cmVuZGVyZXItPnJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpKSB8fCBzdHls
ZUNoYW5nZVR5cGUoKSA9PSBTeW50aGV0aWNTdHlsZUNoYW5nZSkKICAgICAgICAgICAgICAgICBy
ZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxlKG5ld1N0eWxlLmdldCgpKTsKQEAgLTE0ODMsNyAr
MTQ2MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShFbGVtZW50KiBl
bGVtZW50LCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgaWYgKCFzdHlsZSAmJiAhZWxlbWVudC0+
c3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFzdHls
ZSB8fCAoc3R5bGUtPmFmZmVjdGVkQnlFbXB0eSgpICYmICghc3R5bGUtPmVtcHR5U3RhdGUoKSB8
fCBlbGVtZW50LT5oYXNDaGlsZE5vZGVzKCkpKSkKKyAgICBpZiAoIXN0eWxlIHx8IChlbGVtZW50
LT5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpICYmICghc3R5bGUtPmVtcHR5U3RhdGUoKSB8fCBlbGVt
ZW50LT5oYXNDaGlsZE5vZGVzKCkpKSkKICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogfQogCkBAIC0xNDkzLDEzICsxNDcwLDEzIEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9y
U2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wg
ZmluCiAgICAgLy8gOmVtcHR5IHNlbGVjdG9yLgogICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5n
ZShlLCBzdHlsZSk7CiAgICAgCi0gICAgaWYgKCFzdHlsZSB8fCAoZS0+bmVlZHNTdHlsZVJlY2Fs
YygpICYmIHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSkpCisgICAg
aWYgKCFzdHlsZSB8fCAoZS0+bmVlZHNTdHlsZVJlY2FsYygpICYmIGUtPmNoaWxkcmVuQWZmZWN0
ZWRCeVBvc2l0aW9uYWxSdWxlcygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gOmZpcnN0
LWNoaWxkLiAgSW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNo
ZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgogICAgIC8v
IEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJD
aGFuZ2V8IGlzIG5vdCAwLgogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2Vy
IGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0aGF0IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KLSAgICBp
ZiAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGFmdGVyQ2hh
bmdlKSB7CisgICAgaWYgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYm
IGFmdGVyQ2hhbmdlKSB7CiAgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBmaXJzdCBjaGlsZC4KICAg
ICAgICAgTm9kZSogbmV3Rmlyc3RDaGlsZCA9IDA7CiAgICAgICAgIGZvciAobmV3Rmlyc3RDaGls
ZCA9IGUtPmZpcnN0Q2hpbGQoKTsgbmV3Rmlyc3RDaGlsZCAmJiAhbmV3Rmlyc3RDaGlsZC0+aXNF
bGVtZW50Tm9kZSgpOyBuZXdGaXJzdENoaWxkID0gbmV3Rmlyc3RDaGlsZC0+bmV4dFNpYmxpbmco
KSkge307CkBAIC0xNTIyLDcgKzE0OTksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdT
dHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGZpbgogCiAg
ICAgLy8gOmxhc3QtY2hpbGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0
IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRp
bWUuCiAgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5n
IGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCi0gICAgaWYgKHN0eWxlLT5jaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGJlZm9yZUNoYW5nZSkgeworICAgIGlmIChlLT5jaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGJlZm9yZUNoYW5nZSkgewogICAgICAg
ICAvLyBGaW5kIG91ciBuZXcgbGFzdCBjaGlsZC4KICAgICAgICAgTm9kZSogbmV3TGFzdENoaWxk
ID0gMDsKICAgICAgICAgZm9yIChuZXdMYXN0Q2hpbGQgPSBlLT5sYXN0Q2hpbGQoKTsgbmV3TGFz
dENoaWxkICYmICFuZXdMYXN0Q2hpbGQtPmlzRWxlbWVudE5vZGUoKTsgbmV3TGFzdENoaWxkID0g
bmV3TGFzdENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkge307CkBAIC0xNTQ1LDcgKzE1MjIsNyBA
QCBzdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBib29sIGZpbgogCiAgICAgLy8gVGhlICsgc2VsZWN0b3IuICBXZSBu
ZWVkIHRvIGludmFsaWRhdGUgdGhlIGZpcnN0IGVsZW1lbnQgZm9sbG93aW5nIHRoZSBpbnNlcnRp
b24gcG9pbnQuICBJdCBpcyB0aGUgb25seSBwb3NzaWJsZSBlbGVtZW50CiAgICAgLy8gdGhhdCBj
b3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIERPTSBjaGFuZ2UuCi0gICAgaWYgKHN0eWxlLT5jaGls
ZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2UpIHsKKyAg
ICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpICYmIGFmdGVy
Q2hhbmdlKSB7CiAgICAgICAgIE5vZGUqIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uID0gMDsK
ICAgICAgICAgZm9yIChmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9IGFmdGVyQ2hhbmdlOwog
ICAgICAgICAgICAgIGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uICYmICFmaXJzdEVsZW1lbnRB
ZnRlckluc2VydGlvbi0+aXNFbGVtZW50Tm9kZSgpOwpAQCAtMTU2MSw4ICsxNTM4LDggQEAgc3Rh
dGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0
eWxlKiBzdHlsZSwgYm9vbCBmaW4KICAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBh
cnNlciBjYWxsYmFjayBjYXNlLCBzbyB3ZSB3b24ndCBkbyBhbnkgd29yayBmb3IgdGhlIGZvcndh
cmQgY2FzZSBpZiB3ZSBkb24ndCBoYXZlIHRvLgogICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFz
b25zIHdlIGp1c3QgbWFyayB0aGUgcGFyZW50IG5vZGUgYXMgY2hhbmdlZCwgc2luY2Ugd2UgZG9u
J3Qgd2FudCB0byBtYWtlIGNoaWxkcmVuQ2hhbmdlZCBPKG5eMikgYnkgY3Jhd2xpbmcgYWxsIG91
ciBraWRzCiAgICAgLy8gaGVyZS4gIHJlY2FsY1N0eWxlIHdpbGwgdGhlbiBmb3JjZSBhIHdhbGsg
b2YgdGhlIGNoaWxkcmVuIHdoZW4gaXQgc2VlcyB0aGF0IHRoaXMgaGFzIGhhcHBlbmVkLgotICAg
IGlmICgoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSAm
JiBhZnRlckNoYW5nZSkgfHwKLSAgICAgICAgKHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGJlZm9yZUNoYW5nZSkpCisgICAgaWYgKChlLT5jaGls
ZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2UpCisg
ICAgICAgIHx8IChlLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
ICYmIGJlZm9yZUNoYW5nZSkpCiAgICAgICAgIGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0K
IApAQCAtMTk2NCwxNCArMTk0MSw4MiBAQCBSZW5kZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRT
dHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogICAgIHJldHVybiBwc2V1ZG9F
bGVtZW50U3BlY2lmaWVyID8gZGF0YS0+bV9jb21wdXRlZFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9T
dHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSA6IGRhdGEtPm1fY29tcHV0ZWRTdHlsZS5nZXQo
KTsKIH0KIAorYm9vbCBFbGVtZW50OjpzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPnN0eWxlQWZmZWN0
ZWRCeUVtcHR5KCk7Cit9CisKIHZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHko
KQogewogICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0
eSh0cnVlKTsKIH0KIAotYm9vbCBFbGVtZW50OjpzdHlsZUFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0
Citib29sIEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPnN0eWxl
QWZmZWN0ZWRCeUVtcHR5KCk7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgKGVsZW1lbnRS
YXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSB8fCBlbGVtZW50
UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkpOworfQorCiti
b29sIEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldENoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyh0cnVlKTsKK30KKwor
Ym9vbCBFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyh0cnVlKTsKK30KKworYm9v
bCBFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOworfQorCit2b2lkIEVsZW1lbnQ6OnNl
dENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKQoreworICAgIGVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KHRydWUpOworfQorCitib29sIEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6
Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAoreworICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldENo
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFs
UnVsZXModHJ1ZSk7Cit9CisKK3Vuc2lnbmVkIEVsZW1lbnQ6OmNoaWxkSW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkSW5k
ZXgoKSA6IDA7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK3sKKyAgICBFbGVtZW50UmFyZURhdGEqIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7CisgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlclN0eWxlKCkpCisgICAg
ICAgIHN0eWxlLT5zZXRVbmlxdWUoKTsKKyAgICByYXJlRGF0YS0+c2V0Q2hpbGRJbmRleChpbmRl
eCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0SXNJbkNhbnZhc1N1YnRyZWUoYm9vbCBpc0luQ2Fu
dmFzU3VidHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDgyMzM5Yzk2YmUxZWEyZGVlMGE2MjRl
YWJjMmUwN2M1NDZjODZlMTcuLjY2N2RmNjBjMGQxYTg0NjEwZDE4NDRkNzUzZDYwNzg2MWMyZTY2
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjg2LDkgKzI4NiwyNCBAQCBwdWJsaWM6CiAKICAg
ICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKTsKIAorICAg
IC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5bmFt
aWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hhbmdpbmcsIG91ciBwb3NpdGlvbiBjaGFuZ2lu
ZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKTsKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3Q7CiAKKyAgICBi
b29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKKyAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGly
ZWN0QWRqYWNlbnRSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCk7CisKICAgICB2b2lkIHNldElz
SW5DYW52YXNTdWJ0cmVlKGJvb2wpOwogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDQ1MDFmMTkyYjEzM2Yz
YTEyNWJiNDc5ZjExMGY5MjY2YjBlNzkzZjguLjdlYzY1YTc5NWJkNjJhYTE3ZjVlOWE5YTBlYTgy
Y2E1N2E2YWYyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTQyLDYg
KzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkVsZW1lbnRSYXJlRGF0YSgpOwogCiAgICAg
dm9pZCByZXNldENvbXB1dGVkU3R5bGUoKTsKKyAgICB2b2lkIHJlc2V0RHluYW1pY1Jlc3R5bGVP
YnNlcnZhdGlvbnMoKTsKIAogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6bmVlZHNGb2N1c0FwcGVh
cmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRO
ZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKQEAgLTU3LDYgKzU4LDE5
IEBAIHB1YmxpYzoKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OmlzSW5Ub3BMYXllcjsKICAgICB1
c2luZyBOb2RlUmFyZURhdGE6OnNldElzSW5Ub3BMYXllcjsKICNlbmRpZgorICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzOworICAgIHVzaW5n
IE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOworICAgIHVz
aW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOwor
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7
CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVk
QnlEaXJlY3RBZGphY2VudFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5B
ZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6
OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcg
Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsK
KyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRJbmRleDsKKyAgICB1
c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkSW5kZXg7CiAKICAgICBQYXNzUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihFbGVtZW50KiwgQ29sbGVjdGlv
blR5cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0
aW9uVHlwZSB0eXBlKQpAQCAtMTAxLDYgKzExNSwyMCBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRh
Ojp+RWxlbWVudFJhcmVEYXRhKCkKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRD
b21wdXRlZFN0eWxlKCkKIHsKICAgICBtX2NvbXB1dGVkU3R5bGUuY2xlYXIoKTsKKyAgICBzZXRT
dHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSk7CisgICAgc2V0Q2hpbGRJbmRleCgwKTsKK30KKwor
aW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRp
b25zKCkKK3sKKyAgICBzZXRBZmZlY3RlZEJ5SG92ZXIoZmFsc2UpOworICAgIHNldEFmZmVjdGVk
QnlBY3RpdmUoZmFsc2UpOworICAgIHNldEFmZmVjdGVkQnlEcmFnKGZhbHNlKTsKKyAgICBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoZmFsc2UpOworICAgIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlEaXJlY3RBZGphY2VudFJ1bGVzKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA1Njg2ZTZiNmI4ZDQzNzJlMGY5OTY1N2EzYTg5MDNlZjU2OTc5NjJmLi45YjM3MzI1MzEwM2Ri
ZWI2ZDJjNmFkZjJlMzUyNjViNjg5ZjUxODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zNDUsMTIg
KzM0NSw2IEBAIE5vZGU6OlN0eWxlQ2hhbmdlIE5vZGU6OmRpZmYoY29uc3QgUmVuZGVyU3R5bGUq
IHMxLCBjb25zdCBSZW5kZXJTdHlsZSogczIsIERvY3VtCiAgICAgZWxzZSBpZiAoczEtPmhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgfHwgczItPmhhc0V4cGxpY2l0bHlJbmhlcml0
ZWRQcm9wZXJ0aWVzKCkpCiAgICAgICAgIGNoID0gSW5oZXJpdDsKIAotICAgIC8vIEZvciBudGgt
Y2hpbGQgYW5kIG90aGVyIHBvc2l0aW9uYWwgcnVsZXMsIHRyZWF0IHN0eWxlcyBhcyBkaWZmZXJl
bnQgaWYgdGhleSBoYXZlCi0gICAgLy8gY2hhbmdlZCBwb3NpdGlvbmFsbHkgaW4gdGhlIERPTS4g
VGhpcyB3YXkgc3Vic2VxdWVudCBzaWJsaW5nIHJlc29sdXRpb25zIHdvbid0IGJlIGNvbmZ1c2Vk
Ci0gICAgLy8gYnkgdGhlIHdyb25nIGNoaWxkIGluZGV4IGFuZCBldmFsdWF0ZSB0byBpbmNvcnJl
Y3QgcmVzdWx0cy4KLSAgICBpZiAoY2ggPT0gTm9DaGFuZ2UgJiYgczEtPmNoaWxkSW5kZXgoKSAh
PSBzMi0+Y2hpbGRJbmRleCgpKQotICAgICAgICBjaCA9IE5vSW5oZXJpdDsKLQogICAgIC8vIElm
IHRoZSBwc2V1ZG9TdHlsZXMgaGF2ZSBjaGFuZ2VkLCB3ZSB3YW50IGFueSBTdHlsZUNoYW5nZSB0
aGF0IGlzIG5vdCBOb0NoYW5nZQogICAgIC8vIGJlY2F1c2Ugc2V0U3R5bGUgd2lsbCBkbyB0aGUg
cmlnaHQgdGhpbmcgd2l0aCBhbnl0aGluZyBlbHNlLgogICAgIGlmIChjaCA9PSBOb0NoYW5nZSAm
JiBzMS0+aGFzQW55UHVibGljUHNldWRvU3R5bGVzKCkpIHsKQEAgLTM4NCw2ICszNzgsMzkgQEAg
Tm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogczEsIGNvbnN0
IFJlbmRlclN0eWxlKiBzMiwgRG9jdW0KICAgICByZXR1cm4gY2g7CiB9CiAKK2Jvb2wgTm9kZTo6
c3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSAmJiByYXJlRGF0YSgpLT5hZmZlY3RlZEJ5QWN0aXZlKCk7Cit9CisKK3ZvaWQgTm9kZTo6c2V0
U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGJvb2wgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIHx8IGhh
c1JhcmVEYXRhKCkpCisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCktPnNldEFmZmVjdGVkQnlBY3Rp
dmUodmFsdWUpOworfQorCitib29sIE5vZGU6OnN0eWxlQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5hZmZlY3RlZEJ5SG92
ZXIoKTsKK30KKwordm9pZCBOb2RlOjpzZXRTdHlsZUFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVl
KQoreworICAgIGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVSYXJl
RGF0YSgpLT5zZXRBZmZlY3RlZEJ5SG92ZXIodmFsdWUpOworfQorCitib29sIE5vZGU6OnN0eWxl
QWZmZWN0ZWRCeURyYWcoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJh
cmVEYXRhKCktPmFmZmVjdGVkQnlEcmFnKCk7Cit9CisKK3ZvaWQgTm9kZTo6c2V0U3R5bGVBZmZl
Y3RlZEJ5RHJhZyhib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgp
KQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRBZmZlY3RlZEJ5RHJhZyh2YWx1ZSk7Cit9
CisKIHZvaWQgTm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcoKQogewogI2lmbmRlZiBOREVCVUcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IGQzYWIzYmI3ODhiZDRmMWMzZDBlY2EwOTYwZTk2NWEyNDhkYTE5YTUuLjhh
NzY2NDVkNjcyMjZjZmVkZDVhMGU5YjExYzM0ZDI3MGRjNWU1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
NTQ2LDYgKzU0NiwxMyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHls
ZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pIHsgcmV0dXJuIHZp
cnR1YWxDb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOyB9CiAKKyAgICBib29s
IHN0eWxlQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVk
QnlIb3Zlcihib29sKTsKKyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGJvb2wpOworICAgIGJvb2wgc3R5bGVB
ZmZlY3RlZEJ5RHJhZygpIGNvbnN0OworICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5RHJhZyhi
b29sKTsKKwogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8gTm90aWZpY2F0aW9u
IG9mIGRvY3VtZW50IHN0cnVjdHVyZSBjaGFuZ2VzIChzZWUgQ29udGFpbmVyTm9kZS5oIGZvciBt
b3JlIG5vdGlmaWNhdGlvbiBtZXRob2RzKQogICAgIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKaW5kZXggNjU5NTlmNzhiYmFlZTQ2Mzk1YzM5NDYwZTczYmE5Y2U0NzU4MDM3MS4uYzFmOTAy
ZGQyNzNmMTAzYjI0Zjk2NDEyYjEzYjgxNWUyNWRkZGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaApAQCAtMjA1LDEwICsyMDUsMTAgQEAgcHVibGljOgogICAgICAgICA6IG1fdHJlZVNj
b3BlKDApCiAgICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90YWJJbmRl
eCgwKQorICAgICAgICAsIG1fY2hpbGRJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNT
ZXRFeHBsaWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQogICAgICAg
ICAsIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCi0g
ICAgICAgICwgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAgICAgICAgLCBtX2lzSW5D
YW52YXNTdWJ0cmVlKGZhbHNlKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAg
LCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCkBAIC0yMTYsNiArMjE2LDE1IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgICAgICwgbV9pc0luVG9w
TGF5ZXIoZmFsc2UpCiAjZW5kaWYKKyAgICAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5KGZh
bHNlKQorICAgICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5SG92ZXIoZmFsc2UpCisgICAgICAgICwg
bV9zdHlsZUFmZmVjdGVkQnlBY3RpdmUoZmFsc2UpCisgICAgICAgICwgbV9zdHlsZUFmZmVjdGVk
QnlEcmFnKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMo
ZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTMyMCw2ICszMjksMTMgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvY3VzZWQ7IH0K
ICAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKSB7IG1faXNGb2N1c2VkID0gZm9jdXNl
ZDsgfQogCisgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0eWxl
QWZmZWN0ZWRCeUhvdmVyOyB9CisgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1
ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUhvdmVyID0gdmFsdWU7IH0KKyAgICBib29sIGFmZmVjdGVk
QnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlQWZmZWN0ZWRCeUFjdGl2ZTsgfQorICAg
IHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVlKSB7IG1fc3R5bGVBZmZlY3RlZEJ5
QWN0aXZlID0gdmFsdWU7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZUFmZmVjdGVkQnlEcmFnOyB9CisgICAgdm9pZCBzZXRBZmZlY3RlZEJ5RHJhZyhi
b29sIHZhbHVlKSB7IG1fc3R5bGVBZmZlY3RlZEJ5RHJhZyA9IHZhbHVlOyB9CisKICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cm90ZWN0ZWQ6CkBAIC0zMzgsMTYgKzM1NCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc0lu
VG9wTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Ub3BMYXllcjsgfQogICAgIHZvaWQgc2V0
SXNJblRvcExheWVyKGJvb2wgdmFsdWUpIHsgbV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQogI2Vu
ZGlmCisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgfHwgY2hp
bGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQorICAgIGJvb2wgY2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0K
KyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7IH0KKyAgICB2
b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoYm9vbCB2YWx1ZSkg
eyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgPSB2YWx1ZTsgfQorICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQorICAg
IHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVl
OyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyA9IHZhbHVlOyB9CisgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRJbmRleDsgfQorICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkg
eyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQogCiBwcml2YXRlOgogICAgIFRyZWVTY29wZSogbV90
cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAg
ICBDaGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgc2hvcnQgbV90YWJJbmRleDsK
KyAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXg7CiAgICAgYm9vbCBtX3RhYkluZGV4V2Fz
U2V0RXhwbGljaXRseSA6IDE7CiAgICAgYm9vbCBtX2lzRm9jdXNlZCA6IDE7CiAgICAgYm9vbCBt
X25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoIDogMTsKLSAgICBib29s
IG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkgOiAxOwogICAgIGJvb2wgbV9pc0luQ2FudmFzU3VidHJl
ZSA6IDE7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9jb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50IDogMTsKQEAgLTM1NSw2ICszODQsMTggQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgYm9vbCBtX2lzSW5Ub3BMYXllciA6IDE7CiAjZW5k
aWYKKyAgICBib29sIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkgOiAxOworICAgIGJvb2wgbV9zdHls
ZUFmZmVjdGVkQnlIb3ZlciA6IDE7CisgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUFjdGl2ZSA6
IDE7CisgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeURyYWcgOiAxOworICAgIC8vIEJpdHMgZm9y
IGR5bmFtaWMgY2hpbGQgbWF0Y2hpbmcuCisgICAgLy8gV2Ugb3B0aW1pemUgZm9yIDpmaXJzdC1j
aGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3NpdGlvbmFsIGNoaWxkIHNlbGVjdG9y
cyBsaWtlIG50aC1jaGlsZCBvcgorICAgIC8vICotY2hpbGQtb2YtdHlwZSwgd2Ugd2lsbCBqdXN0
IGdpdmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVuIGNoYW5nZSBhdCBhbGwu
CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyA6IDE7CisgICAg
Ym9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDogMTsKKyAgICBib29sIG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA6IDE7CisgICAgYm9vbCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOworICAgIGJvb2wgbV9j
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7CiAKICNpZiBFTkFC
TEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIE93blB0cjxWZWN0b3I8T3duUHRyPE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4gPiBtX211dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDliYmY2MGFi
YWI4Y2E5ZmVlMjEwYWVlOTg2ZGYxYTljOWUyYzY1YjYuLjEzM2EyZDhhOTg3ZTMzMDQ0YTAzZWU5
MWE2Y2RiYjQwMGM0YTYyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMjE3LDExICsyMTcsOSBAQCB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVSZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCgpCiAKICAgICBtb3ZlVG9GbG93VGhy
ZWFkSWZOZWVkZWQoKTsKIAotICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXJJc05lZWRlZCgqdGhp
cykpIHsKLSAgICAgICAgaWYgKG1fc3R5bGUtPmFmZmVjdGVkQnlFbXB0eSgpKQotICAgICAgICAg
ICAgZWxlbWVudC0+c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsKKyAgICBpZiAoIWVsZW1lbnQt
PnJlbmRlcmVySXNOZWVkZWQoKnRoaXMpKQogICAgICAgICByZXR1cm47Ci0gICAgfQorCiAgICAg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVyKCk7CiAg
ICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSB0aGlzLT5uZXh0UmVuZGVyZXIoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IDNhOTU2OTU2ZTVmZDc1
ODdlYjE2MGVlZTU3ZmY3ZTlkYjNjOTI2MjguLmEwNTZjNDc5NWRmNzNiYjMxMDEzYjhjZDlhZThh
Y2I5Mjg1MDc0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3Rt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKQEAg
LTc3LDcgKzc3LDcgQEAgYm9vbCBub2RlUmVzcG9uZHNUb1RhcEdlc3R1cmUoTm9kZSogbm9kZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG5vZGUtPnJlbmRlclN0eWxlKCkpIHsKICAg
ICAgICAgLy8gQWNjZXB0IG5vZGVzIHRoYXQgaGFzIGEgQ1NTIGVmZmVjdCB3aGVuIHRvdWNoZWQu
Ci0gICAgICAgIGlmIChub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5QWN0aXZlUnVsZXMo
KSB8fCBub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQorICAgICAg
ICBpZiAobm9kZS0+c3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkgfHwgbm9kZS0+c3R5bGVBZmZlY3Rl
ZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDE1
ZGNkZDA1ODI5ZTRlNzZkOGExNDI3NmYxYmE3ZjY0ODRjNzc3MjAuLmFlMDlkNDY0M2I2ODRlNGYz
MjAwYjdjYTg3ZmNjMjUxM2MzMTYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCkBAIC0yNTQwLDcgKzI1NDAsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBk
YXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIGJvb2wgdmFsdWVDaGFuZ2VkID0gKGRy
YWdPbiAhPSBpc0RyYWdnaW5nKCkpOwogICAgIHNldElzRHJhZ2dpbmcoZHJhZ09uKTsKLSAgICBp
ZiAodmFsdWVDaGFuZ2VkICYmIHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnUnVsZXMoKSAmJiBub2Rl
KCkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBub2RlKCkgJiYgbm9kZSgpLT5zdHlsZUFmZmVj
dGVkQnlEcmFnKCkpCiAgICAgICAgIG5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY3Vyci0+dXBkYXRlRHJhZ1N0YXRlKGRyYWdPbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRl
eCA2ZWNhYTA0MTdhODBhYmYwMTI2ZWMxNTY1YzIwZmJkMjZmMDEyM2E0Li5kNzMzOWZlNmE2ZGQy
YWIyZGQwNWNhZjU0NjNkOTA1ZmQ2MWI5OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTYxLDggKzYxLDYgQEAgc3RydWN0IFNhbWVT
aXplQXNCb3JkZXJWYWx1ZSB7CiBDT01QSUxFX0FTU0VSVChzaXplb2YoQm9yZGVyVmFsdWUpID09
IHNpemVvZihTYW1lU2l6ZUFzQm9yZGVyVmFsdWUpLCBCb3JkZXJWYWx1ZV9zaG91bGRfbm90X2dy
b3cpOwogCiBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclN0eWxlIDogcHVibGljIFJlZkNvdW50ZWQ8
U2FtZVNpemVBc1JlbmRlclN0eWxlPiB7Ci0gICAgdW5zaWduZWQgbV9iaXRmaWVsZHM7Ci0KICAg
ICB2b2lkKiBkYXRhUmVmc1s3XTsKICAgICB2b2lkKiBvd25QdHJzWzFdOwogI2lmIEVOQUJMRShT
VkcpCkBAIC0yMDMsNiArMjAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRl
ZEZyb20oY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKQogICAgIG5vbmluaGVyaXRlZF9mbGFncy5f
cG9zaXRpb24gPSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbjsKICAgICBub25p
bmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fZmxv
YXRpbmc7CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQgPSBvdGhlci0+bm9u
aW5oZXJpdGVkX2ZsYWdzLl90YWJsZV9sYXlvdXQ7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9l
eHBsaWNpdEluaGVyaXRhbmNlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fZXhwbGljaXRJ
bmhlcml0YW5jZTsKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gb3RoZXIt
Pm5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGk7CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdz
Ll9wYWdlX2JyZWFrX2JlZm9yZSA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJl
YWtfYmVmb3JlOwogICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19hZnRlciA9IG90
aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDMxOTk2ZmEwNWFiYjVjZDA1
ODk0MTFhNTZmYWNmM2M3MDczYzVlYzAuLjUwNTM3NGU1ZTkxMTdkOTQwYTFiM2RmZGIyMzcyNjFh
NjdhNTM3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCkBAIC0xMzQsNzcgKzEzNCw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOiBwdWJsaWMgUmVmQ291
bnRlZDxSZW5kZXJTdHlsZT4gewogICAgIGZyaWVuZCBjbGFzcyBTdHlsZVJlc29sdmVyOyAvLyBT
ZXRzIG1lbWJlcnMgZGlyZWN0bHkuCiBwcm90ZWN0ZWQ6CiAKLSAgICBjbGFzcyBSZW5kZXJTdHls
ZUJpdGZpZWxkcyB7Ci0gICAgcHVibGljOgotICAgICAgICBSZW5kZXJTdHlsZUJpdGZpZWxkcygp
Ci0gICAgICAgICAgICA6IG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKGZh
bHNlKQotICAgICAgICAgICAgLCBtX3VuaXF1ZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9hZmZl
Y3RlZEJ5RW1wdHkoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZW1wdHlTdGF0ZShmYWxzZSkKLSAg
ICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoZmFsc2UpCi0g
ICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCi0g
ICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2ZpcnN0Q2hpbGRTdGF0ZShmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9sYXN0Q2hpbGRTdGF0ZShmYWxzZSkKLSAgICAgICAgICAgICwg
bV9leHBsaWNpdEluaGVyaXRhbmNlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkSW5kZXgo
MCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5VW5jb21t
b25BdHRyaWJ1dGVTZWxlY3RvcnMoKSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9yczsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9ycyhib29sIHZhbHVlKSB7IG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3JzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7
IHJldHVybiBtX3VuaXF1ZTsgfQotICAgICAgICB2b2lkIHNldFVuaXF1ZShib29sIHZhbHVlKSB7
IG1fdW5pcXVlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBhZmZlY3RlZEJ5RW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2FmZmVjdGVkQnlFbXB0eTsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVk
QnlFbXB0eShib29sIHZhbHVlKSB7IG1fYWZmZWN0ZWRCeUVtcHR5ID0gdmFsdWU7IH0KLSAgICAg
ICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lbXB0eVN0YXRlOyB9Ci0gICAg
ICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIHZhbHVlKSB7IG1fZW1wdHlTdGF0ZSA9IHZhbHVl
OyB9Ci0gICAgICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7IH0KLSAgICAg
ICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkg
eyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgY2hpbGRy
ZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQotICAgICAgICB2b2lkIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAg
ICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsg
fQotICAgICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgZmlyc3RDaGlsZFN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdENoaWxkU3RhdGU7IH0KLSAgICAgICAgdm9pZCBzZXRGaXJzdENoaWxkU3Rh
dGUoYm9vbCB2YWx1ZSkgeyBtX2ZpcnN0Q2hpbGRTdGF0ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJv
b2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZFN0YXRlOyB9Ci0g
ICAgICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoYm9vbCB2YWx1ZSkgeyBtX2xhc3RDaGlsZFN0
YXRlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBleHBsaWNpdEluaGVyaXRhbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9leHBsaWNpdEluaGVyaXRhbmNlOyB9Ci0gICAgICAgIHZvaWQgc2V0RXhwbGlj
aXRJbmhlcml0YW5jZShib29sIHZhbHVlKSB7IG1fZXhwbGljaXRJbmhlcml0YW5jZSA9IHZhbHVl
OyB9Ci0KLSAgICAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hp
bGRJbmRleDsgfQotICAgICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsg
bV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgYml0ZmllbGQgaXMgMzItYml0cyBsb25nLCB3aGljaCBvcHRpbWl6ZXMgcGFkZGlu
ZyB3aXRoIHRoZQotICAgICAgICAvLyBpbnQgcmVmQ291bnQgaW4gdGhlIGJhc2UgY2xhc3MuIEJl
d2FyZSB3aGVuIGFkZGluZyBtb3JlIGJpdHMuCi0gICAgICAgIHVuc2lnbmVkIG1fYWZmZWN0ZWRC
eVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV91bmlx
dWUgOiAxOwotCi0gICAgICAgIC8vIEJpdHMgZm9yIGR5bmFtaWMgY2hpbGQgbWF0Y2hpbmcuCi0g
ICAgICAgIHVuc2lnbmVkIG1fYWZmZWN0ZWRCeUVtcHR5IDogMTsKLSAgICAgICAgdW5zaWduZWQg
bV9lbXB0eVN0YXRlIDogMTsKLQotICAgICAgICAvLyBXZSBvcHRpbWl6ZSBmb3IgOmZpcnN0LWNo
aWxkIGFuZCA6bGFzdC1jaGlsZC4gVGhlIG90aGVyIHBvc2l0aW9uYWwgY2hpbGQgc2VsZWN0b3Jz
IGxpa2UgbnRoLWNoaWxkIG9yCi0gICAgICAgIC8vICotY2hpbGQtb2YtdHlwZSwgd2Ugd2lsbCBq
dXN0IGdpdmUgdXAgYW5kIHJlLWV2YWx1YXRlIHdoZW5ldmVyIGNoaWxkcmVuIGNoYW5nZSBhdCBh
bGwuCi0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
IDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNl
bnRSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2ZpcnN0
Q2hpbGRTdGF0ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fbGFzdENoaWxkU3RhdGUgOiAxOwot
ICAgICAgICB1bnNpZ25lZCBtX2V4cGxpY2l0SW5oZXJpdGFuY2UgOiAxOwotICAgICAgICB1bnNp
Z25lZCBtX2NoaWxkSW5kZXggOiAyMDsgLy8gUGxlbnR5IG9mIGJpdHMgdG8gY2FjaGUgYW4gaW5k
ZXguCi0gICAgfTsKLSAgICBSZW5kZXJTdHlsZUJpdGZpZWxkcyBtX2JpdGZpZWxkczsKLQogICAg
IC8vIG5vbi1pbmhlcml0ZWQgYXR0cmlidXRlcwogICAgIERhdGFSZWY8U3R5bGVCb3hEYXRhPiBt
X2JveDsKICAgICBEYXRhUmVmPFN0eWxlVmlzdWFsRGF0YT4gdmlzdWFsOwpAQCAtMjk1LDExICsy
MjQsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgICYmIF9wYWdlX2JyZWFrX2FmdGVy
ID09IG90aGVyLl9wYWdlX2JyZWFrX2FmdGVyCiAgICAgICAgICAgICAgICAgJiYgX3BhZ2VfYnJl
YWtfaW5zaWRlID09IG90aGVyLl9wYWdlX2JyZWFrX2luc2lkZQogICAgICAgICAgICAgICAgICYm
IF9zdHlsZVR5cGUgPT0gb3RoZXIuX3N0eWxlVHlwZQotICAgICAgICAgICAgICAgICYmIF9hZmZl
Y3RlZEJ5SG92ZXIgPT0gb3RoZXIuX2FmZmVjdGVkQnlIb3ZlcgotICAgICAgICAgICAgICAgICYm
IF9hZmZlY3RlZEJ5QWN0aXZlID09IG90aGVyLl9hZmZlY3RlZEJ5QWN0aXZlCi0gICAgICAgICAg
ICAgICAgJiYgX2FmZmVjdGVkQnlEcmFnID09IG90aGVyLl9hZmZlY3RlZEJ5RHJhZwogICAgICAg
ICAgICAgICAgICYmIF9wc2V1ZG9CaXRzID09IG90aGVyLl9wc2V1ZG9CaXRzCisgICAgICAgICAg
ICAgICAgJiYgX2V4cGxpY2l0SW5oZXJpdGFuY2UgPT0gb3RoZXIuX2V4cGxpY2l0SW5oZXJpdGFu
Y2UKICAgICAgICAgICAgICAgICAmJiBfdW5pY29kZUJpZGkgPT0gb3RoZXIuX3VuaWNvZGVCaWRp
CisgICAgICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
cyA9PSBvdGhlci5fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzCisgICAgICAg
ICAgICAgICAgJiYgX3VuaXF1ZSA9PSBvdGhlci5fdW5pcXVlCisgICAgICAgICAgICAgICAgJiYg
X2VtcHR5U3RhdGUgPT0gb3RoZXIuX2VtcHR5U3RhdGUKKyAgICAgICAgICAgICAgICAmJiBfZmly
c3RDaGlsZFN0YXRlID09IG90aGVyLl9maXJzdENoaWxkU3RhdGUKKyAgICAgICAgICAgICAgICAm
JiBfbGFzdENoaWxkU3RhdGUgPT0gb3RoZXIuX2xhc3RDaGlsZFN0YXRlCiAgICAgICAgICAgICAg
ICAgJiYgX2lzTGluayA9PSBvdGhlci5faXNMaW5rOwogICAgICAgICB9CiAKQEAgLTMxNCwzMSAr
MjQ2LDI4IEBAIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgX3Bvc2l0aW9uIDogMzsgLy8g
RVBvc2l0aW9uCiAgICAgICAgIHVuc2lnbmVkIF9mbG9hdGluZyA6IDI7IC8vIEVGbG9hdAogICAg
ICAgICB1bnNpZ25lZCBfdGFibGVfbGF5b3V0IDogMTsgLy8gRVRhYmxlTGF5b3V0CisgICAgICAg
IHVuc2lnbmVkIF9leHBsaWNpdEluaGVyaXRhbmNlIDogMTsgLy8gRXhwbGljaXRseSBpbmhlcml0
cyBhIG5vbi1pbmhlcml0ZWQgcHJvcGVydHkKIAogICAgICAgICB1bnNpZ25lZCBfdW5pY29kZUJp
ZGkgOiAzOyAvLyBFVW5pY29kZUJpZGkKLSAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfYmVm
b3JlIDogMjsgLy8gRVBhZ2VCcmVhawogICAgICAgICAvLyAzMiBiaXRzCisgICAgICAgIHVuc2ln
bmVkIF9wYWdlX2JyZWFrX2JlZm9yZSA6IDI7IC8vIEVQYWdlQnJlYWsKICAgICAgICAgdW5zaWdu
ZWQgX3BhZ2VfYnJlYWtfYWZ0ZXIgOiAyOyAvLyBFUGFnZUJyZWFrCiAgICAgICAgIHVuc2lnbmVk
IF9wYWdlX2JyZWFrX2luc2lkZSA6IDI7IC8vIEVQYWdlQnJlYWsKIAogICAgICAgICB1bnNpZ25l
ZCBfc3R5bGVUeXBlIDogNjsgLy8gUHNldWRvSWQKICAgICAgICAgdW5zaWduZWQgX3BzZXVkb0Jp
dHMgOiA3OworICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2Vs
ZWN0b3JzIDogMTsKKyAgICAgICAgdW5zaWduZWQgX3VuaXF1ZSA6IDE7IC8vIFN0eWxlIGNhbiBu
b3QgYmUgc2hhcmVkLgorICAgICAgICB1bnNpZ25lZCBfZW1wdHlTdGF0ZSA6IDE7CisgICAgICAg
IHVuc2lnbmVkIF9maXJzdENoaWxkU3RhdGUgOiAxOworICAgICAgICB1bnNpZ25lZCBfbGFzdENo
aWxkU3RhdGUgOiAxOwogCi0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyBy
ZXR1cm4gX2FmZmVjdGVkQnlIb3ZlcjsgfQotICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3Zl
cihib29sIHZhbHVlKSB7IF9hZmZlY3RlZEJ5SG92ZXIgPSB2YWx1ZTsgfQotICAgICAgICBib29s
IGFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdCB7IHJldHVybiBfYWZmZWN0ZWRCeUFjdGl2ZTsgfQot
ICAgICAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0ZWRC
eUFjdGl2ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgYWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7
IHJldHVybiBfYWZmZWN0ZWRCeURyYWc7IH0KLSAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5RHJh
Zyhib29sIHZhbHVlKSB7IF9hZmZlY3RlZEJ5RHJhZyA9IHZhbHVlOyB9CiAgICAgICAgIGJvb2wg
aXNMaW5rKCkgY29uc3QgeyByZXR1cm4gX2lzTGluazsgfQogICAgICAgICB2b2lkIHNldElzTGlu
ayhib29sIHZhbHVlKSB7IF9pc0xpbmsgPSB2YWx1ZTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAg
IHVuc2lnbmVkIF9hZmZlY3RlZEJ5SG92ZXIgOiAxOwotICAgICAgICB1bnNpZ25lZCBfYWZmZWN0
ZWRCeUFjdGl2ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIF9hZmZlY3RlZEJ5RHJhZyA6IDE7CiAg
ICAgICAgIHVuc2lnbmVkIF9pc0xpbmsgOiAxOwogICAgICAgICAvLyBJZiB5b3UgYWRkIG1vcmUg
c3R5bGUgYml0cyBoZXJlLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIFJlbmRlclN0eWxl
Ojpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgpCi0gICAgICAgIC8vIDU0IGJpdHMKKyAgICAgICAgLy8g
NTcgYml0cwogICAgIH0gbm9uaW5oZXJpdGVkX2ZsYWdzOwogCiAvLyAhRU5EIFNZTkMhCkBAIC0z
NzMsMTUgKzMwMiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5f
cG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb24oKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdz
Ll9mbG9hdGluZyA9IGluaXRpYWxGbG9hdGluZygpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxh
Z3MuX3RhYmxlX2xheW91dCA9IGluaXRpYWxUYWJsZUxheW91dCgpOworICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuX2V4cGxpY2l0SW5oZXJpdGFuY2UgPSBmYWxzZTsKICAgICAgICAgbm9uaW5o
ZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaSA9IGluaXRpYWxVbmljb2RlQmlkaSgpOwogICAgICAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlID0gaW5pdGlhbFBhZ2VCcmVh
aygpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0ZXIgPSBpbml0
aWFsUGFnZUJyZWFrKCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19p
bnNpZGUgPSBpbml0aWFsUGFnZUJyZWFrKCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5f
c3R5bGVUeXBlID0gTk9QU0VVRE87CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcHNldWRv
Qml0cyA9IDA7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5SG92ZXIo
ZmFsc2UpOwotICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUFjdGl2ZShm
YWxzZSk7Ci0gICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyhmYWxz
ZSk7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmli
dXRlU2VsZWN0b3JzID0gZmFsc2U7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pcXVl
ID0gZmFsc2U7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZW1wdHlTdGF0ZSA9IGZhbHNl
OworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2ZpcnN0Q2hpbGRTdGF0ZSA9IGZhbHNlOwor
ICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2xhc3RDaGlsZFN0YXRlID0gZmFsc2U7CiAgICAg
ICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRJc0xpbmsoZmFsc2UpOwogICAgIH0KIApAQCAtNDE5
LDE0ICszNTEsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4qIHZhcmlhYmxlcygpIHsgcmV0dXJuICYocmFyZUluaGVyaXRlZERhdGEtPm1fdmFyaWFi
bGVzLT5tX2RhdGEpOyB9CiAjZW5kaWYKIAotICAgIGJvb2wgYWZmZWN0ZWRCeUhvdmVyUnVsZXMo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0K
LSAgICBib29sIGFmZmVjdGVkQnlBY3RpdmVSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVy
aXRlZF9mbGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KLSAgICBib29sIGFmZmVjdGVkQnlEcmFn
UnVsZXMoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeURyYWco
KTsgfQotCi0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXJSdWxlcyhib29sIGIpIHsgbm9uaW5o
ZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlIb3ZlcihiKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0
ZWRCeUFjdGl2ZVJ1bGVzKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRC
eUFjdGl2ZShiKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWdSdWxlcyhib29sIGIpIHsg
bm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlEcmFnKGIpOyB9Ci0KICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQogICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVy
aXRlZF9mbGFncy5fZmxvYXRpbmcgIT0gTm9GbG9hdDsgfQpAQCAtMTUyNywzOSArMTQ1MSwyNCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHYpIHsgaW5o
ZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSB2OyB9CiAKLSAgICAvLyBUbyB0ZWxsIGlmIHRo
aXMgc3R5bGUgbWF0Y2hlZCBhdHRyaWJ1dGUgc2VsZWN0b3JzLiBUaGlzIG1ha2VzIGl0IGltcG9z
c2libGUgdG8gc2hhcmUuCi0gICAgYm9vbCBhZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxl
Y3RvcnMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5hZmZlY3RlZEJ5VW5jb21tb25BdHRy
aWJ1dGVTZWxlY3RvcnMoKTsgfQotICAgIHZvaWQgc2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmli
dXRlU2VsZWN0b3JzKCkgeyBtX2JpdGZpZWxkcy5zZXRBZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1
dGVTZWxlY3RvcnModHJ1ZSk7IH0KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMudW5pcXVlKCk7IH0KLSAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbV9iaXRmaWVs
ZHMuc2V0VW5pcXVlKHRydWUpOyB9Ci0KLSAgICAvLyBNZXRob2RzIGZvciBpbmRpY2F0aW5nIHRo
ZSBzdHlsZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4sIGNoaWxkcmVuIGNo
YW5naW5nLCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcgbGlzdCwgZXRjLikK
LSAgICBib29sIGFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmFm
ZmVjdGVkQnlFbXB0eSgpOyB9Ci0gICAgYm9vbCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuZW1wdHlTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wg
YikgeyBtX2JpdGZpZWxkcy5zZXRBZmZlY3RlZEJ5RW1wdHkodHJ1ZSk7IG1fYml0ZmllbGRzLnNl
dFVuaXF1ZSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0RW1wdHlTdGF0ZShiKTsgfQotICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gY2hpbGRy
ZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIHx8IGNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZm
ZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlGaXJzdENoaWxkUnVsZXMoKSB7IG1fYml0ZmllbGRzLnNldENoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jaGlsZHJlbkFmZmVjdGVkQnlM
YXN0Q2hpbGRSdWxlcygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hp
bGRSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVs
ZXModHJ1ZSk7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RB
ZGphY2VudFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXMoKSB7IG1fYml0ZmllbGRzLnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXModHJ1ZSk7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5jaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSB7IG1fYml0ZmllbGRzLnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7IH0KLSAgICBib29sIGNoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRmaWVsZHMuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQot
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSB7
IG1fYml0ZmllbGRzLnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KHRydWUpOyB9Ci0gICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Jp
dGZpZWxkcy5maXJzdENoaWxkU3RhdGUoKTsgfQotICAgIHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRl
KCkgeyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRzLnNldEZpcnN0Q2hp
bGRTdGF0ZSh0cnVlKTsgfQotICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX2JpdGZpZWxkcy5sYXN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRMYXN0Q2hpbGRT
dGF0ZSgpIHsgbV9iaXRmaWVsZHMuc2V0VW5pcXVlKHRydWUpOyBtX2JpdGZpZWxkcy5zZXRMYXN0
Q2hpbGRTdGF0ZSh0cnVlKTsgfQotICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5jaGlsZEluZGV4KCk7IH0KLSAgICB2b2lkIHNldENoaWxkSW5kZXgo
dW5zaWduZWQgaW5kZXgpIHsgbV9iaXRmaWVsZHMuc2V0VW5pcXVlKHRydWUpOyBtX2JpdGZpZWxk
cy5zZXRDaGlsZEluZGV4KGluZGV4KTsgfQorICAgIGJvb2wgYWZmZWN0ZWRCeVVuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLl9hZmZl
Y3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnM7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVk
QnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9hZmZl
Y3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMgPSB0cnVlOyB9CisKKyAgICAvLyBBIHVu
aXF1ZSBzdHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhpbmcgdGhhdCBtYWtlcyBp
dCBpbXBvc3NpYmxlIHRvIHNoYXJlLgorICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4g
bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmlxdWU7IH0KKyAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLl91bmlxdWUgPSB0cnVlOyB9CisKKyAgICBib29sIGVtcHR5U3RhdGUo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2VtcHR5U3RhdGU7IH0KKyAgICB2
b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxh
Z3MuX2VtcHR5U3RhdGUgPSBiOyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7
IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2ZpcnN0Q2hpbGRTdGF0ZTsgfQorICAgIHZvaWQg
c2V0Rmlyc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9m
aXJzdENoaWxkU3RhdGUgPSB0cnVlOyB9CisgICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fbGFzdENoaWxkU3RhdGU7IH0KKyAgICB2b2lk
IHNldExhc3RDaGlsZFN0YXRlKCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9s
YXN0Q2hpbGRTdGF0ZSA9IHRydWU7IH0KIAogICAgIENvbG9yIHZpc2l0ZWREZXBlbmRlbnRDb2xv
cihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJ
bmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBtX2JpdGZpZWxkcy5zZXRFeHBsaWNpdEluaGVyaXRhbmNl
KHRydWUpOyB9Ci0gICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmV4cGxpY2l0SW5oZXJpdGFuY2UoKTsgfQorICAgIHZv
aWQgc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB7IG5vbmluaGVyaXRlZF9m
bGFncy5fZXhwbGljaXRJbmhlcml0YW5jZSA9IHRydWU7IH0KKyAgICBib29sIGhhc0V4cGxpY2l0
bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdz
Ll9leHBsaWNpdEluaGVyaXRhbmNlOyB9CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyOGM2NzVhNTRjMzIyNTlmNGY2
ZWMxN2JmN2I3NTk4OGMzODYyZjY0Li5mZGExNzU0NjJmMjZhNzBjMWE1NDI3YzJiNDdlZGViMTQz
ZTkzN2IwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEtMjYgIEFsbGFuIFNhbmRmZWxk
IEplbnNlbiA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBNb3ZlIGFmZmVjdGVk
QnkgYml0cyBmcm9tIFJlbmRlclN0eWxlIHRvIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTQ0OAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgTmV3IHRlc3QtY2FzZSBieSBUYWthc2hpIFNha2Ftb3Rv
CisKKyAgICAgICAgKiBmYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0bW9zdC1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0
bW9zdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dl
cmVkLXdpZGdldHMuaHRtbDogRml4IGJ1ZyBleHBvc2VkIGJ5IHBhdGNoLgorCiAyMDEyLTExLTI2
ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbU2hhZG93
IERPTV0gSW1wbGVtZW50IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbnRoLWNoaWxkLW5vdC1pbi1yaWdodG1vc3QtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0LWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMxYzA4MDQ3OTBhNjdjMmQ0MDg2NjdmNWZjZDdjOThm
MzI1NTE1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGls
ZC1ub3QtaW4tcmlnaHRtb3N0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmFwcGxpZWQgeworICBiYWNrZ3Jv
dW5kOiAjZWVlOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjxwPmR1bW15
PC9wPjwvZGl2PgorICA8ZGl2PjxzcGFuIGNsYXNzPSJhcHBsaWVkIj4xPC9zcGFuPjxzcGFuIGNs
YXNzPSJhcHBsaWVkIj4yPC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsaWVkIj4zPC9zcGFuPjwvZGl2
PgorICA8ZGl2PjxzcGFuPjQ8L3NwYW4+PHNwYW4+NTwvc3Bhbj48c3Bhbj42PC9zcGFuPjwvZGl2
PgorICA8ZGl2PjxzcGFuIGNsYXNzPSJhcHBsaWVkIj43PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBs
aWVkIj44PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsaWVkIj45PC9zcGFuPjwvZGl2PgorICA8ZGl2
PjxzcGFuPjEwPC9zcGFuPjxzcGFuPjExPC9zcGFuPjxzcGFuPjEyPC9zcGFuPjwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbnRoLWNoaWxk
LW5vdC1pbi1yaWdodG1vc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1u
b3QtaW4tcmlnaHRtb3N0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxMjAwYmU0OTg5MDc5ZGUwNzhhMThi
MGI4MGU5MzEwOTQ1MGEyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorZGl2Om50aC1jaGlsZChldmVuKSBz
cGFuIHsKKyAgYmFja2dyb3VuZDogI2VlZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPCEtLSBUZXN0IGZvciBidWcgOTgwMjEsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODAyMSAtLT4KKyAgPCEtLSBXcm9uZyBkaXNwbGF5IHdpdGggInRyOm50aC1j
aGlsZChldmVuKSB0ZCIgYW5kIG1pc3NpbmcgJmx0O3Rib2R5Jmd0OyAtLT4KKyAgPCEtLSBJZiB0
ZXN0IHBhc3NlcywgMSwgMiwgMywgNywgOCwgYW5kIDkncyBiYWNrZ3JvdW5kLWNvbG9yIGlzICNl
ZWUuIC0tPgorICA8IS0tIDQsIDUsIDYsIDEwLCAxMSwgYW5kIDEyJ3MgYmFja2dyb3VuZCBjb2xv
ciBpcyBkZWZhdWx0Li0tPgorICA8ZGl2PjxwPmR1bW15PC9wPjwvZGl2PgorICA8ZGl2PjxzcGFu
PjE8L3NwYW4+PHNwYW4+Mjwvc3Bhbj48c3Bhbj4zPC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFu
PjQ8L3NwYW4+PHNwYW4+NTwvc3Bhbj48c3Bhbj42PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFu
Pjc8L3NwYW4+PHNwYW4+ODwvc3Bhbj48c3Bhbj45PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFu
PjEwPC9zcGFuPjxzcGFuPjExPC9zcGFuPjxzcGFuPjEyPC9zcGFuPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRy
aWdnZXJlZC13aWRnZXRzLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQt
dHJpZ2dlcmVkLXdpZGdldHMuaHRtbAppbmRleCA1NTgzY2VlZjE3ODQ1MDI3ZGI3M2UwODkxZTM2
M2QyODEzOGM4NzcyLi42YjUxNTE1MjU5OTE5OWY3MzlhYzc3ZDgwYTMzOTM2ZGUxYmU5OTg1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdp
ZGdldHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dl
cmVkLXdpZGdldHMuaHRtbApAQCAtNDYsOCArNDYsOCBAQAogICAgICAgICA8L3NwYW4+CiAgICAg
PC9kaXY+CiAKLSAgICA8ZGl2IGlkPXRlc3Q1IGNsYXNzPWJveD4KLSAgICAgICAgPHNwYW4gdGFi
aW5kZXg9MT4gRm9jdXNpbmcgaGVyZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuCisg
ICAgPGRpdiBjbGFzcz1ib3g+CisgICAgICAgIDxzcGFuIGlkPXRlc3Q1IHRhYmluZGV4PTE+IEZv
Y3VzaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLgogICAgICAgICA8L3Nw
YW4+CiAgICAgPC9kaXY+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176265</attachid>
            <date>2012-11-27 07:34:09 -0800</date>
            <delta_ts>2012-11-28 03:42:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121127163119.patch</filename>
            <type>text/plain</type>
            <size>66013</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI3NGQzOTZhNzBkNjU4
NTc1YWIxNjEyNzEzNTJkMDUzMjFlOGJjNS4uZDcyMzE3Y2Y1MjhjMDFmYjg4ZDA1NGU0ZTgyMjA5
NzQ3ODY2NmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTExLTI3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIE1v
dmUgY2hpbGRyZW5BZmZlY3RlZEJ5IGJpdHMgZnJvbSBSZW5kZXJTdHlsZSB0byBFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE0NDgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDIxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZXMgZmFjdHMg
b2JzZXJ2ZWQgYWJvdXQgcmVzdHlsaW5nIGRlcGVuZGVuY2llcyBvdXQgb2YgUmVuZGVyU3R5bGUg
YW5kCisgICAgICAgIGludG8gUmFyZURhdGEgZm9yIE5vZGUgYW5kIEVsZW1lbnQuIFRoaXMgYWxz
byBlbmFibGVzIGZ1cnRoZXIgY2xlYW51cAorICAgICAgICBpbiByZWxhdGVkIGNvZGUgdGhhdCB0
cmllZCB0byBkZWFsIHdpdGggcHJvYmxlbXMgY2F1c2VkIHdpdGggdGhlIHBsYWNlbWVudAorICAg
ICAgICBvZiB0aGUgZGF0YS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9udGgtY2hpbGQtbm90
LWluLXJpZ2h0bW9zdC5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAg
ICAqIGNzcy9TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKToKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcmVudEVsZW1lbnRQcmV2ZW50c1NoYXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnNldEFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVkKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2gpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2tGb3JFbXB0eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGlu
Z1N0eWxlQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzdHlsZUFmZmVjdGVk
QnlFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlQ
b3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENo
aWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVj
dEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxk
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRJbmRleCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9F
bGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMp
OgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZmYp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpjaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyk6
CisgICAgICAgIChOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRh
OjpjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxk
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVk
QnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENo
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
YXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFj
ZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJhcmVEYXRhOjpjaGlsZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6c2V0Q2hpbGRJbmRleCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJl
ckZvckVsZW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpub2RlUmVzcG9uZHNUb1RhcEdl
c3R1cmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp1cGRhdGVEcmFnU3RhdGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6Y29weU5vbkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oOgorCiAyMDEyLTExLTI3ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IHN0dWIgb3V0IElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6Y3JlYXRlVHJhbnNhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKaW5kZXggZmFjOGI5ZjhmMDk0ZGJhOGQ4YzI5M2ZhOGYwMTRmZDJkMmM0NjAyNC4uZDQ4
NDFjYTAyYmFkYmE2YTExZmJjZjlmOGQ3MTQ4MDhmM2VhOGVmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTUyMywxMCArNTIzLDkgQEAgU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWMKICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8pOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6
Ci0gICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUgJiYgY29udGV4dC5lbGVtZW50
LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBj
b250ZXh0LmVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAg
IGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOworICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVu
dCA9IGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHBh
cmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsK
ICAgICAgICAgfQogICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50ID0gY29udGV4dC5lbGVtZW50
LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7CiAgICAgICAgIGlmICghbmV4dENvbnRleHQuZWxl
bWVudCkKQEAgLTUzNywxMCArNTM2LDkgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNo
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGlnbm9yZUR5bmFtaWNQc2V1ZG8p
OwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKLSAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKSkgewotICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVu
dC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKHBhcmVudFN0
eWxlKQotICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5n
U3R5bGUpIHsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gY29udGV4
dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVu
dC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgICAg
ICB9CiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKTsKICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9
IGZhbHNlOwpAQCAtODE0LDYgKzgxMiw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAgICAgICAgICAgICBlbGVtZW50
LT5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC5lbGVtZW50U3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1l
bnRTdHlsZS0+c2V0RW1wdHlTdGF0ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChlbGVtZW50LT5yZW5kZXJTdHlsZSgpICYmIChlbGVtZW50LT5kb2N1bWVudCgpLT5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzU2libGluZ1J1bGVzKCkgfHwgZWxlbWVudC0+cmVuZGVy
U3R5bGUoKS0+dW5pcXVlKCkpKQpAQCAtODIzLDEzICs4MjIsMTEgQEAgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQsIGMKICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Rmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1hdGNoZXMgdGhlIGZpcnN0
IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAotICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVu
dEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBl
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0ZpcnN0Q2hpbGQoZWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29u
dGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/
IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RD
aGlsZFJ1bGVzKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0ICYmIGNoaWxkU3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxl
LT5zZXRGaXJzdENoaWxkU3RhdGUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC04MzgsMTMgKzgz
NSwxMCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOgogICAgICAgICAgICAgLy8g
Zmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGl0cyB0eXBlCi0gICAg
ICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAo
RWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmlzRmly
c3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxl
bWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRD
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
ODU0LDkgKzg0OCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNv
bnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkg
JiYgc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmlzTGFzdENoaWxkKGVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNv
bnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cygpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlcygpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYm
IGNoaWxkU3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRMYXN0
Q2hpbGRTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTg2NiwxMSArODU4LDggQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFz
dE9mVHlwZToKICAgICAgICAgICAgIC8vIGxhc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBsYXN0IGVs
ZW1lbnQgb2YgaXRzIHR5cGUKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbW9k
ZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVu
dFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRF
bGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm4gc2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5LmlzTGFzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKQEAgLTg4
MiwxMSArODcxLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgICAgICBi
b29sIG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBh
cnNpbmdDaGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RDaGlsZChl
bGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7
CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVt
ZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0
eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCAmJiBjaGlsZFN0eWxlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Rmlyc3RDaGlsZFN0YXRlKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvbmx5Q2hpbGQgJiYgY2hpbGRTdHlsZSkKQEAgLTg5OSwxMSArODg1LDggQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlbGVj
dG9yIGlzIHZlcnkgc2xvdy4KICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9k
ZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVu
dFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudFN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHls
ZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTE3LDEx
ICs5MDAsMTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgICAgICBpbnQg
Y291bnQgPSAxICsgc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmNvdW50RWxlbWVudHNCZWZvcmUo
ZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQu
ZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0Q2hp
bGRJbmRleChjb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFN0eWxlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0Q2hpbGRJbmRleChjb3VudCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRVbmlxdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQpAQCAtOTMzLDExICs5MTUsOCBA
QCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50
KCkpIHsKICAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgc2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5LmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5h
bWUoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewot
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygp
OwogCiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTQ3LDExICs5MjYsOCBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRF
bGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVu
dFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50
U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5n
U3R5bGUpCisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFw
YXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgc2li
bGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmNvdW50RWxlbWVudHNBZnRlcihlbGVtZW50KTsKQEAgLTk2
MywxMSArOTM5LDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIGlmICgh
c2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRl
clN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwog
ICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMDUsMTAg
Kzk3OCwxMiBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgLy8gLi4uZXhj
ZXB0IGlmIDp2aXNpdGVkIG1hdGNoaW5nIGlzIGRpc2FibGVkIGZvciBhbmNlc3Rvci9zaWJsaW5n
IG1hdGNoaW5nLgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzTGluaygpICYmIGNvbnRl
eHQudmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0Y2hFbmFibGVkOwogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOgotICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVu
dFN0eWxlKQotICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3Rl
ZEJ5RHJhZ1J1bGVzKHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVy
U3R5bGUoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5zZXRBZmZl
Y3RlZEJ5RHJhZ1J1bGVzKHRydWUpOworICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZp
bmdTdHlsZSkgeworICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEFmZmVjdGVkQnlEcmFn
KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKHRydWUpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNEcmFn
Z2luZygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMDE4LDEwICs5OTMsMTIgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBt
YXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92ZXIgc2hv
dWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNpdGVzIGxpa2Ug
d3NqLmNvbS4KICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgY29udGV4dC5pc1N1
YlNlbGVjdG9yIHx8IChzZWxlY3Rvci0+aGFzVGFnKCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
YVRhZykpIHx8IGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZWxlbWVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeUhvdmVyKCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUhvdmVyKHRydWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQ
c2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXIpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEwMzAsMTAgKzEwMDcs
MTIgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGlu
IHF1aXJrcyBtb2RlLCB0aGVuIDphY3RpdmUgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0
aCBubwogICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjphY3RpdmUgc2hvdWxkIG5vdCBtYXRjaCBh
bnl0aGluZy4KICAgICAgICAgICAgIGlmIChtX3N0cmljdFBhcnNpbmcgfHwgY29udGV4dC5pc1N1
YlNlbGVjdG9yIHx8IChzZWxlY3Rvci0+aGFzVGFnKCkgJiYgIWVsZW1lbnQtPmhhc1RhZ05hbWUo
YVRhZykpIHx8IGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZWxlbWVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQt
PnJlbmRlclN0eWxlKCktPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyh0cnVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5QWN0aXZlKCk7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeUFjdGl2ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPmFjdGl2ZSgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9y
Y2VQc2V1ZG9TdGF0ZShlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQWN0aXZlKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ2llcy5oCmluZGV4IGU1ODNlNmMxMzBj
OTdiZGY1NDA4NGIzN2M0NDAxMWZiNjc0MjQ1YmQuLmJlYmZlZjhlNTllZDhkZjk1YmQyZjJjZmU4
OWVhZjQ1OWVmNmQxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaWJsaW5nVHJhdmVy
c2FsU3RyYXRlZ2llcy5oCkBAIC04MCw4ICs4MCw3IEBAIGlubGluZSBpbnQgRE9NU2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQmVmb3JlKEVsZW1lbnQqIGVsZW1lbnQpIGNv
CiB7CiAgICAgaW50IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcg
PSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBz
aWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUq
IHMgPSBzaWJsaW5nLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMg
PyBzLT5jaGlsZEluZGV4KCkgOiAwOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHNpYmxpbmct
PmNoaWxkSW5kZXgoKTsKICAgICAgICAgaWYgKGluZGV4KSB7CiAgICAgICAgICAgICBjb3VudCAr
PSBpbmRleDsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IGNiZjZjOGE3NTFhZGRiZDQ2Y2MxMGIyYmIwZThmZWZjNzI0ZTkyZDcuLjRmNWUx
MDliN2UwMmIwZWE2OGE3ZjNiMWE0NTI2MDVmMDEzNjk4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnNv
cnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0KQogICAgIGJvb2wg
c3dhcFZpc2l0ZWRVbnZpc2l0ZWQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNl
dWRvU3RhdGUobV9lbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIGlmIChtX3N0eWxlICYmIG1fbWF0Y2hlZFJ1bGVzW2ldLT5jb250YWluc1VuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEFmZmVjdGVkQnlVbmNv
bW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpOworICAgICAgICAgICAgbV9zdHlsZS0+c2V0VW5pcXVl
KCk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBtX21hdGNoZWRSdWxlc1tpXS0+
bGlua01hdGNoVHlwZSgpOwogICAgICAgICBpZiAoc3dhcFZpc2l0ZWRVbnZpc2l0ZWQgJiYgbGlu
a01hdGNoVHlwZSAmJiBsaW5rTWF0Y2hUeXBlICE9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hBbGwp
CiAgICAgICAgICAgICBsaW5rTWF0Y2hUeXBlID0gKGxpbmtNYXRjaFR5cGUgPT0gU2VsZWN0b3JD
aGVja2VyOjpNYXRjaFZpc2l0ZWQpID8gU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmsgOiBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZDsKQEAgLTExNzYsOCArMTE3Niw2IEBAIGJvb2wgU3R5
bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiAjZW5kaWYKICAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkgIT0gbV9lbGVtZW50
LT5pc0xpbmsoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzdHlsZS0+YWZmZWN0
ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoZWxlbWVudC0+aG92ZXJlZCgpICE9IG1fZWxlbWVudC0+aG92ZXJlZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQtPmFjdGl2ZSgpICE9IG1fZWxlbWVu
dC0+YWN0aXZlKCkpCkBAIC0xMjQ5LDEyICsxMjQ3LDE0IEBAIGlubGluZSBTdHlsZWRFbGVtZW50
KiBTdHlsZVJlc29sdmVyOjpmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiBub2RlLCB1
bnNpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihub2RlKTsKIH0KIAot
c3RhdGljIGlubGluZSBib29sIHBhcmVudFN0eWxlUHJldmVudHNTaGFyaW5nKGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJlbnRFbGVtZW50UHJl
dmVudHNTaGFyaW5nKGNvbnN0IEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCiB7Ci0gICAgcmV0dXJu
IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKQotICAgICAg
ICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKLSAg
ICAgICAgfHwgcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkg
Ci0gICAgICAgIHx8IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2Vu
dFJ1bGVzKCk7CisgICAgaWYgKCFwYXJlbnRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxS
dWxlcygpCisgICAgICAgIHx8IHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0
Q2hpbGRSdWxlcygpCisgICAgICAgIHx8IHBhcmVudEVsZW1lbnQtPmNoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwogfQogCiBSZW5kZXJTdHlsZSogU3R5bGVSZXNv
bHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUmVuZGVyU3R5
bGUqIFN0eWxlUmVzb2x2ZXI6OmxvY2F0ZVNoYXJlZFN0eWxlKCkKICAgICAvLyBJZHMgc3RvcCBz
dHlsZSBzaGFyaW5nIGlmIHRoZXkgc2hvdyB1cCBpbiB0aGUgc3R5bGVzaGVldHMuCiAgICAgaWYg
KG1fc3R5bGVkRWxlbWVudC0+aGFzSUQoKSAmJiBtX2ZlYXR1cmVzLmlkc0luUnVsZXMuY29udGFp
bnMobV9zdHlsZWRFbGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwoKSkpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGlmIChwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmluZyhtX3BhcmVu
dFN0eWxlKSkKKyAgICBpZiAocGFyZW50RWxlbWVudFByZXZlbnRzU2hhcmluZyhtX2VsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX3N0eWxlZEVs
ZW1lbnQtPmhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTMwNiw3ICsxMzA2LDcgQEAgUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6OmxvY2F0ZVNoYXJl
ZFN0eWxlKCkKICAgICBpZiAoc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcygp
KQogICAgICAgICByZXR1cm4gMDsKICAgICAvLyBUcmFja2luZyBjaGlsZCBpbmRleCByZXF1aXJl
cyB1bmlxdWUgc3R5bGUgZm9yIGVhY2ggbm9kZS4gVGhpcyBtYXkgZ2V0IHNldCBieSB0aGUgc2li
bGluZyBydWxlIG1hdGNoIGFib3ZlLgotICAgIGlmIChwYXJlbnRTdHlsZVByZXZlbnRzU2hhcmlu
ZyhtX3BhcmVudFN0eWxlKSkKKyAgICBpZiAocGFyZW50RWxlbWVudFByZXZlbnRzU2hhcmluZyht
X2VsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBzaGFyZUVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggMjBmOWM0YzAwYzRkYTg2NTZmNmNlYTMwNzEwY2MzZDc1ZDdmMDYwMi4u
ODUzNmJjYzFiOTk2NWY4YjJlOTEyODFkOWU2MmQ3MzA1ZDhkYTg2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAgICAvLyBub3RlIHRoYXQgd2Ug
bmVlZCB0byByZWNhbGMgdGhlIHN0eWxlCiAgICAgLy8gRklYTUU6IE1vdmUgdG8gRWxlbWVudAog
ICAgIGlmIChyZW5kZXJlcigpKSB7Ci0gICAgICAgIGJvb2wgcmVhY3RzVG9QcmVzcyA9IHJlbmRl
cmVyKCktPnN0eWxlKCktPmFmZmVjdGVkQnlBY3RpdmVSdWxlcygpOworICAgICAgICBib29sIHJl
YWN0c1RvUHJlc3MgPSBjaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKSB8fCByZW5kZXJTdHlsZSgp
LT5hZmZlY3RlZEJ5QWN0aXZlKCk7CiAgICAgICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAgICAg
ICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpIHsKQEAgLTkzMCw3ICs5MzAsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQoYm9vbCBvdmVyKQogICAgIC8vIG5vdGUg
dGhhdCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5bGUKICAgICAvLyBGSVhNRTogTW92ZSB0byBF
bGVtZW50CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0
eWxlKCktPmFmZmVjdGVkQnlIb3ZlclJ1bGVzKCkpCisgICAgICAgIGlmIChjaGlsZHJlbkFmZmVj
dGVkQnlIb3ZlcigpIHx8IHJlbmRlclN0eWxlKCktPmFmZmVjdGVkQnlIb3ZlcigpKQogICAgICAg
ICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICByZW5kZXJl
cigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgSG92ZXJTdGF0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNzdlMmNlNjY3NDAzZTBmOTQyZGZhNDhiMWI5OTk4N2U4YjIw
NjRlNS4uYzMwYmVmNGRlNDk1ZDRkNmU1NTIzODFiZDZmZWIyMmQ1OTIzZjI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMTI0NCw2ICsxMjQ0LDcgQEAgdm9pZCBFbGVtZW50OjpkZXRhY2go
KQogICAgICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbGVtZW50UmFyZURhdGEoKTsKICAg
ICAgICAgZGF0YS0+c2V0SXNJbkNhbnZhc1N1YnRyZWUoZmFsc2UpOwogICAgICAgICBkYXRhLT5y
ZXNldENvbXB1dGVkU3R5bGUoKTsKKyAgICAgICAgZGF0YS0+cmVzZXREeW5hbWljUmVzdHlsZU9i
c2VydmF0aW9ucygpOwogICAgIH0KIAogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0
aGlzLT5zaGFkb3coKSkgewpAQCAtMTMxMSwxNSArMTMxMiwxMiBAQCB2b2lkIEVsZW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAvLyBSZWYgY3VycmVudFN0eWxlIGlu
IGNhc2UgaXQgd291bGQgb3RoZXJ3aXNlIGJlIGRlbGV0ZWQgd2hlbiBzZXR0aW5nIHRoZSBuZXcg
c3R5bGUgaW4gdGhlIHJlbmRlcmVyLgogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VycmVudFN0
eWxlKHJlbmRlclN0eWxlKCkpOwogICAgIGJvb2wgaGFzUGFyZW50U3R5bGUgPSBwYXJlbnROb2Rl
Rm9yUmVuZGVyaW5nQW5kU3R5bGUoKSA/IHN0YXRpY19jYXN0PGJvb2w+KHBhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgpLT5yZW5kZXJTdHlsZSgpKSA6IGZhbHNlOwotICAgIGJvb2wgaGFz
RGlyZWN0QWRqYWNlbnRSdWxlcyA9IGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKLSAgICBib29sIGhhc0luZGlyZWN0
QWRqYWNlbnRSdWxlcyA9IGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGhhc0RpcmVjdEFkamFj
ZW50UnVsZXMgPSBjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CisgICAg
Ym9vbCBoYXNJbmRpcmVjdEFkamFjZW50UnVsZXMgPSBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CiAKICAgICBpZiAoKGNoYW5nZSA+IE5vQ2hhbmdlIHx8IG5lZWRz
U3R5bGVSZWNhbGMoKSkpIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAg
ICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVsZW1lbnRSYXJlRGF0YSgpOwotICAgICAgICAg
ICAgZGF0YS0+cmVzZXRDb21wdXRlZFN0eWxlKCk7Ci0gICAgICAgICAgICBkYXRhLT5zZXRTdHls
ZUFmZmVjdGVkQnlFbXB0eShmYWxzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhhc1JhcmVE
YXRhKCkpCisgICAgICAgICAgICBlbGVtZW50UmFyZURhdGEoKS0+cmVzZXRDb21wdXRlZFN0eWxl
KCk7CiAgICAgfQogICAgIGlmIChoYXNQYXJlbnRTdHlsZSAmJiAoY2hhbmdlID49IEluaGVyaXQg
fHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5l
d1N0eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpOwpAQCAtMTMzNiwyNyArMTMzNCw2IEBAIHZvaWQg
RWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSkgewotICAgICAgICAg
ICAgLy8gUHJlc2VydmUgImFmZmVjdGVkIGJ5IiBiaXRzIHRoYXQgd2VyZSBwcm9wYWdhdGVkIHRv
IHVzIGZyb20gZGVzY2VuZGFudHMgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZGlkbid0IGRvIGEgZnVs
bAotICAgICAgICAgICAgLy8gc3R5bGUgY2hhbmdlIChlLmcuLCBvbmx5IGlubGluZSBzdHlsZSBj
aGFuZ2VkKS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlIb3ZlclJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVz
KHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1
bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxl
cyh0cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmFmZmVjdGVkQnlEcmFnUnVs
ZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZmZWN0ZWRCeURyYWdSdWxlcyh0
cnVlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgaWYg
KGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKLSAgICAgICAgICAgIGlm
IChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCi0gICAg
ICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
KCk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldENoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgaWYgKGNoICE9IE5vQ2hhbmdlIHx8IHBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY3VycmVu
dFN0eWxlLmdldCgpLCBuZXdTdHlsZS5nZXQoKSkgfHwgKGNoYW5nZSA9PSBGb3JjZSAmJiByZW5k
ZXJlci0+cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkpIHx8IHN0eWxlQ2hh
bmdlVHlwZSgpID09IFN5bnRoZXRpY1N0eWxlQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXRBbmltYXRhYmxlU3R5bGUobmV3U3R5bGUuZ2V0KCkpOwpAQCAtMTQ4NCw3ICsxNDYx
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICBpZiAoIXN0eWxlICYmICFlbGVtZW50LT5zdHls
ZUFmZmVjdGVkQnlFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXN0eWxlIHx8
IChzdHlsZS0+YWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVs
ZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSkpKQorICAgIGlmICghc3R5bGUgfHwgKGVsZW1lbnQtPnN0
eWxlQWZmZWN0ZWRCeUVtcHR5KCkgJiYgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQt
Pmhhc0NoaWxkTm9kZXMoKSkpKQogICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiB9CiAKQEAgLTE0OTQsMTMgKzE0NzEsMTMgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4K
ICAgICAvLyA6ZW1wdHkgc2VsZWN0b3IuCiAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKGUs
IHN0eWxlKTsKICAgICAKLSAgICBpZiAoIXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkg
JiYgc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpKSkKKyAgICBpZiAo
IXN0eWxlIHx8IChlLT5uZWVkc1N0eWxlUmVjYWxjKCkgJiYgZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
UG9zaXRpb25hbFJ1bGVzKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA6Zmlyc3QtY2hp
bGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sg
YW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCiAgICAgLy8gSW4g
dGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5n
ZXwgaXMgbm90IDAuCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2Fz
ZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgotICAgIGlmIChz
dHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0ZXJDaGFuZ2Up
IHsKKyAgICBpZiAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgYWZ0
ZXJDaGFuZ2UpIHsKICAgICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgogICAgICAg
ICBOb2RlKiBuZXdGaXJzdENoaWxkID0gMDsKICAgICAgICAgZm9yIChuZXdGaXJzdENoaWxkID0g
ZS0+Zmlyc3RDaGlsZCgpOyBuZXdGaXJzdENoaWxkICYmICFuZXdGaXJzdENoaWxkLT5pc0VsZW1l
bnROb2RlKCk7IG5ld0ZpcnN0Q2hpbGQgPSBuZXdGaXJzdENoaWxkLT5uZXh0U2libGluZygpKSB7
fTsKQEAgLTE1MjMsNyArMTUwMCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxl
Q2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAv
LyA6bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2
ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4K
ICAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYg
fGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CisgICAgaWYgKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSB7CiAgICAgICAgIC8v
IEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgogICAgICAgICBOb2RlKiBuZXdMYXN0Q2hpbGQgPSAw
OwogICAgICAgICBmb3IgKG5ld0xhc3RDaGlsZCA9IGUtPmxhc3RDaGlsZCgpOyBuZXdMYXN0Q2hp
bGQgJiYgIW5ld0xhc3RDaGlsZC0+aXNFbGVtZW50Tm9kZSgpOyBuZXdMYXN0Q2hpbGQgPSBuZXdM
YXN0Q2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7fTsKQEAgLTE1NDYsNyArMTUyMyw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogc3R5bGUsIGJvb2wgZmluCiAKICAgICAvLyBUaGUgKyBzZWxlY3Rvci4gIFdlIG5lZWQg
dG8gaW52YWxpZGF0ZSB0aGUgZmlyc3QgZWxlbWVudCBmb2xsb3dpbmcgdGhlIGluc2VydGlvbiBw
b2ludC4gIEl0IGlzIHRoZSBvbmx5IHBvc3NpYmxlIGVsZW1lbnQKICAgICAvLyB0aGF0IGNvdWxk
IGJlIGFmZmVjdGVkIGJ5IHRoaXMgRE9NIGNoYW5nZS4KLSAgICBpZiAoc3R5bGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBhZnRlckNoYW5nZSkgeworICAgIGlm
IChlLT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgJiYgYWZ0ZXJDaGFu
Z2UpIHsKICAgICAgICAgTm9kZSogZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSAwOwogICAg
ICAgICBmb3IgKGZpcnN0RWxlbWVudEFmdGVySW5zZXJ0aW9uID0gYWZ0ZXJDaGFuZ2U7CiAgICAg
ICAgICAgICAgZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gJiYgIWZpcnN0RWxlbWVudEFmdGVy
SW5zZXJ0aW9uLT5pc0VsZW1lbnROb2RlKCk7CkBAIC0xNTYyLDggKzE1MzksOCBAQCBzdGF0aWMg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBib29sIGZpbgogICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2Vy
IGNhbGxiYWNrIGNhc2UsIHNvIHdlIHdvbid0IGRvIGFueSB3b3JrIGZvciB0aGUgZm9yd2FyZCBj
YXNlIGlmIHdlIGRvbid0IGhhdmUgdG8uCiAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
d2UganVzdCBtYXJrIHRoZSBwYXJlbnQgbm9kZSBhcyBjaGFuZ2VkLCBzaW5jZSB3ZSBkb24ndCB3
YW50IHRvIG1ha2UgY2hpbGRyZW5DaGFuZ2VkIE8obl4yKSBieSBjcmF3bGluZyBhbGwgb3VyIGtp
ZHMKICAgICAvLyBoZXJlLiAgcmVjYWxjU3R5bGUgd2lsbCB0aGVuIGZvcmNlIGEgd2FsayBvZiB0
aGUgY2hpbGRyZW4gd2hlbiBpdCBzZWVzIHRoYXQgdGhpcyBoYXMgaGFwcGVuZWQuCi0gICAgaWYg
KChzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGFm
dGVyQ2hhbmdlKSB8fAotICAgICAgICAoc3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgJiYgYmVmb3JlQ2hhbmdlKSkKKyAgICBpZiAoKGUtPmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSAmJiBhZnRlckNoYW5nZSkKKyAgICAg
ICAgfHwgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgJiYg
YmVmb3JlQ2hhbmdlKSkKICAgICAgICAgZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBA
IC0xOTY1LDE0ICsxOTQyLDgyIEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxl
KFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIgPyBkYXRhLT5tX2NvbXB1dGVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxl
KHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIDogZGF0YS0+bV9jb21wdXRlZFN0eWxlLmdldCgpOwog
fQogCitib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKTsKK30KKwogdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpCiB7
CiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KHRy
dWUpOwogfQogCi1ib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QKK2Jv
b2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAoZWxlbWVudFJhcmVE
YXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIHx8IGVsZW1lbnRSYXJl
RGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSk7Cit9CisKK2Jvb2wg
RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29s
IEVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKHRydWUpOworfQorCitib29sIEVs
ZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFm
ZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXModHJ1
ZSk7Cit9CisKK2Jvb2wgRWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJh
cmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKK30K
Kwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsKK30KKworYm9vbCBFbGVtZW50OjpjaGls
ZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cyh0cnVlKTsKK30KKwordW5zaWduZWQgRWxlbWVudDo6Y2hpbGRJbmRleCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgp
IDogMDsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KQor
eworICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyU3R5bGUoKSkKKyAgICAgICAg
c3R5bGUtPnNldFVuaXF1ZSgpOworICAgIHJhcmVEYXRhLT5zZXRDaGlsZEluZGV4KGluZGV4KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRJc0luQ2FudmFzU3VidHJlZShib29sIGlzSW5DYW52YXNT
dWJ0cmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZDZiODM5NDBlZWUwYmZhNTMwMjExMzA2OGFm
ZmNkZjdlMmYxY2RmNS4uZTJhY2UwODJmMDllOGM3YWY2OTFhNTgwYWYwYjI2YmE2YjQ0YzdiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0yODYsOSArMjg2LDI0IEBAIHB1YmxpYzoKIAogICAgIFJl
bmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCisgICAgLy8g
TWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkgZHluYW1pYyB1
cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNoYW5naW5nIGlu
IG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCiAgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0
eSgpOwogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKIAorICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCBjaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGph
Y2VudFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RB
ZGphY2VudFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkKTsKKwogICAgIHZvaWQgc2V0SXNJbkNh
bnZhc1N1YnRyZWUoYm9vbCk7CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNDUwMWYxOTJiMTMzZjNhMTI1
YmI0NzlmMTEwZjkyNjZiMGU3OTNmOC4uY2RiNmE0Zjk1YTMxZDdjODRhNDE2OWE2M2RjNTJhMjJj
ZWFiZGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKICAgICB2b2lk
IHJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2Vy
dmF0aW9ucygpOwogCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5j
ZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwpAQCAtNTcsNiArNTgsMTkgQEAg
cHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6aXNJblRvcExheWVyOwogICAgIHVzaW5n
IE5vZGVSYXJlRGF0YTo6c2V0SXNJblRvcExheWVyOwogI2VuZGlmCisgICAgdXNpbmcgTm9kZVJh
cmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcgTm9k
ZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7CisgICAgdXNpbmcg
Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7CisgICAg
dXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsKKyAg
ICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
OworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNl
bnRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsKKyAgICB1c2luZyBOb2Rl
UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOworICAg
IHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZEluZGV4OworICAgIHVzaW5n
IE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRJbmRleDsKIAogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEVsZW1lbnQqLCBDb2xsZWN0aW9uVHlw
ZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25U
eXBlIHR5cGUpCkBAIC0xMDEsNiArMTE1LDIwIEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6On5F
bGVtZW50UmFyZURhdGEoKQogaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldENvbXB1
dGVkU3R5bGUoKQogewogICAgIG1fY29tcHV0ZWRTdHlsZS5jbGVhcigpOworICAgIHNldFN0eWxl
QWZmZWN0ZWRCeUVtcHR5KGZhbHNlKTsKKyAgICBzZXRDaGlsZEluZGV4KDApOworfQorCitpbmxp
bmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMo
KQoreworICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKGZhbHNlKTsKKyAgICBzZXRDaGls
ZHJlbkFmZmVjdGVkQnlBY3RpdmUoZmFsc2UpOworICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeURy
YWcoZmFsc2UpOworICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhmYWxz
ZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpOworICAg
IHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoZmFsc2UpOworICAgIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOworICAgIHNl
dENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IDZjM2E5Yjk5Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2EyMjAy
ZDBiZDQuLjQzZTAwZWI3ZTFjZDkxOWUxMWI2NWFlNzFlNjcyNjk5NjQ0MTIyNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTM0NSwxMiArMzQ1LDYgQEAgTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlm
Zihjb25zdCBSZW5kZXJTdHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBzMiwgRG9jdW0KICAg
ICBlbHNlIGlmIChzMS0+aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB8fCBzMi0+
aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSkKICAgICAgICAgY2ggPSBJbmhlcml0
OwogCi0gICAgLy8gRm9yIG50aC1jaGlsZCBhbmQgb3RoZXIgcG9zaXRpb25hbCBydWxlcywgdHJl
YXQgc3R5bGVzIGFzIGRpZmZlcmVudCBpZiB0aGV5IGhhdmUKLSAgICAvLyBjaGFuZ2VkIHBvc2l0
aW9uYWxseSBpbiB0aGUgRE9NLiBUaGlzIHdheSBzdWJzZXF1ZW50IHNpYmxpbmcgcmVzb2x1dGlv
bnMgd29uJ3QgYmUgY29uZnVzZWQKLSAgICAvLyBieSB0aGUgd3JvbmcgY2hpbGQgaW5kZXggYW5k
IGV2YWx1YXRlIHRvIGluY29ycmVjdCByZXN1bHRzLgotICAgIGlmIChjaCA9PSBOb0NoYW5nZSAm
JiBzMS0+Y2hpbGRJbmRleCgpICE9IHMyLT5jaGlsZEluZGV4KCkpCi0gICAgICAgIGNoID0gTm9J
bmhlcml0OwotCiAgICAgLy8gSWYgdGhlIHBzZXVkb1N0eWxlcyBoYXZlIGNoYW5nZWQsIHdlIHdh
bnQgYW55IFN0eWxlQ2hhbmdlIHRoYXQgaXMgbm90IE5vQ2hhbmdlCiAgICAgLy8gYmVjYXVzZSBz
ZXRTdHlsZSB3aWxsIGRvIHRoZSByaWdodCB0aGluZyB3aXRoIGFueXRoaW5nIGVsc2UuCiAgICAg
aWYgKGNoID09IE5vQ2hhbmdlICYmIHMxLT5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSkgewpA
QCAtMzg0LDYgKzM3OCwzOSBAQCBOb2RlOjpTdHlsZUNoYW5nZSBOb2RlOjpkaWZmKGNvbnN0IFJl
bmRlclN0eWxlKiBzMSwgY29uc3QgUmVuZGVyU3R5bGUqIHMyLCBEb2N1bQogICAgIHJldHVybiBj
aDsKIH0KIAorYm9vbCBOb2RlOjpjaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKSBjb25zdAorewor
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRC
eUFjdGl2ZSgpOworfQorCit2b2lkIE5vZGU6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZShi
b29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBl
bnN1cmVSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUodmFsdWUpOworfQor
Citib29sIE5vZGU6OmNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcigp
OworfQorCit2b2lkIE5vZGU6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKGJvb2wgdmFsdWUp
Cit7CisgICAgaWYgKHZhbHVlIHx8IGhhc1JhcmVEYXRhKCkpCisgICAgICAgIGVuc3VyZVJhcmVE
YXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKHZhbHVlKTsKK30KKworYm9vbCBOb2Rl
OjpjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURh
dGEoKSAmJiByYXJlRGF0YSgpLT5jaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCk7Cit9CisKK3ZvaWQg
Tm9kZTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhib29sIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlEcmFnKHZhbHVlKTsKK30KKwogdm9pZCBOb2RlOjp0cmFja0ZvckRlYnVn
Z2luZygpCiB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTFiYTNiMjIxYTkyYjQz
MWYzNmIyNDYzOTQ0MzZmYzk5MGRmOGQzOS4uMGU3MWEwYzc5MmU4OWZkZGFjZGY2ZDNhMmVlMzUz
MTZkMTk1NGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01NDgsNiArNTQ4LDEzIEBAIHB1YmxpYzoKIAog
ICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVj
aWZpZXIgPSBOT1BTRVVETykgeyByZXR1cm4gdmlydHVhbENvbXB1dGVkU3R5bGUocHNldWRvRWxl
bWVudFNwZWNpZmllcik7IH0KIAorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBj
b25zdDsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKGJvb2wpOworICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlBY3RpdmUoYm9vbCk7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFn
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGJvb2wpOworCiAg
ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBOb3RpZmljYXRpb24gb2YgZG9jdW1l
bnQgc3RydWN0dXJlIGNoYW5nZXMgKHNlZSBDb250YWluZXJOb2RlLmggZm9yIG1vcmUgbm90aWZp
Y2F0aW9uIG1ldGhvZHMpCiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2
NTk1OWY3OGJiYWVlNDYzOTVjMzk0NjBlNzNiYTljZTQ3NTgwMzcxLi4yOWJjM2U5MTM2ZTU2MWY3
ZTA0Mjk1YTgzMDg0YmU1MWM5NzliOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBA
IC0yMDUsMTAgKzIwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV90cmVlU2NvcGUoMCkKICAg
ICAgICAgLCBtX2NoaWxkTm9kZUxpc3QoMCkKICAgICAgICAgLCBtX3RhYkluZGV4KDApCisgICAg
ICAgICwgbV9jaGlsZEluZGV4KDApCiAgICAgICAgICwgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0
bHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZvY3VzZWQoZmFsc2UpCiAgICAgICAgICwgbV9uZWVk
c0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaChmYWxzZSkKLSAgICAgICAgLCBt
X3N0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQogICAgICAgICAsIG1faXNJbkNhbnZhc1N1YnRy
ZWUoZmFsc2UpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAsIG1fY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKQEAgLTIxNiw2ICsyMTYsMTUgQEAgcHVibGljOgog
I2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxz
ZSkKICNlbmRpZgorICAgICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCisgICAg
ICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcihmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxk
cmVuQWZmZWN0ZWRCeUFjdGl2ZShmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRC
eURyYWcoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhm
YWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMo
ZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMzIwLDYgKzMyOSwxMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRm9jdXNlZDsgfQog
ICAgIHZvaWQgc2V0Rm9jdXNlZChib29sIGZvY3VzZWQpIHsgbV9pc0ZvY3VzZWQgPSBmb2N1c2Vk
OyB9CiAKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyID0gdmFsdWU7
IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSA9IHZhbHVl
OyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbkFmZmVjdGVkQnlEcmFnOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlE
cmFnKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFnID0gdmFsdWU7IH0KKwog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKQEAgLTMzOCwxNiArMzU0LDI5IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGlzSW5Ub3BMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1faXNJblRvcExheWVyOyB9CiAgICAg
dm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZhbHVl
OyB9CiAjZW5kaWYKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
KSB8fCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAg
Ym9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgPSB2
YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsg
fQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29s
IHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVl
OyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
OyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
KGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9jaGlsZEluZGV4OyB9CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVk
IGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9CiAKIHByaXZhdGU6CiAgICAgVHJlZVNj
b3BlKiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxp
c3RzOwogICAgIENoaWxkTm9kZUxpc3QqIG1fY2hpbGROb2RlTGlzdDsKICAgICBzaG9ydCBtX3Rh
YkluZGV4OworICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleDsKICAgICBib29sIG1fdGFi
SW5kZXhXYXNTZXRFeHBsaWNpdGx5IDogMTsKICAgICBib29sIG1faXNGb2N1c2VkIDogMTsKICAg
ICBib29sIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggOiAxOwot
ICAgIGJvb2wgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA6IDE7CiAgICAgYm9vbCBtX2lzSW5DYW52
YXNTdWJ0cmVlIDogMTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2Nv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgOiAxOwpAQCAtMzU1LDYgKzM4NCwxOCBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBib29sIG1faXNJblRvcExheWVyIDog
MTsKICNlbmRpZgorICAgIGJvb2wgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA6IDE7CisgICAgYm9v
bCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyIDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5QWN0aXZlIDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyA6IDE7
CisgICAgLy8gQml0cyBmb3IgZHluYW1pYyBjaGlsZCBtYXRjaGluZy4KKyAgICAvLyBXZSBvcHRp
bWl6ZSBmb3IgOmZpcnN0LWNoaWxkIGFuZCA6bGFzdC1jaGlsZC4gVGhlIG90aGVyIHBvc2l0aW9u
YWwgY2hpbGQgc2VsZWN0b3JzIGxpa2UgbnRoLWNoaWxkIG9yCisgICAgLy8gKi1jaGlsZC1vZi10
eXBlLCB3ZSB3aWxsIGp1c3QgZ2l2ZSB1cCBhbmQgcmUtZXZhbHVhdGUgd2hlbmV2ZXIgY2hpbGRy
ZW4gY2hhbmdlIGF0IGFsbC4KKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzIDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMg
OiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzIDog
MTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA6
IDE7CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
IDogMTsKIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgT3duUHRyPFZlY3Rv
cjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiA+IG1fbXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggOWJiZjYwYWJhYjhjYTlmZWUyMTBhZWU5ODZkZjFhOWM5ZTJjNjViNi4uMTMzYTJk
OGE5ODdlMzMwNDRhMDNlZTkxYTZjZGJiNDAwYzRhNjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMTcsMTEgKzIxNyw5IEBAIHZvaWQgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIAog
ICAgIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOwogCi0gICAgaWYgKCFlbGVtZW50LT5yZW5k
ZXJlcklzTmVlZGVkKCp0aGlzKSkgewotICAgICAgICBpZiAobV9zdHlsZS0+YWZmZWN0ZWRCeUVt
cHR5KCkpCi0gICAgICAgICAgICBlbGVtZW50LT5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSgpOwor
ICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXJJc05lZWRlZCgqdGhpcykpCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CisKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFy
ZW50UmVuZGVyZXIoKTsKICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IHRoaXMtPm5l
eHRSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5k
ZXggM2E5NTY5NTZlNWZkNzU4N2ViMTYwZWVlNTdmZjdlOWRiM2M5MjYyOC4uOGE3NTNjMTc4OWIw
MGQ0MzUyMDVlNzdhNTI5NzdlOGFiOGMyZDJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hB
ZGp1c3RtZW50LmNwcApAQCAtNzUsMTEgKzc1LDExIEBAIGJvb2wgbm9kZVJlc3BvbmRzVG9UYXBH
ZXN0dXJlKE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChub2RlLT53
aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIHx8IG5vZGUtPndpbGxSZXNwb25kVG9Nb3Vz
ZU1vdmVFdmVudHMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG5vZGUtPnJlbmRl
clN0eWxlKCkpIHsKLSAgICAgICAgLy8gQWNjZXB0IG5vZGVzIHRoYXQgaGFzIGEgQ1NTIGVmZmVj
dCB3aGVuIHRvdWNoZWQuCi0gICAgICAgIGlmIChub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3Rl
ZEJ5QWN0aXZlUnVsZXMoKSB8fCBub2RlLT5yZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXJS
dWxlcygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIC8vIEFjY2VwdCBu
b2RlcyB0aGF0IGhhcyBhIENTUyBlZmZlY3Qgd2hlbiB0b3VjaGVkLgorICAgIGlmIChub2RlLT5j
aGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKSB8fCBub2RlLT5jaGlsZHJlbkFmZmVjdGVkQnlIb3Zl
cigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobm9kZS0+cmVuZGVyU3R5bGUoKSAm
JiAobm9kZS0+cmVuZGVyU3R5bGUoKS0+YWZmZWN0ZWRCeUFjdGl2ZSgpIHx8IG5vZGUtPnJlbmRl
clN0eWxlKCktPmFmZmVjdGVkQnlIb3ZlcigpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDE1ZGNkZDA1ODI5ZTRlNzZkOGExNDI3NmYxYmE3ZjY0ODRjNzc3MjAuLjQyNDRj
ZTI5MTA1ZGIxNDdiNjU4OWZkOTVjMjU3YzEwZDk1YzBhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTQwLDcgKzI1NDAsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIGJvb2wgdmFsdWVD
aGFuZ2VkID0gKGRyYWdPbiAhPSBpc0RyYWdnaW5nKCkpOwogICAgIHNldElzRHJhZ2dpbmcoZHJh
Z09uKTsKLSAgICBpZiAodmFsdWVDaGFuZ2VkICYmIHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnUnVs
ZXMoKSAmJiBub2RlKCkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBub2RlKCkgJiYgKG5vZGUo
KS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIHx8IHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnKCkp
KQogICAgICAgICBub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJs
aW5nKCkpCiAgICAgICAgIGN1cnItPnVwZGF0ZURyYWdTdGF0ZShkcmFnT24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMmY0ODUzOTFj
MTA4ZjY1ODk5MDMyZTRhYzU1ZGUwNGYzMDhkYTE5NC4uYTUxNjU4YjAwNmY0NzdlYmRlODYxNzRm
OTg2MmI3YjRmMDE3ZThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCkBAIC02MSw4ICs2MSw2IEBAIHN0cnVjdCBTYW1lU2l6ZUFzQm9yZGVy
VmFsdWUgewogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEJvcmRlclZhbHVlKSA9PSBzaXplb2YoU2Ft
ZVNpemVBc0JvcmRlclZhbHVlKSwgQm9yZGVyVmFsdWVfc2hvdWxkX25vdF9ncm93KTsKIAogc3Ry
dWN0IFNhbWVTaXplQXNSZW5kZXJTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNS
ZW5kZXJTdHlsZT4gewotICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzOwotCiAgICAgdm9pZCogZGF0
YVJlZnNbN107CiAgICAgdm9pZCogb3duUHRyc1sxXTsKICNpZiBFTkFCTEUoU1ZHKQpAQCAtMjA3
LDYgKzIwNSw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlcikKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtf
YmVmb3JlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZvcmU7CiAg
ICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyID0gb3RoZXItPm5vbmluaGVy
aXRlZF9mbGFncy5fcGFnZV9icmVha19hZnRlcjsKICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX3Bh
Z2VfYnJlYWtfaW5zaWRlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19p
bnNpZGU7CisgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLmV4cGxpY2l0SW5oZXJpdGFuY2UgPSBvdGhl
ci0+bm9uaW5oZXJpdGVkX2ZsYWdzLmV4cGxpY2l0SW5oZXJpdGFuY2U7CiAjaWYgRU5BQkxFKFNW
RykKICAgICBpZiAobV9zdmdTdHlsZSAhPSBvdGhlci0+bV9zdmdTdHlsZSkKICAgICAgICAgbV9z
dmdTdHlsZS5hY2Nlc3MoKS0+Y29weU5vbkluaGVyaXRlZEZyb20ob3RoZXItPm1fc3ZnU3R5bGUu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCAzMTk5NmZhMDVhYmI1Y2QwNTg5NDExYTU2ZmFjZjNjNzA3M2M1ZWMwLi43Mzk0Njg2Yjll
ZjA0M2ViY2I4ZTI1Y2MxZjc5MzYyZTJkMzc5OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTM0LDc3ICsxMzQsNiBAQCBjbGFzcyBSZW5k
ZXJTdHlsZTogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyU3R5bGU+IHsKICAgICBmcmllbmQgY2xh
c3MgU3R5bGVSZXNvbHZlcjsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgogcHJvdGVjdGVkOgog
Ci0gICAgY2xhc3MgUmVuZGVyU3R5bGVCaXRmaWVsZHMgewotICAgIHB1YmxpYzoKLSAgICAgICAg
UmVuZGVyU3R5bGVCaXRmaWVsZHMoKQotICAgICAgICAgICAgOiBtX2FmZmVjdGVkQnlVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9ycyhmYWxzZSkKLSAgICAgICAgICAgICwgbV91bmlxdWUoZmFsc2Up
Ci0gICAgICAgICAgICAsIG1fYWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQotICAgICAgICAgICAgLCBt
X2VtcHR5U3RhdGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzKGZhbHNlKQotICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXMoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9jaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSkKLSAgICAgICAgICAgICwg
bV9maXJzdENoaWxkU3RhdGUoZmFsc2UpCi0gICAgICAgICAgICAsIG1fbGFzdENoaWxkU3RhdGUo
ZmFsc2UpCi0gICAgICAgICAgICAsIG1fZXhwbGljaXRJbmhlcml0YW5jZShmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9jaGlsZEluZGV4KDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1
cm4gbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnM7IH0KLSAgICAgICAgdm9p
ZCBzZXRBZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoYm9vbCB2YWx1ZSkgeyBt
X2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyA9IHZhbHVlOyB9Ci0gICAgICAg
IGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWU7IH0KLSAgICAgICAgdm9pZCBz
ZXRVbmlxdWUoYm9vbCB2YWx1ZSkgeyBtX3VuaXF1ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wg
YWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5RW1wdHk7IH0KLSAg
ICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5RW1wdHkoYm9vbCB2YWx1ZSkgeyBtX2FmZmVjdGVkQnlF
bXB0eSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZW1wdHlTdGF0ZTsgfQotICAgICAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCB2YWx1ZSkg
eyBtX2VtcHR5U3RhdGUgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RD
aGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsg
fQotICAgICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGJvb2wg
dmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyA9IHZhbHVlOyB9Ci0g
ICAgICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsgfQotICAg
ICAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoYm9vbCB2
YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgPSB2YWx1ZTsg
fQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGZpcnN0
Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZFN0YXRlOyB9Ci0gICAgICAg
IHZvaWQgc2V0Rmlyc3RDaGlsZFN0YXRlKGJvb2wgdmFsdWUpIHsgbV9maXJzdENoaWxkU3RhdGUg
PSB2YWx1ZTsgfQotICAgICAgICBib29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0Q2hpbGRTdGF0ZTsgfQotICAgICAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRlKGJvb2wg
dmFsdWUpIHsgbV9sYXN0Q2hpbGRTdGF0ZSA9IHZhbHVlOyB9Ci0gICAgICAgIGJvb2wgZXhwbGlj
aXRJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwbGljaXRJbmhlcml0YW5jZTsgfQot
ICAgICAgICB2b2lkIHNldEV4cGxpY2l0SW5oZXJpdGFuY2UoYm9vbCB2YWx1ZSkgeyBtX2V4cGxp
Y2l0SW5oZXJpdGFuY2UgPSB2YWx1ZTsgfQotCi0gICAgICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkSW5kZXg7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZElu
ZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGJpdGZpZWxkIGlzIDMyLWJpdHMgbG9uZywg
d2hpY2ggb3B0aW1pemVzIHBhZGRpbmcgd2l0aCB0aGUKLSAgICAgICAgLy8gaW50IHJlZkNvdW50
IGluIHRoZSBiYXNlIGNsYXNzLiBCZXdhcmUgd2hlbiBhZGRpbmcgbW9yZSBiaXRzLgotICAgICAg
ICB1bnNpZ25lZCBtX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyA6IDE7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fdW5pcXVlIDogMTsKLQotICAgICAgICAvLyBCaXRzIGZvciBkeW5h
bWljIGNoaWxkIG1hdGNoaW5nLgotICAgICAgICB1bnNpZ25lZCBtX2FmZmVjdGVkQnlFbXB0eSA6
IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fZW1wdHlTdGF0ZSA6IDE7Ci0KLSAgICAgICAgLy8gV2Ug
b3B0aW1pemUgZm9yIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQuIFRoZSBvdGhlciBwb3Np
dGlvbmFsIGNoaWxkIHNlbGVjdG9ycyBsaWtlIG50aC1jaGlsZCBvcgotICAgICAgICAvLyAqLWNo
aWxkLW9mLXR5cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZl
ciBjaGlsZHJlbiBjaGFuZ2UgYXQgYWxsLgotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVu
QWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwotICAgICAgICB1bnNp
Z25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKLSAg
ICAgICAgdW5zaWduZWQgbV9maXJzdENoaWxkU3RhdGUgOiAxOwotICAgICAgICB1bnNpZ25lZCBt
X2xhc3RDaGlsZFN0YXRlIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9leHBsaWNpdEluaGVyaXRh
bmNlIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZEluZGV4IDogMjA7IC8vIFBsZW50eSBv
ZiBiaXRzIHRvIGNhY2hlIGFuIGluZGV4LgotICAgIH07Ci0gICAgUmVuZGVyU3R5bGVCaXRmaWVs
ZHMgbV9iaXRmaWVsZHM7Ci0KICAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMKICAgICBE
YXRhUmVmPFN0eWxlQm94RGF0YT4gbV9ib3g7CiAgICAgRGF0YVJlZjxTdHlsZVZpc3VhbERhdGE+
IHZpc3VhbDsKQEAgLTMwMCw2ICsyMjksMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAg
ICYmIF9hZmZlY3RlZEJ5RHJhZyA9PSBvdGhlci5fYWZmZWN0ZWRCeURyYWcKICAgICAgICAgICAg
ICAgICAmJiBfcHNldWRvQml0cyA9PSBvdGhlci5fcHNldWRvQml0cwogICAgICAgICAgICAgICAg
ICYmIF91bmljb2RlQmlkaSA9PSBvdGhlci5fdW5pY29kZUJpZGkKKyAgICAgICAgICAgICAgICAm
JiBleHBsaWNpdEluaGVyaXRhbmNlID09IG90aGVyLmV4cGxpY2l0SW5oZXJpdGFuY2UKKyAgICAg
ICAgICAgICAgICAmJiB1bmlxdWUgPT0gb3RoZXIudW5pcXVlCisgICAgICAgICAgICAgICAgJiYg
ZW1wdHlTdGF0ZSA9PSBvdGhlci5lbXB0eVN0YXRlCisgICAgICAgICAgICAgICAgJiYgZmlyc3RD
aGlsZFN0YXRlID09IG90aGVyLmZpcnN0Q2hpbGRTdGF0ZQorICAgICAgICAgICAgICAgICYmIGxh
c3RDaGlsZFN0YXRlID09IG90aGVyLmxhc3RDaGlsZFN0YXRlCiAgICAgICAgICAgICAgICAgJiYg
X2lzTGluayA9PSBvdGhlci5faXNMaW5rOwogICAgICAgICB9CiAKQEAgLTMxNiwxMyArMjUwLDE4
IEBAIHByb3RlY3RlZDoKICAgICAgICAgdW5zaWduZWQgX3RhYmxlX2xheW91dCA6IDE7IC8vIEVU
YWJsZUxheW91dAogCiAgICAgICAgIHVuc2lnbmVkIF91bmljb2RlQmlkaSA6IDM7IC8vIEVVbmlj
b2RlQmlkaQorICAgICAgICAvLyAzMSBiaXRzCiAgICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFr
X2JlZm9yZSA6IDI7IC8vIEVQYWdlQnJlYWsKLSAgICAgICAgLy8gMzIgYml0cwogICAgICAgICB1
bnNpZ25lZCBfcGFnZV9icmVha19hZnRlciA6IDI7IC8vIEVQYWdlQnJlYWsKICAgICAgICAgdW5z
aWduZWQgX3BhZ2VfYnJlYWtfaW5zaWRlIDogMjsgLy8gRVBhZ2VCcmVhawogCiAgICAgICAgIHVu
c2lnbmVkIF9zdHlsZVR5cGUgOiA2OyAvLyBQc2V1ZG9JZAogICAgICAgICB1bnNpZ25lZCBfcHNl
dWRvQml0cyA6IDc7CisgICAgICAgIHVuc2lnbmVkIGV4cGxpY2l0SW5oZXJpdGFuY2UgOiAxOyAv
LyBFeHBsaWNpdGx5IGluaGVyaXRzIGEgbm9uLWluaGVyaXRlZCBwcm9wZXJ0eQorICAgICAgICB1
bnNpZ25lZCB1bmlxdWUgOiAxOyAvLyBTdHlsZSBjYW4gbm90IGJlIHNoYXJlZC4KKyAgICAgICAg
dW5zaWduZWQgZW1wdHlTdGF0ZSA6IDE7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0Q2hpbGRTdGF0
ZSA6IDE7CisgICAgICAgIHVuc2lnbmVkIGxhc3RDaGlsZFN0YXRlIDogMTsKIAogICAgICAgICBi
b29sIGFmZmVjdGVkQnlIb3ZlcigpIGNvbnN0IHsgcmV0dXJuIF9hZmZlY3RlZEJ5SG92ZXI7IH0K
ICAgICAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBfYWZmZWN0ZWRC
eUhvdmVyID0gdmFsdWU7IH0KQEAgLTMzOCw3ICsyNzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHVuc2lnbmVkIF9hZmZlY3RlZEJ5RHJhZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIF9pc0xpbmsg
OiAxOwogICAgICAgICAvLyBJZiB5b3UgYWRkIG1vcmUgc3R5bGUgYml0cyBoZXJlLCB5b3Ugd2ls
bCBhbHNvIG5lZWQgdG8gdXBkYXRlIFJlbmRlclN0eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbSgp
Ci0gICAgICAgIC8vIDU0IGJpdHMKKyAgICAgICAgLy8gNTkgYml0cwogICAgIH0gbm9uaW5oZXJp
dGVkX2ZsYWdzOwogCiAvLyAhRU5EIFNZTkMhCkBAIC0zNzksNiArMzE4LDExIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZSA9IGluaXRp
YWxQYWdlQnJlYWsoKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHlsZVR5cGUgPSBO
T1BTRVVETzsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wc2V1ZG9CaXRzID0gMDsKKyAg
ICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLmV4cGxpY2l0SW5oZXJpdGFuY2UgPSBmYWxzZTsKKyAg
ICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaXF1ZSA9IGZhbHNlOworICAgICAgICBub25pbmhl
cml0ZWRfZmxhZ3MuZW1wdHlTdGF0ZSA9IGZhbHNlOworICAgICAgICBub25pbmhlcml0ZWRfZmxh
Z3MuZmlyc3RDaGlsZFN0YXRlID0gZmFsc2U7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5s
YXN0Q2hpbGRTdGF0ZSA9IGZhbHNlOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZm
ZWN0ZWRCeUhvdmVyKGZhbHNlKTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVj
dGVkQnlBY3RpdmUoZmFsc2UpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0
ZWRCeURyYWcoZmFsc2UpOwpAQCAtNDE5LDEzICszNjMsMTMgQEAgcHVibGljOgogICAgIGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+KiB2YXJpYWJsZXMoKSB7IHJldHVybiAmKHJh
cmVJbmhlcml0ZWREYXRhLT5tX3ZhcmlhYmxlcy0+bV9kYXRhKTsgfQogI2VuZGlmCiAKLSAgICBi
b29sIGFmZmVjdGVkQnlIb3ZlclJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2Zs
YWdzLmFmZmVjdGVkQnlIb3ZlcigpOyB9Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlUnVsZXMo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9
Ci0gICAgYm9vbCBhZmZlY3RlZEJ5RHJhZ1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJp
dGVkX2ZsYWdzLmFmZmVjdGVkQnlEcmFnKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlIb3Zlcigp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5SG92ZXIoKTsgfQor
ICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5hZmZlY3RlZEJ5QWN0aXZlKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlEcmFnKCkgY29u
c3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmFmZmVjdGVkQnlEcmFnKCk7IH0KIAotICAg
IHZvaWQgc2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRlZF9mbGFn
cy5zZXRBZmZlY3RlZEJ5SG92ZXIoYik7IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlBY3RpdmVS
dWxlcyhib29sIGIpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUoYik7
IH0KLSAgICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnUnVsZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRl
ZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyhiKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUhv
dmVyKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKHRydWUpOyB9Cisg
ICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZm
ZWN0ZWRCeUFjdGl2ZSh0cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeURyYWcoKSB7IG5v
bmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5RHJhZyh0cnVlKTsgfQogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KQEAgLTE1MjcsMzkgKzE0NzEsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2KSB7IGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdN
b2RlID0gdjsgfQogCi0gICAgLy8gVG8gdGVsbCBpZiB0aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmli
dXRlIHNlbGVjdG9ycy4gVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgotICAgIGJv
b2wgYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCk7IH0KLSAg
ICB2b2lkIHNldEFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpIHsgbV9iaXRm
aWVsZHMuc2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKHRydWUpOyB9Ci0K
LSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLnVuaXF1ZSgpOyB9
Ci0gICAgdm9pZCBzZXRVbmlxdWUoKSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgfQot
Ci0gICAgLy8gTWV0aG9kcyBmb3IgaW5kaWNhdGluZyB0aGUgc3R5bGUgaXMgYWZmZWN0ZWQgYnkg
ZHluYW1pYyB1cGRhdGVzIChlLmcuLCBjaGlsZHJlbiBjaGFuZ2luZywgb3VyIHBvc2l0aW9uIGNo
YW5naW5nIGluIG91ciBzaWJsaW5nIGxpc3QsIGV0Yy4pCi0gICAgYm9vbCBhZmZlY3RlZEJ5RW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5hZmZlY3RlZEJ5RW1wdHkoKTsgfQotICAg
IGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmVtcHR5U3RhdGUo
KTsgfQotICAgIHZvaWQgc2V0RW1wdHlTdGF0ZShib29sIGIpIHsgbV9iaXRmaWVsZHMuc2V0QWZm
ZWN0ZWRCeUVtcHR5KHRydWUpOyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0Zmll
bGRzLnNldEVtcHR5U3RhdGUoYik7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0
aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3Np
dGlvbmFsUnVsZXMoKSB8fCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cygpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25z
dCB7IHJldHVybiBtX2JpdGZpZWxkcy5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgeyBt
X2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXModHJ1ZSk7IH0K
LSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRmaWVsZHMuY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsgfQotICAg
IHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSB7IG1fYml0ZmllbGRz
LnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRmaWVsZHMuY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOyB9Ci0gICAg
dm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCkgeyBtX2JpdGZp
ZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKHRydWUpOyB9Ci0g
ICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0
ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgZmly
c3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuZmlyc3RDaGlsZFN0YXRl
KCk7IH0KLSAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZSgpIHsgbV9iaXRmaWVsZHMuc2V0VW5p
cXVlKHRydWUpOyBtX2JpdGZpZWxkcy5zZXRGaXJzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAgICBi
b29sIGxhc3RDaGlsZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMubGFzdENoaWxk
U3RhdGUoKTsgfQotICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoKSB7IG1fYml0ZmllbGRzLnNl
dFVuaXF1ZSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0TGFzdENoaWxkU3RhdGUodHJ1ZSk7IH0KLSAg
ICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hpbGRJ
bmRleCgpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fYml0
ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRJbmRleChpbmRleCk7
IH0KKyAgICAvLyBBIHVuaXF1ZSBzdHlsZSBpcyBvbmUgdGhhdCBoYXMgbWF0Y2hlcyBzb21ldGhp
bmcgdGhhdCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgorICAgIGJvb2wgdW5pcXVlKCkg
Y29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLnVuaXF1ZTsgfQorICAgIHZvaWQgc2V0
VW5pcXVlKCkgeyBub25pbmhlcml0ZWRfZmxhZ3MudW5pcXVlID0gdHJ1ZTsgfQorCisgICAgYm9v
bCBlbXB0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVkX2ZsYWdzLmVtcHR5U3Rh
dGU7IH0KKyAgICB2b2lkIHNldEVtcHR5U3RhdGUoYm9vbCBiKSB7IHNldFVuaXF1ZSgpOyBub25p
bmhlcml0ZWRfZmxhZ3MuZW1wdHlTdGF0ZSA9IGI7IH0KKyAgICBib29sIGZpcnN0Q2hpbGRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5maXJzdENoaWxkU3RhdGU7IH0K
KyAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZSgpIHsgc2V0VW5pcXVlKCk7IG5vbmluaGVyaXRl
ZF9mbGFncy5maXJzdENoaWxkU3RhdGUgPSB0cnVlOyB9CisgICAgYm9vbCBsYXN0Q2hpbGRTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5sYXN0Q2hpbGRTdGF0ZTsgfQor
ICAgIHZvaWQgc2V0TGFzdENoaWxkU3RhdGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRf
ZmxhZ3MubGFzdENoaWxkU3RhdGUgPSB0cnVlOyB9CiAKICAgICBDb2xvciB2aXNpdGVkRGVwZW5k
ZW50Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRIYXNFeHBs
aWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbV9iaXRmaWVsZHMuc2V0RXhwbGljaXRJbmhl
cml0YW5jZSh0cnVlKTsgfQotICAgIGJvb2wgaGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5leHBsaWNpdEluaGVyaXRhbmNlKCk7IH0K
KyAgICB2b2lkIHNldEhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgeyBub25pbmhl
cml0ZWRfZmxhZ3MuZXhwbGljaXRJbmhlcml0YW5jZSA9IHRydWU7IH0KKyAgICBib29sIGhhc0V4
cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJpdGVk
X2ZsYWdzLmV4cGxpY2l0SW5oZXJpdGFuY2U7IH0KIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMzE0MTA4ZWYyN2Yw
OTk0YTIwN2RkNzhjNGFmNDU0MDMxMDMyMTIuLmI4Y2Q2NjFmMjJjZDQxNDgxNjI2MzViMWI2NTI2
NWNjNGFlOTMzMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0yNyAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBNb3ZlIGNo
aWxkcmVuQWZmZWN0ZWRCeSBiaXRzIGZyb20gUmVuZGVyU3R5bGUgdG8gRWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBOZXcgdGVzdC1jYXNlIGJ5IFRh
a2FzaGkgU2FrYW1vdG8KKworICAgICAgICAqIGZhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmln
aHRtb3N0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL250aC1jaGls
ZC1ub3QtaW4tcmlnaHRtb3N0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVu
dC9ldmVudC10cmlnZ2VyZWQtd2lkZ2V0cy5odG1sOiBGaXggYnVnIGV4cG9zZWQgYnkgcGF0Y2gu
CisKIDIwMTItMTEtMjcgIEp1c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBDb252ZXJ0IHRlc3QgZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFn
ZXMtb3Zlci1jb2xvci5odG1sIHRvIGEgcmVmIHRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0bW9zdC1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzMWMwODA0NzkwYTY3YzJkNDA4NjY3ZjVmY2Q3Yzk4ZjMyNTUxNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJp
Z2h0bW9zdC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTcgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5hcHBsaWVkIHsKKyAgYmFja2dyb3VuZDogI2VlZTsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdj48cD5kdW1teTwvcD48L2Rpdj4K
KyAgPGRpdj48c3BhbiBjbGFzcz0iYXBwbGllZCI+MTwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGll
ZCI+Mjwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGllZCI+Mzwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48
c3Bhbj40PC9zcGFuPjxzcGFuPjU8L3NwYW4+PHNwYW4+Njwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48
c3BhbiBjbGFzcz0iYXBwbGllZCI+Nzwvc3Bhbj48c3BhbiBjbGFzcz0iYXBwbGllZCI+ODwvc3Bh
bj48c3BhbiBjbGFzcz0iYXBwbGllZCI+OTwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48c3Bhbj4xMDwv
c3Bhbj48c3Bhbj4xMTwvc3Bhbj48c3Bhbj4xMjwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmln
aHRtb3N0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0
bW9zdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMTIwMGJlNDk4OTA3OWRlMDc4YTE4YjBiODBlOTMxMDk0
NTBhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9udGgtY2hpbGQt
bm90LWluLXJpZ2h0bW9zdC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2RpdjpudGgtY2hpbGQoZXZlbikgc3BhbiB7CisgIGJh
Y2tncm91bmQ6ICNlZWU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDwhLS0gVGVz
dCBmb3IgYnVnIDk4MDIxLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgwMjEgLS0+CisgIDwhLS0gV3JvbmcgZGlzcGxheSB3aXRoICJ0cjpudGgtY2hpbGQoZXZlbikg
dGQiIGFuZCBtaXNzaW5nICZsdDt0Ym9keSZndDsgLS0+CisgIDwhLS0gSWYgdGVzdCBwYXNzZXMs
IDEsIDIsIDMsIDcsIDgsIGFuZCA5J3MgYmFja2dyb3VuZC1jb2xvciBpcyAjZWVlLiAtLT4KKyAg
PCEtLSA0LCA1LCA2LCAxMCwgMTEsIGFuZCAxMidzIGJhY2tncm91bmQgY29sb3IgaXMgZGVmYXVs
dC4tLT4KKyAgPGRpdj48cD5kdW1teTwvcD48L2Rpdj4KKyAgPGRpdj48c3Bhbj4xPC9zcGFuPjxz
cGFuPjI8L3NwYW4+PHNwYW4+Mzwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48c3Bhbj40PC9zcGFuPjxz
cGFuPjU8L3NwYW4+PHNwYW4+Njwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48c3Bhbj43PC9zcGFuPjxz
cGFuPjg8L3NwYW4+PHNwYW4+OTwvc3Bhbj48L2Rpdj4KKyAgPGRpdj48c3Bhbj4xMDwvc3Bhbj48
c3Bhbj4xMTwvc3Bhbj48c3Bhbj4xMjwvc3Bhbj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9ldmVudC10cmlnZ2VyZWQtd2lk
Z2V0cy5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13
aWRnZXRzLmh0bWwKaW5kZXggNTU4M2NlZWYxNzg0NTAyN2RiNzNlMDg5MWUzNjNkMjgxMzhjODc3
Mi4uNmI1MTUxNTI1OTkxOTlmNzM5YWM3N2Q4MGEzMzkzNmRlMWJlOTk4NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13aWRnZXRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13aWRnZXRz
Lmh0bWwKQEAgLTQ2LDggKzQ2LDggQEAKICAgICAgICAgPC9zcGFuPgogICAgIDwvZGl2PgogCi0g
ICAgPGRpdiBpZD10ZXN0NSBjbGFzcz1ib3g+Ci0gICAgICAgIDxzcGFuIHRhYmluZGV4PTE+IEZv
Y3VzaW5nIGhlcmUgc2hvdWxkIGdpdmUgYSB0ZXh0IGlucHV0LWZpZWxkLgorICAgIDxkaXYgY2xh
c3M9Ym94PgorICAgICAgICA8c3BhbiBpZD10ZXN0NSB0YWJpbmRleD0xPiBGb2N1c2luZyBoZXJl
IHNob3VsZCBnaXZlIGEgdGV4dCBpbnB1dC1maWVsZC4KICAgICAgICAgPC9zcGFuPgogICAgIDwv
ZGl2PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176447</attachid>
            <date>2012-11-28 03:42:41 -0800</date>
            <delta_ts>2012-11-28 05:10:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101448-20121128123948.patch</filename>
            <type>text/plain</type>
            <size>67770</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2MmE1YmQ4ZTE4Mzhk
OWM1OWYxMmYzM2I1YTQwOTQ4YjI1YjgyOS4uZjcwNWJmNzA3ODBmYTVlZTQxOGJkZmE4OTFhMzhm
YjI4ZDg0OWE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0yOCAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBN
b3ZlIGNoaWxkcmVuQWZmZWN0ZWRCeSBiaXRzIGZyb20gUmVuZGVyU3R5bGUgdG8gRWxlbWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNDQ4Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVzIGZhY3Rz
IG9ic2VydmVkIGFib3V0IHJlc3R5bGluZyBkZXBlbmRlbmNpZXMgb3V0IG9mIFJlbmRlclN0eWxl
IGFuZAorICAgICAgICBpbnRvIFJhcmVEYXRhIGZvciBOb2RlIGFuZCBFbGVtZW50LiBUaGlzIGFs
c28gZW5hYmxlcyBmdXJ0aGVyIGNsZWFudXAKKyAgICAgICAgaW4gcmVsYXRlZCBjb2RlIHRoYXQg
dHJpZWQgdG8gZGVhbCB3aXRoIHByb2JsZW1zIGNhdXNlZCB3aXRoIHRoZSBwbGFjZW1lbnQKKyAg
ICAgICAgb2YgdGhlIGRhdGEuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvbnRoLWNoaWxkLW5v
dC1pbi1yaWdodG1vc3QuaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAg
ICAgKiBjc3MvU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAg
ICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJlbnRFbGVtZW50UHJldmVudHNTaGFyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmxvY2F0ZVNoYXJlZFN0eWxlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0SG92ZXJlZCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvclNpYmxp
bmdTdHlsZUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENoaWxkcmVu
QWZmZWN0ZWRCeURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
ZXRDaGlsZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhU3R5bGVB
ZmZlY3RlZEJ5RW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFDaGls
ZHJlbkFmZmVjdGVkQnlIb3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyYXJlRGF0
YUNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpy
YXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURh
dGFDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURhdGFDaGlsZEluZGV4
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzdHlsZUFmZmVjdGVkQnlFbXB0eSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpjaGlsZEluZGV4KToKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6Cisg
ICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpyZXNldENvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpyZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaWZmKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUhv
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJl
bkFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGls
ZHJlbkFmZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyk6CisgICAgICAgIChOb2RlUmFyZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVk
QnlGaXJzdENoaWxkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFy
ZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpj
aGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpjaGlsZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRJbmRleCk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVSZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9Ub3VjaEFk
anVzdG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpub2RlUmVz
cG9uZHNUb1RhcEdlc3R1cmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp1cGRhdGVEcmFnU3RhdGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorCiAyMDEyLTExLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhtYXBdIFJFR1JFU1NJT04ocjEz
NTYyMCkgUXRUZXN0QnJvd3NlciBjcmFzaGVzIG9uIEdvb2dsZS1ncmF2aXR5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBmYWM4YjlmOGYwOTRkYmE4ZDhjMjkzZmE4
ZjAxNGZkMmQyYzQ2MDI0Li5kNDg0MWNhMDJiYWRiYTZhMTFmYmNmOWY4ZDcxNDgwOGYzZWE4ZWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNTIzLDEwICs1MjMs
OSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rv
cihuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbyk7CiAKICAgICBjYXNlIENTU1NlbGVj
dG9yOjpEaXJlY3RBZGphY2VudDoKLSAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHls
ZSAmJiBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVs
ZW1lbnRQYXJlbnRTdHlsZSA6IGNvbnRleHQuZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJT
dHlsZSgpOwotICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgIHBh
cmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Cisg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKKyAgICAgICAgICAgIGlmIChF
bGVtZW50KiBwYXJlbnRFbGVtZW50ID0gY29udGV4dC5lbGVtZW50LT5wYXJlbnRFbGVtZW50KCkp
CisgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGly
ZWN0QWRqYWNlbnRSdWxlcygpOwogICAgICAgICB9CiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1l
bnQgPSBjb250ZXh0LmVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKICAgICAgICAg
aWYgKCFuZXh0Q29udGV4dC5lbGVtZW50KQpAQCAtNTM3LDEwICs1MzYsOSBAQCBTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlYwogICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwg
aWdub3JlRHluYW1pY1BzZXVkbyk7CiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFk
amFjZW50OgotICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlICYmIGNvbnRleHQu
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0
eWxlIDogY29udGV4dC5lbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7Ci0gICAg
ICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgeworICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBh
cmVudEVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7CiAgICAgICAgIH0KICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudCA9IGNv
bnRleHQuZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOwogICAgICAgICBuZXh0Q29u
dGV4dC5pc1N1YlNlbGVjdG9yID0gZmFsc2U7CkBAIC04MTQsNiArODEyLDcgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQmIGNvbnRleHQsIGMKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRFbXB0eVN0YXRlKHJlc3VsdCk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkgJiYgKGVsZW1l
bnQtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNTaWJsaW5nUnVsZXMo
KSB8fCBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT51bmlxdWUoKSkpCkBAIC04MjMsMTMgKzgyMiwx
MSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdENoaWxkOgogICAgICAgICAgICAgLy8gZmlyc3QtY2hp
bGQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50Ci0gICAgICAgICAg
ICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoRWxlbWVu
dCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgICAgIGJvb2wgcmVzdWx0ID0gc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmlzRmlyc3RDaGls
ZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0
eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNv
bnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50
LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChw
YXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGls
ZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFy
ZW50RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgY2hpbGRTdHlsZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTgzOCwxMyArODM1LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RPZlR5
cGU6CiAgICAgICAgICAgICAvLyBmaXJzdC1vZi10eXBlIG1hdGNoZXMgdGhlIGZpcnN0IGVsZW1l
bnQgb2YgaXRzIHR5cGUKLSAgICAgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkp
IHsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kuaXNGaXJzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVu
dFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50LT5wYXJlbnROb2Rl
KCktPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAgICAgICAgICAgICAg
IHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CkBAIC04NTQsOSArODQ4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQs
IGMKICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1lbnQtPmlzRmluaXNo
ZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNMYXN0Q2hp
bGQoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHls
ZSkgewogICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJT
dHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBj
b250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50
RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0
eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1l
bnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgJiYgY2hpbGRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoaWxkU3R5bGUtPnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAt
ODY2LDExICs4NTgsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihj
b25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9MYXN0T2ZUeXBlOgogICAgICAgICAgICAgLy8gbGFzdC1vZi10eXBl
IG1hdGNoZXMgdGhlIGxhc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYgKEVs
ZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8g
Y29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1fbW9k
ZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC0+
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVy
biBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNMYXN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQt
PnRhZ1FOYW1lKCkpOwpAQCAtODgyLDExICs4NzEsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwg
YwogICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRF
bGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgc2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5LmlzTGFzdENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5
bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50
RWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7CisgICAgICAg
ICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdENoaWxkICYmIGNoaWxkU3R5
bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRGaXJzdENoaWxkU3Rh
dGUoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlDaGlsZCAmJiBjaGlsZFN0eWxlKQpA
QCAtODk5LDExICs4ODUsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rv
cihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgc2VsZWN0b3IgaXMgdmVyeSBzbG93LgogICAgICAgICAgICAgaWYgKEVs
ZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8g
Y29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgICAgICAgICAgICAgICAgIHBh
cmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05MTcsMTEgKzkwMCwxMCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwog
ICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3ku
Y291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2Rl
ID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBj
aGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6
IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFy
ZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50LT5zZXRDaGlsZEluZGV4KGNvdW50KTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkU3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRD
aGlsZEluZGV4KGNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxk
U3R5bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5z
ZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkp
CkBAIC05MzMsMTEgKzkxNSw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEg
KyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c09mVHlwZUJlZm9yZShlbGVt
ZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09
IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5
bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKQorICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1h
dGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05NDcs
MTEgKzkyNiw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgICAgICBpZiAoIXNl
bGVjdG9yLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
aWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0
eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJT
dHlsZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQ
b3NpdGlvbmFsUnVsZXMoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50RWxl
bWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRy
ZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IGludCBjb3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c0Fm
dGVyKGVsZW1lbnQpOwpAQCAtOTYzLDExICs5MzksOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwg
YwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNv
bHZpbmdTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDog
cGFyZW50RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxk
cmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpCisgICAgICAg
ICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTAwNSwxMCArOTc4LDEyIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAg
ICAgICAgICAgICAvLyAuLi5leGNlcHQgaWYgOnZpc2l0ZWQgbWF0Y2hpbmcgaXMgZGlzYWJsZWQg
Zm9yIGFuY2VzdG9yL3NpYmxpbmcgbWF0Y2hpbmcuCiAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC0+aXNMaW5rKCkgJiYgY29udGV4dC52aXNpdGVkTWF0Y2hUeXBlID09IFZpc2l0ZWRNYXRjaEVu
YWJsZWQ7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0RyYWc6Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgY29udGV4dC5lbGVt
ZW50U3R5bGUtPnNldEFmZmVjdGVkQnlEcmFnUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPnJl
bmRlclN0eWxlKCktPnNldEFmZmVjdGVkQnlEcmFnUnVsZXModHJ1ZSk7CisgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQuZWxlbWVudFN0eWxlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVsZW1lbnRTdHls
ZS0+c2V0QWZmZWN0ZWRCeURyYWcoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcodHJ1ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50
LT5yZW5kZXJlcigpLT5pc0RyYWdnaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwMTgsMTAgKzk5MywxMiBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCwgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4g
aG92ZXIgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAgLy8g
aHJlZiBhbmQgKjpob3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiBUaGlzIGlzIGltcG9y
dGFudCBmb3Igc2l0ZXMgbGlrZSB3c2ouY29tLgogICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFy
c2luZyB8fCBjb250ZXh0LmlzU3ViU2VsZWN0b3IgfHwgKHNlbGVjdG9yLT5oYXNUYWcoKSAmJiAh
ZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxlcyh0cnVlKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxl
cyh0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmVsZW1lbnRTdHlsZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXIo
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIodHJ1ZSk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5ob3ZlcmVkKCkgfHwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9Ib3ZlcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpAQCAtMTAzMCwxMCArMTAwNywxMiBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAg
ICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBzaG91bGQgbmV2
ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCiAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2
ZSBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLgogICAgICAgICAgICAgaWYgKG1fc3RyaWN0UGFy
c2luZyB8fCBjb250ZXh0LmlzU3ViU2VsZWN0b3IgfHwgKHNlbGVjdG9yLT5oYXNUYWcoKSAmJiAh
ZWxlbWVudC0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC5lbGVtZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5QWN0aXZlUnVsZXModHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudC0+cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1
bGVzKHRydWUpOworICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZWxlbWVudFN0eWxlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5lbGVtZW50U3R5bGUtPnNldEFmZmVjdGVkQnlBY3Rp
dmUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKHRydWUpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+YWN0aXZlKCkgfHwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQ
c2V1ZG9BY3RpdmUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaWJsaW5nVHJhdmVyc2FsU3Ry
YXRlZ2llcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVz
LmgKaW5kZXggZTU4M2U2YzEzMGM5N2JkZjU0MDg0YjM3YzQ0MDExZmI2NzQyNDViZC4uYmViZmVm
OGU1OWVkOGRmOTViZDJmMmNmZTg5ZWFmNDU5ZWY2ZDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgKQEAgLTgwLDggKzgwLDcgQEAgaW5s
aW5lIGludCBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUo
RWxlbWVudCogZWxlbWVudCkgY28KIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29u
c3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsg
c2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewot
ICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHNpYmxpbmctPnJlbmRlclN0eWxlKCk7Ci0gICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gcyA/IHMtPmNoaWxkSW5kZXgoKSA6IDA7CisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gc2libGluZy0+Y2hpbGRJbmRleCgpOwogICAgICAgICBpZiAoaW5kZXgpIHsK
ICAgICAgICAgICAgIGNvdW50ICs9IGluZGV4OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggY2JmNmM4YTc1MWFkZGJkNDZjYzEwYjJiYjBl
OGZlZmM3MjRlOTJkNy4uNGY1ZTEwOWI3ZTAyYjBlYTY4YTdmM2IxYTQ1MjYwNWYwMTM2OTg2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNzE2LDcgKzcxNiw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0
JiByZXN1bHQpCiAgICAgYm9vbCBzd2FwVmlzaXRlZFVudmlzaXRlZCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShtX2VsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9WaXNpdGVkKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXRjaGVkUnVsZXMu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKG1fc3R5bGUgJiYgbV9tYXRjaGVkUnVsZXNbaV0t
PmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKQotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKCk7CisgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKICAgICAgICAgdW5zaWduZWQgbGlua01hdGNoVHlwZSA9
IG1fbWF0Y2hlZFJ1bGVzW2ldLT5saW5rTWF0Y2hUeXBlKCk7CiAgICAgICAgIGlmIChzd2FwVmlz
aXRlZFVudmlzaXRlZCAmJiBsaW5rTWF0Y2hUeXBlICYmIGxpbmtNYXRjaFR5cGUgIT0gU2VsZWN0
b3JDaGVja2VyOjpNYXRjaEFsbCkKICAgICAgICAgICAgIGxpbmtNYXRjaFR5cGUgPSAobGlua01h
dGNoVHlwZSA9PSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCkgPyBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGluayA6IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkOwpAQCAtMTE3Niw4
ICsxMTc2LDYgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQo
U3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKICNlbmRpZgogICAgIGlmIChlbGVtZW50LT5p
c0xpbmsoKSAhPSBtX2VsZW1lbnQtPmlzTGluaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKHN0eWxlLT5hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbGVtZW50LT5ob3ZlcmVkKCkgIT0gbV9lbGVt
ZW50LT5ob3ZlcmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZWxlbWVudC0+
YWN0aXZlKCkgIT0gbV9lbGVtZW50LT5hY3RpdmUoKSkKQEAgLTEyNDksMTIgKzEyNDcsMTQgQEAg
aW5saW5lIFN0eWxlZEVsZW1lbnQqIFN0eWxlUmVzb2x2ZXI6OmZpbmRTaWJsaW5nRm9yU3R5bGVT
aGFyaW5nKE5vZGUqIG5vZGUsIHVuc2kKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3R5bGVkRWxl
bWVudCo+KG5vZGUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgcGFyZW50U3R5bGVQcmV2ZW50
c1NoYXJpbmcoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorc3RhdGljIGlubGluZSBi
b29sIHBhcmVudEVsZW1lbnRQcmV2ZW50c1NoYXJpbmcoY29uc3QgRWxlbWVudCogcGFyZW50RWxl
bWVudCkKIHsKLSAgICByZXR1cm4gcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0
aW9uYWxSdWxlcygpCi0gICAgICAgIHx8IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlG
aXJzdENoaWxkUnVsZXMoKQotICAgICAgICB8fCBwYXJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMoKSAKLSAgICAgICAgfHwgcGFyZW50U3R5bGUtPmNoaWxkcmVuQWZm
ZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKTsKKyAgICBpZiAoIXBhcmVudEVsZW1lbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+Y2hpbGRyZW5B
ZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVudC0+Y2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKKyAgICAgICAgfHwgcGFyZW50RWxlbWVu
dC0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKQorICAgICAgICB8fCBwYXJlbnRF
bGVtZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7CiB9CiAKIFJl
bmRlclN0eWxlKiBTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSgpCkBAIC0xMjcxLDcg
KzEyNzEsNyBAQCBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUo
KQogICAgIC8vIElkcyBzdG9wIHN0eWxlIHNoYXJpbmcgaWYgdGhleSBzaG93IHVwIGluIHRoZSBz
dHlsZXNoZWV0cy4KICAgICBpZiAobV9zdHlsZWRFbGVtZW50LT5oYXNJRCgpICYmIG1fZmVhdHVy
ZXMuaWRzSW5SdWxlcy5jb250YWlucyhtX3N0eWxlZEVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0
aW9uKCkuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHBhcmVudFN0eWxlUHJl
dmVudHNTaGFyaW5nKG1fcGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVtZW50UHJldmVu
dHNTaGFyaW5nKG1fZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudC0+aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCBSZW5kZXJTdHlsZSogU3R5bGVS
ZXNvbHZlcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogICAgIGlmIChzdHlsZVNoYXJpbmdDYW5kaWRh
dGVNYXRjaGVzSG9zdFJ1bGVzKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIFRyYWNraW5n
IGNoaWxkIGluZGV4IHJlcXVpcmVzIHVuaXF1ZSBzdHlsZSBmb3IgZWFjaCBub2RlLiBUaGlzIG1h
eSBnZXQgc2V0IGJ5IHRoZSBzaWJsaW5nIHJ1bGUgbWF0Y2ggYWJvdmUuCi0gICAgaWYgKHBhcmVu
dFN0eWxlUHJldmVudHNTaGFyaW5nKG1fcGFyZW50U3R5bGUpKQorICAgIGlmIChwYXJlbnRFbGVt
ZW50UHJldmVudHNTaGFyaW5nKG1fZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIHNoYXJlRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyMGY5YzRjMDBjNGRhODY1NmY2Y2Vh
MzA3MTBjYzNkNzVkN2YwNjAyLi4zNDFlYzBhM2EwODg1YzdiYTQ5NzQ1Yzc0ZDliNzJlNTAwZTkx
OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04ODcsMTAgKzg4Nywx
MCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sIGJvb2wgcGF1c2Up
CiAgICAgLy8gbm90ZSB0aGF0IHdlIG5lZWQgdG8gcmVjYWxjIHRoZSBzdHlsZQogICAgIC8vIEZJ
WE1FOiBNb3ZlIHRvIEVsZW1lbnQKICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICBib29s
IHJlYWN0c1RvUHJlc3MgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZlY3RlZEJ5QWN0aXZlUnVs
ZXMoKTsKKyAgICAgICAgYm9vbCByZWFjdHNUb1ByZXNzID0gcmVuZGVyU3R5bGUoKS0+YWZmZWN0
ZWRCeUFjdGl2ZSgpIHx8IChpc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHRoaXMpLT5jaGls
ZHJlbkFmZmVjdGVkQnlBY3RpdmUoKSk7CiAgICAgICAgIGlmIChyZWFjdHNUb1ByZXNzKQogICAg
ICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpIHsKKyAgICAgICAgaWYgKHJl
bmRlclN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVy
KCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2VkU3RhdGUpKQogICAg
ICAgICAgICAgICAgIHJlYWN0c1RvUHJlc3MgPSB0cnVlOwogICAgICAgICB9CkBAIC05MDgsOSAr
OTA4LDkgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBh
dXNlKQogICAgICAgICAgICAgLy8gRG8gYW4gaW1tZWRpYXRlIHJlcGFpbnQuCiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KHRy
dWUpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgc3Vic3Rp
dHV0ZSBmb3IgdXNsZWVwIGZvciBXaW4zMi4KLSAgICAgICAgICAgIC8vIEJldHRlciB5ZXQsIGNv
bWUgdXAgd2l0aCBhIHdheSBvZiBkb2luZyB0aGlzIHRoYXQgZG9lc24ndCB1c2UgdGhpcyBzb3J0
IG9mIHRoaW5nIGF0IGFsbC4gICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEJldHRlciB5ZXQs
IGNvbWUgdXAgd2l0aCBhIHdheSBvZiBkb2luZyB0aGlzIHRoYXQgZG9lc24ndCB1c2UgdGhpcyBz
b3J0IG9mIHRoaW5nIGF0IGFsbC4KICNpZmRlZiBIQVZFX0ZVTkNfVVNMRUVQCiAgICAgICAgICAg
ICAvLyBOb3cgcGF1c2UgZm9yIGEgc21hbGwgYW1vdW50IG9mIHRpbWUgKDEvMTB0aCBvZiBhIHNl
Y29uZCBmcm9tIGJlZm9yZSB3ZSByZXBhaW50ZWQgaW4gdGhlIHByZXNzZWQgc3RhdGUpCiAgICAg
ICAgICAgICBkb3VibGUgcmVtYWluaW5nVGltZSA9IDAuMSAtIChjdXJyZW50VGltZSgpIC0gc3Rh
cnRUaW1lKTsKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEhvdmVy
ZWQoYm9vbCBvdmVyKQogICAgIC8vIG5vdGUgdGhhdCB3ZSBuZWVkIHRvIHJlY2FsYyB0aGUgc3R5
bGUKICAgICAvLyBGSVhNRTogTW92ZSB0byBFbGVtZW50CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsK
LSAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmFmZmVjdGVkQnlIb3ZlclJ1bGVzKCkp
CisgICAgICAgIGlmIChyZW5kZXJTdHlsZSgpLT5hZmZlY3RlZEJ5SG92ZXIoKSB8fCAoaXNFbGVt
ZW50Tm9kZSgpICYmIHRvRWxlbWVudCh0aGlzKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSkp
CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5OWRhMzJhMTAzZDc1MTIxMDVhY2U4NTY4NDI2
MmQ3ODA2ZGViOGUyLi5iN2QwZTU5OTMyZGE0Y2I1MGE4ZTNlZGJkYTJlMDVhMTc5ZTQxYjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTk4LDYgKzExOTgsNyBAQCB2b2lkIEVsZW1lbnQ6
OmRldGFjaCgpCiAgICAgICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVsZW1lbnRSYXJlRGF0
YSgpOwogICAgICAgICBkYXRhLT5zZXRJc0luQ2FudmFzU3VidHJlZShmYWxzZSk7CiAgICAgICAg
IGRhdGEtPnJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgICAgICBkYXRhLT5yZXNldER5bmFtaWNS
ZXN0eWxlT2JzZXJ2YXRpb25zKCk7CiAgICAgfQogCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNo
YWRvdyA9IHRoaXMtPnNoYWRvdygpKSB7CkBAIC0xMjY1LDE1ICsxMjY2LDEyIEBAIHZvaWQgRWxl
bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIC8vIFJlZiBjdXJyZW50
U3R5bGUgaW4gY2FzZSBpdCB3b3VsZCBvdGhlcndpc2UgYmUgZGVsZXRlZCB3aGVuIHNldHRpbmcg
dGhlIG5ldyBzdHlsZSBpbiB0aGUgcmVuZGVyZXIuCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBj
dXJyZW50U3R5bGUocmVuZGVyU3R5bGUoKSk7CiAgICAgYm9vbCBoYXNQYXJlbnRTdHlsZSA9IHBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpID8gc3RhdGljX2Nhc3Q8Ym9vbD4ocGFyZW50
Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCktPnJlbmRlclN0eWxlKCkpIDogZmFsc2U7Ci0gICAg
Ym9vbCBoYXNEaXJlY3RBZGphY2VudFJ1bGVzID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHls
ZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwotICAgIGJvb2wgaGFz
SW5kaXJlY3RBZGphY2VudFJ1bGVzID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+Y2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIGJvb2wgaGFzRGly
ZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMo
KTsKKyAgICBib29sIGhhc0luZGlyZWN0QWRqYWNlbnRSdWxlcyA9IGNoaWxkcmVuQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKIAogICAgIGlmICgoY2hhbmdlID4gTm9DaGFuZ2Ug
fHwgbmVlZHNTdHlsZVJlY2FsYygpKSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkgewot
ICAgICAgICAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZWxlbWVudFJhcmVEYXRhKCk7Ci0g
ICAgICAgICAgICBkYXRhLT5yZXNldENvbXB1dGVkU3R5bGUoKTsKLSAgICAgICAgICAgIGRhdGEt
PnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
aGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5yZXNldENvbXB1
dGVkU3R5bGUoKTsKICAgICB9CiAgICAgaWYgKGhhc1BhcmVudFN0eWxlICYmIChjaGFuZ2UgPj0g
SW5oZXJpdCB8fCBuZWVkc1N0eWxlUmVjYWxjKCkpKSB7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbmV3U3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CkBAIC0xMjkwLDI3ICsxMjg4LDYg
QEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY3VycmVudFN0eWxlKSB7Ci0g
ICAgICAgICAgICAvLyBQcmVzZXJ2ZSAiYWZmZWN0ZWQgYnkiIGJpdHMgdGhhdCB3ZXJlIHByb3Bh
Z2F0ZWQgdG8gdXMgZnJvbSBkZXNjZW5kYW50cyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBkaWRuJ3Qg
ZG8gYSBmdWxsCi0gICAgICAgICAgICAvLyBzdHlsZSBjaGFuZ2UgKGUuZy4sIG9ubHkgaW5saW5l
IHN0eWxlIGNoYW5nZWQpLgotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+YWZmZWN0ZWRC
eUhvdmVyUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZmZWN0ZWRCeUhv
dmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLT5hZmZlY3RlZEJ5
QWN0aXZlUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0QWZmZWN0ZWRCeUFj
dGl2ZVJ1bGVzKHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+YWZmZWN0ZWRC
eURyYWdSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRBZmZlY3RlZEJ5RHJh
Z1J1bGVzKHRydWUpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxl
LT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgICAg
ICAgICBpZiAoY3VycmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcygpKQotICAgICAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHls
ZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkpCi0gICAgICAgICAgICAgICAg
bmV3U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpOwotICAgICAg
ICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMo
KSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENo
aWxkUnVsZXMoKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUtPmNoaWxkcmVuQWZmZWN0
ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOwotICAgICAgICB9Ci0KICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICBpZiAoY2ggIT0gTm9DaGFuZ2UgfHwgcHNldWRvU3R5bGVDYWNoZUlzSW52YWxp
ZChjdXJyZW50U3R5bGUuZ2V0KCksIG5ld1N0eWxlLmdldCgpKSB8fCAoY2hhbmdlID09IEZvcmNl
ICYmIHJlbmRlcmVyLT5yZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSkgfHwg
c3R5bGVDaGFuZ2VUeXBlKCkgPT0gU3ludGhldGljU3R5bGVDaGFuZ2UpCiAgICAgICAgICAgICAg
ICAgcmVuZGVyZXItPnNldEFuaW1hdGFibGVTdHlsZShuZXdTdHlsZS5nZXQoKSk7CkBAIC0xNDM4
LDcgKzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoRWxlbWVu
dCogZWxlbWVudCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGlmICghc3R5bGUgJiYgIWVsZW1l
bnQtPnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
c3R5bGUgfHwgKHN0eWxlLT5hZmZlY3RlZEJ5RW1wdHkoKSAmJiAoIXN0eWxlLT5lbXB0eVN0YXRl
KCkgfHwgZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKSkpCisgICAgaWYgKCFzdHlsZSB8fCAoZWxl
bWVudC0+c3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSAmJiAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwg
ZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKSkpCiAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKIH0KIApAQCAtMTQ0OCwxMyArMTQyNSwxMyBAQCBzdGF0aWMgdm9pZCBjaGVj
a0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBi
b29sIGZpbgogICAgIC8vIDplbXB0eSBzZWxlY3Rvci4KICAgICBjaGVja0ZvckVtcHR5U3R5bGVD
aGFuZ2UoZSwgc3R5bGUpOwogICAgIAotICAgIGlmICghc3R5bGUgfHwgKGUtPm5lZWRzU3R5bGVS
ZWNhbGMoKSAmJiBzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5UG9zaXRpb25hbFJ1bGVzKCkpKQor
ICAgIGlmICghc3R5bGUgfHwgKGUtPm5lZWRzU3R5bGVSZWNhbGMoKSAmJiBlLT5jaGlsZHJlbkFm
ZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDpm
aXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0
byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KICAg
ICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFm
dGVyQ2hhbmdlfCBpcyBub3QgMC4KICAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBh
cnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQgdGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0g
ICAgaWYgKHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBhZnRl
ckNoYW5nZSkgeworICAgIGlmIChlLT5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KSAmJiBhZnRlckNoYW5nZSkgewogICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQu
CiAgICAgICAgIE5vZGUqIG5ld0ZpcnN0Q2hpbGQgPSAwOwogICAgICAgICBmb3IgKG5ld0ZpcnN0
Q2hpbGQgPSBlLT5maXJzdENoaWxkKCk7IG5ld0ZpcnN0Q2hpbGQgJiYgIW5ld0ZpcnN0Q2hpbGQt
PmlzRWxlbWVudE5vZGUoKTsgbmV3Rmlyc3RDaGlsZCA9IG5ld0ZpcnN0Q2hpbGQtPm5leHRTaWJs
aW5nKCkpIHt9OwpAQCAtMTQ3Nyw3ICsxNDU0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4K
IAogICAgIC8vIDpsYXN0LWNoaWxkLiAgSW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBk
b24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJz
dCB0aW1lLgogICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0
aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgotICAgIGlmIChzdHlsZS0+Y2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpIHsKKyAgICBpZiAoZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpIHsKICAg
ICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCiAgICAgICAgIE5vZGUqIG5ld0xhc3RD
aGlsZCA9IDA7CiAgICAgICAgIGZvciAobmV3TGFzdENoaWxkID0gZS0+bGFzdENoaWxkKCk7IG5l
d0xhc3RDaGlsZCAmJiAhbmV3TGFzdENoaWxkLT5pc0VsZW1lbnROb2RlKCk7IG5ld0xhc3RDaGls
ZCA9IG5ld0xhc3RDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHt9OwpAQCAtMTUwMCw3ICsxNDc3
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQqIGUs
IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBmaW4KIAogICAgIC8vIFRoZSArIHNlbGVjdG9yLiAg
V2UgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBmaXJzdCBlbGVtZW50IGZvbGxvd2luZyB0aGUgaW5z
ZXJ0aW9uIHBvaW50LiAgSXQgaXMgdGhlIG9ubHkgcG9zc2libGUgZWxlbWVudAogICAgIC8vIHRo
YXQgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBET00gY2hhbmdlLgotICAgIGlmIChzdHlsZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpICYmIGFmdGVyQ2hhbmdlKSB7
CisgICAgaWYgKGUtPmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSAmJiBh
ZnRlckNoYW5nZSkgewogICAgICAgICBOb2RlKiBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiA9
IDA7CiAgICAgICAgIGZvciAoZmlyc3RFbGVtZW50QWZ0ZXJJbnNlcnRpb24gPSBhZnRlckNoYW5n
ZTsKICAgICAgICAgICAgICBmaXJzdEVsZW1lbnRBZnRlckluc2VydGlvbiAmJiAhZmlyc3RFbGVt
ZW50QWZ0ZXJJbnNlcnRpb24tPmlzRWxlbWVudE5vZGUoKTsKQEAgLTE1MTYsOCArMTQ5Myw4IEBA
IHN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50KiBlLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGJvb2wgZmluCiAgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRo
ZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgc28gd2Ugd29uJ3QgZG8gYW55IHdvcmsgZm9yIHRoZSBm
b3J3YXJkIGNhc2UgaWYgd2UgZG9uJ3QgaGF2ZSB0by4KICAgICAvLyBGb3IgcGVyZm9ybWFuY2Ug
cmVhc29ucyB3ZSBqdXN0IG1hcmsgdGhlIHBhcmVudCBub2RlIGFzIGNoYW5nZWQsIHNpbmNlIHdl
IGRvbid0IHdhbnQgdG8gbWFrZSBjaGlsZHJlbkNoYW5nZWQgTyhuXjIpIGJ5IGNyYXdsaW5nIGFs
bCBvdXIga2lkcwogICAgIC8vIGhlcmUuICByZWNhbGNTdHlsZSB3aWxsIHRoZW4gZm9yY2UgYSB3
YWxrIG9mIHRoZSBjaGlsZHJlbiB3aGVuIGl0IHNlZXMgdGhhdCB0aGlzIGhhcyBoYXBwZW5lZC4K
LSAgICBpZiAoKHN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVz
KCkgJiYgYWZ0ZXJDaGFuZ2UpIHx8Ci0gICAgICAgIChzdHlsZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSAmJiBiZWZvcmVDaGFuZ2UpKQorICAgIGlmICgoZS0+
Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpICYmIGFmdGVyQ2hhbmdl
KQorICAgICAgICB8fCAoZS0+Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKSAmJiBiZWZvcmVDaGFuZ2UpKQogICAgICAgICBlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiB9CiAKQEAgLTE5MjQsOSArMTkwMSwxMTUgQEAgdm9pZCBFbGVtZW50OjpzZXRTdHlsZUFmZmVj
dGVkQnlFbXB0eSgpCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFN0eWxlQWZmZWN0
ZWRCeUVtcHR5KHRydWUpOwogfQogCi1ib29sIEVsZW1lbnQ6OnN0eWxlQWZmZWN0ZWRCeUVtcHR5
KCkgY29uc3QKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoYm9vbCB2
YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKHZhbHVlKTsKK30K
Kwordm9pZCBFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkK
K3sKKyAgICBpZiAodmFsdWUgfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSh2YWx1ZSk7Cit9CisKK3Zv
aWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhib29sIHZhbHVlKQoreworICAg
IGlmICh2YWx1ZSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyh2YWx1ZSk7Cit9CisKK3ZvaWQgRWxlbWVu
dDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkKK3sKKyAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKHRy
dWUpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1
bGVzKCkKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXModHJ1ZSk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCktPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXModHJ1ZSk7Cit9
CisKK3ZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQoreworICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyh0cnVlKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRDaGlsZEluZGV4KHVuc2lnbmVk
IGluZGV4KQoreworICAgIEVsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyU3R5bGUoKSkK
KyAgICAgICAgc3R5bGUtPnNldFVuaXF1ZSgpOworICAgIHJhcmVEYXRhLT5zZXRDaGlsZEluZGV4
KGluZGV4KTsKK30KKworYm9vbCBFbGVtZW50OjpyYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgcmV0dXJuIGVsZW1l
bnRSYXJlRGF0YSgpLT5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpOworfQorCitib29sIEVsZW1lbnQ6
OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdAoreworICAgIEFTU0VSVCho
YXNSYXJlRGF0YSgpKTsKKyAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZm
ZWN0ZWRCeUhvdmVyKCk7Cit9CisKK2Jvb2wgRWxlbWVudDo6cmFyZURhdGFDaGlsZHJlbkFmZmVj
dGVkQnlBY3RpdmUoKSBjb25zdAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpOworfQor
Citib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEo
KS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOworfQorCitib29sIEVsZW1lbnQ6OnJhcmVEYXRh
Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aGFzUmFyZURhdGEoKSk7CisgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5jaGlsZHJlbkFm
ZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsKK30KKworYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNo
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+c3R5bGVBZmZlY3RlZEJ5RW1wdHkoKTsK
KyAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgp
LT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpOworfQorCitib29sIEVsZW1lbnQ6
OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEo
KS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpOworfQorCitib29sIEVs
ZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVtZW50
UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwor
fQorCitib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKSBjb25zdAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7Cit9CisKK3Vuc2lnbmVkIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRJbmRleCgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOworICAgIHJldHVybiBlbGVtZW50
UmFyZURhdGEoKS0+Y2hpbGRJbmRleCgpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldElzSW5DYW52
YXNTdWJ0cmVlKGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBk
NmI4Mzk0MGVlZTBiZmE1MzAyMTEzMDY4YWZmY2RmN2UyZjFjZGY1Li5hMjQ1OTRmNWU2YmQ4MTcz
NjQzN2FjZjVlZTVlYzM3OWMxZjg4NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI4Niw4ICsy
ODYsMjkgQEAgcHVibGljOgogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRv
SWQgPSBOT1BTRVVETyk7CiAKKyAgICAvLyBNZXRob2RzIGZvciBpbmRpY2F0aW5nIHRoZSBzdHls
ZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4sIGNoaWxkcmVuIGNoYW5naW5n
LCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcgbGlzdCwgZXRjLikKKyAgICBi
b29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAm
JiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZm
ZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YUNo
aWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUFj
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGlsZHJlbkFm
ZmVjdGVkQnlBY3RpdmUoKTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpIGNv
bnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlE
cmFnKCk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeVBvc2l0aW9uYWxSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgKHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIHx8IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKSk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFD
aGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKTsgfQorICAgIGJvb2wgY2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYm
IHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKTsgfQorICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhh
c1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1
bGVzKCk7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRh
KCkgJiYgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
OyB9CisgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRh
KCkgPyByYXJlRGF0YUNoaWxkSW5kZXgoKSA6IDA7IH0KKwogICAgIHZvaWQgc2V0U3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsKLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcihib29sKTsKKyAgICB2b2lkIHNldENo
aWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZShib29sKTsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0
ZWRCeURyYWcoYm9vbCk7CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxk
UnVsZXMoKTsKKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7
CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKCk7Cisg
ICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Cisg
ICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwor
ICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCk7CiAKICAgICB2b2lkIHNldElzSW5DYW52
YXNTdWJ0cmVlKGJvb2wpOwogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBjb25zdDsKQEAg
LTUyMCw2ICs1NDEsMTYgQEAgcHJpdmF0ZToKIAogICAgIFF1YWxpZmllZE5hbWUgbV90YWdOYW1l
OwogICAgIHZpcnR1YWwgT3duUHRyPE5vZGVSYXJlRGF0YT4gY3JlYXRlUmFyZURhdGEoKTsKKyAg
ICBib29sIHJhcmVEYXRhU3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSBjb25zdDsKKyAgICBib29sIHJh
cmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdDsKKyAgICBib29sIHJhcmVEYXRh
Q2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3Q7CisgICAgYm9vbCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdDsKKyAgICBib29sIHJhcmVEYXRhQ2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCByYXJlRGF0YUNoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdDsKKyAgICBib29sIHJhcmVE
YXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0OworICAg
IGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0OworICAgIHVuc2lnbmVkIHJhcmVEYXRhQ2hpbGRJbmRleCgpIGNvbnN0OwogCiAgICAg
U3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNDM3MzNkNWJkNTY5NjEz
YTk5NzgwZmQ4MzA2NGU5ZjI5YjgzYTU5ZC4uOWU0ZWYxYmRiMzVmMmY3MTBmZmZkZjU4NDViOGE4
N2IxOGFlMjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzgsNiAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWxlbWVudFJhcmVEYXRhKCk7CiAKICAgICB2
b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOworICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9i
c2VydmF0aW9ucygpOwogCiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFy
YW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsKICAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5l
ZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwpAQCAtNTMsNiArNTQsMjQg
QEAgcHVibGljOgogICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6aXNJblRvcExheWVyOwogICAgIHVz
aW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJblRvcExheWVyOwogI2VuZGlmCisgICAgdXNpbmcgTm9k
ZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsKKyAgICB1c2luZyBOb2RlUmFyZURh
dGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6
Y2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5QWN0aXZlOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5B
ZmZlY3RlZEJ5RHJhZzsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0
ZWRCeURyYWc7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJz
dENoaWxkUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVk
QnlGaXJzdENoaWxkUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVj
dGVkQnlMYXN0Q2hpbGRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVu
QWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRy
ZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6
OnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7CisgICAgdXNpbmcgTm9k
ZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOworICAg
IHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlczsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3
YXJkUG9zaXRpb25hbFJ1bGVzOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRh
OjpjaGlsZEluZGV4OworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRJbmRleDsKIAog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3QgT1ZFUlJJREU7CiAKQEAgLTg1LDcgKzEwNCwyMiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRh
Ojp+RWxlbWVudFJhcmVEYXRhKCkKIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRD
b21wdXRlZFN0eWxlKCkKIHsKICAgICBtX2NvbXB1dGVkU3R5bGUuY2xlYXIoKTsKKyAgICBzZXRT
dHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSk7CisgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KIAor
aW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRp
b25zKCkKK3sKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcihmYWxzZSk7CisgICAgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlEcmFnKGZhbHNlKTsKKyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
ZmFsc2UpOworICAgIHNldENoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKGZhbHNlKTsK
KyAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKGZhbHNlKTsKKyAg
ICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKTsKKyAg
ICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiB9
CisKK30gLy8gbmFtZXNwYWNlCisKICNlbmRpZiAvLyBFbGVtZW50UmFyZURhdGFfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDZjM2E5Yjk5Y2IxYTYyMDk3MjNjZjZiZWE4MThkY2EyMjAyZDBiZDQuLmNj
MDM4OTgwZmMzNTA0ODAwMWQ3MjBkNmUzY2NiY2VjYzcxOWU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTM0NSwxMiArMzQ1LDYgQEAgTm9kZTo6U3R5bGVDaGFuZ2UgTm9kZTo6ZGlmZihjb25zdCBS
ZW5kZXJTdHlsZSogczEsIGNvbnN0IFJlbmRlclN0eWxlKiBzMiwgRG9jdW0KICAgICBlbHNlIGlm
IChzMS0+aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSB8fCBzMi0+aGFzRXhwbGlj
aXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSkKICAgICAgICAgY2ggPSBJbmhlcml0OwogCi0gICAg
Ly8gRm9yIG50aC1jaGlsZCBhbmQgb3RoZXIgcG9zaXRpb25hbCBydWxlcywgdHJlYXQgc3R5bGVz
IGFzIGRpZmZlcmVudCBpZiB0aGV5IGhhdmUKLSAgICAvLyBjaGFuZ2VkIHBvc2l0aW9uYWxseSBp
biB0aGUgRE9NLiBUaGlzIHdheSBzdWJzZXF1ZW50IHNpYmxpbmcgcmVzb2x1dGlvbnMgd29uJ3Qg
YmUgY29uZnVzZWQKLSAgICAvLyBieSB0aGUgd3JvbmcgY2hpbGQgaW5kZXggYW5kIGV2YWx1YXRl
IHRvIGluY29ycmVjdCByZXN1bHRzLgotICAgIGlmIChjaCA9PSBOb0NoYW5nZSAmJiBzMS0+Y2hp
bGRJbmRleCgpICE9IHMyLT5jaGlsZEluZGV4KCkpCi0gICAgICAgIGNoID0gTm9Jbmhlcml0Owot
CiAgICAgLy8gSWYgdGhlIHBzZXVkb1N0eWxlcyBoYXZlIGNoYW5nZWQsIHdlIHdhbnQgYW55IFN0
eWxlQ2hhbmdlIHRoYXQgaXMgbm90IE5vQ2hhbmdlCiAgICAgLy8gYmVjYXVzZSBzZXRTdHlsZSB3
aWxsIGRvIHRoZSByaWdodCB0aGluZyB3aXRoIGFueXRoaW5nIGVsc2UuCiAgICAgaWYgKGNoID09
IE5vQ2hhbmdlICYmIHMxLT5oYXNBbnlQdWJsaWNQc2V1ZG9TdHlsZXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCmluZGV4IDk3ODBkNjZhZTgzMTY3ZTkwYThjMTBlODZkMWY5NzFlZWUz
ZGE2OTEuLmFjNTUxYzNhMjJjYzE0MDFmY2I4OWM3YTA1ODYyYmUyY2NmMjNhODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTIwMyw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IDogbV90cmVlU2NvcGUoMCkKICAgICAgICAgLCBtX2NoaWxkTm9kZUxpc3QoMCkKICAgICAgICAg
LCBtX3RhYkluZGV4KDApCisgICAgICAgICwgbV9jaGlsZEluZGV4KDApCiAgICAgICAgICwgbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0ZvY3VzZWQoZmFs
c2UpCiAgICAgICAgICwgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFj
aChmYWxzZSkKQEAgLTIxNCw2ICsyMTUsMTQgQEAgcHVibGljOgogI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKICAgICAgICAgLCBtX2lzSW5Ub3BMYXllcihmYWxzZSkKICNlbmRpZgorICAgICAg
ICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJl
bkFmZmVjdGVkQnlBY3RpdmUoZmFsc2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlE
cmFnKGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KGZhbHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFs
c2UpCisgICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKGZh
bHNlKQorICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyhmYWxzZSkKKyAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTMzNiwxMiArMzQ1LDMyIEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGlzSW5Ub3BMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1faXNJblRvcExh
eWVyOyB9CiAgICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCB2YWx1ZSkgeyBtX2lzSW5Ub3BM
YXllciA9IHZhbHVlOyB9CiAjZW5kaWYKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVy
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQg
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUhvdmVyID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlOyB9CisgICAgdm9pZCBz
ZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUFjdGl2ZSA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFnOyB9CisgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlE
cmFnID0gdmFsdWU7IH0KKworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7
IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KKyAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRy
ZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVj
dEFkamFjZW50UnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJl
bkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgdW5zaWdu
ZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQorICAgIHZvaWQg
c2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQog
CiBwcml2YXRlOgogICAgIFRyZWVTY29wZSogbV90cmVlU2NvcGU7CiAgICAgT3duUHRyPE5vZGVM
aXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBDaGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9k
ZUxpc3Q7CiAgICAgc2hvcnQgbV90YWJJbmRleDsKKyAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxk
SW5kZXg7CiAgICAgYm9vbCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA6IDE7CiAgICAgYm9v
bCBtX2lzRm9jdXNlZCA6IDE7CiAgICAgYm9vbCBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRl
U29vbkFmdGVyQXR0YWNoIDogMTsKQEAgLTM1Myw2ICszODIsMTcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgYm9vbCBtX2lzSW5Ub3BMYXllciA6IDE7CiAjZW5k
aWYKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgOiAxOworICAgIGJvb2wgbV9j
aGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVk
QnlEcmFnIDogMTsKKyAgICAvLyBCaXRzIGZvciBkeW5hbWljIGNoaWxkIG1hdGNoaW5nLgorICAg
IC8vIFdlIG9wdGltaXplIGZvciA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3Ro
ZXIgcG9zaXRpb25hbCBjaGlsZCBzZWxlY3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKKyAgICAvLyAq
LWNoaWxkLW9mLXR5cGUsIHdlIHdpbGwganVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVu
ZXZlciBjaGlsZHJlbiBjaGFuZ2UgYXQgYWxsLgorICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVk
QnlGaXJzdENoaWxkUnVsZXMgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlcyA6IDE7CisgICAgYm9vbCBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFj
ZW50UnVsZXMgOiAxOworICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzIDogMTsKKyAgICBib29sIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMgOiAxOwogCiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBP
d25QdHI8VmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+ID4gbV9t
dXRhdGlvbk9ic2VydmVyUmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCA5YmJmNjBhYmFiOGNhOWZlZTIxMGFlZTk4NmRmMWE5YzllMmM2
NWI2Li4xMzNhMmQ4YTk4N2UzMzA0NGEwM2VlOTFhNmNkYmI0MDBjNGE2MmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIxNywxMSArMjE3LDkg
QEAgdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50SWZO
ZWVkZWQoKQogCiAgICAgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKLSAgICBpZiAoIWVs
ZW1lbnQtPnJlbmRlcmVySXNOZWVkZWQoKnRoaXMpKSB7Ci0gICAgICAgIGlmIChtX3N0eWxlLT5h
ZmZlY3RlZEJ5RW1wdHkoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldFN0eWxlQWZmZWN0ZWRC
eUVtcHR5KCk7CisgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcklzTmVlZGVkKCp0aGlzKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KKwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSB0aGlzLT5wYXJlbnRSZW5kZXJlcigpOwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVy
ID0gdGhpcy0+bmV4dFJlbmRlcmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3Rt
ZW50LmNwcAppbmRleCAzYTk1Njk1NmU1ZmQ3NTg3ZWIxNjBlZWU1N2ZmN2U5ZGIzYzkyNjI4Li4x
ZGUwMjIwM2M1OTUwNGUwNzNhNzY2Y2QwOWQ1ODQwOWI1MmMyZGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC03NSw5ICs3NSwxNCBAQCBib29sIG5vZGVSZXNw
b25kc1RvVGFwR2VzdHVyZShOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBp
ZiAobm9kZS0+d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSB8fCBub2RlLT53aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChu
b2RlLT5yZW5kZXJTdHlsZSgpKSB7Ci0gICAgICAgIC8vIEFjY2VwdCBub2RlcyB0aGF0IGhhcyBh
IENTUyBlZmZlY3Qgd2hlbiB0b3VjaGVkLgotICAgICAgICBpZiAobm9kZS0+cmVuZGVyU3R5bGUo
KS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgfHwgbm9kZS0+cmVuZGVyU3R5bGUoKS0+YWZmZWN0
ZWRCeUhvdmVyUnVsZXMoKSkKKyAgICAvLyBBY2NlcHQgbm9kZXMgdGhhdCBoYXMgYSBDU1MgZWZm
ZWN0IHdoZW4gdG91Y2hlZC4KKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAg
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CisgICAgICAgIGlmIChlbGVt
ZW50LT5jaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoKSB8fCBlbGVtZW50LT5jaGlsZHJlbkFmZmVj
dGVkQnlIb3ZlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChS
ZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUgPSBub2RlLT5yZW5kZXJTdHlsZSgpKSB7CisgICAgICAg
IGlmIChyZW5kZXJTdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZSgpIHx8IHJlbmRlclN0eWxlLT5hZmZl
Y3RlZEJ5SG92ZXIoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IDc1NGFlZTExMTY4Njg0MTU5NzEwZWNjNTZiYjdmZGEzOTFhMzE3MTguLjBjOWFmNzFmOTdmY2Ni
N2FhNzJjMzAyZGNmMTI3YzZmNWU2NWYyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yNTQzLDcgKzI1NDMsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
dXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKQogewogICAgIGJvb2wgdmFsdWVDaGFuZ2VkID0g
KGRyYWdPbiAhPSBpc0RyYWdnaW5nKCkpOwogICAgIHNldElzRHJhZ2dpbmcoZHJhZ09uKTsKLSAg
ICBpZiAodmFsdWVDaGFuZ2VkICYmIHN0eWxlKCktPmFmZmVjdGVkQnlEcmFnUnVsZXMoKSAmJiBu
b2RlKCkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCAmJiBub2RlKCkgJiYgKHN0eWxlKCktPmFmZmVj
dGVkQnlEcmFnKCkgfHwgKG5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2Rl
KCkpLT5jaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkpKSkKICAgICAgICAgbm9kZSgpLT5zZXROZWVk
c1N0eWxlUmVjYWxjKCk7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBmaXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2libGluZygpKQogICAgICAgICBjdXJyLT51cGRh
dGVEcmFnU3RhdGUoZHJhZ09uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IDJmNDg1MzkxYzEwOGY2NTg5OTAzMmU0YWM1NWRlMDRmMzA4
ZGExOTQuLmE1MTY1OGIwMDZmNDc3ZWJkZTg2MTc0Zjk4NjJiN2I0ZjAxN2U4ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNjEsOCAr
NjEsNiBAQCBzdHJ1Y3QgU2FtZVNpemVBc0JvcmRlclZhbHVlIHsKIENPTVBJTEVfQVNTRVJUKHNp
emVvZihCb3JkZXJWYWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNCb3JkZXJWYWx1ZSksIEJvcmRl
clZhbHVlX3Nob3VsZF9ub3RfZ3Jvdyk7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzUmVuZGVyU3R5bGU+IHsKLSAgICB1bnNpZ25l
ZCBtX2JpdGZpZWxkczsKLQogICAgIHZvaWQqIGRhdGFSZWZzWzddOwogICAgIHZvaWQqIG93blB0
cnNbMV07CiAjaWYgRU5BQkxFKFNWRykKQEAgLTIwNyw2ICsyMDUsNyBAQCB2b2lkIFJlbmRlclN0
eWxlOjpjb3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpCiAgICAg
bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSA9IG90aGVyLT5ub25pbmhlcml0
ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlOwogICAgIG5vbmluaGVyaXRlZF9mbGFncy5fcGFn
ZV9icmVha19hZnRlciA9IG90aGVyLT5ub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYWZ0
ZXI7CiAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZSA9IG90aGVyLT5u
b25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlOworICAgIG5vbmluaGVyaXRlZF9m
bGFncy5leHBsaWNpdEluaGVyaXRhbmNlID0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5leHBs
aWNpdEluaGVyaXRhbmNlOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG1fc3ZnU3R5bGUgIT0g
b3RoZXItPm1fc3ZnU3R5bGUpCiAgICAgICAgIG1fc3ZnU3R5bGUuYWNjZXNzKCktPmNvcHlOb25J
bmhlcml0ZWRGcm9tKG90aGVyLT5tX3N2Z1N0eWxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMzE5OTZmYTA1YWJiNWNkMDU4OTQx
MWE1NmZhY2YzYzcwNzNjNWVjMC4uNzM5NDY4NmI5ZWYwNDNlYmNiOGUyNWNjMWY3OTM2MmUyZDM3
OTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTEzNCw3NyArMTM0LDYgQEAgY2xhc3MgUmVuZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVk
PFJlbmRlclN0eWxlPiB7CiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlUmVzb2x2ZXI7IC8vIFNldHMg
bWVtYmVycyBkaXJlY3RseS4KIHByb3RlY3RlZDoKIAotICAgIGNsYXNzIFJlbmRlclN0eWxlQml0
ZmllbGRzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlbmRlclN0eWxlQml0ZmllbGRzKCkKLSAg
ICAgICAgICAgIDogbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2Up
Ci0gICAgICAgICAgICAsIG1fdW5pcXVlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2FmZmVjdGVk
QnlFbXB0eShmYWxzZSkKLSAgICAgICAgICAgICwgbV9lbXB0eVN0YXRlKGZhbHNlKQotICAgICAg
ICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMo
ZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXMoZmFsc2UpCi0gICAgICAgICAgICAsIG1fZmlyc3RDaGlsZFN0YXRlKGZhbHNlKQot
ICAgICAgICAgICAgLCBtX2xhc3RDaGlsZFN0YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX2V4
cGxpY2l0SW5oZXJpdGFuY2UoZmFsc2UpCi0gICAgICAgICAgICAsIG1fY2hpbGRJbmRleCgwKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGFmZmVjdGVkQnlVbmNvbW1vbkF0
dHJpYnV0ZVNlbGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3JzOyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeVVuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3JzKGJvb2wgdmFsdWUpIHsgbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1
dGVTZWxlY3RvcnMgPSB2YWx1ZTsgfQotICAgICAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5pcXVlOyB9Ci0gICAgICAgIHZvaWQgc2V0VW5pcXVlKGJvb2wgdmFsdWUpIHsgbV91
bmlxdWUgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGFmZmVjdGVkQnlFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWZmZWN0ZWRCeUVtcHR5OyB9Ci0gICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUVt
cHR5KGJvb2wgdmFsdWUpIHsgbV9hZmZlY3RlZEJ5RW1wdHkgPSB2YWx1ZTsgfQotICAgICAgICBi
b29sIGVtcHR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VtcHR5U3RhdGU7IH0KLSAgICAgICAg
dm9pZCBzZXRFbXB0eVN0YXRlKGJvb2wgdmFsdWUpIHsgbV9lbXB0eVN0YXRlID0gdmFsdWU7IH0K
LSAgICAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQotICAgICAgICB2
b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9v
bCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hp
bGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3Rl
ZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQotICAgICAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7IH0KLSAgICAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVj
dGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVk
QnlEaXJlY3RBZGphY2VudFJ1bGVzID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBjaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJl
bkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9Ci0gICAgICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0g
ICAgICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
Ym9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZpcnN0Q2hpbGRTdGF0ZTsgfQotICAgICAgICB2b2lkIHNldEZpcnN0Q2hpbGRTdGF0ZShi
b29sIHZhbHVlKSB7IG1fZmlyc3RDaGlsZFN0YXRlID0gdmFsdWU7IH0KLSAgICAgICAgYm9vbCBs
YXN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkU3RhdGU7IH0KLSAgICAg
ICAgdm9pZCBzZXRMYXN0Q2hpbGRTdGF0ZShib29sIHZhbHVlKSB7IG1fbGFzdENoaWxkU3RhdGUg
PSB2YWx1ZTsgfQotICAgICAgICBib29sIGV4cGxpY2l0SW5oZXJpdGFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2V4cGxpY2l0SW5oZXJpdGFuY2U7IH0KLSAgICAgICAgdm9pZCBzZXRFeHBsaWNpdElu
aGVyaXRhbmNlKGJvb2wgdmFsdWUpIHsgbV9leHBsaWNpdEluaGVyaXRhbmNlID0gdmFsdWU7IH0K
LQotICAgICAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZElu
ZGV4OyB9Ci0gICAgICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2No
aWxkSW5kZXggPSBpbmRleDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gVGhlIGZvbGxv
d2luZyBiaXRmaWVsZCBpcyAzMi1iaXRzIGxvbmcsIHdoaWNoIG9wdGltaXplcyBwYWRkaW5nIHdp
dGggdGhlCi0gICAgICAgIC8vIGludCByZWZDb3VudCBpbiB0aGUgYmFzZSBjbGFzcy4gQmV3YXJl
IHdoZW4gYWRkaW5nIG1vcmUgYml0cy4KLSAgICAgICAgdW5zaWduZWQgbV9hZmZlY3RlZEJ5VW5j
b21tb25BdHRyaWJ1dGVTZWxlY3RvcnMgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX3VuaXF1ZSA6
IDE7Ci0KLSAgICAgICAgLy8gQml0cyBmb3IgZHluYW1pYyBjaGlsZCBtYXRjaGluZy4KLSAgICAg
ICAgdW5zaWduZWQgbV9hZmZlY3RlZEJ5RW1wdHkgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2Vt
cHR5U3RhdGUgOiAxOwotCi0gICAgICAgIC8vIFdlIG9wdGltaXplIGZvciA6Zmlyc3QtY2hpbGQg
YW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRpb25hbCBjaGlsZCBzZWxlY3RvcnMgbGlr
ZSBudGgtY2hpbGQgb3IKLSAgICAgICAgLy8gKi1jaGlsZC1vZi10eXBlLCB3ZSB3aWxsIGp1c3Qg
Z2l2ZSB1cCBhbmQgcmUtZXZhbHVhdGUgd2hlbmV2ZXIgY2hpbGRyZW4gY2hhbmdlIGF0IGFsbC4K
LSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMgOiAx
OwotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzIDog
MTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1
bGVzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fZmlyc3RDaGls
ZFN0YXRlIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9sYXN0Q2hpbGRTdGF0ZSA6IDE7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fZXhwbGljaXRJbmhlcml0YW5jZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVk
IG1fY2hpbGRJbmRleCA6IDIwOyAvLyBQbGVudHkgb2YgYml0cyB0byBjYWNoZSBhbiBpbmRleC4K
LSAgICB9OwotICAgIFJlbmRlclN0eWxlQml0ZmllbGRzIG1fYml0ZmllbGRzOwotCiAgICAgLy8g
bm9uLWluaGVyaXRlZCBhdHRyaWJ1dGVzCiAgICAgRGF0YVJlZjxTdHlsZUJveERhdGE+IG1fYm94
OwogICAgIERhdGFSZWY8U3R5bGVWaXN1YWxEYXRhPiB2aXN1YWw7CkBAIC0zMDAsNiArMjI5LDEx
IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAmJiBfYWZmZWN0ZWRCeURyYWcgPT0gb3Ro
ZXIuX2FmZmVjdGVkQnlEcmFnCiAgICAgICAgICAgICAgICAgJiYgX3BzZXVkb0JpdHMgPT0gb3Ro
ZXIuX3BzZXVkb0JpdHMKICAgICAgICAgICAgICAgICAmJiBfdW5pY29kZUJpZGkgPT0gb3RoZXIu
X3VuaWNvZGVCaWRpCisgICAgICAgICAgICAgICAgJiYgZXhwbGljaXRJbmhlcml0YW5jZSA9PSBv
dGhlci5leHBsaWNpdEluaGVyaXRhbmNlCisgICAgICAgICAgICAgICAgJiYgdW5pcXVlID09IG90
aGVyLnVuaXF1ZQorICAgICAgICAgICAgICAgICYmIGVtcHR5U3RhdGUgPT0gb3RoZXIuZW1wdHlT
dGF0ZQorICAgICAgICAgICAgICAgICYmIGZpcnN0Q2hpbGRTdGF0ZSA9PSBvdGhlci5maXJzdENo
aWxkU3RhdGUKKyAgICAgICAgICAgICAgICAmJiBsYXN0Q2hpbGRTdGF0ZSA9PSBvdGhlci5sYXN0
Q2hpbGRTdGF0ZQogICAgICAgICAgICAgICAgICYmIF9pc0xpbmsgPT0gb3RoZXIuX2lzTGluazsK
ICAgICAgICAgfQogCkBAIC0zMTYsMTMgKzI1MCwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVu
c2lnbmVkIF90YWJsZV9sYXlvdXQgOiAxOyAvLyBFVGFibGVMYXlvdXQKIAogICAgICAgICB1bnNp
Z25lZCBfdW5pY29kZUJpZGkgOiAzOyAvLyBFVW5pY29kZUJpZGkKKyAgICAgICAgLy8gMzEgYml0
cwogICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19iZWZvcmUgOiAyOyAvLyBFUGFnZUJyZWFr
Ci0gICAgICAgIC8vIDMyIGJpdHMKICAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfYWZ0ZXIg
OiAyOyAvLyBFUGFnZUJyZWFrCiAgICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2luc2lkZSA6
IDI7IC8vIEVQYWdlQnJlYWsKIAogICAgICAgICB1bnNpZ25lZCBfc3R5bGVUeXBlIDogNjsgLy8g
UHNldWRvSWQKICAgICAgICAgdW5zaWduZWQgX3BzZXVkb0JpdHMgOiA3OworICAgICAgICB1bnNp
Z25lZCBleHBsaWNpdEluaGVyaXRhbmNlIDogMTsgLy8gRXhwbGljaXRseSBpbmhlcml0cyBhIG5v
bi1pbmhlcml0ZWQgcHJvcGVydHkKKyAgICAgICAgdW5zaWduZWQgdW5pcXVlIDogMTsgLy8gU3R5
bGUgY2FuIG5vdCBiZSBzaGFyZWQuCisgICAgICAgIHVuc2lnbmVkIGVtcHR5U3RhdGUgOiAxOwor
ICAgICAgICB1bnNpZ25lZCBmaXJzdENoaWxkU3RhdGUgOiAxOworICAgICAgICB1bnNpZ25lZCBs
YXN0Q2hpbGRTdGF0ZSA6IDE7CiAKICAgICAgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25z
dCB7IHJldHVybiBfYWZmZWN0ZWRCeUhvdmVyOyB9CiAgICAgICAgIHZvaWQgc2V0QWZmZWN0ZWRC
eUhvdmVyKGJvb2wgdmFsdWUpIHsgX2FmZmVjdGVkQnlIb3ZlciA9IHZhbHVlOyB9CkBAIC0zMzgs
NyArMjc3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB1bnNpZ25lZCBfYWZmZWN0ZWRCeURyYWcg
OiAxOwogICAgICAgICB1bnNpZ25lZCBfaXNMaW5rIDogMTsKICAgICAgICAgLy8gSWYgeW91IGFk
ZCBtb3JlIHN0eWxlIGJpdHMgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBSZW5k
ZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oKQotICAgICAgICAvLyA1NCBiaXRzCisgICAg
ICAgIC8vIDU5IGJpdHMKICAgICB9IG5vbmluaGVyaXRlZF9mbGFnczsKIAogLy8gIUVORCBTWU5D
IQpAQCAtMzc5LDYgKzMxOCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG5vbmluaGVyaXRlZF9m
bGFncy5fcGFnZV9icmVha19pbnNpZGUgPSBpbml0aWFsUGFnZUJyZWFrKCk7CiAgICAgICAgIG5v
bmluaGVyaXRlZF9mbGFncy5fc3R5bGVUeXBlID0gTk9QU0VVRE87CiAgICAgICAgIG5vbmluaGVy
aXRlZF9mbGFncy5fcHNldWRvQml0cyA9IDA7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5l
eHBsaWNpdEluaGVyaXRhbmNlID0gZmFsc2U7CisgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy51
bmlxdWUgPSBmYWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLmVtcHR5U3RhdGUgPSBm
YWxzZTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLmZpcnN0Q2hpbGRTdGF0ZSA9IGZhbHNl
OworICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MubGFzdENoaWxkU3RhdGUgPSBmYWxzZTsKICAg
ICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlIb3ZlcihmYWxzZSk7CiAgICAg
ICAgIG5vbmluaGVyaXRlZF9mbGFncy5zZXRBZmZlY3RlZEJ5QWN0aXZlKGZhbHNlKTsKICAgICAg
ICAgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlEcmFnKGZhbHNlKTsKQEAgLTQxOSwx
MyArMzYzLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiogdmFyaWFibGVzKCkgeyByZXR1cm4gJihyYXJlSW5oZXJpdGVkRGF0YS0+bV92YXJpYWJs
ZXMtPm1fZGF0YSk7IH0KICNlbmRpZgogCi0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXJSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5SG92ZXIoKTsgfQot
ICAgIGJvb2wgYWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbm9uaW5oZXJp
dGVkX2ZsYWdzLmFmZmVjdGVkQnlBY3RpdmUoKTsgfQotICAgIGJvb2wgYWZmZWN0ZWRCeURyYWdS
dWxlcygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5hZmZlY3RlZEJ5RHJhZygp
OyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0
ZWRfZmxhZ3MuYWZmZWN0ZWRCeUhvdmVyKCk7IH0KKyAgICBib29sIGFmZmVjdGVkQnlBY3RpdmUo
KSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuYWZmZWN0ZWRCeUFjdGl2ZSgpOyB9
CisgICAgYm9vbCBhZmZlY3RlZEJ5RHJhZygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9m
bGFncy5hZmZlY3RlZEJ5RHJhZygpOyB9CiAKLSAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlclJ1
bGVzKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeUhvdmVyKGIpOyB9
Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5QWN0aXZlUnVsZXMoYm9vbCBiKSB7IG5vbmluaGVyaXRl
ZF9mbGFncy5zZXRBZmZlY3RlZEJ5QWN0aXZlKGIpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5
RHJhZ1J1bGVzKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0ZWRCeURyYWco
Yik7IH0KKyAgICB2b2lkIHNldEFmZmVjdGVkQnlIb3ZlcigpIHsgbm9uaW5oZXJpdGVkX2ZsYWdz
LnNldEFmZmVjdGVkQnlIb3Zlcih0cnVlKTsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUFjdGl2
ZSgpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLnNldEFmZmVjdGVkQnlBY3RpdmUodHJ1ZSk7IH0KKyAg
ICB2b2lkIHNldEFmZmVjdGVkQnlEcmFnKCkgeyBub25pbmhlcml0ZWRfZmxhZ3Muc2V0QWZmZWN0
ZWRCeURyYWcodHJ1ZSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJTdHls
ZSYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5kZXJTdHlsZSYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CkBAIC0xNTI3LDM5ICsx
NDcxLDIxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUg
dikgeyBpbmhlcml0ZWRfZmxhZ3MubV93cml0aW5nTW9kZSA9IHY7IH0KIAotICAgIC8vIFRvIHRl
bGwgaWYgdGhpcyBzdHlsZSBtYXRjaGVkIGF0dHJpYnV0ZSBzZWxlY3RvcnMuIFRoaXMgbWFrZXMg
aXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KLSAgICBib29sIGFmZmVjdGVkQnlVbmNvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmFmZmVjdGVkQnlVbmNv
bW1vbkF0dHJpYnV0ZVNlbGVjdG9ycygpOyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5VW5jb21t
b25BdHRyaWJ1dGVTZWxlY3RvcnMoKSB7IG1fYml0ZmllbGRzLnNldEFmZmVjdGVkQnlVbmNvbW1v
bkF0dHJpYnV0ZVNlbGVjdG9ycyh0cnVlKTsgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy51bmlxdWUoKTsgfQotICAgIHZvaWQgc2V0VW5pcXVlKCkgeyBt
X2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IH0KLQotICAgIC8vIE1ldGhvZHMgZm9yIGluZGlj
YXRpbmcgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hp
bGRyZW4gY2hhbmdpbmcsIG91ciBwb3NpdGlvbiBjaGFuZ2luZyBpbiBvdXIgc2libGluZyBsaXN0
LCBldGMuKQotICAgIGJvb2wgYWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuYWZmZWN0ZWRCeUVtcHR5KCk7IH0KLSAgICBib29sIGVtcHR5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5lbXB0eVN0YXRlKCk7IH0KLSAgICB2b2lkIHNldEVtcHR5U3Rh
dGUoYm9vbCBiKSB7IG1fYml0ZmllbGRzLnNldEFmZmVjdGVkQnlFbXB0eSh0cnVlKTsgbV9iaXRm
aWVsZHMuc2V0VW5pcXVlKHRydWUpOyBtX2JpdGZpZWxkcy5zZXRFbXB0eVN0YXRlKGIpOyB9Ci0g
ICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVy
biBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgfHwgY2hpbGRyZW5B
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIGJvb2wgY2hpbGRyZW5B
ZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuY2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVu
QWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKHRydWUpOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVk
QnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZm
ZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCk7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkgeyBtX2JpdGZpZWxkcy5zZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRq
YWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkcmVuQWZmZWN0ZWRC
eURpcmVjdEFkamFjZW50UnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
RGlyZWN0QWRqYWNlbnRSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
RGlyZWN0QWRqYWNlbnRSdWxlcyh0cnVlKTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxk
cmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQotICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyh0cnVlKTsgfQotICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxl
cygpOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcygpIHsgbV9iaXRmaWVsZHMuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlv
bmFsUnVsZXModHJ1ZSk7IH0KLSAgICBib29sIGZpcnN0Q2hpbGRTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0ZmllbGRzLmZpcnN0Q2hpbGRTdGF0ZSgpOyB9Ci0gICAgdm9pZCBzZXRGaXJzdENo
aWxkU3RhdGUoKSB7IG1fYml0ZmllbGRzLnNldFVuaXF1ZSh0cnVlKTsgbV9iaXRmaWVsZHMuc2V0
Rmlyc3RDaGlsZFN0YXRlKHRydWUpOyB9Ci0gICAgYm9vbCBsYXN0Q2hpbGRTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmxhc3RDaGlsZFN0YXRlKCk7IH0KLSAgICB2b2lkIHNldExh
c3RDaGlsZFN0YXRlKCkgeyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1fYml0ZmllbGRz
LnNldExhc3RDaGlsZFN0YXRlKHRydWUpOyB9Ci0gICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmNoaWxkSW5kZXgoKTsgfQotICAgIHZvaWQgc2V0Q2hp
bGRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2JpdGZpZWxkcy5zZXRVbmlxdWUodHJ1ZSk7IG1f
Yml0ZmllbGRzLnNldENoaWxkSW5kZXgoaW5kZXgpOyB9CisgICAgLy8gQSB1bmlxdWUgc3R5bGUg
aXMgb25lIHRoYXQgaGFzIG1hdGNoZXMgc29tZXRoaW5nIHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJs
ZSB0byBzaGFyZS4KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRl
ZF9mbGFncy51bmlxdWU7IH0KKyAgICB2b2lkIHNldFVuaXF1ZSgpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLnVuaXF1ZSA9IHRydWU7IH0KKworICAgIGJvb2wgZW1wdHlTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG5vbmluaGVyaXRlZF9mbGFncy5lbXB0eVN0YXRlOyB9CisgICAgdm9pZCBzZXRFbXB0eVN0
YXRlKGJvb2wgYikgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLmVtcHR5U3RhdGUg
PSBiOyB9CisgICAgYm9vbCBmaXJzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MuZmlyc3RDaGlsZFN0YXRlOyB9CisgICAgdm9pZCBzZXRGaXJzdENoaWxkU3Rh
dGUoKSB7IHNldFVuaXF1ZSgpOyBub25pbmhlcml0ZWRfZmxhZ3MuZmlyc3RDaGlsZFN0YXRlID0g
dHJ1ZTsgfQorICAgIGJvb2wgbGFzdENoaWxkU3RhdGUoKSBjb25zdCB7IHJldHVybiBub25pbmhl
cml0ZWRfZmxhZ3MubGFzdENoaWxkU3RhdGU7IH0KKyAgICB2b2lkIHNldExhc3RDaGlsZFN0YXRl
KCkgeyBzZXRVbmlxdWUoKTsgbm9uaW5oZXJpdGVkX2ZsYWdzLmxhc3RDaGlsZFN0YXRlID0gdHJ1
ZTsgfQogCiAgICAgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGludCBjb2xvclByb3BlcnR5
KSBjb25zdDsKIAotICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMo
KSB7IG1fYml0ZmllbGRzLnNldEV4cGxpY2l0SW5oZXJpdGFuY2UodHJ1ZSk7IH0KLSAgICBib29s
IGhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuZXhwbGljaXRJbmhlcml0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5
SW5oZXJpdGVkUHJvcGVydGllcygpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLmV4cGxpY2l0SW5oZXJp
dGFuY2UgPSB0cnVlOyB9CisgICAgYm9vbCBoYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5leHBsaWNpdEluaGVyaXRhbmNl
OyB9CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA0Y2JjNmVkZDFmNDg3ZGQ0MzBlMTljNjBhOTU2ZjYzNTNkZjJmZTJl
Li4zZDc5MzNjYTAwYTU4OTZlZDMwZDA3ZTdmMTAyNGFkZGNmN2Y4YzQ1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMTEtMjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBkaWdpYS5jb20+CisKKyAgICAgICAgTW92ZSBjaGlsZHJlbkFmZmVjdGVkQnkgYml0cyBmcm9t
IFJlbmRlclN0eWxlIHRvIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTQ0OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgTmV3IHRlc3QtY2FzZSBieSBUYWthc2hpIFNha2Ftb3RvCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0bW9zdC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9udGgtY2hpbGQtbm90LWluLXJpZ2h0bW9zdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMu
aHRtbDogRml4IGJ1ZyBleHBvc2VkIGJ5IHBhdGNoLgorCiAyMDEyLTExLTI4ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNZXJnZSB0ZXN0cyBmb3IgZGF0ZSBw
c2V1ZG8gY2xhc3NlcyBpbnRvIG9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
bnRoLWNoaWxkLW5vdC1pbi1yaWdodG1vc3QtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjMxYzA4MDQ3OTBhNjdjMmQ0MDg2NjdmNWZjZDdjOThmMzI1NTE1ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0LWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorLmFwcGxpZWQgeworICBiYWNrZ3JvdW5kOiAjZWVlOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjxwPmR1bW15PC9wPjwvZGl2PgorICA8ZGl2Pjxz
cGFuIGNsYXNzPSJhcHBsaWVkIj4xPC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsaWVkIj4yPC9zcGFu
PjxzcGFuIGNsYXNzPSJhcHBsaWVkIj4zPC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuPjQ8L3Nw
YW4+PHNwYW4+NTwvc3Bhbj48c3Bhbj42PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuIGNsYXNz
PSJhcHBsaWVkIj43PC9zcGFuPjxzcGFuIGNsYXNzPSJhcHBsaWVkIj44PC9zcGFuPjxzcGFuIGNs
YXNzPSJhcHBsaWVkIj45PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuPjEwPC9zcGFuPjxzcGFu
PjExPC9zcGFuPjxzcGFuPjEyPC9zcGFuPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbnRoLWNoaWxkLW5vdC1pbi1yaWdodG1vc3QuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmlnaHRtb3N0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjAxMjAwYmU0OTg5MDc5ZGUwNzhhMThiMGI4MGU5MzEwOTQ1MGEyZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL250aC1jaGlsZC1ub3QtaW4tcmln
aHRtb3N0Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorZGl2Om50aC1jaGlsZChldmVuKSBzcGFuIHsKKyAgYmFja2dyb3VuZDog
I2VlZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPCEtLSBUZXN0IGZvciBidWcg
OTgwMjEsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAyMSAtLT4K
KyAgPCEtLSBXcm9uZyBkaXNwbGF5IHdpdGggInRyOm50aC1jaGlsZChldmVuKSB0ZCIgYW5kIG1p
c3NpbmcgJmx0O3Rib2R5Jmd0OyAtLT4KKyAgPCEtLSBJZiB0ZXN0IHBhc3NlcywgMSwgMiwgMywg
NywgOCwgYW5kIDkncyBiYWNrZ3JvdW5kLWNvbG9yIGlzICNlZWUuIC0tPgorICA8IS0tIDQsIDUs
IDYsIDEwLCAxMSwgYW5kIDEyJ3MgYmFja2dyb3VuZCBjb2xvciBpcyBkZWZhdWx0Li0tPgorICA8
ZGl2PjxwPmR1bW15PC9wPjwvZGl2PgorICA8ZGl2PjxzcGFuPjE8L3NwYW4+PHNwYW4+Mjwvc3Bh
bj48c3Bhbj4zPC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuPjQ8L3NwYW4+PHNwYW4+NTwvc3Bh
bj48c3Bhbj42PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuPjc8L3NwYW4+PHNwYW4+ODwvc3Bh
bj48c3Bhbj45PC9zcGFuPjwvZGl2PgorICA8ZGl2PjxzcGFuPjEwPC9zcGFuPjxzcGFuPjExPC9z
cGFuPjxzcGFuPjEyPC9zcGFuPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2V2ZW50LXRyaWdnZXJlZC13aWRnZXRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMuaHRt
bAppbmRleCA1NTgzY2VlZjE3ODQ1MDI3ZGI3M2UwODkxZTM2M2QyODEzOGM4NzcyLi42YjUxNTE1
MjU5OTE5OWY3MzlhYzc3ZDgwYTMzOTM2ZGUxYmU5OTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy90b3VjaGFkanVzdG1lbnQvZXZlbnQtdHJpZ2dlcmVkLXdpZGdldHMuaHRtbApAQCAt
NDYsOCArNDYsOCBAQAogICAgICAgICA8L3NwYW4+CiAgICAgPC9kaXY+CiAKLSAgICA8ZGl2IGlk
PXRlc3Q1IGNsYXNzPWJveD4KLSAgICAgICAgPHNwYW4gdGFiaW5kZXg9MT4gRm9jdXNpbmcgaGVy
ZSBzaG91bGQgZ2l2ZSBhIHRleHQgaW5wdXQtZmllbGQuCisgICAgPGRpdiBjbGFzcz1ib3g+Cisg
ICAgICAgIDxzcGFuIGlkPXRlc3Q1IHRhYmluZGV4PTE+IEZvY3VzaW5nIGhlcmUgc2hvdWxkIGdp
dmUgYSB0ZXh0IGlucHV0LWZpZWxkLgogICAgICAgICA8L3NwYW4+CiAgICAgPC9kaXY+CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>