<?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>236386</bug_id>
          
          <creation_ts>2022-02-09 11:27:12 -0800</creation_ts>
          <short_desc>Send icons to the WebContent process for rendering of the attachment element</short_desc>
          <delta_ts>2022-02-16 19:48:09 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1839306</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-09 11:27:12 -0800</bug_when>
    <thetext>In order to avoid connecting to the Icon Services daemon in the WebContent process, we should send the icons for the attachment element to the WebContent process from the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839359</commentid>
    <comment_count>1</comment_count>
      <attachid>451428</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-09 12:43:38 -0800</bug_when>
    <thetext>Created attachment 451428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839360</commentid>
    <comment_count>2</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-09 12:44:16 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #1)
&gt; Created attachment 451428 [details]
&gt; Patch

WIP patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839389</commentid>
    <comment_count>3</comment_count>
      <attachid>451438</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-09 13:38:23 -0800</bug_when>
    <thetext>Created attachment 451438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839700</commentid>
    <comment_count>4</comment_count>
      <attachid>451545</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-10 08:59:14 -0800</bug_when>
    <thetext>Created attachment 451545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839824</commentid>
    <comment_count>5</comment_count>
      <attachid>451576</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-10 11:07:48 -0800</bug_when>
    <thetext>Created attachment 451576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840377</commentid>
    <comment_count>6</comment_count>
      <attachid>451701</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-11 08:45:35 -0800</bug_when>
    <thetext>Created attachment 451701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840465</commentid>
    <comment_count>7</comment_count>
      <attachid>451701</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-02-11 11:27:32 -0800</bug_when>
    <thetext>Comment on attachment 451701
Patch

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

Patch looks good to me; probably want a graphics expert to double-check too.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:267
&gt; +void HTMLAttachmentElement::updateIcon(const RefPtr&lt;Image&gt;&amp; icon, const WebCore::FloatSize&amp; size)

icon =&gt; iconSize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840482</commentid>
    <comment_count>8</comment_count>
      <attachid>451701</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-11 11:51:27 -0800</bug_when>
    <thetext>Comment on attachment 451701
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:328
&gt; +    return convertPlatformImageToBitmap(image.get(), WebCore::IntSize(400, 400));

I guess this is your solution to not knowing destination resolution; is the icon any blurrier than it used to be, now that you&apos;re using a big representation and scaling it down instead of letting the multi-representation platform image do the right thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840619</commentid>
    <comment_count>9</comment_count>
      <attachid>451758</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-11 16:58:16 -0800</bug_when>
    <thetext>Created attachment 451758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840620</commentid>
    <comment_count>10</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-11 16:58:48 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; Comment on attachment 451701 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451701&amp;action=review
&gt; 
&gt; Patch looks good to me; probably want a graphics expert to double-check too.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.cpp:267
&gt; &gt; +void HTMLAttachmentElement::updateIcon(const RefPtr&lt;Image&gt;&amp; icon, const WebCore::FloatSize&amp; size)
&gt; 
&gt; icon =&gt; iconSize

Fixed.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840621</commentid>
    <comment_count>11</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-11 17:00:01 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #8)
&gt; Comment on attachment 451701 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451701&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:328
&gt; &gt; +    return convertPlatformImageToBitmap(image.get(), WebCore::IntSize(400, 400));
&gt; 
&gt; I guess this is your solution to not knowing destination resolution; is the
&gt; icon any blurrier than it used to be, now that you&apos;re using a big
&gt; representation and scaling it down instead of letting the
&gt; multi-representation platform image do the right thing?

I have not noticed the icons being blurry when rendered on iOS or macOS.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840655</commentid>
    <comment_count>12</comment_count>
      <attachid>451769</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-11 19:05:32 -0800</bug_when>
    <thetext>Created attachment 451769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841288</commentid>
    <comment_count>13</comment_count>
      <attachid>451915</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-14 09:41:33 -0800</bug_when>
    <thetext>Created attachment 451915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841292</commentid>
    <comment_count>14</comment_count>
      <attachid>451701</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-02-14 09:47:08 -0800</bug_when>
    <thetext>Comment on attachment 451701
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:328
&gt;&gt;&gt; +    return convertPlatformImageToBitmap(image.get(), WebCore::IntSize(400, 400));
&gt;&gt; 
&gt;&gt; I guess this is your solution to not knowing destination resolution; is the icon any blurrier than it used to be, now that you&apos;re using a big representation and scaling it down instead of letting the multi-representation platform image do the right thing?
&gt; 
&gt; I have not noticed the icons being blurry when rendered on iOS or macOS.
&gt; 
&gt; Thanks for reviewing!

Should we consider trying to send the destination resolution from the WebContent process, or is that something that WebKit just doesn&apos;t know?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841317</commentid>
    <comment_count>15</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-14 10:35:57 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #14)
&gt; Comment on attachment 451701 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451701&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:328
&gt; &gt;&gt;&gt; +    return convertPlatformImageToBitmap(image.get(), WebCore::IntSize(400, 400));
&gt; &gt;&gt; 
&gt; &gt;&gt; I guess this is your solution to not knowing destination resolution; is the icon any blurrier than it used to be, now that you&apos;re using a big representation and scaling it down instead of letting the multi-representation platform image do the right thing?
&gt; &gt; 
&gt; &gt; I have not noticed the icons being blurry when rendered on iOS or macOS.
&gt; &gt; 
&gt; &gt; Thanks for reviewing!
&gt; 
&gt; Should we consider trying to send the destination resolution from the
&gt; WebContent process, or is that something that WebKit just doesn&apos;t know?

Yes, that is a good point. I think we actually know the destination rect. I will look into this!

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841710</commentid>
    <comment_count>16</comment_count>
      <attachid>452024</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-15 07:39:00 -0800</bug_when>
    <thetext>Created attachment 452024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841973</commentid>
    <comment_count>17</comment_count>
      <attachid>452100</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-15 15:19:34 -0800</bug_when>
    <thetext>Created attachment 452100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841981</commentid>
    <comment_count>18</comment_count>
      <attachid>452100</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-15 15:35:10 -0800</bug_when>
    <thetext>Comment on attachment 452100
Patch

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

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:283
&gt; +    return;

Don’t need this at the end of a function.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:289
&gt; +FloatSize HTMLAttachmentElement::iconSize() const
&gt; +{
&gt; +    return m_iconSize;
&gt; +}

Consider putting this in the header.

&gt; Source/WebCore/page/EmptyAttachmentElementClient.h:40
&gt; +    virtual void requestAttachmentIcon(const String&amp;, const FloatSize&amp;) { }

Should be marked &quot;final&quot;, not &quot;virtual&quot;.

&gt; Source/WebCore/rendering/RenderThemeIOS.h:71
&gt; +    WEBCORE_EXPORT static RetainPtr&lt;UIImage&gt; iconForAttachment(const String&amp; fileName, const String&amp; attachmentType, const String&amp; title, FloatSize&amp;);

I suggest returning a structure containing both the UIImage and FloatSize rather than using an out argument for that.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:1805
&gt; +    auto name = fileName;
&gt; +    if (name.isEmpty())
&gt; +        name = title;
&gt; +
&gt; +    [documentInteractionController setName:name];

I would have written:

    [documentInteractionController setName:fileName.isEmpty() ? title : fileName];

Rather than the 4 line version.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2567
&gt; +RetainPtr&lt;NSImage&gt; RenderThemeMac::iconForAttachment(const String&amp; fileName, const String&amp; attachmentType, const String&amp; title)

Seems a shame that we need all those different nsImage() lines rather than a function returning an Icon and another that returns the NSImage *.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2574
&gt; +ALLOW_DEPRECATED_DECLARATIONS_BEGIN
&gt; +            if (auto icon = Icon::createIconForUTI(kUTTypeFolder))
&gt; +                return icon-&gt;nsImage();
&gt; +ALLOW_DEPRECATED_DECLARATIONS_END

Just moved code, but I have some ideas for refinement. Would have been nice to wrap this around just a single line:

ALLOW_DEPRECATED_DECLARATIONS_BEGIN
    auto type = kUTTypeFolder;
ALLOW_DEPRECATED_DECLARATIONS_END

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2576
&gt; +            String UTI;

I would have just named this &quot;type&quot;.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2592
&gt; +    NSString *fileExtension = [static_cast&lt;NSString *&gt;(title) pathExtension];

I recommend using a local variable instead of a static_cast, and auto instead of writing out the type.

    NSString *cocoaTitle = title;
    if (auto fileExtension = cocoaTitle.pathExtension; fileExtension.length) {

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2601
&gt; +    return nullptr;

Should be nil instead of nullptr.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2641
&gt; +    String attachmentType = attachment.attachmentElement().attachmentType();

This looks unused. Why compute it if we aren’t using it?

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2649
&gt; +    if (context.paintingDisabled())
&gt; +        return;

Do we want to request the icon if painting is disabled?

&gt; Source/WebCore/rendering/RenderThemeMac.mm:2651
&gt; +    auto nsImage = icon-&gt;nsImage();

Can just call this &quot;image&quot;, no need to say &quot;nsImage&quot;.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10207
&gt; +    auto icon = iconForAttachment(fileName, contentType, title, size);
&gt; +    if (icon)

if (auto icon = ...)

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:39
&gt; +    WebAttachmentElementClient(WebPage&amp;);

This should be marked explicit.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:40
&gt; +    virtual ~WebAttachmentElementClient() { }

This is not needed or helpful.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:42
&gt; +    virtual void requestAttachmentIcon(const String&amp; identifier, const WebCore::FloatSize&amp;);

This should be marked &quot;final&quot;, not &quot;virtual&quot;. Also could probably be private.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7330
&gt; +        if (RefPtr&lt;ShareableBitmap&gt; icon = !iconHandle.isNull() ? ShareableBitmap::create(iconHandle) : nullptr)

This can be RefPtr or auto, I think, doesn’t need to be RefPtr&lt;ShareableBitmap&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841985</commentid>
    <comment_count>19</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-15 15:43:13 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; Comment on attachment 452100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452100&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.cpp:283
&gt; &gt; +    return;
&gt; 
&gt; Don’t need this at the end of a function.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.cpp:289
&gt; &gt; +FloatSize HTMLAttachmentElement::iconSize() const
&gt; &gt; +{
&gt; &gt; +    return m_iconSize;
&gt; &gt; +}
&gt; 
&gt; Consider putting this in the header.
&gt; 
&gt; &gt; Source/WebCore/page/EmptyAttachmentElementClient.h:40
&gt; &gt; +    virtual void requestAttachmentIcon(const String&amp;, const FloatSize&amp;) { }
&gt; 
&gt; Should be marked &quot;final&quot;, not &quot;virtual&quot;.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.h:71
&gt; &gt; +    WEBCORE_EXPORT static RetainPtr&lt;UIImage&gt; iconForAttachment(const String&amp; fileName, const String&amp; attachmentType, const String&amp; title, FloatSize&amp;);
&gt; 
&gt; I suggest returning a structure containing both the UIImage and FloatSize
&gt; rather than using an out argument for that.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeIOS.mm:1805
&gt; &gt; +    auto name = fileName;
&gt; &gt; +    if (name.isEmpty())
&gt; &gt; +        name = title;
&gt; &gt; +
&gt; &gt; +    [documentInteractionController setName:name];
&gt; 
&gt; I would have written:
&gt; 
&gt;     [documentInteractionController setName:fileName.isEmpty() ? title :
&gt; fileName];
&gt; 
&gt; Rather than the 4 line version.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2567
&gt; &gt; +RetainPtr&lt;NSImage&gt; RenderThemeMac::iconForAttachment(const String&amp; fileName, const String&amp; attachmentType, const String&amp; title)
&gt; 
&gt; Seems a shame that we need all those different nsImage() lines rather than a
&gt; function returning an Icon and another that returns the NSImage *.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2574
&gt; &gt; +ALLOW_DEPRECATED_DECLARATIONS_BEGIN
&gt; &gt; +            if (auto icon = Icon::createIconForUTI(kUTTypeFolder))
&gt; &gt; +                return icon-&gt;nsImage();
&gt; &gt; +ALLOW_DEPRECATED_DECLARATIONS_END
&gt; 
&gt; Just moved code, but I have some ideas for refinement. Would have been nice
&gt; to wrap this around just a single line:
&gt; 
&gt; ALLOW_DEPRECATED_DECLARATIONS_BEGIN
&gt;     auto type = kUTTypeFolder;
&gt; ALLOW_DEPRECATED_DECLARATIONS_END
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2576
&gt; &gt; +            String UTI;
&gt; 
&gt; I would have just named this &quot;type&quot;.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2592
&gt; &gt; +    NSString *fileExtension = [static_cast&lt;NSString *&gt;(title) pathExtension];
&gt; 
&gt; I recommend using a local variable instead of a static_cast, and auto
&gt; instead of writing out the type.
&gt; 
&gt;     NSString *cocoaTitle = title;
&gt;     if (auto fileExtension = cocoaTitle.pathExtension; fileExtension.length)
&gt; {
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2601
&gt; &gt; +    return nullptr;
&gt; 
&gt; Should be nil instead of nullptr.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2641
&gt; &gt; +    String attachmentType = attachment.attachmentElement().attachmentType();
&gt; 
&gt; This looks unused. Why compute it if we aren’t using it?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2649
&gt; &gt; +    if (context.paintingDisabled())
&gt; &gt; +        return;
&gt; 
&gt; Do we want to request the icon if painting is disabled?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderThemeMac.mm:2651
&gt; &gt; +    auto nsImage = icon-&gt;nsImage();
&gt; 
&gt; Can just call this &quot;image&quot;, no need to say &quot;nsImage&quot;.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:10207
&gt; &gt; +    auto icon = iconForAttachment(fileName, contentType, title, size);
&gt; &gt; +    if (icon)
&gt; 
&gt; if (auto icon = ...)
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:39
&gt; &gt; +    WebAttachmentElementClient(WebPage&amp;);
&gt; 
&gt; This should be marked explicit.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:40
&gt; &gt; +    virtual ~WebAttachmentElementClient() { }
&gt; 
&gt; This is not needed or helpful.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebAttachmentElementClient.h:42
&gt; &gt; +    virtual void requestAttachmentIcon(const String&amp; identifier, const WebCore::FloatSize&amp;);
&gt; 
&gt; This should be marked &quot;final&quot;, not &quot;virtual&quot;. Also could probably be private.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7330
&gt; &gt; +        if (RefPtr&lt;ShareableBitmap&gt; icon = !iconHandle.isNull() ? ShareableBitmap::create(iconHandle) : nullptr)
&gt; 
&gt; This can be RefPtr or auto, I think, doesn’t need to be
&gt; RefPtr&lt;ShareableBitmap&gt;.

Thanks for reviewing! I will address the comments in the upcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842350</commentid>
    <comment_count>20</comment_count>
      <attachid>452204</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 10:03:25 -0800</bug_when>
    <thetext>Created attachment 452204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842354</commentid>
    <comment_count>21</comment_count>
      <attachid>452205</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 10:08:07 -0800</bug_when>
    <thetext>Created attachment 452205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842362</commentid>
    <comment_count>22</comment_count>
      <attachid>452207</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 10:14:54 -0800</bug_when>
    <thetext>Created attachment 452207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842370</commentid>
    <comment_count>23</comment_count>
      <attachid>452209</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 10:35:27 -0800</bug_when>
    <thetext>Created attachment 452209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842401</commentid>
    <comment_count>24</comment_count>
      <attachid>452215</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 11:11:24 -0800</bug_when>
    <thetext>Created attachment 452215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842407</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-16 11:28:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89038014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842409</commentid>
    <comment_count>26</comment_count>
      <attachid>452216</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 11:31:09 -0800</bug_when>
    <thetext>Created attachment 452216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842566</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 15:30:40 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 452216 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842571</commentid>
    <comment_count>28</comment_count>
      <attachid>452260</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-16 15:39:56 -0800</bug_when>
    <thetext>Created attachment 452260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842669</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 19:48:01 -0800</bug_when>
    <thetext>Committed r289994 (247380@main): &lt;https://commits.webkit.org/247380@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452260.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451428</attachid>
            <date>2022-02-09 12:43:38 -0800</date>
            <delta_ts>2022-02-09 13:38:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220209124337.patch</filename>
            <type>text/plain</type>
            <size>18051</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTA5ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29u
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0
YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6Cisg
ICAgICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisKIDIwMjItMDIt
MDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZpZGVvIGZyYW1lIGV4dHJhY3Rpb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjg5NDkxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTA5ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToKKwogMjAyMi0wMi0wNyAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUgc2l6aW5nIG9u
IGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1t
CShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFNPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIE4KIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBB
TCwgVUlLaXQsIFVJQXBwbGljYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFVJS2l0LCBVSUNvbG9yLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlEZXZpY2UpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRShQQUwsIFVJS2l0LCBVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlEb2N1bWVudElu
dGVyYWN0aW9uQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFKFBBTCwgVUlLaXQsIFVJRm9udCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwg
VUlLaXQsIFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlJbWFnZSwgUEFMX0VYUE9SVCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCwxNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7CiB9
CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJlZlB0cjxJ
bWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBXVEZM
b2dBbHdheXMoIklDT046IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlSWNvbiAlZiAlZiIs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBt
X2ljb25TaXplID0gc2l6ZTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9u
IDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0Zp
bGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0Zp
bGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0
aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29u
c3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUljb24oY29uc3QgUmVmUHRyPEltYWdlPiYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC03
MSw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsK
ICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IHRo
dW1ibmFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRyPEltYWdl
PiBpY29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgRmxvYXRTaXplIGljb25TaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJl
bmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw4IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOwog
ICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdlPiBtX2ljb247
CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkocmV2aXNp
b24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNlbmRpZgogCiBPQkpDX0NMQVNTIENJ
Q29udGV4dDsKK09CSkNfQ0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IApAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Q29sb3Igc3lzdGVtRm9jdXNSaW5nQ29sb3IoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgRmxvYXRTaXplJik7CisKIHByaXZh
dGU6CiAgICAgYm9vbCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYp
IGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0
cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07
CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAg
ICBSZWZQdHI8SW1hZ2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwog
CiAgICAgaW50IGJhc2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMg
Qk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jl
c3M7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmV0YWlu
UHRyPFVJSW1hZ2U+IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBGbG9hdFNpemUmIHNp
emUpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRv
IGRvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJRG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBp
ZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5maWxlKCkpCi0g
ICAgICAgIGZpbGVOYW1lID0gZmlsZS0+bmFtZSgpOwotCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCku
YXR0YWNobWVudFRpdGxlKCk7CiAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNl
dE5hbWU6ZmlsZU5hbWVdOwogCi0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2ht
ZW50VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIFVUSTsKICAgICAgICAgaWYgKGlz
RGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQpAQCAtMTg2Nyw4ICsxODYwLDggQEAgUmVuZGVy
QXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1lbnRJbgogICAgIH0KIAogICAgIGlmIChhY3Rp
b24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykgewotICAgICAgICBGbG9hdFNpemUgaWNvblNp
emU7Ci0gICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBpY29uU2l6
ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5pY29uU2l6ZSgpOworICAgICAgICBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50
RWxlbWVudCgpLmljb24oKTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0
YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24p
CiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRl
UmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAs
IGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkw
OSwxMSArMTkwMiwxMiBAQCBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRCYXNlbGluZShj
CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKKyAgICBXVEZMb2dBbHdheXMoIklD
T046IHBhaW50QXR0YWNobWVudEljb24iKTsKICAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZTsK
ICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRo
dW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBpY29u
SW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFn
ZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg5MjM3KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAor
MjAyMi0wMi0wOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2VuZCBpY29ucyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZvciByZW5kZXJpbmcgb2Yg
dGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUgSWNvbiBT
ZXJ2aWNlcyBkYWVtb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2Ugc2hvdWxkIHNlbmQg
dGhlIGljb25zIGZvciB0aGUgYXR0YWNobWVudAorICAgICAgICBlbGVtZW50IHRvIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBs
YXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNv
bkZvckF0dGFjaG1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojpjb25zdW1lQW5kUmV2b2tlQXR0YWNobWVudEVsZW1lbnRTYW5kYm94RXh0ZW5zaW9ucyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMjItMDItMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZpZGVvIGZyYW1lIGV4dHJh
Y3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyMTUsNyArMTAyMTUsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2ht
ZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNo
bWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIElQQzo6U2hhcmVkQnVm
ZmVyQ29weShhdHRhY2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKSksIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNo
bWVudChhdHRhY2htZW50LmZpbGVOYW1lKCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgc2l6
ZSk7CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChpY29uKQor
ICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSksIGhhbmRsZSwgc2l6ZSks
IFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElO
RykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
ODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUyNCw2ICsyNTI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVBbGxBdHRhY2htZW50cygpOwogCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRv
UGFzdGVib2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworCisgICAgUmVm
UHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjg5MjM3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDEwIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChT
eW5hcHNlLCBTWU5vdGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4K
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJG
aWx0ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5MSw0MCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3Jh
cHBlcihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29j
b2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQorewor
ICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKKyAgICBh
dXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRp
b0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBm
aXR0aW5nU2l6ZSB9KSk7CisgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOworCisgICAg
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlv
bjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGlmICgh
Yml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWdyYXBoaWNz
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07CisjZWxpZiBV
U0UoQVBQS0lUKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNa
ZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rp
b246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGJpdG1hcDsKK30KKworUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdlUHJv
eHk6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBSZXRhaW5QdHI8VUlJbWFn
ZT4gaW1hZ2U7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpbWFnZSA9IFJlbmRlclRo
ZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHNpemUpOwor
I2VuZGlmCisgICAgcmV0dXJuIGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0
KCksIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpA
QCAtNTIyLDMxICs1NjAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZpZGVvRXh0
cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBSZWZQdHI8
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29j
b2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQotewot
ICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKLSAgICBh
dXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRp
b0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBm
aXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwotCi0gICAg
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlv
bjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICgh
Yml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhpY3NDb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNz
Q29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0jZWxpZiBV
U0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNa
ZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rp
b246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAgcmV0dXJu
IGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAgW29w
ZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMwMywxMiArNzMwMywxNCBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyCiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNs
b3NpbmdJbWFnZURhdGEsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFuZGxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVs
ZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5k
b2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRy
aWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwogICAgICAg
ICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBl
bmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGljb24gPSAhaWNvbkhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGljb25IYW5kbGUpIDogbnVsbHB0cikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQt
PnVwZGF0ZUljb24oaWNvbi0+Y3JlYXRlSW1hZ2UoKSwgc2l6ZSk7CiAgICAgfQogICAgIGNhbGxi
YWNrKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIHB1YmxpYzoK
ICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0lt
YWdlRGF0YSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb24sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDcg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBT
dHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
LCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmls
ZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGljb24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKSAtPiAoKSBBc3luYwogICAgIFVwZGF0
ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451438</attachid>
            <date>2022-02-09 13:38:23 -0800</date>
            <delta_ts>2022-02-10 08:59:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220209133822.patch</filename>
            <type>text/plain</type>
            <size>22339</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTA5ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29u
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0
YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6Cisg
ICAgICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisKIDIwMjItMDIt
MDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZpZGVvIGZyYW1lIGV4dHJhY3Rpb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjg5NDkxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTA5ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToKKwogMjAyMi0wMi0wNyAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUgc2l6aW5nIG9u
IGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1t
CShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFNPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIE4KIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBB
TCwgVUlLaXQsIFVJQXBwbGljYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFVJS2l0LCBVSUNvbG9yLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlEZXZpY2UpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRShQQUwsIFVJS2l0LCBVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlEb2N1bWVudElu
dGVyYWN0aW9uQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFKFBBTCwgVUlLaXQsIFVJRm9udCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwg
VUlLaXQsIFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlJbWFnZSwgUEFMX0VYUE9SVCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY0LDYgKzI2NCwxNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7CiB9
CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJlZlB0cjxJ
bWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBXVEZM
b2dBbHdheXMoIklDT046IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlSWNvbiAlZiAlZiIs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBt
X2ljb25TaXplID0gc2l6ZTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9u
IDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0Zp
bGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0Zp
bGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0
aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29u
c3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZUljb24oY29uc3QgUmVmUHRyPEltYWdlPiYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC03
MSw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsK
ICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IHRo
dW1ibmFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRyPEltYWdl
PiBpY29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgRmxvYXRTaXplIGljb25TaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJl
bmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw4IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOwog
ICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdlPiBtX2ljb247
CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkocmV2aXNp
b24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNlbmRpZgogCiBPQkpDX0NMQVNTIENJ
Q29udGV4dDsKK09CSkNfQ0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IApAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Q29sb3Igc3lzdGVtRm9jdXNSaW5nQ29sb3IoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgRmxvYXRTaXplJik7CisKIHByaXZh
dGU6CiAgICAgYm9vbCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYp
IGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0
cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07
CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAg
ICBSZWZQdHI8SW1hZ2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwog
CiAgICAgaW50IGJhc2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMg
Qk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jl
c3M7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmV0YWlu
UHRyPFVJSW1hZ2U+IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBGbG9hdFNpemUmIHNp
emUpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRv
IGRvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJRG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBp
ZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5maWxlKCkpCi0g
ICAgICAgIGZpbGVOYW1lID0gZmlsZS0+bmFtZSgpOwotCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCku
YXR0YWNobWVudFRpdGxlKCk7CiAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNl
dE5hbWU6ZmlsZU5hbWVdOwogCi0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2ht
ZW50VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIFVUSTsKICAgICAgICAgaWYgKGlz
RGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQpAQCAtMTg2Nyw4ICsxODYwLDggQEAgUmVuZGVy
QXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1lbnRJbgogICAgIH0KIAogICAgIGlmIChhY3Rp
b24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykgewotICAgICAgICBGbG9hdFNpemUgaWNvblNp
emU7Ci0gICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50LCBpY29uU2l6
ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5pY29uU2l6ZSgpOworICAgICAgICBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50
RWxlbWVudCgpLmljb24oKTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0
YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24p
CiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRl
UmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAs
IGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkw
OSwxMSArMTkwMiwxMiBAQCBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRCYXNlbGluZShj
CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKKyAgICBXVEZMb2dBbHdheXMoIklD
T046IHBhaW50QXR0YWNobWVudEljb24iKTsKICAgICBSZWZQdHI8SW1hZ2U+IGljb25JbWFnZTsK
ICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRo
dW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBpY29u
SW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFn
ZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBw
dWJsaWM6CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5lZCBkb2N1bWVu
dC4KICAgICBOU1ZpZXcqIGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25z
dDsKIAorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjg5MjM3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDAgQEAgaW50IFJlbmRlclRoZW1lTWFjOjphdHRhY2ht
ZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBsYXlvdXQuYmFzZWxpbmU7CiB9CiAKK1JlZlB0cjxJ
Y29uPiBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIp
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92
bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRU
eXBlRm9sZGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5n
IFVUSTsKKyAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAg
ICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisg
ICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCFmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlcyh7IGZpbGVOYW1lIH0pKQorICAgICAgICAgICAgcmV0dXJuIGljb247
CisgICAgfQorCisgICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4odGl0bGUpIHBhdGhFeHRlbnNpb25dOworICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxl
bmd0aCkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVF
eHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gaWNvbjsKKyAgICB9
CisKKyAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRhdGEiKTsKK30K
Kwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVy
QXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2ht
ZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5zdHlsZSA9PSBBdHRhY2htZW50
TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw0OSArMjYyOSwxMyBAQCBzdGF0aWMg
dm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAgfQogfQogCi1zdGF0aWMgUmVm
UHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFj
aG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0gICAgaWYgKCFhdHRhY2htZW50
VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0
YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIpKSB7Ci1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgaWYgKGF1dG8g
aWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7Ci0gICAgICAgICAgICBpZiAo
aXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICAgICAgVVRJID0gYXR0
YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0gVVRJ
RnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAgICAgICAgaWYgKGF1dG8gaWNv
biA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
aWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgpIH0pKQotICAgICAgICAgICAg
cmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3Rh
dGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFj
aG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAoZmlsZUV4dGVuc2lvbi5sZW5n
dGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0
ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Ci19Ci0K
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNobWVudCYg
YXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBs
YXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNo
bWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgq
dGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KTsKKyAgICBhdXRv
IGljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOwogICAgIGlmICgh
aWNvbikKICAgICAgICAgcmV0dXJuOwogICAgIGljb24tPnBhaW50KGNvbnRleHQsIGxheW91dC5p
Y29uUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wMi0wOSAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VuZCBpY29u
cyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZvciByZW5kZXJpbmcgb2YgdGhlIGF0dGFjaG1l
bnQgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUgSWNvbiBTZXJ2aWNlcyBkYWVt
b24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2Ugc2hvdWxkIHNlbmQgdGhlIGljb25zIGZv
ciB0aGUgYXR0YWNobWVudAorICAgICAgICBlbGVtZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VU
b0JpdG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1l
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb25zdW1lQW5k
UmV2b2tlQXR0YWNobWVudEVsZW1lbnRTYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hs
aWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVu
dEF0dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjIt
MDItMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZpZGVvIGZyYW1lIGV4dHJhY3Rpb24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg5MjM3
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAyMTUsNyArMTAyMTUsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0
dGFjaG1lbnQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZp
ZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50
VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIElQQzo6U2hhcmVkQnVmZmVyQ29weShhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBG
bG9hdFNpemUgc2l6ZTsKKyAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgc2l6ZSk7CisgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIGlmIChpY29uKQorICAgICAgICBpY29u
LT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlm
aWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVu
dFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYXR0
YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSksIGhhbmRsZSwgc2l6ZSksIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUyNCw2ICsyNTI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbGxBdHRhY2ht
ZW50cygpOwogCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChX
ZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworCisgICAgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRp
ZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDEyIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW5hcHNlLCBTWU5v
dGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4KKyNlbHNlCisjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lTWFjLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElP
UykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAg
LTI4Nyw2ICsyOTMsNDIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2ht
ZQogICAgIHRvQXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVX
cmFwcGVyKCkpOwogfQogCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBj
b252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVt
Ym5haWxTaXplKFtpbWFnZSBzaXplXSk7CisgICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZElu
dFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJu
YWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOworICAgIHJlc3Vs
dFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKKworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAgPSBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBi
aXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgq
Z3JhcGhpY3NDb250ZXh0KTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtpbWFnZSBk
cmF3SW5SZWN0OnJlc3VsdFJlY3RdOworI2VsaWYgVVNFKEFQUEtJVCkKKyAgICBbaW1hZ2UgZHJh
d0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9z
aXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhp
bnRzOm5pbF07CisjZW5kaWYKKworICAgIHJldHVybiBiaXRtYXA7Cit9CisKK1JlZlB0cjxXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcD4gV2ViUGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBGbG9hdFNpemUm
IHNpemUpCit7CisgICAgUmV0YWluUHRyPENvY29hSW1hZ2U+IGltYWdlOworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaW1hZ2UgPSBSZW5kZXJUaGVtZUlPUzo6aWNvbkZvckF0dGFjaG1l
bnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCBzaXplKTsKKyNlbHNlCisgICAgaW1hZ2UgPSBSZW5k
ZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCBlbXB0
eVN0cmluZygpKTsKKyNlbmRpZgorICAgIHJldHVybiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0
bWFwKGltYWdlLmdldCgpLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCkKQEAgLTUyMiwzMSArNTY0LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZ1bGxz
Y3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQogCi1z
dGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFn
ZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0
aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBz
aXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RX
aXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRp
bygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOwotICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24o
eyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1h
cENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJl
Y3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0
IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3Vy
Y2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07Ci0jZW5kaWYK
LQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1
bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9u
KQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjg5MjM3
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczMDMsMTIgKzczMDMsMTQgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRh
Y2htZW50KGNvbnN0IFN0cgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9p
ZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgaWNvbkhhbmRsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9
IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAg
YXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVu
dC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVO
YW1lKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShj
b250ZW50VHlwZSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNhZmVCdWZmZXIoKSk7CisgICAgICAgIGlm
IChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpY29uID0gIWljb25IYW5kbGUuaXNOdWxsKCkgPyBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpY29uSGFuZGxlKSA6IG51bGxwdHIpCisgICAgICAgICAg
ICBhdHRhY2htZW50LT51cGRhdGVJY29uKGljb24tPmNyZWF0ZUltYWdlKCksIHNpemUpOwogICAg
IH0KICAgICBjYWxsYmFjaygpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA5LDcgKzEzMDks
NyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBlbmNsb3NpbmdJbWFnZURhdGEsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29u
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTc5LDcgKzU3OSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4K
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCisgICAgVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBpY29uLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkgLT4gKCkgQXN5
bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451545</attachid>
            <date>2022-02-10 08:59:14 -0800</date>
            <delta_ts>2022-02-10 11:07:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220210085913.patch</filename>
            <type>text/plain</type>
            <size>25068</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAyLTA5ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29u
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0
YWNobWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6Cisg
ICAgICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisKIDIwMjItMDIt
MDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZpZGVvIGZyYW1lIGV4dHJhY3Rpb24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjg5NDkxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTA5ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToKKwogMjAyMi0wMi0wNyAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbW9kZWxdIGltcHJvdmUgc2l6aW5nIG9u
IGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1t
CShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIFNPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIE4KIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBB
TCwgVUlLaXQsIFVJQXBwbGljYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFVJS2l0LCBVSUNvbG9yLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlEZXZpY2UpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRShQQUwsIFVJS2l0LCBVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlEb2N1bWVudElu
dGVyYWN0aW9uQ29udHJvbGxlciwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFKFBBTCwgVUlLaXQsIFVJRm9udCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwg
VUlLaXQsIFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBVSUtpdCwgVUlJbWFnZSwgUEFMX0VYUE9SVCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMwMiw3ICs0MzAyLDcgQEAKIAkJQkNFQTQ4
NzgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MzkwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlcklubGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDRUE0ODdBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4M0IwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4
NDEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDRUE0ODg3MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggKi87
IH07CisJCUJDRUE0ODg3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NDgwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRl
clRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0VBNDg0QjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4QzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4NEQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4RTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0RjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGV4dEZyYWdtZW50LmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
NCw2ICsyNjQsMTYgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibgog
ICAgICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgV1RGTG9nQWx3YXlzKCJJQ09OOiBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24gJWYgJWYiLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOworICAgIG1faWNvbiA9IGljb247CisgICAgbV9pY29uU2l6ZSA9IHNpemU7CisKKyAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJl
ci0+aW52YWxpZGF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0
ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBu
ZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1i
bmFpbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVJY29uKGNvbnN0IFJlZlB0cjxJ
bWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogCiAgICAgSW5zZXJ0ZWRJ
bnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29u
dGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFs
VHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpAQCAtNzEsNiArNzIsOCBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRQ
YXRoKCkgY29uc3Q7CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWwoKSBjb25zdCB7IHJldHVy
biBtX3RodW1ibmFpbDsgfQorICAgIFJlZlB0cjxJbWFnZT4gaWNvbigpIGNvbnN0IHsgcmV0dXJu
IG1faWNvbjsgfQorICAgIEZsb2F0U2l6ZSBpY29uU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faWNv
blNpemU7IH0KICAgICBSZW5kZXJBdHRhY2htZW50KiByZW5kZXJlcigpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtOTEsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7
CiAgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1fdGh1
bWJuYWlsOworICAgIFJlZlB0cjxJbWFnZT4gbV9pY29uOworICAgIEZsb2F0U2l6ZSBtX2ljb25T
aXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ljb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFJlZlB0cjxJY29uPiBj
cmVhdGVJY29uRm9yVVRJKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4g
Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CisKKyAgICBSZXRhaW5Q
dHI8TlNJbWFnZT4gbnNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNJbWFnZTsgfQogI2VuZGlm
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNlbmRpZgogCiBP
QkpDX0NMQVNTIENJQ29udGV4dDsKK09CSkNfQ0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIApAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQ29sb3Igc3lzdGVtRm9jdXNSaW5nQ29sb3IoKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgRmxvYXRTaXpl
Jik7CisKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25z
dCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyAr
MTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9n
cmVzcyB7IE5PIH07CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFn
ZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1hZ2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVt
Ym5haWxJY29uOwogCiAgICAgaW50IGJhc2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5Miwx
NCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJu
IHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0
dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBz
aXplKQorUmV0YWluUHRyPFVJSW1hZ2U+IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBG
bG9hdFNpemUmIHNpemUpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBhdXRvIGRvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIFN0cmluZyBmaWxl
TmFtZTsKLSAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS5maWxlKCkpCi0gICAgICAgIGZpbGVOYW1lID0gZmlsZS0+bmFtZSgpOwotCi0gICAgaWYgKGZp
bGVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBhdHRhY2htZW50LmF0dGFjaG1l
bnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCk7CiAgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25D
b250cm9sbGVyIHNldE5hbWU6ZmlsZU5hbWVdOwogCi0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBl
ID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAg
aWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIFVUSTsKICAg
ICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQpAQCAtMTg2Nyw4ICsxODYw
LDggQEAgUmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1lbnRJbgogICAgIH0KIAog
ICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykgewotICAgICAgICBGbG9h
dFNpemUgaWNvblNpemU7Ci0gICAgICAgIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2ht
ZW50LCBpY29uU2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZSA9IGF0dGFjaG1lbnQu
YXR0YWNobWVudEVsZW1lbnQoKS5pY29uU2l6ZSgpOworICAgICAgICBpY29uID0gYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmljb24oKTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0
dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRo
dW1ibmFpbEljb24pCiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVj
dFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxv
YXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6
ZSgpOwpAQCAtMTkwOSwxMSArMTkwMiwxMiBAQCBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1l
bnRCYXNlbGluZShjCiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKKyAgICBXVEZM
b2dBbHdheXMoIklDT046IHBhaW50QXR0YWNobWVudEljb24iKTsKICAgICBSZWZQdHI8SW1hZ2U+
IGljb25JbWFnZTsKICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1h
Z2UgPSBpbmZvLnRodW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAg
ICBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOwor
ICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1h
Z2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2
ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRh
aW5lZCBkb2N1bWVudC4KICAgICBOU1ZpZXcqIGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJP
YmplY3QmKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4g
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgUmVu
ZGVyVGhlbWVNYWMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDAgQEAg
aW50IFJlbmRlclRoZW1lTWFjOjphdHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBsYXlv
dXQuYmFzZWxpbmU7CiB9CiAKK1JlZlB0cjxJY29uPiBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50
VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50
VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0
YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaWNvbjsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgICAgIGlmIChpc0RlY2xh
cmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50
VHlwZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlN
RVR5cGUoYXR0YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNv
bjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyh7IGZpbGVOYW1lIH0p
KQorICAgICAgICAgICAgcmV0dXJuIGljb247CisgICAgfQorCisgICAgTlNTdHJpbmcgKmZpbGVF
eHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4odGl0bGUpIHBhdGhFeHRlbnNpb25d
OworICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgeworICAgICAgICBpZiAoYXV0byBpY29u
ID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCisgICAg
ICAgICAgICByZXR1cm4gaWNvbjsKKyAgICB9CisKKyAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNv
bkZvclVUSSgicHVibGljLmRhdGEiKTsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50
SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYg
KGxheW91dC5zdHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAt
MjU5NSw1MiArMjYyOSwyNiBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dy
b3VuCiAgICAgfQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNv
bnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1l
bnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7
Ci0gICAgCi0gICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xk
ZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRp
b24vdm5kLmFwcGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEko
a1VUVHlwZUZvbGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0
cmluZyBVVEk7Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkp
Ci0gICAgICAgICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsK
LQotICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJ
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkg
ewotICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmls
ZS0+cGF0aCgpIH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNT
dHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVu
dC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsK
LSAgICBpZiAoZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAg
ICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25G
b3JVVEkoInB1YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudElj
b24oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJu
YWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewog
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNo
bWVudChhdHRhY2htZW50KTsKKyAgICBhdXRvIGljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuaWNvbigpOwogICAgIGlmICghaWNvbikKICAgICAgICAgcmV0dXJuOwotICAgIGlj
b24tPnBhaW50KGNvbnRleHQsIGxheW91dC5pY29uUmVjdCk7CisKKyAgICBhdXRvIG5zSW1hZ2Ug
PSBpY29uLT5uc0ltYWdlKCk7CisgICAgaWYgKCFuc0ltYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQyhjb250ZXh0KTsK
KworICAgIFtuc0ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25SZWN0IGZyb21SZWN0Ok5TTWFr
ZVJlY3QoMCwgMCwgW25zSW1hZ2Ugc2l6ZV0ud2lkdGgsIFtuc0ltYWdlIHNpemVdLmhlaWdodCkg
b3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEuMGZd
OwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4sIGZsb2F0PiBjcmVhdGVBdHRh
Y2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgQXR0
YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTIzNykKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMjItMDItMDkgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmb3IgcmVuZGVyaW5nIG9m
IHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIEljb24g
U2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHNob3VsZCBzZW5k
IHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudCB0byB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQ
bGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omlj
b25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y29uc3VtZUFuZFJldm9rZUF0dGFjaG1lbnRFbGVtZW50U2FuZGJveEV4dGVuc2lvbnMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIyLTAyLTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBQYWdlQ2xpZW50IHBsdW1iaW5nIGZvciB2aWRlbyBmcmFtZSBleHRy
YWN0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjE1LDcgKzEwMjE1LDEzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjwKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgRmxvYXRTaXplIHNpemU7CisgICAgYXV0byBpY29uID0gaWNvbkZvckF0dGFj
aG1lbnQoYXR0YWNobWVudC5maWxlTmFtZSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIHNp
emUpOworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoaWNvbikK
KyAgICAgICAgaWNvbi0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFj
aG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRh
Y2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5KGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBoYW5kbGUsIHNpemUp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJ
TkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
Mjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1MjQsNiArMjUyNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlk
YXRlQWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRU
b1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIFJl
ZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ29yZTo6RmxvYXRT
aXplJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgPSB7IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI4OTIzNykK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMyBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwo
U3luYXBzZSwgU1lOb3RlCiAjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lSU9TLmg+
CisjZWxzZQorI2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRl
clRoZW1lTWFjLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAgLTI4Nyw2ICsyOTQsNDIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZQogICAgIHRvQXR0YWNobWVu
dC0+c2V0RmlsZVdyYXBwZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkpOwogfQogCitz
dGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFn
ZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0
aW5nU2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBz
aXplXSk7CisgICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RX
aXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRp
bygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOworICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24o
eyB9KTsKKworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1h
cENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJl
Y3RdOworI2VsaWYgVVNFKEFQUEtJVCkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0
IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3Vy
Y2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07CisjZW5kaWYK
KworICAgIHJldHVybiBiaXRtYXA7Cit9CisKK1JlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cD4gV2ViUGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgUmV0
YWluUHRyPENvY29hSW1hZ2U+IGltYWdlOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
aW1hZ2UgPSBSZW5kZXJUaGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRl
bnRUeXBlLCBzaXplKTsKKyNlbHNlCisgICAgaW1hZ2UgPSBSZW5kZXJUaGVtZU1hYzo6aWNvbkZv
ckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCBlbXB0eVN0cmluZygpKS0+bnNJbWFn
ZSgpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1h
Z2UuZ2V0KCksIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKK30KKwogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBv
aW50KQpAQCAtNTIyLDMxICs1NjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZp
ZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRt
YXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXpl
KQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsK
LSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3Bl
Y3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsg
eyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwot
Ci0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmln
dXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAg
IGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdy
YXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0j
ZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJl
Y3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIg
ZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAg
cmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxX
aXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAg
ICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMwMywxMiArNzMwMywxNCBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQo
Y29uc3QgU3RyCiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBlbmNsb3NpbmdJbWFnZURhdGEsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29u
SGFuZGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNo
bWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2ht
ZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRh
dGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwog
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRU
eXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGljb24gPSAhaWNvbkhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGljb25IYW5kbGUpIDogbnVsbHB0cikKKyAgICAgICAgICAgIGF0dGFj
aG1lbnQtPnVwZGF0ZUljb24oaWNvbi0+Y3JlYXRlSW1hZ2UoKSwgc2l6ZSk7CiAgICAgfQogICAg
IGNhbGxiYWNrKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIHB1
YmxpYzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9z
aW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xv
c2luZ0ltYWdlRGF0YSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb24sIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyAr
NTc5LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVO
YW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVu
dEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZp
bGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGljb24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKSAtPiAoKSBBc3luYwogICAg
IFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451576</attachid>
            <date>2022-02-10 11:07:48 -0800</date>
            <delta_ts>2022-02-11 08:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220210110747.patch</filename>
            <type>text/plain</type>
            <size>24297</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAyLTEwICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlSWNvbik6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JY29uLmg6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpuc0ltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6aWNv
bkZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86
OlJlbmRlckF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVu
dEljb24pOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpp
Y29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29u
KToKKyAgICAgICAgKFdlYkNvcmU6Omljb25Gb3JBdHRhY2htZW50KTogRGVsZXRlZC4KKwogMjAy
Mi0wMi0xMCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAg
QW4gZWxlbWVudCB3aXRoIGJvdGggLXdlYmtpdC11c2VyLXNlbGVjdDogYWxsIGFuZCAtd2Via2l0
LXVzZXItZHJhZzogZWxlbWVudCBkb2VzIG5vdCBnZXQgdGhlIG5pY2UgZHJhZyBzbmFwc2hvdCB0
aGF0IHlvdSBnZXQgaWYgeW91IGp1c3QgaGF2ZSAtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzAyLDcgKzQzMDIsNyBAQAog
CQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzOTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW5saW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4N0EwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzQjA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0VBNDg0MTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4ODcwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVN
YWMuaCAqLzsgfTsKKwkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyVGhlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODRCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhDMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRGMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjY0LDYgKzI2NCwxNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
VGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSFRNTEF0
dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJlZlB0cjxJbWFnZT4mIGljb24sIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBXVEZMb2dBbHdheXMoIklDT046
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlSWNvbiAlZiAlZiIsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gc2l6
ZTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
IHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
QXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdl
PiYgdGh1bWJuYWlsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUljb24oY29uc3Qg
UmVmUHRyPEltYWdlPiYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9y
KFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC03MSw2ICs3Miw4IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0
YWNobWVudFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRyPEltYWdlPiBpY29uKCkgY29uc3Qg
eyByZXR1cm4gbV9pY29uOyB9CisgICAgRmxvYXRTaXplIGljb25TaXplKCkgY29uc3QgeyByZXR1
cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7
CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+
IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOwogICAgIFJlZlB0cjxJbWFn
ZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdlPiBtX2ljb247CisgICAgRmxvYXRTaXpl
IG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgUmVmUHRy
PEljb24+IGNyZWF0ZUljb25Gb3JVVEkoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFJlZlB0
cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKKworICAg
IFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9uc0ltYWdlOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2Vu
ZGlmCiAKIE9CSkNfQ0xBU1MgQ0lDb250ZXh0OworT0JKQ19DTEFTUyBVSUltYWdlOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmKTsKKwogcHJpdmF0ZToKICAgICBib29sIGNh
blBhaW50KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFNldHRpbmdzJikgY29uc3QgZmluYWw7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlz
aW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgc3RydWN0IFJlbmRlckF0dGFj
aG1lbnRJbmZvIHsKICAgICBCT09MIGhhc1Byb2dyZXNzIHsgTk8gfTsKICAgICBmbG9hdCBwcm9n
cmVzczsKIAotICAgIFJldGFpblB0cjxVSUltYWdlPiBpY29uOworICAgIFJlZlB0cjxJbWFnZT4g
aWNvbjsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbEljb247CiAKICAgICBpbnQgYmFzZWxp
bmUgeyAwIH07CkBAIC0xNzkyLDIxICsxNzkyLDE4IEBAIHN0YXRpYyBCT09MIGdldEF0dGFjaG1l
bnRQcm9ncmVzcyhjb25zdCAKICAgICByZXR1cm4gdmFsaWRQcm9ncmVzczsKIH0KIAotc3RhdGlj
IFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2ht
ZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNpemUpCitSZXRhaW5QdHI8VUlJbWFnZT4gUmVu
ZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6
ZSYgc2l6ZSkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAg
IGF1dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
VUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgU3RyaW5nIGZpbGVOYW1lOwot
ICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUo
KSkKLSAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1lKCk7Ci0KLSAgICBpZiAoZmlsZU5hbWUu
aXNFbXB0eSgpKQotICAgICAgICBmaWxlTmFtZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1l
bnQoKS5hdHRhY2htZW50VGl0bGUoKTsKLSAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgc2V0TmFtZTpmaWxlTmFtZV07CisgICAgYXV0byBuYW1lID0gZmlsZU5hbWU7CisgICAgaWYg
KG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBuYW1lID0gdGl0bGU7CisKKyAgICBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpuYW1lXTsKIAotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VHlwZSgp
OwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBV
VEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKQEAgLTE4Njcs
OCArMTg2NCw4IEBAIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAg
ICB9CiAKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAg
ICAgRmxvYXRTaXplIGljb25TaXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQo
YXR0YWNobWVudCwgaWNvblNpemUpOworICAgICAgICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRh
Y2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvblNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0
dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29uKCk7CiAgICAgICAgIHRodW1ibmFpbElj
b24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsKCk7CiAgICAgICAg
IGlmICh0aHVtYm5haWxJY29uKQogICAgICAgICAgICAgaWNvblNpemUgPSBsYXJnZXN0UmVjdFdp
dGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodGh1bWJuYWlsSWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlv
KCksIEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6
ZSkpLnNpemUoKTsKQEAgLTE5MDksMTEgKzE5MDYsMTIgQEAgaW50IFJlbmRlclRoZW1lSU9TOjph
dHRhY2htZW50QmFzZWxpbmUoYwogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7Cisg
ICAgV1RGTG9nQWx3YXlzKCJJQ09OOiBwYWludEF0dGFjaG1lbnRJY29uIik7CiAgICAgUmVmUHRy
PEltYWdlPiBpY29uSW1hZ2U7CiAgICAgaWYgKGluZm8udGh1bWJuYWlsSWNvbikKICAgICAgICAg
aWNvbkltYWdlID0gaW5mby50aHVtYm5haWxJY29uOwogICAgIGVsc2UgaWYgKGluZm8uaWNvbikK
LSAgICAgICAgaWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1h
Z2VdKTsKKyAgICAgICAgaWNvbkltYWdlID0gaW5mby5pY29uOwogICAgIAogICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIC8vIEEgdmlldyBhc3NvY2lhdGVkIHRvIHRo
ZSBjb250YWluZWQgZG9jdW1lbnQuCiAgICAgTlNWaWV3KiBkb2N1bWVudFZpZXdGb3IoY29uc3Qg
UmVuZGVyT2JqZWN0JikgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWlu
UHRyPE5TSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworCiBwcml2
YXRlOgogICAgIFJlbmRlclRoZW1lTWFjKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU2NCw2
ICsyNTY0LDQzIEBAIGludCBSZW5kZXJUaGVtZU1hYzo6YXR0YWNobWVudEJhc2VsaW5lKGMKICAg
ICByZXR1cm4gbGF5b3V0LmJhc2VsaW5lOwogfQogCitSZXRhaW5QdHI8TlNJbWFnZT4gUmVuZGVy
VGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYg
KCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZv
bGRlciIpKSB7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAg
ICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5n
IFVUSTsKKyAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAg
ICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisg
ICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIWZpbGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBpY29u
ID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZU5hbWUgfSkpCisgICAgICAgICAgICBy
ZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIH0KKworICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5z
aW9uID0gW3N0YXRpY19jYXN0PE5TU3RyaW5nICo+KHRpdGxlKSBwYXRoRXh0ZW5zaW9uXTsKKyAg
ICBpZiAoZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IElj
b246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQorICAgICAgICAg
ICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRhdGEiKSkKKyAgICAgICAgcmV0dXJuIGlj
b24tPm5zSW1hZ2UoKTsKKyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHZv
aWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYg
YXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBs
YXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5zdHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6
Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiArMjYzMiwyNiBAQCBzdGF0aWMgdm9pZCBwYWludEF0
dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAgfQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGlj
b25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0g
ICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0gICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUs
ICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1l
bnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246
OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVU
SShhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBl
KGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50
RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRl
SWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgpIH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247
Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgp
KSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAoZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAg
ICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVF
eHRlbnNpb24pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJu
IEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAg
ICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS50aHVtYm5haWwoKSkgewogICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNv
biwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGlj
b24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KTsKKyAgICBhdXRvIGljb24gPSBhdHRh
Y2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOwogICAgIGlmICghaWNvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIGljb24tPnBhaW50KGNvbnRleHQsIGxheW91dC5pY29uUmVjdCk7CisK
KyAgICBhdXRvIG5zSW1hZ2UgPSBpY29uLT5uc0ltYWdlKCk7CisgICAgaWYgKCFuc0ltYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1
cnJlbnRHQyhjb250ZXh0KTsKKworICAgIFtuc0ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25S
ZWN0IGZyb21SZWN0Ok5TTWFrZVJlY3QoMCwgMCwgW25zSW1hZ2Ugc2l6ZV0ud2lkdGgsIFtuc0lt
YWdlIHNpemVdLmhlaWdodCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VP
dmVyIGZyYWN0aW9uOjEuMGZdOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4s
IGZsb2F0PiBjcmVhdGVBdHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciwgY29uc3QgQXR0YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDItMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgorCisgICAgICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyBmb3IgcmVuZGVyaW5nIG9mIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5l
Y3RpbmcgdG8gdGhlIEljb24gU2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MsIHdlIHNob3VsZCBzZW5kIHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAg
ZWxlbWVudCB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDItMTAgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFuIGVsZW1lbnQgd2l0aCBib3RoIC13ZWJraXQt
dXNlci1zZWxlY3Q6IGFsbCBhbmQgLXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQgZG9lcyBub3Qg
Z2V0IHRoZSBuaWNlIGRyYWcgc25hcHNob3QgdGhhdCB5b3UgZ2V0IGlmIHlvdSBqdXN0IGhhdmUg
LXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyMTUsNyArMTAyMTUs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPAogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2ht
ZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6
ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVO
YW1lKCksIElQQzo6U2hhcmVkQnVmZmVyQ29weShhdHRhY2htZW50LmVuY2xvc2luZ0ltYWdlRGF0
YSgpKSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0
byBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudC5maWxlTmFtZSgpLCBhdHRhY2ht
ZW50LmNvbnRlbnRUeXBlKCksIHNpemUpOworICAgIGlmIChpY29uKQorICAgICAgICBpY29uLT5j
cmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRpZgorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVu
dGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29u
dGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHko
YXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSksIGhhbmRsZSwgc2l6ZSksIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyODkyMzcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUyNCw2ICsyNTI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbGxBdHRh
Y2htZW50cygpOwogCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2Fy
ZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworCisgICAgUmVmUHRyPFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNl
bmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDYgKzgzLDEzIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW5hcHNlLCBT
WU5vdGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4KKyNlbHNlCisj
aW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMu
aD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9X
ZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5NCw0MSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxl
V3JhcHBlcihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAo
Q29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQor
eworICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKKyAg
ICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9
LCBmaXR0aW5nU2l6ZSB9KSk7CisgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOworCisg
ICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJh
dGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGlm
ICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07CisjZWxp
ZiBVU0UoQVBQS0lUKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6
TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJh
Y3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKyNlbmRpZgorCisgICAgcmV0
dXJuIGJpdG1hcDsKK30KKworUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdl
UHJveHk6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIGF1dG8gaW1hZ2UgPSBSZW5kZXJUaGVtZUlPUzo6aWNvbkZvckF0dGFjaG1l
bnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCBlbXB0eVN0cmluZygpLCBzaXplKTsKKyNlbHNlCisg
ICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFt
ZSwgY29udGVudFR5cGUsIGVtcHR5U3RyaW5nKCkpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnZl
cnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCksIFdlYkNvcmU6OkludFNpemUoNDAw
LCA0MDApKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpAQCAtNTIyLDMxICs1NjQsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9P
S19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRo
dW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVk
SW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVt
Ym5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVz
dWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCks
IGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0
KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdl
IGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBk
cmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21w
b3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMg
aGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2Fk
T3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxv
Y2s6XnsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwMywxMiArNzMwMywxNCBAQCB2b2lk
IFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyCiAgICAgY2FsbGJhY2soKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxl
U2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVu
dGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUp
LCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1
ZmZlcigpKTsKKyAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGljb24gPSAhaWNv
bkhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGljb25IYW5kbGUpIDog
bnVsbHB0cikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUljb24oaWNvbi0+Y3JlYXRl
SW1hZ2UoKSwgc2l6ZSk7CiAgICAgfQogICAgIGNhbGxiYWNrKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRo
dW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgp
IEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0
cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkg
LT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlw
ZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VE
YXRhLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGljb24sIFdlYkNvcmU6OkZsb2F0
U2l6ZSBzaXplKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFu
ZGxlKQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451701</attachid>
            <date>2022-02-11 08:45:35 -0800</date>
            <delta_ts>2022-02-11 16:58:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220211084534.patch</filename>
            <type>text/plain</type>
            <size>28350</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAyLTEwICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnVwZGF0ZUljb24pOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6bnNJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Omlj
b25Gb3JBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjppY29uRm9y
QXR0YWNobWVudCk6IERlbGV0ZWQuCisKIDIwMjItMDItMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1lbWJlciB3aGV0aGVyIGNhY2hl
ZCBtYWluIHJlc291cmNlcyB1c2VkIHByaXZhdGUgcmVsYXkgd2hlbiBjb25zaWRlcmluZyB3aGV0
aGVyIHRvIGNhbGwgX3NldFByaXZhY3lQcm94eUZhaWxDbG9zZWQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4
OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDMwMiw3ICs0MzAyLDcgQEAKIAkJQkNFQTQ4NzgwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlcklubGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MzkwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlcklubGlu
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
RUE0ODdBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4M0IwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNFQTQ4ODAwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NDEwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCUJDRUE0ODg3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJU
aGVtZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggKi87IH07CisJCUJD
RUE0ODg3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NDgwOTdEOTMwMjAwOTRDOUU0
IC8qIFJlbmRlclRoZW1lTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0QjA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4QzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ4NEQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4RTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGV4dEZyYWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0RjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dEZy
YWdtZW50LmggKi87IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQs
MTUgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibgogICAgICAgICBy
ZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
dXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUpCit7CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gc2l6
ZTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
IHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
QXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdl
PiYgdGh1bWJuYWlsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUljb24oY29uc3Qg
UmVmUHRyPEltYWdlPiYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9y
KFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC02OCw5ICs2OSwxMSBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsKLSAgICBT
dHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
YXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25z
dDsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJu
YWlsOyB9CisgICAgUmVmUHRyPEltYWdlPiBpY29uKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9
CisgICAgRmxvYXRTaXplIGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQog
ICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05
MSw2ICs5NCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJp
bmcgbV91bmlxdWVJZGVudGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7Cisg
ICAgUmVmUHRyPEltYWdlPiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JVVEkoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29u
Rm9yRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKKworICAgIFJldGFpblB0cjxOU0ltYWdl
PiBuc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9uc0ltYWdlOyB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZp
c2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2VuZGlmCiAKIE9CSkNfQ0xBU1Mg
Q0lDb250ZXh0OworT0JKQ19DTEFTUyBVSUltYWdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBGbG9hdFNpemUmKTsKKwogcHJpdmF0ZToKICAgICBib29sIGNhblBhaW50KGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IFNldHRpbmdzJikgY29uc3QgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI4OTEzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTY4MCw3ICsxNjgwLDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKICAgICBC
T09MIGhhc1Byb2dyZXNzIHsgTk8gfTsKICAgICBmbG9hdCBwcm9ncmVzczsKIAotICAgIFJldGFp
blB0cjxVSUltYWdlPiBpY29uOworICAgIFJlZlB0cjxJbWFnZT4gaWNvbjsKICAgICBSZWZQdHI8
SW1hZ2U+IHRodW1ibmFpbEljb247CiAKICAgICBpbnQgYmFzZWxpbmUgeyAwIH07CkBAIC0xNzky
LDIxICsxNzkyLDE4IEBAIHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCAK
ICAgICByZXR1cm4gdmFsaWRQcm9ncmVzczsKIH0KIAotc3RhdGljIFJldGFpblB0cjxVSUltYWdl
PiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBG
bG9hdFNpemUmIHNpemUpCitSZXRhaW5QdHI8VUlJbWFnZT4gUmVuZGVyVGhlbWVJT1M6Omljb25G
b3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNo
bWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gZG9jdW1lbnRJbnRl
cmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlEb2N1bWVudEludGVyYWN0
aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCi0gICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIGlmIChGaWxlKiBmaWxl
ID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkKLSAgICAgICAgZmlsZU5h
bWUgPSBmaWxlLT5uYW1lKCk7Ci0KLSAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICBmaWxlTmFtZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VGl0
bGUoKTsKLSAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpmaWxlTmFt
ZV07CisgICAgYXV0byBuYW1lID0gZmlsZU5hbWU7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICBuYW1lID0gdGl0bGU7CisKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgc2V0TmFtZTpuYW1lXTsKIAotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1l
bnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNo
bWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChp
c0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKQEAgLTE4NjcsOCArMTg2NCw4IEBAIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0
aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25T
aXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNp
emUpOworICAgICAgICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuaWNvblNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5pY29uKCk7CiAgICAgICAgIHRodW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0
dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsKCk7CiAgICAgICAgIGlmICh0aHVtYm5haWxJY29u
KQogICAgICAgICAgICAgaWNvblNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lk
ZVJlY3QodGh1bWJuYWlsSWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlvKCksIEZsb2F0UmVjdCgwLCAw
LCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKQEAgLTE5
MTMsNyArMTkxMCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3MK
ICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRo
dW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBpY29u
SW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFn
ZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBw
dWJsaWM6CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5lZCBkb2N1bWVu
dC4KICAgICBOU1ZpZXcqIGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25z
dDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8TlNJbWFnZT4gaWNvbkZv
ckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2ht
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgUmVuZGVyVGhl
bWVNYWMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDMgQEAgaW50IFJl
bmRlclRoZW1lTWFjOjphdHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBsYXlvdXQuYmFz
ZWxpbmU7CiB9CiAKK1JldGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50
VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50
VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0
YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgVVRJOworICAgICAgICAgICAg
aWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgICAgIFVUSSA9
IGF0dGFjaG1lbnRUeXBlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFVUSSA9
IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CisKKyAgICAgICAgICAgIGlmIChhdXRv
IGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5h
bWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMoeyBmaWxlTmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdl
KCk7CisgICAgfQorCisgICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8
TlNTdHJpbmcgKj4odGl0bGUpIHBhdGhFeHRlbnNpb25dOworICAgIGlmIChmaWxlRXh0ZW5zaW9u
Lmxlbmd0aCkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJ
bWFnZSgpOworICAgIH0KKworICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9y
VVRJKCJwdWJsaWMuZGF0YSIpKQorICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAg
IAorICAgIHJldHVybiBudWxscHRyOworfQorCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJ
Y29uQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAo
bGF5b3V0LnN0eWxlID09IEF0dGFjaG1lbnRMYXlvdXRTdHlsZTo6Tm9uU2VsZWN0ZWQpCkBAIC0y
NTk1LDUyICsyNjMyLDI2IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3Jv
dW4KICAgICB9CiB9CiAKLXN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBTdHJpbmcgYXR0YWNobWVu
dFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsK
LSAgICAKLSAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFydC94LWZvbGRl
ciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJhcHBsaWNhdGlv
bi92bmQuYXBwbGUuZm9sZGVyIikpIHsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShr
VVRUeXBlRm9sZGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLUFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3Ry
aW5nIFVUSTsKLSAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkK
LSAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwot
Ci0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBpY29uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKSB7
Ci0gICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxl
LT5wYXRoKCkgfSkpCi0gICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICBOU1N0
cmluZyAqZmlsZUV4dGVuc2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhdHRhY2htZW50
LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCkpIHBhdGhFeHRlbnNpb25dOwot
ICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgewotICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCi0gICAgICAg
ICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZv
clVUSSgicHVibGljLmRhdGEiKTsKLX0KLQogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNv
bihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAoYXV0byB0aHVtYm5h
aWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbCgpKSB7CiAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29uLCBsYXlvdXQuaWNvblJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2ht
ZW50KGF0dGFjaG1lbnQpOworICAgIGF1dG8gaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5pY29uKCk7CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm47Ci0gICAgaWNv
bi0+cGFpbnQoY29udGV4dCwgbGF5b3V0Lmljb25SZWN0KTsKKworICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuc0ltYWdlID0g
aWNvbi0+bnNJbWFnZSgpOworICAgIGlmICghbnNJbWFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQyhjb250ZXh0
KTsKKworICAgIFtuc0ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25SZWN0IGZyb21SZWN0Ok5T
TWFrZVJlY3QoMCwgMCwgW25zSW1hZ2Ugc2l6ZV0ud2lkdGgsIFtuc0ltYWdlIHNpemVdLmhlaWdo
dCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEu
MGZdOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4sIGZsb2F0PiBjcmVhdGVB
dHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3Qg
QXR0YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU1MykK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjItMDItMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmb3IgcmVuZGVyaW5n
IG9mIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhlIElj
b24gU2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHNob3VsZCBz
ZW5kIHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudCB0byB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuIFRoZSBpY29uIHdpbGwgYmUg
c2VudCB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gdGhlIGF0dGFjaG1lbnQKKyAgICAg
ICAgYXR0cmlidXRlcyBhcmUgdXBkYXRlZCwgb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBoYXMg
cmVxdWVzdGVkIHRoZSBpY29uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0
bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTEw
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBv
cnQgYFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSgpYCBv
biBpT1MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyMDIsNiArMTAyMDIsMTggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZQogICAgIHBhZ2VDbGllbnQoKS53cml0ZVByb21pc2Vk
QXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGluZm8pKTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCit7CisgICAgRmxvYXRTaXplIHNpemU7CisgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gaWNvbiA9IGlj
b25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUsIHNpemUpOworICAg
IGlmIChpY29uKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRpZgor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZp
ZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdl
UHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikg
Y29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSwxMSArMTAy
MzEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRh
Y2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2sp
CiB7CisgICAgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBh
dHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5m
aWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50
LmZpbGVOYW1lKCksIElQQzo6U2hhcmVkQnVmZmVyQ29weShhdHRhY2htZW50LmVuY2xvc2luZ0lt
YWdlRGF0YSgpKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tMT09L
X1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbihj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiBi
aXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiBiaXRt
YXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBA
IC0xMDIzMiw3ICsxMDI0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5k
bGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEljb24o
aWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRl
QXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5kbGUpKTsKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjg5MTM0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRGF0
YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAjaWYgSEFWRShRVUlDS0xPT0tfVEhV
TUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiwg
Y29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4m
KTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdyYXBwZXIoTlNG
aWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxX
aXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICopOwpAQCAtMjUyNCw2ICsy
NTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQWxsQXR0YWNobWVudHMoKTsK
IAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29yZTo6
UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJ
Y29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworCisgICAgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkx
MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRp
ZmllcikKICAgICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8
U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+IHNlcmFsaXplZERhdGEpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0
dGFjaG1lbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudElu
Zm8gaW5mbykKKyAgICBSZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0
cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI4OTEzNCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMiBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3lu
YXBzZSwgU1lOb3RlCiAjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lSU9TLmg+Cisj
ZWxzZQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUaGVtZU1hYy5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShJT1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQ
SS5oPgogCkBAIC0yODcsNiArMjkzLDQxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUNs
b25lQXR0YWNobWUKICAgICB0b0F0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZyb21BdHRhY2ht
ZW50LT5maWxlV3JhcHBlcigpKTsKIH0KIAorc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcD4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICppbWFnZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml0dGluZ1NpemUpCit7CisgICAgRmxvYXRTaXplIG9y
aWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAgIGF1dG8gcmVzdWx0UmVjdCA9
IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChvcmln
aW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZpdHRpbmdTaXplIH0pKTsK
KyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAgICBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgIGF1dG8gYml0
bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0
LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZl
ZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlmIFVTRShBUFBLSVQpCisgICAg
W2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1plcm9SZWN0IG9wZXJhdGlv
bjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RGbGlw
cGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1cm4gYml0bWFwOworfQorCitS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQoreworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNo
bWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlLCBzaXplKTsKKyNlbHNlCisgICAgYXV0
byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29u
dGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAgIHJldHVybiBjb252ZXJ0UGxhdGZvcm1JbWFn
ZVRvQml0bWFwKGltYWdlLmdldCgpLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7Cit9CisK
ICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIAogdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBwb2ludCkKQEAgLTQ5NywzMSArNTM4LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZ1bGxzY3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5H
KQogCi1zdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZv
cm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBmaXR0aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtp
bWFnZSBzaXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3Bl
Y3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOwotICAgIHJlc3VsdFJlY3Quc2V0TG9j
YXRpb24oeyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1
cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250
ZXh0KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJl
c3VsdFJlY3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1
bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRp
b25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07Ci0j
ZW5kaWYKLQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3Bl
cmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CkBAIC01MzAs
NyArNTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoTwogICAg
ICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRt
YXAoW29wZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7CiAg
ICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGNvbnZl
cnRlZEltYWdlKTsKKyAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwo
aWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UpOwogICAgICAgICB9KTsKICAgICB9XTsKICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMjg5MTM0KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
Y2xvbmVBdHRhY2htZW50RGF0CiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkSW5zZXJ0QXR0YWNo
bWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihp
ZGVudGlmaWVyLCBzb3VyY2UsIGhhc0VuY2xvc2luZ0ltYWdlKSk7CisgICAgbV9wYWdlLT5yZXF1
ZXN0QXR0YWNobWVudEljb24oaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzA3LDcgKzczMDcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzCiAgICAgY2FsbGJhY2soKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSkKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSkK
IHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
ZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
dGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0cikKQEAgLTczMTUsNiArNzMxNSwy
NCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0CiAgICAgfQogfQog
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb25IYW5kbGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBpZiAo
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaWNvbiA9ICFpY29uSGFuZGxlLmlzTnVsbCgpID8gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRyKQorICAgICAgICAgICAg
YXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgpLCBzaXplKTsKKyAgICB9
Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1l
bnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBTdHJpbmcgZmlsZU5hbWU7
CisgICAgICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC0+ZmlsZSgpKQorICAgICAgICAg
ICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1lKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVxdWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmF0
dGFjaG1lbnRUeXBlKCksIGZpbGVOYW1lLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSkp
OworICAgIH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4gV2ViUGFnZTo6YXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNv
bnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50IGVsZW1lbnRzIGluIHN1YmZy
YW1lcyB0b28gYXMgd2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxMCw3ICsxMzEwLDkgQEAg
cHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJ
bWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVB
dHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2ht
ZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgcmVxdWVz
dEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg5
MTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw4IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4g
KCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRh
KSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVy
LCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQorICAg
IFVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisgICAgVXBkYXRlQXR0YWNo
bWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgaWNvbiwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451758</attachid>
            <date>2022-02-11 16:58:16 -0800</date>
            <delta_ts>2022-02-11 19:32:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220211165815.patch</filename>
            <type>text/plain</type>
            <size>57240</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTExICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdl
cyB0byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUlj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJh
dGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTExICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdy
YW1tYXIgY2hlY2tpbmcgb24gTWFjIENhdGFseXN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzAyLDcgKzQzMDIsNyBAQAogCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgzOTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4N0Ew
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzQjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQ0VBNDg4MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0MTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLzsgfTsKKwkJQkNFQTQ4ODcw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGhlbWVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODRGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQu
aCAqLzsgfTsKQEAgLTUyNzUsNiArNTI3NSw4IEBACiAJCUUzNTgyQzI4MjUyN0Y2NjkwMEQxQjc5
MCAvKiBXZWJDb3JlSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1ODJDMjYyNTI3RjY2ODAwRDFCNzkwIC8qIFdlYkNvcmVKSVRP
cGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1QjkwN0YyM0Y2MEE1MDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA3QzIz
RjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzY0MzIxQzI1RDM3QTY3MDBGOTBF
MkEgLyogTW9kdWxlU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxQjI3
QjcwQjIzMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAyMDI3QjcyMDEzMDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8q
IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9k
ZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNG
MDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5
NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJE
MjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzExLDYg
KzE3MzEzLDggQEAKIAkJRTM1QjkwN0MyM0Y2MDY3NzAwMDAxMUZGIC8qIExvY2FsaXplZERldmlj
ZU1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZERldmlj
ZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUI5MDdFMjNGNjA2Nzcw
MDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvY2FsaXplZERldmljZU1vZGVsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZVNjcmlwdExv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQjI3QjcwQjIzMDA2
NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcw
MUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzk5Miw2ICsyMzk5Niw3IEBACiAJCQkJNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCUJD
RjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCiAJCQkJ
Q0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAor
CQkJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5o
ICovLAogCQkJCUM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi8s
CiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCAqLywKIAkJCQk0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xs
ZXIuaCAqLywKQEAgLTI0MDYzLDYgKzI0MDY4LDcgQEAKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBG
RjZGMkQgLyogRHJhZ1N0YXRlLmggKi8sCiAJCQkJOTNENkI3QTYyNTUxRDNFRDAwNThERDNBIC8q
IER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovLAogCQkJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLywKKwkJCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCTkzQzA5QTgw
MEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIw
NjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAqLywKIAkJCQlFMEZFRjM3MUIyN0M1M0VB
QzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwICovLApAQCAtMzM0NjEsNiArMzM0NjcsNyBAQAog
CQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVh
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDFGMjdCNzIw
MEMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEMTM1MjUyMjk0QTMzQzAwODI3NDAxIC8qIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBB
dHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
cmlidXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0Mzc5LDYgKzM0Mzg2LDcgQEAKIAkJCQlGQkRC
NjE5RjE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlB
NTBEMDBEOEJBMDBCQjgyNUMgLyogRW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTI2NCw2ICsyNjUsMjkgQEAg
dm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibgogICAgICAgICByZW5kZXJl
ci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
SWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGljb25TaXplKQoreworICAgIG1faWNvbiA9IGljb247CisgICAgbV9pY29uU2l6ZSA9IGljb25T
aXplOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKK30KKworUmVmUHRyPEltYWdlPiBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6Omljb24oKSBjb25zdAoreworICAgIGlmICghbV9pY29uKSB7CisgICAgICAg
IGlmIChkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5h
dHRhY2htZW50RWxlbWVudENsaWVudCgpLnJlcXVlc3RBdHRhY2htZW50SWNvbih1bmlxdWVJZGVu
dGlmaWVyKCkpOworICAgIH0KKyAgICByZXR1cm4gbV9pY29uOworfQorCitGbG9hdFNpemUgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjppY29uU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNv
blNpemU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUljb24oY29uc3QgUmVmUHRyPEltYWdlPiYgaWNv
biwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250
YWluZXJOb2RlJikgZmluYWw7CkBAIC02OCw5ICs2OSwxMSBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0
dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5
cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBj
b25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1h
Z2U+IHRodW1ibmFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRy
PEltYWdlPiBpY29uKCkgY29uc3Q7CisgICAgRmxvYXRTaXplIGljb25TaXplKCkgY29uc3Q7CiAg
ICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVyZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTkx
LDYgKzk0LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwogICAgIFN0cmlu
ZyBtX3VuaXF1ZUlkZW50aWZpZXI7CiAgICAgUmVmUHRyPEltYWdlPiBtX3RodW1ibmFpbDsKKyAg
ICBSZWZQdHI8SW1hZ2U+IG1faWNvbjsKKyAgICBGbG9hdFNpemUgbV9pY29uU2l6ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IkR1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFn
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIkVtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgpA
QCAtMTIyMSw3ICsxMjIyLDggQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRQogICAgICAgICBFbXB0eVdlYkxvY2tSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAgICAgIER1
bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAogICAgICAgICBtYWtlVW5pcXVlUmVm
PER1bW15U3RvcmFnZVByb3ZpZGVyPigpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15TW9kZWxQbGF5
ZXJQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpLAogICAgIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlD
aHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVk
ZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODkxMzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRnJhbWVSYXRlLmgiCiAjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
CisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENhY2hlLmgiCkBAIC0zNDMsNiArMzQ0LDcg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV9wZXJt
aXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBlcm1pc3Npb25Db250
cm9sbGVyKSkKICAgICAsIG1fc3RvcmFnZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24uc3RvcmFnZVByb3ZpZGVyKSkKICAgICAsIG1fbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxheWVyUHJvdmlkZXIpKQorICAgICwgbV9hdHRhY2ht
ZW50RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50KSkKIHsKICAgICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3MgQXBwbGVQYXlBTVNV
SVBheW1lbnRIYW5kbGVyOwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xh
c3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7
CitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjsKIGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKIGNsYXNzIEJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTsKQEAgLTkyOSw2ICs5MzAsMTAgQEAgcHVibGljOgogCiAgICAgTW9kZWxQ
bGF5ZXJQcm92aWRlciYgbW9kZWxQbGF5ZXJQcm92aWRlcigpOwogCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKyAgICBBdHRhY2htZW50RWxlbWVudENsaWVudCYgYXR0YWNobWVudEVs
ZW1lbnRDbGllbnQoKSB7IHJldHVybiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmdldCgpOyB9
CisjZW5kaWYKKwogI2lmIFVTRShBVFNQSSkKICAgICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiBh
Y2Nlc3NpYmlsaXR5Um9vdE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVJv
b3RPYmplY3Q7IH0KICAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlSb290T2JqZWN0KEFjY2Vzc2li
aWxpdHlSb290QXRzcGkqIHJvb3RPYmplY3QpIHsgbV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCA9
IHJvb3RPYmplY3Q7IH0KQEAgLTEyODUsNiArMTI5MCw4IEBAIHByaXZhdGU6CiAgICAgVW5pcXVl
UmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVlUmVmPE1v
ZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorICAgIFVuaXF1ZVJl
ZjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gbV9hdHRhY2htZW50RWxlbWVudENsaWVudDsKKwog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB1c2luZyBDYWNoZWRUZXh0UmVjb2duaXRp
b25SZXN1bHQgPSBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRSZWN0PjsKICAg
ICBXZWFrSGFzaE1hcDxIVE1MRWxlbWVudCwgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0PiBt
X3RleHRSZWNvZ25pdGlvblJlc3VsdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC02Myw3
ICs2NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246OlBh
Z2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRv
ckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92
aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBS
ZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2Vy
Q29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENs
aWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVu
aXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBV
bmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBV
bmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQ
cm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVs
UmVnaXN0cnksIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYgd2ViTG9ja1JlZ2lzdHJ5LCBSZWY8UGVy
bWlzc2lvbkNvbnRyb2xsZXI+JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9y
YWdlUHJvdmlkZXI+JiYgc3RvcmFnZVByb3ZpZGVyLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92
aWRlcj4mJiBtb2RlbFBsYXllclByb3ZpZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25m
aWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVu
dD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwg
VW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2Fj
aGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVu
dFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4m
JiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJl
ZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVS
ZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVS
ZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRl
ciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0
cnksIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYgd2ViTG9ja1JlZ2lzdHJ5LCBSZWY8UGVybWlzc2lv
bkNvbnRyb2xsZXI+JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJv
dmlkZXI+JiYgc3RvcmFnZVByb3ZpZGVyLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4m
JiBtb2RlbFBsYXllclByb3ZpZGVyLCBVbmlxdWVSZWY8QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+
JiYgYXR0YWNobWVudEVsZW1lbnRDbGllbnQpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tldFBy
b3ZpZGVyKFdURk1vdmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtODEsNiArODIsNyBAQCBQYWdlQ29u
ZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBwZXJtaXNzaW9uQ29udHJv
bGxlcihXVEZNb3ZlKHBlcm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRl
cihXVEZNb3ZlKHN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdU
Rk1vdmUobW9kZWxQbGF5ZXJQcm92aWRlcikpCisgICAgLCBhdHRhY2htZW50RWxlbWVudENsaWVu
dChXVEZNb3ZlKGF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KSkKIHsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtODIsNyArODMsNyBAQCBjbGFzcyBXZWJMb2NrUmVnaXN0cnk7CiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdl
Q29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiwg
UmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJl
ZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYsIFJl
ZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVmPFByb2dy
ZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlx
dWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVmPFdlYkxv
Y2tSZWdpc3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3Rv
cmFnZVByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQsIFVuaXF1ZVJl
ZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiwgVW5pcXVlUmVmPExpYldl
YlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYsIFJlZjxVc2VyQ29u
dGVudFByb3ZpZGVyPiYmLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYsIFJlZjxDb29raWVKYXI+
JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxGcmFtZUxv
YWRlckNsaWVudD4mJiwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYsIFVu
aXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk+JiYsIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxl
cj4mJiwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1vZGVsUGxheWVy
UHJvdmlkZXI+JiYsICBVbmlxdWVSZWY8QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+JiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJhdGlvbigpOwogICAgIFBhZ2VDb25maWd1cmF0
aW9uKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogCkBAIC0xNTIsNiArMTUzLDcgQEAgcHVibGljOgog
ICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKIAogICAgIFVu
aXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOworICAgIFVu
aXF1ZVJlZjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1lbnRDbGllbnQ7
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JVVEkoY29uc3QgU3Ry
aW5nJik7CiAgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmKTsKKworICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9uc0ltYWdlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyODkxMzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQAogI2VuZGlmCiAKIE9CSkNfQ0xBU1MgQ0lDb250ZXh0OworT0JK
Q19DTEFTUyBVSUltYWdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC02Nyw2ICs2
OCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBzeXN0ZW1G
b2N1c1JpbmdDb2xvcigpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxV
SUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmKTsK
KwogcHJpdmF0ZToKICAgICBib29sIGNhblBhaW50KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFNl
dHRpbmdzJikgY29uc3QgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4MCw3ICsxNjgw
LDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKICAgICBCT09MIGhhc1Byb2dyZXNz
IHsgTk8gfTsKICAgICBmbG9hdCBwcm9ncmVzczsKIAotICAgIFJldGFpblB0cjxVSUltYWdlPiBp
Y29uOworICAgIFJlZlB0cjxJbWFnZT4gaWNvbjsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFp
bEljb247CiAKICAgICBpbnQgYmFzZWxpbmUgeyAwIH07CkBAIC0xNzkyLDIxICsxNzkyLDE4IEBA
IHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCAKICAgICByZXR1cm4gdmFs
aWRQcm9ncmVzczsKIH0KIAotc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNo
bWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNpemUp
CitSZXRhaW5QdHI8VUlJbWFnZT4gUmVuZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlcklu
c3RhbmNlKCkgaW5pdF0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
Ci0gICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5h
dHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1l
KCk7Ci0KLSAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBmaWxlTmFtZSA9IGF0
dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VGl0bGUoKTsKLSAgICBbZG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpmaWxlTmFtZV07CisgICAgYXV0byBu
YW1lID0gZmlsZU5hbWU7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBuYW1lID0g
dGl0bGU7CisKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpuYW1l
XTsKIAotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0
dGFjaG1lbnRUeXBlKSkKQEAgLTE4NjcsOCArMTg2NCw4IEBAIFJlbmRlckF0dGFjaG1lbnRJbmZv
OjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAm
JiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25TaXplOwotICAgICAgICBp
Y29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNpemUpOworICAgICAgICBG
bG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvblNp
emUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29u
KCk7CiAgICAgICAgIHRodW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50
KCkudGh1bWJuYWlsKCk7CiAgICAgICAgIGlmICh0aHVtYm5haWxJY29uKQogICAgICAgICAgICAg
aWNvblNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodGh1bWJuYWls
SWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlvKCksIEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50SWNv
blNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKQEAgLTE5MTMsNyArMTkxMCw3IEBA
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3MKICAgICBpZiAoaW5mby50
aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRodW1ibmFpbEljb247CiAg
ICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLmlj
b247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAko
cmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgLy8g
QSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5lZCBkb2N1bWVudC4KICAgICBOU1ZpZXcq
IGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8TlNJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
Mjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDMgQEAgaW50IFJlbmRlclRoZW1lTWFjOjph
dHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBsYXlvdXQuYmFzZWxpbmU7CiB9CiAKK1Jl
dGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFy
dC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJh
cHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvclVUSShrVVRUeXBlRm9sZGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJ
bWFnZSgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBTdHJpbmcgVVRJOworICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRV
VEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBl
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlw
ZShhdHRhY2htZW50VHlwZSk7CisKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpj
cmVhdGVJY29uRm9yVVRJKFVUSSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGljb24tPm5zSW1h
Z2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxl
TmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgfQorCisg
ICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4odGl0
bGUpIHBhdGhFeHRlbnNpb25dOworICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgeworICAg
ICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmls
ZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIH0K
KworICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0
YSIpKQorICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIAorICAgIHJldHVybiBu
dWxscHRyOworfQorCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuZChj
b25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAobGF5b3V0LnN0eWxlID09
IEF0dGFjaG1lbnRMYXlvdXRTdHlsZTo6Tm9uU2VsZWN0ZWQpCkBAIC0yNTk1LDUyICsyNjMyLDI3
IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW4KICAgICB9CiB9CiAK
LXN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNo
bWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2ht
ZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKLSAgICAKLSAgICBpZiAo
IWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9s
ZGVyIikpIHsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIFVUSTsKLSAgICAg
ICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKLSAgICAgICAgICAgICAg
ICBVVEkgPSBhdHRhY2htZW50VHlwZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwotCi0gICAgICAgICAgICBp
ZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBpY29uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKEZpbGUqIGZpbGUg
PSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlLT5wYXRoKCkgfSkpCi0g
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqZmlsZUV4dGVu
c2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVt
ZW50KCkuYXR0YWNobWVudFRpdGxlKCkpIHBhdGhFeHRlbnNpb25dOwotICAgIGlmIChmaWxlRXh0
ZW5zaW9uLmxlbmd0aCkgewotICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCi0gICAgICAgICAgICByZXR1cm4gaWNv
bjsKLSAgICB9Ci0KLSAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRh
dGEiKTsKLX0KLQogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1l
bnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAoYXV0byB0aHVtYm5haWxJY29uID0gYXR0YWNo
bWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbCgpKSB7CiAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCp0aHVtYm5haWxJY29uLCBsYXlvdXQuaWNvblJlY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQp
OworICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1l
bnQoKS5hdHRhY2htZW50VHlwZSgpOworICAgIGF1dG8gaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNo
bWVudEVsZW1lbnQoKS5pY29uKCk7CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWNvbi0+cGFpbnQoY29udGV4dCwgbGF5b3V0Lmljb25SZWN0KTsKKworICAgIGlmIChjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuc0lt
YWdlID0gaWNvbi0+bnNJbWFnZSgpOworICAgIGlmICghbnNJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQyhj
b250ZXh0KTsKKworICAgIFtuc0ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25SZWN0IGZyb21S
ZWN0Ok5TTWFrZVJlY3QoMCwgMCwgW25zSW1hZ2Ugc2l6ZV0ud2lkdGgsIFtuc0ltYWdlIHNpemVd
LmhlaWdodCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0
aW9uOjEuMGZdOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4sIGZsb2F0PiBj
cmVhdGVBdHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvciwg
Y29uc3QgQXR0YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
OTY4MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDIgQEAKKzIwMjItMDItMTEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmb3IgcmVu
ZGVyaW5nIG9mIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8g
dGhlIEljb24gU2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHNo
b3VsZCBzZW5kIHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudCB0
byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuIFRoZSBpY29uIHdp
bGwgYmUgc2VudCB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gdGhlIGF0dGFjaG1lbnQK
KyAgICAgICAgYXR0cmlidXRlcyBhcmUgdXBkYXRlZCwgb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyBoYXMgcmVxdWVzdGVkIHRoZSBpY29uLiBUaGUgbmV3IGNsaWVudCBjbGFzcyBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudCBpcworICAgICAgICByZXNwb25zaWJsZSBmb3IgcmVxdWVzdGluZyBp
Y29ucyBmcm9tIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZUF0dGFjaG1lbnRJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZEluc2VydEF0dGFjaG1lbnRX
aXRoSWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTAyLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gW0NHXSBBZGQgYW4gQXJndW1lbnRDb2RlciBmb3Ig
Q0ZDaGFyYWN0ZXJTZXRSZWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5MTM0KQorKysg
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDYgKzc5NCw3
IEBAIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29sb3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIwMiw2ICsxMDIwMiwxOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFnZUNsaWVudCgp
LndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5mbykpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
YXV0byBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRs
ZSwgc2l6ZSk7CisgICAgaWYgKGljb24pCisgICAgICAgIGljb24tPmNyZWF0ZUhhbmRsZShoYW5k
bGUpOworI2VuZGlmCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVu
dEljb24oaWRlbnRpZmllciwgaGFuZGxlLCBzaXplKSk7Cit9CisKIFJlZlB0cjxBUEk6OkF0dGFj
aG1lbnQ+IFdlYlBhZ2VQcm94eTo6YXR0YWNobWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIGlmIChpZGVudGlmaWVyLmlzRW1wdHkoKSkKQEAg
LTEwMjE5LDExICsxMDIzMSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVu
dChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKKyAgICByZXF1ZXN0QXR0YWNobWVudEljb24oYXR0YWNobWVudC5p
ZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFt
ZSgpLCBlbXB0eVN0cmluZygpKTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigp
LCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBl
KCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGF0dGFjaG1l
bnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiAjaWYg
SEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mIGJpdG1hcCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mIGJpdG1hcCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwMjMyLDcgKzEwMjQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRJY29uKAogICAgIGlmIChiaXRtYXApCiAgICAgICAgIGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGlkZW50aWZpZXIsIGhhbmRsZSkpOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTc1MSw3ICsxNzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRp
ZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKTsKICNpZiBIQVZF
KFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCi0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYpOworICAgIHZvaWQg
dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhG
aWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyICosIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVx
dWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKik7
CkBAIC0yNTI0LDYgKzI1MjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbGxB
dHRhY2htZW50cygpOwogCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVi
b2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworCisgICAgdm9pZCByZXF1
ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKKyAgICBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydFBh
Z2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVy
KFN0cmluZyBpZGVudGlmaWVyKQogICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyYWxpemVkRGF0YSkgU3luY2hyb25vdXMKICAgICBX
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBpbmZvKQorICAgIFJlcXVlc3RBdHRhY2htZW50SWNvbihTdHJpbmcg
aWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgcGF0aCwgU3RyaW5nIHRpdGxl
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNp
b24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDEyIEBAIFNPRlRfTElOS19DTEFT
U19PUFRJT05BTChTeW5hcHNlLCBTWU5vdGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNl
bmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
VGhlbWVJT1MuaD4KKyNlbHNlCisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lTWFjLmg+Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmls
dGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAgLTI4Nyw2ICsyOTMsNDEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZQogICAgIHRvQXR0YWNobWVudC0+c2V0RmlsZVdyYXBw
ZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkpOwogfQogCitzdGF0aWMgUmVmUHRyPFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29h
SW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKK3sKKyAg
ICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBzaXplXSk7CisgICAgYXV0
byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9J
bnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0
dGluZ1NpemUgfSkpOworICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKKworICAgIFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247
CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJp
dG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0Nv
bnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3RdOworI2VsaWYgVVNF
KEFQUEtJVCkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVy
b1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9u
OjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07CisjZW5kaWYKKworICAgIHJldHVybiBi
aXRtYXA7Cit9CisKK1JlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gV2ViUGFnZVByb3h5
OjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmIHNpemUpCit7Cisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGltYWdlID0gUmVuZGVyVGhlbWVJT1M6
Omljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUsIHNpemUpOwor
I2Vsc2UKKyAgICBhdXRvIGltYWdlID0gUmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnZl
cnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCksIFdlYkNvcmU6OkludFNpemUoNDAw
LCA0MDApKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpAQCAtNDk3LDMxICs1MzgsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9P
S19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRo
dW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVk
SW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVt
Ym5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVz
dWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCks
IGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0
KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdl
IGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBk
cmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21w
b3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMg
aGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2Fk
T3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxv
Y2s6XnsKQEAgLTUzMCw3ICs1NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1i
bmFpbFdpdGhPCiAgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRm
b3JtSW1hZ2VUb0JpdG1hcChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUo
NDAwLCA0MDApKTsKICAgICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRl
bnRpZmllciwgY29udmVydGVkSW1hZ2UpOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwog
ICAgIH1dOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2
ICs2Mzc4LDggQEAKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5
QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRi
b3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFC
NyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZE
NzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4
RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkuaDsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA3NjQsNiArMTA3NjYsOCBAQAogCQkJCUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAv
KiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMw
MDk5MEUyNiAvKiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1
MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2
RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAq
LywKKwkJCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaCAqLywKIAkJCQk0NkVFMjg0NzI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLywKIAkJCQk0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyog
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAw
QUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
OjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAg
IG1fcGFnZS5yZXF1ZXN0QXR0YWNobWVudEljb24oaWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfldlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV9wYWdl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5oIgpAQCAtNTg1LDcgKzU4Niw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViTG9ja1JlZ2lzdHJ5KCksCiAgICAgICAgIFdlYlBlcm1pc3Npb25Db250cm9sbGVyOjpj
cmVhdGUoKnRoaXMpLAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3JhZ2VQcm92aWRlcj4o
KSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcykK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcyksCisg
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ+KCp0aGlzKQog
ICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9t
ZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC03MzA3LDcgKzcz
MDksNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzCiAgICAgY2Fs
bGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1i
bmFpbEhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRo
dW1ibmFpbEhhbmRsZSkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVs
ZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVsbCgpID8g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0cikKQEAg
LTczMTUsNiArNzMxNywyNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0CiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb25I
YW5kbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoYXV0byBh
dHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkg
eworICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaWNvbiA9ICFpY29uSGFuZGxl
LmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRy
KQorICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgp
LCBzaXplKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBT
dHJpbmcgZmlsZU5hbWU7CisgICAgICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC0+Zmls
ZSgpKQorICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5wYXRoKCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIs
IGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGZpbGVOYW1lLCBhdHRhY2htZW50LT5hdHRh
Y2htZW50VGl0bGUoKSkpOworICAgIH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVu
dD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50IGVs
ZW1lbnRzIGluIHN1YmZyYW1lcyB0b28gYXMgd2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMx
MCw3ICsxMzEwLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAg
ICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwor
ICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw4IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBj
b250ZW50VHlwZSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5j
bG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0
cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJu
YWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoU3RyaW5nIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisg
ICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaWNvbiwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTExICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25z
IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVu
dCBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbmV3IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQgdG8gcGFnZSBjb25maWd1cmF0
aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorCiAyMDIy
LTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgZml4IGJ1aWxkIHdpdGggdGhlIGxhdGVzdCBpT1MgU0RLLgpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjg5MTM0KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsNiArMTU0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlk
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CkBAIC0xNTYwLDcgKzE1NjEs
OCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGdl
dE9yQ3JlYXRlV2ViTG9ja1JlZ2lzdHJ5KFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZF0pLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVy
OjpjcmVhdGUoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQ
cm92aWRlcj4oKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudD4oKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNs
aWVudChzZWxmKTsK
</data>
<flag name="commit-queue"
          id="478610"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451769</attachid>
            <date>2022-02-11 19:05:32 -0800</date>
            <delta_ts>2022-02-14 09:41:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220211190531.patch</filename>
            <type>text/plain</type>
            <size>59559</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTExICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdl
cyB0byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUlj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJh
dGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTExICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdy
YW1tYXIgY2hlY2tpbmcgb24gTWFjIENhdGFseXN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzAyLDcgKzQzMDIsNyBAQAogCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgzOTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4N0Ew
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzQjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQ0VBNDg4MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0MTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLzsgfTsKKwkJQkNFQTQ4ODcw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGhlbWVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODRGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQu
aCAqLzsgfTsKQEAgLTUyNzUsNiArNTI3NSw4IEBACiAJCUUzNTgyQzI4MjUyN0Y2NjkwMEQxQjc5
MCAvKiBXZWJDb3JlSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1ODJDMjYyNTI3RjY2ODAwRDFCNzkwIC8qIFdlYkNvcmVKSVRP
cGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1QjkwN0YyM0Y2MEE1MDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA3QzIz
RjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzY0MzIxQzI1RDM3QTY3MDBGOTBF
MkEgLyogTW9kdWxlU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxQjI3
QjcwQjIzMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAyMDI3QjcyMDEzMDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8q
IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9k
ZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNG
MDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5
NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJE
MjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzExLDYg
KzE3MzEzLDggQEAKIAkJRTM1QjkwN0MyM0Y2MDY3NzAwMDAxMUZGIC8qIExvY2FsaXplZERldmlj
ZU1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZERldmlj
ZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUI5MDdFMjNGNjA2Nzcw
MDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvY2FsaXplZERldmljZU1vZGVsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZVNjcmlwdExv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQjI3QjcwQjIzMDA2
NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcw
MUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzk5Miw2ICsyMzk5Niw3IEBACiAJCQkJNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCUJD
RjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCiAJCQkJ
Q0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAor
CQkJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5o
ICovLAogCQkJCUM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi8s
CiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCAqLywKIAkJCQk0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xs
ZXIuaCAqLywKQEAgLTI0MDYzLDYgKzI0MDY4LDcgQEAKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBG
RjZGMkQgLyogRHJhZ1N0YXRlLmggKi8sCiAJCQkJOTNENkI3QTYyNTUxRDNFRDAwNThERDNBIC8q
IER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovLAogCQkJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLywKKwkJCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCTkzQzA5QTgw
MEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIw
NjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAqLywKIAkJCQlFMEZFRjM3MUIyN0M1M0VB
QzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwICovLApAQCAtMzM0NjEsNiArMzM0NjcsNyBAQAog
CQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVh
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDFGMjdCNzIw
MEMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEMTM1MjUyMjk0QTMzQzAwODI3NDAxIC8qIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBB
dHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
cmlidXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0Mzc5LDYgKzM0Mzg2LDcgQEAKIAkJCQlGQkRC
NjE5RjE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlB
NTBEMDBEOEJBMDBCQjgyNUMgLyogRW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTI2NCw2ICsyNjUsMjkgQEAg
dm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibgogICAgICAgICByZW5kZXJl
ci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
SWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGljb25TaXplKQoreworICAgIG1faWNvbiA9IGljb247CisgICAgbV9pY29uU2l6ZSA9IGljb25T
aXplOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKK30KKworUmVmUHRyPEltYWdlPiBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6Omljb24oKSBjb25zdAoreworICAgIGlmICghbV9pY29uKSB7CisgICAgICAg
IGlmIChkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5h
dHRhY2htZW50RWxlbWVudENsaWVudCgpLnJlcXVlc3RBdHRhY2htZW50SWNvbih1bmlxdWVJZGVu
dGlmaWVyKCkpOworICAgIH0KKyAgICByZXR1cm4gbV9pY29uOworfQorCitGbG9hdFNpemUgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjppY29uU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNv
blNpemU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUljb24oY29uc3QgUmVmUHRyPEltYWdlPiYgaWNv
biwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2Rl
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250
YWluZXJOb2RlJikgZmluYWw7CkBAIC02OCw5ICs2OSwxMSBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0
dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5
cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBj
b25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1h
Z2U+IHRodW1ibmFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRy
PEltYWdlPiBpY29uKCkgY29uc3Q7CisgICAgRmxvYXRTaXplIGljb25TaXplKCkgY29uc3Q7CiAg
ICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVyZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTkx
LDYgKzk0LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwogICAgIFN0cmlu
ZyBtX3VuaXF1ZUlkZW50aWZpZXI7CiAgICAgUmVmUHRyPEltYWdlPiBtX3RodW1ibmFpbDsKKyAg
ICBSZWZQdHI8SW1hZ2U+IG1faWNvbjsKKyAgICBGbG9hdFNpemUgbV9pY29uU2l6ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IkR1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFn
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIkVtcHR5RnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgpA
QCAtMTIyMSw3ICsxMjIyLDggQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRQogICAgICAgICBFbXB0eVdlYkxvY2tSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAgICAgIER1
bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAogICAgICAgICBtYWtlVW5pcXVlUmVm
PER1bW15U3RvcmFnZVByb3ZpZGVyPigpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15TW9kZWxQbGF5
ZXJQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpLAogICAgIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlD
aHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVk
ZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJikg
eyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODkxMzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRnJhbWVSYXRlLmgiCiAjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgi
CisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENhY2hlLmgiCkBAIC0zNDMsNiArMzQ0LDcg
QEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV9wZXJt
aXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBlcm1pc3Npb25Db250
cm9sbGVyKSkKICAgICAsIG1fc3RvcmFnZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24uc3RvcmFnZVByb3ZpZGVyKSkKICAgICAsIG1fbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxheWVyUHJvdmlkZXIpKQorICAgICwgbV9hdHRhY2ht
ZW50RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50KSkKIHsKICAgICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgY2xhc3MgQXBwbGVQYXlBTVNV
SVBheW1lbnRIYW5kbGVyOwogY2xhc3MgQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xh
c3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7
CitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjsKIGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKIGNsYXNzIEJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTsKQEAgLTkyOSw2ICs5MzAsMTAgQEAgcHVibGljOgogCiAgICAgTW9kZWxQ
bGF5ZXJQcm92aWRlciYgbW9kZWxQbGF5ZXJQcm92aWRlcigpOwogCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKyAgICBBdHRhY2htZW50RWxlbWVudENsaWVudCYgYXR0YWNobWVudEVs
ZW1lbnRDbGllbnQoKSB7IHJldHVybiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmdldCgpOyB9
CisjZW5kaWYKKwogI2lmIFVTRShBVFNQSSkKICAgICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiBh
Y2Nlc3NpYmlsaXR5Um9vdE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVJv
b3RPYmplY3Q7IH0KICAgICB2b2lkIHNldEFjY2Vzc2liaWxpdHlSb290T2JqZWN0KEFjY2Vzc2li
aWxpdHlSb290QXRzcGkqIHJvb3RPYmplY3QpIHsgbV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCA9
IHJvb3RPYmplY3Q7IH0KQEAgLTEyODUsNiArMTI5MCw4IEBAIHByaXZhdGU6CiAgICAgVW5pcXVl
UmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVlUmVmPE1v
ZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorICAgIFVuaXF1ZVJl
ZjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gbV9hdHRhY2htZW50RWxlbWVudENsaWVudDsKKwog
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB1c2luZyBDYWNoZWRUZXh0UmVjb2duaXRp
b25SZXN1bHQgPSBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRSZWN0PjsKICAg
ICBXZWFrSGFzaE1hcDxIVE1MRWxlbWVudCwgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0PiBt
X3RleHRSZWNvZ25pdGlvblJlc3VsdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIK
ICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC02Myw3
ICs2NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246OlBh
Z2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRv
ckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92
aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBS
ZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2Vy
Q29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENs
aWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVu
aXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBV
bmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBV
bmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQ
cm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVs
UmVnaXN0cnksIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYgd2ViTG9ja1JlZ2lzdHJ5LCBSZWY8UGVy
bWlzc2lvbkNvbnRyb2xsZXI+JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9y
YWdlUHJvdmlkZXI+JiYgc3RvcmFnZVByb3ZpZGVyLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92
aWRlcj4mJiBtb2RlbFBsYXllclByb3ZpZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25m
aWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVu
dD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwg
VW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2Fj
aGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVu
dFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4m
JiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJl
ZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVS
ZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVS
ZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRl
ciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0
cnksIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYgd2ViTG9ja1JlZ2lzdHJ5LCBSZWY8UGVybWlzc2lv
bkNvbnRyb2xsZXI+JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJv
dmlkZXI+JiYgc3RvcmFnZVByb3ZpZGVyLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4m
JiBtb2RlbFBsYXllclByb3ZpZGVyLCBVbmlxdWVSZWY8QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+
JiYgYXR0YWNobWVudEVsZW1lbnRDbGllbnQpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tldFBy
b3ZpZGVyKFdURk1vdmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtODEsNiArODIsNyBAQCBQYWdlQ29u
ZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBwZXJtaXNzaW9uQ29udHJv
bGxlcihXVEZNb3ZlKHBlcm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRl
cihXVEZNb3ZlKHN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdU
Rk1vdmUobW9kZWxQbGF5ZXJQcm92aWRlcikpCisgICAgLCBhdHRhY2htZW50RWxlbWVudENsaWVu
dChXVEZNb3ZlKGF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KSkKIHsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtODIsNyArODMsNyBAQCBjbGFzcyBXZWJMb2NrUmVnaXN0cnk7CiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdl
Q29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiwg
UmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJl
ZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYsIFJl
ZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVmPFByb2dy
ZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlx
dWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVmPFdlYkxv
Y2tSZWdpc3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3Rv
cmFnZVByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQsIFVuaXF1ZVJl
ZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiwgVW5pcXVlUmVmPExpYldl
YlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYsIFJlZjxVc2VyQ29u
dGVudFByb3ZpZGVyPiYmLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYsIFJlZjxDb29raWVKYXI+
JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxGcmFtZUxv
YWRlckNsaWVudD4mJiwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYsIFVu
aXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk+JiYsIFJlZjxXZWJMb2NrUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxl
cj4mJiwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1vZGVsUGxheWVy
UHJvdmlkZXI+JiYsICBVbmlxdWVSZWY8QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+JiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJhdGlvbigpOwogICAgIFBhZ2VDb25maWd1cmF0
aW9uKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogCkBAIC0xNTIsNiArMTUzLDcgQEAgcHVibGljOgog
ICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKIAogICAgIFVu
aXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOworICAgIFVu
aXF1ZVJlZjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1lbnRDbGllbnQ7
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JVVEkoY29uc3QgU3Ry
aW5nJik7CiAgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lv
bihjb25zdCBTdHJpbmcmKTsKKworICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9uc0ltYWdlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyODkxMzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsNyBAQAogI2VuZGlmCiAKIE9CSkNfQ0xBU1MgQ0lDb250ZXh0OworT0JK
Q19DTEFTUyBVSUltYWdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC02Nyw2ICs2
OCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBzeXN0ZW1G
b2N1c1JpbmdDb2xvcigpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxV
SUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmKTsK
KwogcHJpdmF0ZToKICAgICBib29sIGNhblBhaW50KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFNl
dHRpbmdzJikgY29uc3QgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4MCw3ICsxNjgw
LDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKICAgICBCT09MIGhhc1Byb2dyZXNz
IHsgTk8gfTsKICAgICBmbG9hdCBwcm9ncmVzczsKIAotICAgIFJldGFpblB0cjxVSUltYWdlPiBp
Y29uOworICAgIFJlZlB0cjxJbWFnZT4gaWNvbjsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFp
bEljb247CiAKICAgICBpbnQgYmFzZWxpbmUgeyAwIH07CkBAIC0xNzkyLDIxICsxNzkyLDE4IEBA
IHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCAKICAgICByZXR1cm4gdmFs
aWRQcm9ncmVzczsKIH0KIAotc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNo
bWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNpemUp
CitSZXRhaW5QdHI8VUlJbWFnZT4gUmVuZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlcklu
c3RhbmNlKCkgaW5pdF0pOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
Ci0gICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5h
dHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1l
KCk7Ci0KLSAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBmaWxlTmFtZSA9IGF0
dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VGl0bGUoKTsKLSAgICBbZG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpmaWxlTmFtZV07CisgICAgYXV0byBu
YW1lID0gZmlsZU5hbWU7CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBuYW1lID0g
dGl0bGU7CisKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpuYW1l
XTsKIAotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0
dGFjaG1lbnRUeXBlKSkKQEAgLTE4NjcsOCArMTg2NCw4IEBAIFJlbmRlckF0dGFjaG1lbnRJbmZv
OjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAm
JiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25TaXplOwotICAgICAgICBp
Y29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNpemUpOworICAgICAgICBG
bG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvblNp
emUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29u
KCk7CiAgICAgICAgIHRodW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50
KCkudGh1bWJuYWlsKCk7CiAgICAgICAgIGlmICh0aHVtYm5haWxJY29uKQogICAgICAgICAgICAg
aWNvblNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodGh1bWJuYWls
SWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlvKCksIEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50SWNv
blNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKQEAgLTE5MTMsNyArMTkxMCw3IEBA
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3MKICAgICBpZiAoaW5mby50
aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLnRodW1ibmFpbEljb247CiAg
ICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBpY29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAgICAgICBpY29uSW1hZ2UgPSBpbmZvLmlj
b247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVj
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAko
cmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgLy8g
QSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5lZCBkb2N1bWVudC4KICAgICBOU1ZpZXcq
IGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmplY3QmKSBjb25zdDsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8TlNJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
Mjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDMgQEAgaW50IFJlbmRlclRoZW1lTWFjOjph
dHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBsYXlvdXQuYmFzZWxpbmU7CiB9CiAKK1Jl
dGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFy
dC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJh
cHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvclVUSShrVVRUeXBlRm9sZGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJ
bWFnZSgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBTdHJpbmcgVVRJOworICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRV
VEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBl
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlw
ZShhdHRhY2htZW50VHlwZSk7CisKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpj
cmVhdGVJY29uRm9yVVRJKFVUSSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGljb24tPm5zSW1h
Z2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxl
TmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgfQorCisg
ICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4odGl0
bGUpIHBhdGhFeHRlbnNpb25dOworICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgeworICAg
ICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmls
ZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIH0K
KworICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0
YSIpKQorICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIAorICAgIHJldHVybiBu
dWxscHRyOworfQorCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuZChj
b25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAobGF5b3V0LnN0eWxlID09
IEF0dGFjaG1lbnRMYXlvdXRTdHlsZTo6Tm9uU2VsZWN0ZWQpCkBAIC0yNTk1LDUyICsyNjMyLDI3
IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW4KICAgICB9CiB9CiAK
LXN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNo
bWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2ht
ZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKLSAgICAKLSAgICBpZiAo
IWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9s
ZGVyIikpIHsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIFVUSTsKLSAgICAg
ICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKLSAgICAgICAgICAgICAg
ICBVVEkgPSBhdHRhY2htZW50VHlwZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOwotCi0gICAgICAgICAgICBp
ZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBpY29uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKEZpbGUqIGZpbGUg
PSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlLT5wYXRoKCkgfSkpCi0g
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqZmlsZUV4dGVu
c2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVt
ZW50KCkuYXR0YWNobWVudFRpdGxlKCkpIHBhdGhFeHRlbnNpb25dOwotICAgIGlmIChmaWxlRXh0
ZW5zaW9uLmxlbmd0aCkgewotICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCi0gICAgICAgICAgICByZXR1cm4gaWNv
bjsKLSAgICB9Ci0KLSAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRh
dGEiKTsKLX0KLQogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1l
bnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAoYXV0byB0aHVtYm5haWxJY29uID0gYXR0YWNo
bWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbCgpKSB7CiAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCp0aHVtYm5haWxJY29uLCBsYXlvdXQuaWNvblJlY3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQp
OworICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1l
bnQoKS5hdHRhY2htZW50VHlwZSgpOworICAgIGF1dG8gaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNo
bWVudEVsZW1lbnQoKS5pY29uKCk7CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWNvbi0+cGFpbnQoY29udGV4dCwgbGF5b3V0Lmljb25SZWN0KTsKKworICAgIGlmIChjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuc0lt
YWdlID0gaWNvbi0+bnNJbWFnZSgpOworICAgIGlmICghbnNJbWFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQyhj
b250ZXh0KTsKKworICAgIFtuc0ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25SZWN0IGZyb21S
ZWN0Ok5TTWFrZVJlY3QoMCwgMCwgW25zSW1hZ2Ugc2l6ZV0ud2lkdGgsIFtuc0ltYWdlIHNpemVd
LmhlaWdodCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0
aW9uOjEuMGZdOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4sIGZsb2F0PiBj
cmVhdGVBdHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvciwg
Y29uc3QgQXR0YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
OTY4MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDIgQEAKKzIwMjItMDItMTEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmb3IgcmVu
ZGVyaW5nIG9mIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8g
dGhlIEljb24gU2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHNo
b3VsZCBzZW5kIHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudCB0
byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuIFRoZSBpY29uIHdp
bGwgYmUgc2VudCB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gdGhlIGF0dGFjaG1lbnQK
KyAgICAgICAgYXR0cmlidXRlcyBhcmUgdXBkYXRlZCwgb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cyBoYXMgcmVxdWVzdGVkIHRoZSBpY29uLiBUaGUgbmV3IGNsaWVudCBjbGFzcyBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudCBpcworICAgICAgICByZXNwb25zaWJsZSBmb3IgcmVxdWVzdGluZyBp
Y29ucyBmcm9tIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZUF0dGFjaG1lbnRJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZEluc2VydEF0dGFjaG1lbnRX
aXRoSWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTAyLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gW0NHXSBBZGQgYW4gQXJndW1lbnRDb2RlciBmb3Ig
Q0ZDaGFyYWN0ZXJTZXRSZWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5MTM0KQorKysg
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDYgKzc5NCw3
IEBAIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29sb3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIwMiw2ICsxMDIwMiwxOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFnZUNsaWVudCgp
LndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5mbykpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
YXV0byBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRs
ZSwgc2l6ZSk7CisgICAgaWYgKGljb24pCisgICAgICAgIGljb24tPmNyZWF0ZUhhbmRsZShoYW5k
bGUpOworI2VuZGlmCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVu
dEljb24oaWRlbnRpZmllciwgaGFuZGxlLCBzaXplKSk7Cit9CisKIFJlZlB0cjxBUEk6OkF0dGFj
aG1lbnQ+IFdlYlBhZ2VQcm94eTo6YXR0YWNobWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIGlmIChpZGVudGlmaWVyLmlzRW1wdHkoKSkKQEAg
LTEwMjE5LDExICsxMDIzMSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVu
dChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKIHsKKyAgICByZXF1ZXN0QXR0YWNobWVudEljb24oYXR0YWNobWVudC5p
ZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFt
ZSgpLCBlbXB0eVN0cmluZygpKTsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigp
LCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBl
KCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGF0dGFjaG1l
bnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiAjaWYg
SEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mIGJpdG1hcCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mIGJpdG1hcCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwMjMyLDcgKzEwMjQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRJY29uKAogICAgIGlmIChiaXRtYXApCiAgICAgICAgIGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGlkZW50aWZpZXIsIGhhbmRsZSkpOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTc1MSw3ICsxNzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRp
ZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKTsKICNpZiBIQVZF
KFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCi0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYpOworICAgIHZvaWQg
dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhG
aWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyICosIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVx
dWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKik7
CkBAIC0yNTI0LDYgKzI1MjQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbGxB
dHRhY2htZW50cygpOwogCiAgICAgdm9pZCB3cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVi
b2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpOworCisgICAgdm9pZCByZXF1
ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKKyAgICBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydFBh
Z2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVy
KFN0cmluZyBpZGVudGlmaWVyKQogICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyYWxpemVkRGF0YSkgU3luY2hyb25vdXMKICAgICBX
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBpbmZvKQorICAgIFJlcXVlc3RBdHRhY2htZW50SWNvbihTdHJpbmcg
aWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgcGF0aCwgU3RyaW5nIHRpdGxl
KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNp
b24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDEyIEBAIFNPRlRfTElOS19DTEFT
U19PUFRJT05BTChTeW5hcHNlLCBTWU5vdGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNl
bmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
VGhlbWVJT1MuaD4KKyNlbHNlCisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lTWFjLmg+Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmls
dGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAgLTI4Nyw2ICsyOTMsNDEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZQogICAgIHRvQXR0YWNobWVudC0+c2V0RmlsZVdyYXBw
ZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkpOwogfQogCitzdGF0aWMgUmVmUHRyPFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29h
SW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKK3sKKyAg
ICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBzaXplXSk7CisgICAgYXV0
byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9J
bnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0
dGluZ1NpemUgfSkpOworICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKKworICAgIFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247
CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJp
dG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0Nv
bnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3RdOworI2VsaWYgVVNF
KEFQUEtJVCkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVy
b1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9u
OjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07CisjZW5kaWYKKworICAgIHJldHVybiBi
aXRtYXA7Cit9CisKK1JlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gV2ViUGFnZVByb3h5
OjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmIHNpemUpCit7Cisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBhdXRvIGltYWdlID0gUmVuZGVyVGhlbWVJT1M6
Omljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUsIHNpemUpOwor
I2Vsc2UKKyAgICBhdXRvIGltYWdlID0gUmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnZl
cnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCksIFdlYkNvcmU6OkludFNpemUoNDAw
LCA0MDApKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQpAQCAtNDk3LDMxICs1MzgsNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9P
S19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRo
dW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVk
SW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVt
Ym5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVz
dWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCks
IGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0
KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdl
IGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBk
cmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21w
b3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMg
aGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2Fk
T3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxv
Y2s6XnsKQEAgLTUzMCw3ICs1NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1i
bmFpbFdpdGhPCiAgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRm
b3JtSW1hZ2VUb0JpdG1hcChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUo
NDAwLCA0MDApKTsKICAgICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRl
bnRpZmllciwgY29udmVydGVkSW1hZ2UpOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwog
ICAgIH1dOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2
ICs2Mzc4LDggQEAKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5
QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRi
b3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFC
NyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZE
NzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4
RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkuaDsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA3NjQsNiArMTA3NjYsOCBAQAogCQkJCUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAv
KiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMw
MDk5MEUyNiAvKiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1
MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2
RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAq
LywKKwkJCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaCAqLywKIAkJCQk0NkVFMjg0NzI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLywKIAkJCQk0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyog
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAw
QUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
OjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAg
IG1fcGFnZS5yZXF1ZXN0QXR0YWNobWVudEljb24oaWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfldlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV9wYWdl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5oIgpAQCAtNTg1LDcgKzU4Niw4IEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViTG9ja1JlZ2lzdHJ5KCksCiAgICAgICAgIFdlYlBlcm1pc3Npb25Db250cm9sbGVyOjpj
cmVhdGUoKnRoaXMpLAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3JhZ2VQcm92aWRlcj4o
KSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcykK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcyksCisg
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ+KCp0aGlzKQog
ICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9t
ZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC03MzA3LDcgKzcz
MDksNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzCiAgICAgY2Fs
bGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1i
bmFpbEhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRo
dW1ibmFpbEhhbmRsZSkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVs
ZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVsbCgpID8g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0cikKQEAg
LTczMTUsNiArNzMxNywyNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0CiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb25I
YW5kbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoYXV0byBh
dHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkg
eworICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaWNvbiA9ICFpY29uSGFuZGxl
LmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRy
KQorICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgp
LCBzaXplKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBT
dHJpbmcgZmlsZU5hbWU7CisgICAgICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC0+Zmls
ZSgpKQorICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5wYXRoKCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIs
IGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGZpbGVOYW1lLCBhdHRhY2htZW50LT5hdHRh
Y2htZW50VGl0bGUoKSkpOworICAgIH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVu
dD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50IGVs
ZW1lbnRzIGluIHN1YmZyYW1lcyB0b28gYXMgd2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMx
MCw3ICsxMzEwLDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAg
ICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwor
ICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw4IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBj
b250ZW50VHlwZSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5j
bG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0
cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJu
YWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoU3RyaW5nIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisg
ICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaWNvbiwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTExICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25z
IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVu
dCBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbmV3IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQgdG8gcGFnZSBjb25maWd1cmF0
aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorCiAyMDIy
LTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgZml4IGJ1aWxkIHdpdGggdGhlIGxhdGVzdCBpT1MgU0RLLgpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjg5MTM0KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsNiArMTU0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlk
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0
b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CkBAIC0xNTYwLDcgKzE1NjEs
OCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGdl
dE9yQ3JlYXRlV2ViTG9ja1JlZ2lzdHJ5KFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZF0pLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVy
OjpjcmVhdGUoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQ
cm92aWRlcj4oKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudD4oKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNs
aWVudChzZWxmKTsKQEAgLTE4NDIsNyArMTg0NCw4IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6KE4KICAgICAgICAgZ2V0T3JDcmVhdGVXZWJMb2NrUmVnaXN0cnkoW1tz
ZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAgIFdlYkNv
cmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAogICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAotICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQorICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKSwKKyAgICAgICAg
bWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50PigpCiAg
ICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21l
Q2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk2ODkpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0w
Mi0xMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vu
ZCBpY29ucyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZvciByZW5kZXJpbmcgb2YgdGhlIGF0
dGFjaG1lbnQgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG5ldyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IHRvIHBhZ2UgY29u
ZmlndXJhdGlvbi4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
aW5pdFdpdGhGcmFtZSk6CisKIDIwMjItMDItMDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRm9udENhc2NhZGU6OmZvbnRNZXRyaWNz
KCkgYW5kIFJlbmRlclN0eWxlOjpmb250TWV0cmljcygpIHRvIGZvbnRNZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjg5
MTM0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDYgKzk5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnRIYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFF1YWQuaD4KQEAgLTI5MjUsNyArMjkyNiw4IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdp
dGhGcmFtZShSRUNUIGZyYW0KICAgICAgICAgZ2V0T3JDcmVhdGVXZWJMb2NrUmVnaXN0cnkoKSwK
ICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJvbGxlcjo6Y3JlYXRlKCksCiAg
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCi0g
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigp
CisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
PigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQ+KCkKICAgICApOwogICAgIGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3
IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451915</attachid>
            <date>2022-02-14 09:41:33 -0800</date>
            <delta_ts>2022-02-15 07:38:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220214094133.patch</filename>
            <type>text/plain</type>
            <size>52066</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTExICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdl
cyB0byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUlj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJh
dGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTExICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdy
YW1tYXIgY2hlY2tpbmcgb24gTWFjIENhdGFseXN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzAyLDcgKzQzMDIsNyBAQAogCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgzOTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4N0Ew
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzQjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQ0VBNDg4MDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0MTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLzsgfTsKKwkJQkNFQTQ4ODcw
OTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyVGhlbWVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0
RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUZXh0RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODRGMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQu
aCAqLzsgfTsKQEAgLTUyNzUsNiArNTI3NSw4IEBACiAJCUUzNTgyQzI4MjUyN0Y2NjkwMEQxQjc5
MCAvKiBXZWJDb3JlSklUT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1ODJDMjYyNTI3RjY2ODAwRDFCNzkwIC8qIFdlYkNvcmVKSVRP
cGVyYXRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM1QjkwN0YyM0Y2MEE1MDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA3QzIz
RjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzY0MzIxQzI1RDM3QTY3MDBGOTBF
MkEgLyogTW9kdWxlU2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxQjI3
QjcwQjIzMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAyMDI3QjcyMDEzMDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8q
IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9k
ZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNG
MDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5
NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJE
MjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzExLDYg
KzE3MzEzLDggQEAKIAkJRTM1QjkwN0MyM0Y2MDY3NzAwMDAxMUZGIC8qIExvY2FsaXplZERldmlj
ZU1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZERldmlj
ZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUI5MDdFMjNGNjA2Nzcw
MDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvY2FsaXplZERldmljZU1vZGVsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzY0MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZVNjcmlwdExv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQjI3QjcwQjIzMDA2
NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcw
MUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzk5Miw2ICsyMzk5Niw3IEBACiAJCQkJNzI0RUU1NEYxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCUJD
RjQ4Q0U2MTM3MEQxMTQwMDRFODdENiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCiAJCQkJ
Q0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAor
CQkJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5o
ICovLAogCQkJCUM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi8s
CiAJCQkJNDU4MzBENEIxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCAqLywKIAkJCQk0NTgzMEQ0QzE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xs
ZXIuaCAqLywKQEAgLTI0MDYzLDYgKzI0MDY4LDcgQEAKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBG
RjZGMkQgLyogRHJhZ1N0YXRlLmggKi8sCiAJCQkJOTNENkI3QTYyNTUxRDNFRDAwNThERDNBIC8q
IER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovLAogCQkJCTFBRjMyNjc3MEQ3OEI5
NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAqLywKKwkJCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCTkzQzA5QTgw
MEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIw
NjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAqLywKIAkJCQlFMEZFRjM3MUIyN0M1M0VB
QzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwICovLApAQCAtMzM0NjEsNiArMzM0NjcsNyBAQAog
CQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVh
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDFGMjdCNzIw
MEMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEMTM1MjUyMjk0QTMzQzAwODI3NDAxIC8qIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBB
dHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
cmlidXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0Mzc5LDYgKzM0Mzg2LDcgQEAKIAkJCQlGQkRC
NjE5RjE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RDU4RUJCMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlB
NTBEMDBEOEJBMDBCQjgyNUMgLyogRW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE1QkUxOTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTI2NCw2ICsyNjUsMzIgQEAg
dm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibgogICAgICAgICByZW5kZXJl
ci0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
SWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGljb25TaXplKQoreworICAgIG1faWNvbiA9IGljb247CisgICAgbV9pY29uU2l6ZSA9IGljb25T
aXplOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgcmVuZGVyZXItPmludmFsaWRhdGUoKTsKK30KKworUmVmUHRyPEltYWdlPiBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6Omljb24oKSBjb25zdAoreworICAgIGlmIChtX2ljb24pCisgICAgICAgIHJl
dHVybiBtX2ljb247CisgICAgCisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1l
bnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCktPnJlcXVlc3RBdHRhY2htZW50SWNvbih1bmlxdWVJZGVudGlmaWVyKCkpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitGbG9hdFNpemUgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uU2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWNvblNpemU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDI4
OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVu
YW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERh
dGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3Qg
UmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUljb24oY29uc3QgUmVmUHRyPEltYWdlPiYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
Jik7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3Rv
cihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVk
RnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CkBAIC02OCw5
ICs2OSwxMSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVu
dFRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBj
b25zdDsKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgYXR0YWNobWVudFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVu
dFBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGh1bWJuYWlsOyB9CisgICAgUmVmUHRyPEltYWdlPiBpY29uKCkgY29uc3Q7CisgICAg
RmxvYXRTaXplIGljb25TaXplKCkgY29uc3Q7CiAgICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVy
ZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RmlsZT4gbV9maWxlOwogICAgIFN0cmluZyBtX3VuaXF1ZUlkZW50aWZpZXI7CiAgICAg
UmVmUHRyPEltYWdlPiBtX3RodW1ibmFpbDsKKyAgICBSZWZQdHI8SW1hZ2U+IG1faWNvbjsKKyAg
ICBGbG9hdFNpemUgbV9pY29uU2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyODkxMzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRWRp
dG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgog
I2luY2x1ZGUgIkVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nl
ci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgpAQCAtMTI1Miw2ICsxMjUzLDEwIEBAIFBhZ2VD
b25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEUKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3Jl
ID0gYWRvcHRSZWYoKm5ldyBFbXB0eVZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIAorI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEVs
ZW1lbnRDbGllbnQgPSBtYWtlVW5pcXVlPEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+KCk7
CisjZW5kaWYKKwogICAgIHJldHVybiBwYWdlQ29uZmlndXJhdGlvbjsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwg
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RB
dHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVi
bGljIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0
OworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29u
c3QgU3RyaW5nJikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZp
c2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uRnJhbWVSYXRlLmgiCiAj
aW5jbHVkZSAiQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENhY2hlLmgiCkBAIC0z
NDMsNiArMzQ0LDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgICwgbV9wZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBl
cm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIG1fc3RvcmFnZVByb3ZpZGVyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVByb3ZpZGVyKSkKICAgICAsIG1fbW9kZWxQbGF5ZXJQcm92
aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxheWVyUHJvdmlkZXIpKQorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgLCBtX2F0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEVsZW1lbnRDbGllbnQpKQor
I2VuZGlmCiB7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIGNsYXNzIEFwcGxlUGF5QU1TVUlQYXlt
ZW50SGFuZGxlcjsKIGNsYXNzIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlcjsKIGNsYXNzIEFs
dGVybmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQ7CiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I7CiBjbGFzcyBCYWNrRm9yd2FyZENvbnRyb2xsZXI7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk7CkBAIC05MjksNiArOTMwLDEwIEBAIHB1YmxpYzoKIAogICAgIE1vZGVsUGxheWVy
UHJvdmlkZXImIG1vZGVsUGxheWVyUHJvdmlkZXIoKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgQXR0YWNobWVudEVsZW1lbnRDbGllbnQqIGF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KCkgeyByZXR1cm4gbV9hdHRhY2htZW50RWxlbWVudENsaWVudC5nZXQoKTsgfQorI2Vu
ZGlmCisKICNpZiBVU0UoQVRTUEkpCiAgICAgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSogYWNjZXNz
aWJpbGl0eVJvb3RPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0OyB9CiAgICAgdm9pZCBzZXRBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpKiByb290T2JqZWN0KSB7IG1fYWNjZXNzaWJpbGl0eVJvb3RPYmplY3QgPSByb290
T2JqZWN0OyB9CkBAIC0xMjg1LDYgKzEyOTAsMTAgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8
U3RvcmFnZVByb3ZpZGVyPiBtX3N0b3JhZ2VQcm92aWRlcjsKICAgICBVbmlxdWVSZWY8TW9kZWxQ
bGF5ZXJQcm92aWRlcj4gbV9tb2RlbFBsYXllclByb3ZpZGVyOwogCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEVsZW1lbnRDbGll
bnQ+IG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKICAgICB1c2luZyBDYWNoZWRUZXh0UmVjb2duaXRpb25SZXN1bHQgPSBzdGQ6
OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRSZWN0PjsKICAgICBXZWFrSGFzaE1hcDxI
VE1MRWxlbWVudCwgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0PiBtX3RleHRSZWNvZ25pdGlv
blJlc3VsdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgiCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJCYWNr
Rm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50OwogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgQmFja0Zv
cndhcmRDbGllbnQ7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CkBAIC0xNTIsNiAr
MTUzLDkgQEAgcHVibGljOgogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQ
cm92aWRlcjsKIAogICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXll
clByb3ZpZGVyOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlx
dWVfcHRyPEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50PiBhdHRhY2htZW50RWxlbWVudENsaWVudDsK
KyNlbmRpZgogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yVVRJKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVF
eHRlbnNpb24oY29uc3QgU3RyaW5nJik7CisKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbnNJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnNJbWFnZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkocmV2aXNpb24gMjg5
MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNlbmRpZgogCiBPQkpDX0NMQVNTIENJQ29udGV4
dDsKK09CSkNfQ0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAt
NjcsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ29sb3Ig
c3lzdGVtRm9jdXNSaW5nQ29sb3IoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRh
aW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRT
aXplJik7CisKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBj
b25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAs
NyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQ
cm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJ
bWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1hZ2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0
aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJhc2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5
MiwxOCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0
dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZv
ckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXpl
JiBzaXplKQorUmV0YWluUHRyPFVJSW1hZ2U+IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIGRvY3VtZW50SW50ZXJhY3Rpb25D
b250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRy
b2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAotICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFj
aG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5maWxlKCkpCi0gICAgICAgIGZpbGVOYW1lID0gZmls
ZS0+bmFtZSgpOwotCi0gICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZmlsZU5h
bWUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCk7Ci0g
ICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNldE5hbWU6ZmlsZU5hbWVdOworICAg
IGF1dG8gbmFtZSA9IGZpbGVOYW1lOworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAg
bmFtZSA9IHRpdGxlOworCisgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNldE5h
bWU6bmFtZV07CiAKLSAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFj
aG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRUeXBl
LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmcgVVRJOwogICAgICAgICBpZiAoaXNEZWNsYXJl
ZFVUSShhdHRhY2htZW50VHlwZSkpCkBAIC0xODY3LDggKzE4NjQsOCBAQCBSZW5kZXJBdHRhY2ht
ZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluCiAgICAgfQogCiAgICAgaWYgKGFjdGlvbi5pc0Vt
cHR5KCkgJiYgIWhhc1Byb2dyZXNzKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZTsKLSAg
ICAgICAgaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQsIGljb25TaXplKTsKKyAg
ICAgICAgRmxvYXRTaXplIGljb25TaXplID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
Lmljb25TaXplKCk7CisgICAgICAgIGljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50
KCkuaWNvbigpOwogICAgICAgICB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50
RWxlbWVudCgpLnRodW1ibmFpbCgpOwogICAgICAgICBpZiAodGh1bWJuYWlsSWNvbikKICAgICAg
ICAgICAgIGljb25TaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHRo
dW1ibmFpbEljb24tPnNpemUoKS5hc3BlY3RSYXRpbygpLCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNo
bWVudEljb25TaXplLCBhdHRhY2htZW50SWNvblNpemUpKS5zaXplKCk7CkBAIC0xOTEzLDcgKzE5
MTAsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzCiAgICAgaWYg
KGluZm8udGh1bWJuYWlsSWNvbikKICAgICAgICAgaWNvbkltYWdlID0gaW5mby50aHVtYm5haWxJ
Y29uOwogICAgIGVsc2UgaWYgKGluZm8uaWNvbikKLSAgICAgICAgaWNvbkltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKKyAgICAgICAgaWNvbkltYWdlID0g
aW5mby5pY29uOwogICAgIAogICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8u
aWNvblJlY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgog
ICAgIC8vIEEgdmlldyBhc3NvY2lhdGVkIHRvIHRoZSBjb250YWluZWQgZG9jdW1lbnQuCiAgICAg
TlNWaWV3KiBkb2N1bWVudFZpZXdGb3IoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPE5TSW1hZ2U+IGljb25Gb3JBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOworCiBwcml2YXRlOgogICAgIFJlbmRlclRoZW1lTWFjKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJl
dmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU2NCw2ICsyNTY0LDQzIEBAIGludCBSZW5kZXJUaGVt
ZU1hYzo6YXR0YWNobWVudEJhc2VsaW5lKGMKICAgICByZXR1cm4gbGF5b3V0LmJhc2VsaW5lOwog
fQogCitSZXRhaW5QdHI8TlNJbWFnZT4gUmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJt
dWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRU
eXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIpKSB7CitBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlj
b24tPm5zSW1hZ2UoKTsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIFVUSTsKKyAgICAgICAgICAgIGlmIChpc0Rl
Y2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2ht
ZW50VHlwZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9t
TUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSShVVEkpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29u
LT5uc0ltYWdlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWZpbGVOYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KHsgZmlsZU5hbWUgfSkpCisgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAg
IH0KKworICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5zaW9uID0gW3N0YXRpY19jYXN0PE5TU3RyaW5n
ICo+KHRpdGxlKSBwYXRoRXh0ZW5zaW9uXTsKKyAgICBpZiAoZmlsZUV4dGVuc2lvbi5sZW5ndGgp
IHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5z
aW9uKGZpbGVFeHRlbnNpb24pKQorICAgICAgICAgICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsK
KyAgICB9CisKKyAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVi
bGljLmRhdGEiKSkKKyAgICAgICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICAKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tn
cm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5z
dHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiAr
MjYzMiwyNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAg
fQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0g
YXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0g
ICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFw
cGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZv
bGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7
Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAg
ICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAg
ICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxl
KiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgp
IH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZp
bGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAo
ZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0
dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1
YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9
IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRh
Y2htZW50KTsKKyAgICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1l
bnRFbGVtZW50KCkuYXR0YWNobWVudFR5cGUoKTsKKyAgICBhdXRvIGljb24gPSBhdHRhY2htZW50
LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOwogICAgIGlmICghaWNvbikKICAgICAgICAgcmV0
dXJuOwotICAgIGljb24tPnBhaW50KGNvbnRleHQsIGxheW91dC5pY29uUmVjdCk7CisKKyAgICBp
ZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbnNJbWFnZSA9IGljb24tPm5zSW1hZ2UoKTsKKyAgICBpZiAoIW5zSW1hZ2UpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJy
ZW50R0MoY29udGV4dCk7CisKKyAgICBbbnNJbWFnZSBkcmF3SW5SZWN0OmxheW91dC5pY29uUmVj
dCBmcm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFtuc0ltYWdlIHNpemVdLndpZHRoLCBbbnNJbWFn
ZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3Zl
ciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0ZDo6cGFpcjxSZWZQdHI8SW1hZ2U+LCBm
bG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVySW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODk2ODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTExICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mg
Zm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBjb25uZWN0
aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
LCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRhY2htZW50CisgICAgICAgIGVs
ZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9jZXNzLiBUaGUg
aWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0ZWQsIG9yIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhlIG5ldyBjbGllbnQgY2xhc3MgV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHJlcXVl
c3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaWRJbnNlcnRBdHRh
Y2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFtDR10gQWRkIGFuIEFyZ3VtZW50Q29k
ZXIgZm9yIENGQ2hhcmFjdGVyU2V0UmVmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI4OTEz
NCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc5NCw2
ICs3OTQsNyBAQCBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvCiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1JlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAKIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAKIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyMDIsNiArMTAyMDIs
MTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZQogICAgIHBhZ2VD
bGllbnQoKS53cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGluZm8p
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgRmxvYXRTaXplIHNpemU7
CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlw
ZSwgdGl0bGUsIHNpemUpOworICAgIGlmIChpY29uKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5k
bGUoaGFuZGxlKTsKKyNlbmRpZgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0
dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJ
OjpBdHRhY2htZW50PiBXZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5
KCkpCkBAIC0xMDIxOSwxMSArMTAyMzEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0
dGFjaG1lbnQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CisgICAgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGF0dGFj
aG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQu
ZmlsZU5hbWUoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50
aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250
ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIElQQzo6U2hhcmVkQnVmZmVyQ29weShh
dHRhY2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
IAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDIzMiw3ICsxMDI0NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5k
bGUpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAj
aWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVu
dEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0
aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5h
aWxXaXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0
aW9uICopOwpAQCAtMjUyNCw2ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlk
YXRlQWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRU
b1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZv
aWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwor
CisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAgICAgdm9pZCBy
ZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRl
bnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFG
b3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJD
b3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIFN5bmNocm9ub3Vz
CiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6
OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAgICBSZXF1ZXN0QXR0YWNobWVudEljb24o
U3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmlu
ZyB0aXRsZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0J
KHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxMiBAQCBTT0ZUX0xJ
TktfQ0xBU1NfT1BUSU9OQUwoU3luYXBzZSwgU1lOb3RlCiAjaW1wb3J0IDxVSUtpdC9VSUltYWdl
Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlclRoZW1lSU9TLmg+CisjZWxzZQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUaGVtZU1h
Yy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29h
L1dlYkZpbHRlckV2YWx1YXRvclNQSS5oPgogCkBAIC0yODcsNiArMjkzLDQxIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpwbGF0Zm9ybUNsb25lQXR0YWNobWUKICAgICB0b0F0dGFjaG1lbnQtPnNldEZp
bGVXcmFwcGVyKGZyb21BdHRhY2htZW50LT5maWxlV3JhcHBlcigpKTsKIH0KIAorc3RhdGljIFJl
ZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1h
cChDb2NvYUltYWdlICppbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml0dGluZ1NpemUp
Cit7CisgICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOwor
ICAgIGF1dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVj
dFJhdGlvSW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7
IH0sIGZpdHRpbmdTaXplIH0pKTsKKyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisK
KyAgICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1
cmF0aW9uOworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAg
aWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGlj
c0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3Jh
cGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNl
bGlmIFVTRShBUFBLSVQpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVj
dDpOU1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBm
cmFjdGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gYml0bWFwOworfQorCitSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBh
Z2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXpl
KQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRo
ZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlLCBz
aXplKTsKKyNlbHNlCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0
YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAgIHJldHVy
biBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLCBXZWJDb3JlOjpJbnRT
aXplKDQwMCwgNDAwKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKQEAgLTQ5NywzMSArNTM4LDYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmZ1bGxzY3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFWRShR
VUlDS0xPT0tfVEhVTUJOQUlMSU5HKQogCi1zdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUgb3Jp
Z2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBzaXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0ID0g
cm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdp
bmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOwot
ICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRt
YXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Qu
c2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVk
Q29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAgICBb
aW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9u
Ok5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBw
ZWQ6WUVTIGhpbnRzOm5pbF07Ci0jZW5kaWYKLQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0KIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJu
YWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxl
dGlvbkJsb2NrOl57CkBAIC01MzAsNyArNTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RUaHVtYm5haWxXaXRoTwogICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZl
cnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoW29wZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3JlOjpJ
bnRTaXplKDQwMCwgNDAwKSk7CiAgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKGlkZW50aWZpZXIsIGNvbnZlcnRlZEltYWdlKTsKKyAgICAgICAgICAgIHRoaXMtPnVwZGF0
ZUF0dGFjaG1lbnRUaHVtYm5haWwoaWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UpOwogICAgICAg
ICB9KTsKICAgICB9XTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTYzNzgsNiArNjM3OCw4IEBACiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGgg
PSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGgg
PSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQTI3QjcwOUVE
MDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eS5tbTsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5NzQw
NTMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lmg7IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVEMjM5
ODQ3MUEwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHku
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwNzY0LDYgKzEwNzY2LDggQEAKIAkJCQlGNDNBOUNERTI1RDcyRTJEMDA5
OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlGNDNBOUNERDI1
RDcyRTBDMDA5OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggKi8sCiAJCQkJQ0VE
QTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAor
CQkJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHAgKi8sCisJCQkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmggKi8sCiAJCQkJNDZFRTI4NDcyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNDZFRTI4NDgyNjlFMDQ5QjAwREQ0
OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovLAogCQkJCTQ2RTk3NjBBMjc1
N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4g
Ki8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2UmIHBh
Z2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikK
K3sKKyAgICBtX3BhZ2UucmVxdWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QXR0YWNobWVudEVsZW1lbnRDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50
SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2Um
IG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIs
NyBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKQEAgLTY1Myw2ICs2NTQsOCBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIENyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJBdHRhY2htZW50RWxlbWVudENsaWVudD4oKnRoaXMpOworCiAgICAgaWYgKHBh
cmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKnBhcmFtZXRlcnMuYXR0YWNobWVudEVs
ZW1lbnRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgpAQCAtNzMwNyw3ICs3MzEwLDcgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcwogICAgIGNhbGxiYWNrKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
Cit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5k
bGUpCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElk
ZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IHRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxlKSA6IG51bGxwdHIpCkBAIC03MzE1LDYgKzcz
MTgsMjQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdAogICAgIH0K
IH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFuZGxlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9
IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAgICAg
aWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGljb24gPSAhaWNvbkhhbmRsZS5pc051bGwoKSA/
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGljb25IYW5kbGUpIDogbnVsbHB0cikKKyAgICAgICAg
ICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUljb24oaWNvbi0+Y3JlYXRlSW1hZ2UoKSwgc2l6ZSk7Cisg
ICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRF
bGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAgICAgU3RyaW5nIGZpbGVO
YW1lOworICAgICAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQtPmZpbGUoKSkKKyAgICAg
ICAgICAgIGZpbGVOYW1lID0gZmlsZS0+cGF0aCgpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBhdHRhY2htZW50
LT5hdHRhY2htZW50VHlwZSgpLCBmaWxlTmFtZSwgYXR0YWNobWVudC0+YXR0YWNobWVudFRpdGxl
KCkpKTsKKyAgICB9Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6
OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBz
dWJmcmFtZXMgdG9vIGFzIHdlbGwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMTAsNyArMTMxMCw5
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9z
aW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOworICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9pZCB1cGRhdGVBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIHJl
cXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4MCw3ICs1ODAsOCBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUp
IC0+ICgpIEFzeW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5
cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdl
RGF0YSkgLT4gKCkgQXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRp
ZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkK
KyAgICBVcGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0
dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGljb24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452024</attachid>
            <date>2022-02-15 07:39:00 -0800</date>
            <delta_ts>2022-02-15 15:19:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220215073859.patch</filename>
            <type>text/plain</type>
            <size>52415</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTExICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdl
cyB0byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUlj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJh
dGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTExICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGdy
YW1tYXIgY2hlY2tpbmcgb24gTWFjIENhdGFseXN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYwLDYgKzEwNjAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9BY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaAogICAgIHBh
Z2UvQWRqdXN0Vmlld1NpemVPck5vdC5oCiAgICAgcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQu
aAorICAgIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAogICAgIHBhZ2UvQXV0b3BsYXlF
dmVudC5oCiAgICAgcGFnZS9CYXNlNjRVdGlsaXRpZXMuaAogICAgIHBhZ2UvQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzAyLDcg
KzQzMDIsNyBAQAogCQlCQ0VBNDg3ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgzOTA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4N0EwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0VBNDgzQjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4MDA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0VBNDg0MTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNFQTQ4
ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyVGhlbWVNYWMuaCAqLzsgfTsKKwkJQkNFQTQ4ODcwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VBNDg0ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4QTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
RUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDg0RDA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDRUE0ODhFMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRGMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUZXh0RnJhZ21lbnQuaCAqLzsgfTsKQEAgLTUyNzUsNiAr
NTI3NSw4IEBACiAJCUUzNTgyQzI4MjUyN0Y2NjkwMEQxQjc5MCAvKiBXZWJDb3JlSklUT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
ODJDMjYyNTI3RjY2ODAwRDFCNzkwIC8qIFdlYkNvcmVKSVRPcGVyYXRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1QjkwN0YyM0Y2MEE1
MDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9j
YWxpemVkRGV2aWNlTW9kZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzY0MzIxQzI1RDM3QTY3MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0TG9h
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzY0
MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0TG9hZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM2RDcwMUYyN0I3MjAwQzAw
NjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxQjI3QjcwQjIzMDA2NTMxQjcgLyogQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAw
NzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9t
aXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdD
ODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNE
IC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzExLDYgKzE3MzEzLDggQEAKIAkJRTM1Qjkw
N0MyM0Y2MDY3NzAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZERldmljZU1vZGVsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNUI5MDdFMjNGNjA2NzcwMDAwMTFGRiAvKiBMb2NhbGl6ZWRE
ZXZpY2VNb2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExv
Y2FsaXplZERldmljZU1vZGVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzY0
MzIxQTI1RDM3QTY2MDBGOTBFMkEgLyogTW9kdWxlU2NyaXB0TG9hZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZVNjcmlwdExvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzZENzAxQjI3QjcwQjIzMDA2NTMxQjcgLyogQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8q
IEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1wdHlBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzdD
ODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRE9NUHJvbWlzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVF
MyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
Mzk5Miw2ICsyMzk5Niw3IEBACiAJCQkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovLAogCQkJCUJDRjQ4Q0U2MTM3MEQxMTQwMDRFODdE
NiAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggKi8sCiAJCQkJQ0VEQTEyRDYxNTJDQTFDQjAwRDlF
MDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAorCQkJCUUzNkQ3MDFCMjdCNzBCMjMw
MDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCUM5RDQ2NzA0MUU2
MEMzRUIwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggKi8sCiAJCQkJNDU4MzBENEIxNjc5QjRG
ODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNwcCAqLywKIAkJCQk0NTgzMEQ0QzE2
NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuaCAqLywKQEAgLTI0MDYzLDYg
KzI0MDY4LDcgQEAKIAkJCQk4MUY2NUZGNTEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmgg
Ki8sCiAJCQkJOTNENkI3QTYyNTUxRDNFRDAwNThERDNBIC8qIER1bW15U3BlZWNoUmVjb2duaXRp
b25Qcm92aWRlci5oICovLAogCQkJCTFBRjMyNjc3MEQ3OEI5NDQwMDY4RjBDNCAvKiBFZGl0b3JD
bGllbnQuaCAqLywKKwkJCQlFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuY3BwICovLAogCQkJCTkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVu
dEhhbmRsZXIuaCAqLywKIAkJCQlFMEZFRjM3MUIyN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3Vy
Y2UuY3BwICovLApAQCAtMzM0NjEsNiArMzM0NjcsNyBAQAogCQkJCUZENTY4NkNBMTNBQzE4MDIw
MEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDREU5
MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkQ3MDFGMjdCNzIwMEMwMDY1MzFCNyAvKiBBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEMTM1MjUyMjk0QTMzQzAw
ODI3NDAxIC8qIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QzRBODBEMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEM0QTgwQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTM0Mzc5LDYgKzM0Mzg2LDcgQEAKIAkJCQlGQkRCNjE5RjE2RDYwMzY1MDBCQjMzOTQg
LyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUJCMTdC
OEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RCQzEyNTFGMTJEMDAzRUYyNjkgLyogRW1haWxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlBNTBEMDBEOEJBMDBCQjgyNUMgLyog
RW1wdHlDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRERURFNzFGOUZFOTFFMDA0N0M0
MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUx
OTAxRDU0RjVGQjAwREQ3QzY4IC8qIEVtcHR5R2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFZGl0b3IuaCIKQEAgLTI2NCw2ICsyNjUsMzIgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnVwZGF0ZVRodW1ibgogICAgICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgpOwogfQog
Cit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1h
Z2U+JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGljb25TaXplKQoreworICAgIG1f
aWNvbiA9IGljb247CisgICAgbV9pY29uU2l6ZSA9IGljb25TaXplOworCisgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPmludmFsaWRh
dGUoKTsKK30KKworUmVmUHRyPEltYWdlPiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6Omljb25XaXRo
U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKG1faWNvbikKKyAg
ICAgICAgcmV0dXJuIG1faWNvbjsKKyAgICAKKyAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpIHx8
ICFkb2N1bWVudCgpLnBhZ2UoKS0+YXR0YWNobWVudEVsZW1lbnRDbGllbnQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBkb2N1bWVudCgpLnBhZ2UoKS0+YXR0YWNobWVudEVsZW1l
bnRDbGllbnQoKS0+cmVxdWVzdEF0dGFjaG1lbnRJY29uKHVuaXF1ZUlkZW50aWZpZXIoKSwgc2l6
ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0Zsb2F0U2l6ZSBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6Omljb25TaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pY29uU2l6ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRo
dW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2Vy
dGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBm
aW5hbDsKQEAgLTY4LDkgKzY5LDExIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFRpdGxl
Rm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogICAgIFN0
cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0cjxJbWFnZT4gdGh1bWJuYWls
KCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBSZWZQdHI8SW1hZ2U+IGljb25X
aXRoU2l6ZShjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAgICBGbG9hdFNpemUgaWNvblNpemUo
KSBjb25zdDsKICAgICBSZW5kZXJBdHRhY2htZW50KiByZW5kZXJlcigpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtOTEsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7
CiAgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1fdGh1
bWJuYWlsOworICAgIFJlZlB0cjxJbWFnZT4gbV9pY29uOworICAgIEZsb2F0U2l6ZSBtX2ljb25T
aXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSAiRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
RHVtbXlTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNs
dWRlICJFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9y
bVN0YXRlLmgiCkBAIC0xMjUyLDYgKzEyNTMsMTAgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb25XaXRoRQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSBhZG9wdFJlZigqbmV3IEVt
cHR5VmlzaXRlZExpbmtTdG9yZSk7CiAgICAgCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5hdHRhY2htZW50RWxlbWVudENsaWVudCA9IG1ha2VV
bmlxdWU8RW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudD4oKTsKKyNlbmRpZgorCiAgICAgcmV0
dXJuIHBhZ2VDb25maWd1cmF0aW9uOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBGbG9hdFNpemU7CisKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BdHRhY2htZW50RWxlbWVudENsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUm
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FbXB0eUF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9F
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9FbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudCBmaW5hbCA6IHB1YmxpYyBBdHRhY2htZW50RWxlbWVudENsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudCgpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsb2F0U2l6ZSYpIHsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjg5MTM0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1lUmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1
ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNoZS5oIgpAQCAtMzQzLDYgKzM0NCw5IEBAIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNv
bnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikp
CiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3Jh
Z2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVsUGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3ZpZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0
ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAy
ODkxMzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0Zvcndh
cmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYg
KzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBNb2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXll
clByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2htZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1f
YXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJ
KQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0
QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVj
dCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2JqZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2
ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9z
dG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9k
ZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
c3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNp
bmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlv
blJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vha0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRl
eHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTEzNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNp
bmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3Mg
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAg
ICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlx
dWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4gbW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxl
bWVudENsaWVudD4gYXR0YWNobWVudEVsZW1lbnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTEz
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0
YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBz
dGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFTUyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1h
Z2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTY3LDYgKzY4LDggQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9yIHN5c3RlbUZvY3VzUmluZ0NvbG9y
KCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25G
b3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNo
bWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYpOworCiBwcml2YXRlOgog
ICAgIGJvb2wgY2FuUGFpbnQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgU2V0dGluZ3MmKSBjb25z
dCBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBzdHJ1Y3Qg
UmVuZGVyQXR0YWNobWVudEluZm8gewogICAgIEJPT0wgaGFzUHJvZ3Jlc3MgeyBOTyB9OwogICAg
IGZsb2F0IHByb2dyZXNzOwogCi0gICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgUmVm
UHRyPEltYWdlPiBpY29uOwogICAgIFJlZlB0cjxJbWFnZT4gdGh1bWJuYWlsSWNvbjsKIAogICAg
IGludCBiYXNlbGluZSB7IDAgfTsKQEAgLTE3OTIsMjEgKzE3OTIsMTggQEAgc3RhdGljIEJPT0wg
Z2V0QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IAogICAgIHJldHVybiB2YWxpZFByb2dyZXNzOwog
fQogCi1zdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJl
bmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEZsb2F0U2l6ZSYgc2l6ZSkKK1JldGFpblB0cjxV
SUltYWdlPiBSZW5kZXJUaGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgRmxvYXRTaXplJiBzaXplKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgYXV0byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0
XSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcg
ZmlsZU5hbWU7Ci0gICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVt
ZW50KCkuZmlsZSgpKQotICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlm
IChmaWxlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRh
Y2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0
aW9uQ29udHJvbGxlciBzZXROYW1lOmZpbGVOYW1lXTsKKyAgICBhdXRvIG5hbWUgPSBmaWxlTmFt
ZTsKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG5hbWUgPSB0aXRsZTsKKworICAg
IFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBzZXROYW1lOm5hbWVdOwogCi0gICAgU3Ry
aW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFj
aG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgU3RyaW5nIFVUSTsKICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUp
KQpAQCAtMTg2Nyw4ICsxODY0LDggQEAgUmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFj
aG1lbnRJbgogICAgIH0KIAogICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVz
cykgewotICAgICAgICBGbG9hdFNpemUgaWNvblNpemU7Ci0gICAgICAgIGljb24gPSBpY29uRm9y
QXR0YWNobWVudChhdHRhY2htZW50LCBpY29uU2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpY29u
U2l6ZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29uU2l6ZSgpOworICAgICAg
ICBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb24oKTsKICAgICAgICAg
dGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwo
KTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxh
cmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCku
YXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNo
bWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxMyw3ICsxOTEwLDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRodW1ibmFpbEljb24p
CiAgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAgICBlbHNlIGlmIChp
bmZvLmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8u
aWNvbiBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNvbjsKICAgICAKICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShyZXZpc2lvbiAyODkx
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBBIHZpZXcgYXNzb2Np
YXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyogZG9jdW1lbnRWaWV3
Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyODkxMzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1NjQsNiArMjU2NCw0MyBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0dGFjaG1lbnRCYXNl
bGluZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorUmV0YWluUHRyPE5TSW1h
Z2U+IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQor
eworICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikg
fHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3Zu
ZC5hcHBsZS5mb2xkZXIiKSkgeworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
KyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKGtVVFR5
cGVGb2xkZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CitBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFN0cmluZyBVVEk7CisgICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50
VHlwZSkpCisgICAgICAgICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRU
eXBlKTsKKworICAgICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JV
VEkoVVRJKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKCFmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyh7IGZpbGVOYW1lIH0pKQorICAg
ICAgICAgICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICB9CisKKyAgICBOU1N0cmluZyAq
ZmlsZUV4dGVuc2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPih0aXRsZSkgcGF0aEV4dGVu
c2lvbl07CisgICAgaWYgKGZpbGVFeHRlbnNpb24ubGVuZ3RoKSB7CisgICAgICAgIGlmIChhdXRv
IGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lvbihmaWxlRXh0ZW5zaW9uKSkK
KyAgICAgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgfQorCisgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIikpCisgICAgICAg
IHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
IHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVu
dExheW91dCYgbGF5b3V0KQogewogICAgIGlmIChsYXlvdXQuc3R5bGUgPT0gQXR0YWNobWVudExh
eW91dFN0eWxlOjpOb25TZWxlY3RlZCkKQEAgLTI1OTUsNTIgKzI2MzIsMjcgQEAgc3RhdGljIHZv
aWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bgogICAgIH0KIH0KIAotc3RhdGljIFJlZlB0
cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2ht
ZW50KQotewotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwotICAgIAotICAgIGlmICghYXR0YWNobWVudFR5
cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFj
aG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5mb2xkZXIiKSkgewotQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIGlmIChhdXRvIGlj
b24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKGtVVFR5cGVGb2xkZXIpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBpY29uOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgVVRJOwotICAgICAgICAgICAgaWYgKGlz
RGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQotICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFj
aG1lbnRUeXBlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZy
b21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7Ci0KLSAgICAgICAgICAgIGlmIChhdXRvIGljb24g
PSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGlj
b247Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQu
YXR0YWNobWVudEVsZW1lbnQoKS5maWxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IElj
b246OmNyZWF0ZUljb25Gb3JGaWxlcyh7IGZpbGUtPnBhdGgoKSB9KSkKLSAgICAgICAgICAgIHJl
dHVybiBpY29uOwotICAgIH0KLQotICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5zaW9uID0gW3N0YXRp
Y19jYXN0PE5TU3RyaW5nICo+KGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2ht
ZW50VGl0bGUoKSkgcGF0aEV4dGVuc2lvbl07Ci0gICAgaWYgKGZpbGVFeHRlbnNpb24ubGVuZ3Ro
KSB7Ci0gICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZUV4dGVu
c2lvbihmaWxlRXh0ZW5zaW9uKSkKLSAgICAgICAgICAgIHJldHVybiBpY29uOwotICAgIH0KLQot
ICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0YSIpOwotfQotCiBz
dGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudExheW91dCYgbGF5
b3V0KQogewogICAgIGlmIChhdXRvIHRodW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1l
bnRFbGVtZW50KCkudGh1bWJuYWlsKCkpIHsKICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnRo
dW1ibmFpbEljb24sIGxheW91dC5pY29uUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCk7CisgICAgU3RyaW5n
IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1l
bnRUeXBlKCk7CisgICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
Lmljb25XaXRoU2l6ZShsYXlvdXQuaWNvblJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWljb24pCiAg
ICAgICAgIHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQuaWNvblJlY3Qp
OworCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIG5zSW1hZ2UgPSBpY29uLT5uc0ltYWdlKCk7CisgICAgaWYgKCFuc0ltYWdl
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ3VycmVudEdDKGNvbnRleHQpOworCisgICAgW25zSW1hZ2UgZHJhd0luUmVjdDpsYXlv
dXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBbbnNJbWFnZSBzaXplXS53aWR0
aCwgW25zSW1hZ2Ugc2l6ZV0uaGVpZ2h0KSBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlv
blNvdXJjZU92ZXIgZnJhY3Rpb246MS4wZl07CiB9CiAKIHN0YXRpYyBzdGQ6OnBhaXI8UmVmUHRy
PEltYWdlPiwgZmxvYXQ+IGNyZWF0ZUF0dGFjaG1lbnRQbGFjZWhvbGRlckltYWdlKGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yLCBjb25zdCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg5NjgwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMi0xMSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VuZCBpY29ucyB0byB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGZvciByZW5kZXJpbmcgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mzg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZv
aWQgY29ubmVjdGluZyB0byB0aGUgSWNvbiBTZXJ2aWNlcyBkYWVtb24gaW4gdGhlIFdlYkNvbnRl
bnQgcHJvY2Vzcywgd2Ugc2hvdWxkIHNlbmQgdGhlIGljb25zIGZvciB0aGUgYXR0YWNobWVudAor
ICAgICAgICBlbGVtZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkgcHJv
Y2Vzcy4gVGhlIGljb24gd2lsbCBiZSBzZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2hl
biB0aGUgYXR0YWNobWVudAorICAgICAgICBhdHRyaWJ1dGVzIGFyZSB1cGRhdGVkLCBvciB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGhhcyByZXF1ZXN0ZWQgdGhlIGljb24uIFRoZSBuZXcgY2xpZW50
IGNsYXNzIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGlzCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciByZXF1ZXN0aW5nIGljb25zIGZyb20gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZGlk
SW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWls
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDItMTEgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBbQ0ddIEFkZCBhbiBB
cmd1bWVudENvZGVyIGZvciBDRkNoYXJhY3RlclNldFJlZgpJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZp
c2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC03OTQsNiArNzk0LDcgQEAgV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
blBybwogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3Bw
CiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKK1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAK
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjAy
LDYgKzEwMjAyLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3cml0ZVByb21pc2VkQXR0YWNobWUK
ICAgICBwYWdlQ2xpZW50KCkud3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV1RG
TW92ZShpbmZvKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBGbG9hdFNp
emUmIHJlcXVlc3RlZFNpemUpCit7CisgICAgRmxvYXRTaXplIHNpemUgPSByZXF1ZXN0ZWRTaXpl
OworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5
cGUsIHRpdGxlLCBzaXplKTsKKyAgICBpZiAoaWNvbikKKyAgICAgICAgaWNvbi0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7CisjZW5kaWYKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUsIHNpemUpKTsKK30KKwogUmVmUHRyPEFQ
STo6QXR0YWNobWVudD4gV2ViUGFnZVByb3h5OjphdHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNFbXB0
eSgpKQpAQCAtMTAyMjMsNyArMTAyMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpCiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCi12b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQordm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyMzIsNyArMTAyNDQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24oCiAgICAgaWYgKGJpdG1h
cCkKICAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGhhbmRsZSkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwo
aWRlbnRpZmllciwgaGFuZGxlKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUxLDcgKzE3NTEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6
QXR0YWNobWVudCYpOwogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLSAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+Jik7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CiAgICAgdm9pZCByZXF1ZXN0
VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1
bWJuYWlsTG9hZE9wZXJhdGlvbiAqKTsKQEAgLTI1MjQsNiArMjUyNCwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCk7CiAKICAgICB2b2lkIHdyaXRlUHJv
bWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudElu
Zm8mJik7CisKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKworICAgIFJlZlB0cjxX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
V2ViQ29yZTo6RmxvYXRTaXplJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRS
ZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgPSB7IH0pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MjYsNiArNTI2LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoU3RyaW5n
IGlkZW50aWZpZXIpCiAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMo
VmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6ZWREYXRhKSBTeW5jaHJvbm91cwogICAgIFdyaXRlUHJv
bWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFj
aG1lbnRJbmZvIGluZm8pCisgICAgUmVxdWVzdEF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlm
aWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwYXRoLCBTdHJpbmcgdGl0bGUsIFdlYkNv
cmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQkocmV2aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDEy
IEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW5hcHNlLCBTWU5vdGUKICNpbXBvcnQgPFVJ
S2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4KKyNlbHNlCisjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlclRoZW1lTWFjLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAgLTI4Nyw2ICsyOTMsNDEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZQogICAgIHRvQXR0YWNo
bWVudC0+c2V0RmlsZVdyYXBwZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkpOwogfQog
CitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1J
bWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGZpdHRpbmdTaXplKQoreworICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2lt
YWdlIHNpemVdKTsKKyAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0
UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVj
dFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7CisgICAgcmVzdWx0UmVjdC5zZXRMb2Nh
dGlvbih7IH0pOworCisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
Yml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3Vy
YXRpb24pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
KyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRl
eHQpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVz
dWx0UmVjdF07CisjZWxpZiBVU0UoQVBQS0lUKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3Vs
dFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlv
blNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGJpdG1hcDsKK30KKworUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwPiBXZWJQYWdlUHJveHk6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZs
b2F0U2l6ZSYgc2l6ZSkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gaW1h
Z2UgPSBSZW5kZXJUaGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRU
eXBlLCB0aXRsZSwgc2l6ZSk7CisjZWxzZQorICAgIGF1dG8gaW1hZ2UgPSBSZW5kZXJUaGVtZU1h
Yzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7CisjZW5k
aWYKKyAgICByZXR1cm4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKSwg
c2l6ZSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIAog
dm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKQEAgLTQ5NywzMSArNTM4LDYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZ1bGxzY3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQogCi1zdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBj
b252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVt
Ym5haWxTaXplKFtpbWFnZSBzaXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZElu
dFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJu
YWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOwotICAgIHJlc3Vs
dFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBi
aXRtYXBDb25maWd1cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgq
Z3JhcGhpY3NDb250ZXh0KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtpbWFnZSBk
cmF3SW5SZWN0OnJlc3VsdFJlY3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAgICBbaW1hZ2UgZHJh
d0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9z
aXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhp
bnRzOm5pbF07Ci0jZW5kaWYKLQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0KIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9w
ZXJhdGlvbiAqb3BlcmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2Nr
Ol57CkBAIC01MzAsNyArNTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5h
aWxXaXRoTwogICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRQbGF0Zm9y
bUltYWdlVG9CaXRtYXAoW29wZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3JlOjpJbnRTaXplKDQw
MCwgNDAwKSk7CiAgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50
aWZpZXIsIGNvbnZlcnRlZEltYWdlKTsKKyAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1l
bnRUaHVtYm5haWwoaWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UpOwogICAgICAgICB9KTsKICAg
ICB9XTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTYzNzgsNiAr
NjM3OCw4IEBACiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2
MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcg
LyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcw
MUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5tbTsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5NzQwNTMwMEY4OEZF
OSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5Lmg7IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVEMjM5ODQ3MUEwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwNzY0LDYgKzEwNzY2LDggQEAKIAkJCQlGNDNBOUNERTI1RDcyRTJEMDA5OTBFMjYgLyog
U2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlGNDNBOUNERDI1RDcyRTBDMDA5
OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggKi8sCiAJCQkJQ0VEQTEyREUxNTJD
Q0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAorCQkJCUUzNkQ3
MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8s
CisJCQkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmggKi8sCiAJCQkJNDZFRTI4NDcyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovLAogCQkJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFD
REQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXR0YWNobWVudEVsZW1l
bnRDbGllbnQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2UmIHBhZ2UpCisgICAg
OiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6
cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIG1fcGFnZS5yZXF1ZXN0QXR0YWNobWVudElj
b24oaWRlbnRpZmllciwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0F0dGFj
aG1lbnRFbGVtZW50Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlOworCitjbGFzcyBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYp
OworICAgIHZpcnR1YWwgfldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYg
bV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4OTEzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3
IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3Qu
aCIKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgpAQCAtNjUzLDYgKzY1NCw4IEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEVsZW1lbnRDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50PigqdGhpcyk7CisKICAgICBpZiAocGFy
YW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSgqcGFyYW1ldGVycy5hdHRhY2htZW50RWxl
bWVudEV4dGVuc2lvbkhhbmRsZXMpOwogI2VuZGlmCkBAIC03MzA3LDcgKzczMTAsNyBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzCiAgICAgY2FsbGJhY2soKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSkK
K3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRs
ZSkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRl
bnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0cikKQEAgLTczMTUsNiArNzMx
OCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0CiAgICAgfQog
fQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb25IYW5kbGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0g
YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaWNvbiA9ICFpY29uSGFuZGxlLmlzTnVsbCgpID8g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRyKQorICAgICAgICAg
ICAgYXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgpLCBzaXplKTsKKyAg
ICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIGlm
IChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50
aWZpZXIpKSB7CisgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICAgICAgaWYgKEZpbGUqIGZp
bGUgPSBhdHRhY2htZW50LT5maWxlKCkpCisgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPnBh
dGgoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0QXR0YWNo
bWVudEljb24oaWRlbnRpZmllciwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgZmlsZU5h
bWUsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgpLCBzaXplKSk7CisgICAgfQorfQorCiBS
ZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdp
dGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogSGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxs
LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMjg5MTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEwLDcgKzEzMTAsOSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZp
bGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFs
VGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxU
aHVtYm5haWxIYW5kbGUpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaWNvbiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24o
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyODkxMzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDggQEAgR2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRl
bnRUeXBlKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmlu
ZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNv
bnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBlbmNsb3Np
bmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5n
IGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxI
YW5kbGUpCisgICAgVXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChTdHJpbmcgaWRlbnRpZmllciwg
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBV
cGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBpY29uLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452100</attachid>
            <date>2022-02-15 15:19:34 -0800</date>
            <delta_ts>2022-02-15 17:13:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220215151933.patch</filename>
            <type>text/plain</type>
            <size>52684</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdl
YkNvbnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRo
ZSBIVE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25u
ZWN0aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdl
cyB0byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUlj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJh
dGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdp
dGggYm90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBl
bGVtZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBp
ZiB5b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oCiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZl
VGV4dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFn
ZS9BdXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9D
YWNoZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJJbmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgw
MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1h
Yy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
RUE0ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRG
cmFnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpA
QCAtNTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNv
cmVKSVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVC
OTA3RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAw
MTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1
bGVTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAx
RjI3QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1
MzFCNyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5
MzFEQURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAv
KiBKU0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3
MjhGMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAw
NjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBA
QAogCQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8q
IExvY2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBB
dHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0
MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFG
RkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcw
RDExNDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1
MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcw
MUIyN0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJ
QzlENDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgz
MEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJ
CTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApA
QCAtMjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBE
cmFnU3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVl
Y2hSZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0
IC8qIEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAw
NUFCRDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAv
KiBFdmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2
Q0ExM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3
IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUy
NTIyOTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBp
biBIZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAz
NjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRENThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEw
MEJCODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5
RkU5MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyOSBAQCB2b2lkIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlk
YXRlKCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0
IFJlZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUp
Cit7CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJl
ci0+aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVz
dEljb25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFk
b2N1bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRh
Y2htZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRp
ZmllcigpLCBzaXplKTsKKyAgICByZXR1cm47Cit9CisKK0Zsb2F0U2l6ZSBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6Omljb25TaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pY29uU2l6ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGlu
c2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUm
KSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVudFRp
dGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogICAg
IFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0cjxJbWFnZT4gdGh1bWJu
YWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBSZWZQdHI8SW1hZ2U+IGlj
b24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJlcXVlc3RJY29uV2l0aFNp
emUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXplIGljb25TaXplKCkgY29u
c3Q7CiAgICAgUmVuZGVyQXR0YWNobWVudCogcmVuZGVyZXIoKSBjb25zdDsKIAogcHJpdmF0ZToK
QEAgLTkxLDYgKzk1LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOwogICAg
IFN0cmluZyBtX3VuaXF1ZUlkZW50aWZpZXI7CiAgICAgUmVmUHRyPEltYWdlPiBtX3RodW1ibmFp
bDsKKyAgICBSZWZQdHI8SW1hZ2U+IG1faWNvbjsKKyAgICBGbG9hdFNpemUgbV9pY29uU2l6ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2lu
Y2x1ZGUgIkR1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15
U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAi
RW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIkVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0
ZS5oIgpAQCAtMTI1Miw2ICsxMjUzLDEwIEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1
cmF0aW9uV2l0aEUKICAgICBwYWdlQ29uZmlndXJhdGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gYWRvcHRSZWYoKm5ldyBFbXB0eVZp
c2l0ZWRMaW5rU3RvcmUpOwogICAgIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEVsZW1lbnRDbGllbnQgPSBtYWtlVW5pcXVl
PEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQ+KCk7CisjZW5kaWYKKwogICAgIHJldHVybiBw
YWdlQ29uZmlndXJhdGlvbjsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRmxvYXRTaXplOworCitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXR0
YWNobWVudEVsZW1lbnRDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEF0dGFj
aG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRW1wdHlBdHRhY2htZW50
RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlICJBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQgZmluYWwgOiBwdWJsaWMgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBGbG9hdFNpemUmKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJBbmltYXRpb25GcmFtZVJhdGUuaCIKICNpbmNsdWRlICJBcHBIaWdobGlnaHRTdG9y
YWdlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkQ2FjaGUuaCIKQEAgLTM0Miw2ICszNDMsOSBAQCBQYWdlOjpQYWdl
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX3Blcm1pc3Npb25Db250cm9s
bGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVybWlzc2lvbkNvbnRyb2xsZXIpKQogICAg
ICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5zdG9yYWdlUHJv
dmlkZXIpKQogICAgICwgbV9tb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikpCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICAsIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQoV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi5hdHRhY2htZW50RWxlbWVudENsaWVudCkpCisjZW5kaWYKIHsKICAgICB1cGRhdGVUaW1l
clRocm90dGxpbmdTdGF0ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjg5MjM3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYg
Kzk2LDcgQEAgY2xhc3MgQXBwbGVQYXlBTVNVSVBheW1lbnRIYW5kbGVyOwogY2xhc3MgQWN0aXZp
dHlTdGF0ZUNoYW5nZU9ic2VydmVyOwogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xh
c3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVu
dDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjsKIGNsYXNzIEJhY2tGb3J3YXJkQ29u
dHJvbGxlcjsKIGNsYXNzIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKQEAgLTkyOSw2ICs5MzAs
MTAgQEAgcHVibGljOgogCiAgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYgbW9kZWxQbGF5ZXJQcm92
aWRlcigpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBBdHRhY2htZW50
RWxlbWVudENsaWVudCogYXR0YWNobWVudEVsZW1lbnRDbGllbnQoKSB7IHJldHVybiBtX2F0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmdldCgpOyB9CisjZW5kaWYKKwogI2lmIFVTRShBVFNQSSkKICAg
ICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eVJvb3RPYmplY3Q7IH0KICAgICB2b2lkIHNldEFjY2Vz
c2liaWxpdHlSb290T2JqZWN0KEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIHJvb3RPYmplY3QpIHsg
bV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCA9IHJvb3RPYmplY3Q7IH0KQEAgLTEyODUsNiArMTI5
MCwxMCBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFn
ZVByb3ZpZGVyOwogICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxh
eWVyUHJvdmlkZXI7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gbV9hdHRhY2htZW50RWxlbWVudENs
aWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIHVzaW5nIENh
Y2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxUZXh0UmVjb2duaXRpb25SZXN1
bHQsIEludFJlY3Q+OwogICAgIFdlYWtIYXNoTWFwPEhUTUxFbGVtZW50LCBDYWNoZWRUZXh0UmVj
b2duaXRpb25SZXN1bHQ+IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0czsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFsdGVybmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQ7CiBjbGFzcyBBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIEJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTsKQEAgLTE1Miw2ICsxNTMsOSBAQCBwdWJsaWM6CiAgICAgVW5p
cXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gc3RvcmFnZVByb3ZpZGVyOwogCiAgICAgVW5pcXVlUmVm
PE1vZGVsUGxheWVyUHJvdmlkZXI+IG1vZGVsUGxheWVyUHJvdmlkZXI7CisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEVsZW1lbnRD
bGllbnQ+IGF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCShyZXZpc2lvbiAyODkyMzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JVVEkoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGlj
IFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsK
KworICAgIFJldGFpblB0cjxOU0ltYWdlPiBuc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9uc0lt
YWdlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBA
QAogI2VuZGlmCiAKIE9CSkNfQ0xBU1MgQ0lDb250ZXh0OworT0JKQ19DTEFTUyBVSUltYWdlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwog
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGbG9hdFNpemUmKTsKKwogcHJpdmF0ZToKICAgICBi
b29sIGNhblBhaW50KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IFNldHRpbmdzJikgY29uc3QgZmlu
YWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0J
KHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgc3RydWN0IFJlbmRl
ckF0dGFjaG1lbnRJbmZvIHsKICAgICBCT09MIGhhc1Byb2dyZXNzIHsgTk8gfTsKICAgICBmbG9h
dCBwcm9ncmVzczsKIAotICAgIFJldGFpblB0cjxVSUltYWdlPiBpY29uOworICAgIFJlZlB0cjxJ
bWFnZT4gaWNvbjsKICAgICBSZWZQdHI8SW1hZ2U+IHRodW1ibmFpbEljb247CiAKICAgICBpbnQg
YmFzZWxpbmUgeyAwIH07CkBAIC0xNzkyLDIxICsxNzkyLDE4IEBAIHN0YXRpYyBCT09MIGdldEF0
dGFjaG1lbnRQcm9ncmVzcyhjb25zdCAKICAgICByZXR1cm4gdmFsaWRQcm9ncmVzczsKIH0KIAot
c3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNpemUpCitSZXRhaW5QdHI8VUlJbWFn
ZT4gUmVuZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZs
b2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgIGF1dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwog
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgU3RyaW5nIGZpbGVO
YW1lOwotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmZpbGUoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1lKCk7Ci0KLSAgICBpZiAoZmls
ZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBmaWxlTmFtZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5hdHRhY2htZW50VGl0bGUoKTsKLSAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNv
bnRyb2xsZXIgc2V0TmFtZTpmaWxlTmFtZV07CisgICAgYXV0byBuYW1lID0gZmlsZU5hbWU7Cisg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICBuYW1lID0gdGl0bGU7CisKKyAgICBbZG9j
dW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpuYW1lXTsKIAotICAgIFN0cmluZyBh
dHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50
VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0
cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKQEAg
LTE4NjcsOCArMTg2NCwxMCBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluCiAgICAgfQogCiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkgJiYgIWhhc1Byb2dyZXNzKSB7
Ci0gICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZTsKLSAgICAgICAgaWNvbiA9IGljb25Gb3JBdHRh
Y2htZW50KGF0dGFjaG1lbnQsIGljb25TaXplKTsKKyAgICAgICAgRmxvYXRTaXplIGljb25TaXpl
ID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb25TaXplKCk7CisgICAgICAgIGlj
b24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOworICAgICAgICBpZiAo
IWljb24pCisgICAgICAgICAgICBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkucmVxdWVz
dEljb25XaXRoU2l6ZShGbG9hdFNpemUoKSk7CiAgICAgICAgIHRodW1ibmFpbEljb24gPSBhdHRh
Y2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsKCk7CiAgICAgICAgIGlmICh0aHVt
Ym5haWxJY29uKQogICAgICAgICAgICAgaWNvblNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3QodGh1bWJuYWlsSWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlvKCksIEZsb2F0
UmVjdCgwLCAwLCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUo
KTsKQEAgLTE5MTMsNyArMTkxMiw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24o
R3JhcGhpY3MKICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2Ug
PSBpbmZvLnRodW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBp
Y29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAg
ICAgICBpY29uSW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
Kmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsx
MDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5l
ZCBkb2N1bWVudC4KICAgICBOU1ZpZXcqIGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8TlNJbWFn
ZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAg
UmVuZGVyVGhlbWVNYWMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDMg
QEAgaW50IFJlbmRlclRoZW1lTWFjOjphdHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBs
YXlvdXQuYmFzZWxpbmU7CiB9CiAKK1JldGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1hYzo6
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1l
bnRUeXBlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShh
dHRhY2htZW50VHlwZSwgIm11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UoYXR0YWNobWVudFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsK
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBpZiAoYXV0
byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgVVRJOworICAg
ICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAgICAgICAg
ICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIFVUSSA9IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CisKKyAgICAgICAgICAg
IGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKFVUSSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpj
cmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFtZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29u
LT5uc0ltYWdlKCk7CisgICAgfQorCisgICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBbc3Rh
dGljX2Nhc3Q8TlNTdHJpbmcgKj4odGl0bGUpIHBhdGhFeHRlbnNpb25dOworICAgIGlmIChmaWxl
RXh0ZW5zaW9uLmxlbmd0aCkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRl
SWNvbkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4g
aWNvbi0+bnNJbWFnZSgpOworICAgIH0KKworICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVh
dGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0YSIpKQorICAgICAgICByZXR1cm4gaWNvbi0+bnNJbWFn
ZSgpOworICAgIAorICAgIHJldHVybiBudWxscHRyOworfQorCiBzdGF0aWMgdm9pZCBwYWludEF0
dGFjaG1lbnRJY29uQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsK
ICAgICBpZiAobGF5b3V0LnN0eWxlID09IEF0dGFjaG1lbnRMYXlvdXRTdHlsZTo6Tm9uU2VsZWN0
ZWQpCkBAIC0yNTk1LDUyICsyNjMyLDI5IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudElj
b25CYWNrZ3JvdW4KICAgICB9CiB9CiAKLXN0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKLXsKLSAgICBTdHJpbmcg
YXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVu
dFR5cGUoKTsKLSAgICAKLSAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewotICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgIm11bHRpcGFy
dC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJh
cHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvclVUSShrVVRUeXBlRm9sZGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKLUFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgU3RyaW5nIFVUSTsKLSAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1l
bnRUeXBlKSkKLSAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNobWVu
dFR5cGUpOwotCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZv
clVUSShVVEkpKQotICAgICAgICAgICAgICAgIHJldHVybiBpY29uOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCku
ZmlsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoeyBmaWxlLT5wYXRoKCkgfSkpCi0gICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0K
LSAgICBOU1N0cmluZyAqZmlsZUV4dGVuc2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihh
dHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCkpIHBhdGhFeHRl
bnNpb25dOwotICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgewotICAgICAgICBpZiAoYXV0
byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikp
Ci0gICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gSWNvbjo6Y3Jl
YXRlSWNvbkZvclVUSSgicHVibGljLmRhdGEiKTsKLX0KLQogc3RhdGljIHZvaWQgcGFpbnRBdHRh
Y2htZW50SWNvbihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAgICBpZiAoYXV0
byB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFp
bCgpKSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29uLCBsYXlvdXQu
aWNvblJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gaWNvbiA9IGljb25G
b3JBdHRhY2htZW50KGF0dGFjaG1lbnQpOwotICAgIGlmICghaWNvbikKKyAgICBTdHJpbmcgYXR0
YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFR5
cGUoKTsKKyAgICBhdXRvIGljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNv
bigpOworICAgIGlmICghaWNvbikgeworICAgICAgICBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVt
ZW50KCkucmVxdWVzdEljb25XaXRoU2l6ZShsYXlvdXQuaWNvblJlY3Quc2l6ZSgpKTsKICAgICAg
ICAgcmV0dXJuOwotICAgIGljb24tPnBhaW50KGNvbnRleHQsIGxheW91dC5pY29uUmVjdCk7Cisg
ICAgfQorCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIG5zSW1hZ2UgPSBpY29uLT5uc0ltYWdlKCk7CisgICAgaWYgKCFuc0lt
YWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0IGxvY2FsQ3VycmVudEdDKGNvbnRleHQpOworCisgICAgW25zSW1hZ2UgZHJhd0luUmVjdDps
YXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBbbnNJbWFnZSBzaXplXS53
aWR0aCwgW25zSW1hZ2Ugc2l6ZV0uaGVpZ2h0KSBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJh
dGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MS4wZl07CiB9CiAKIHN0YXRpYyBzdGQ6OnBhaXI8UmVm
UHRyPEltYWdlPiwgZmxvYXQ+IGNyZWF0ZUF0dGFjaG1lbnRQbGFjZWhvbGRlckltYWdlKGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjg5ODIyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMi0xNSAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VuZCBpY29ucyB0byB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzIGZvciByZW5kZXJpbmcgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mzg2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8g
YXZvaWQgY29ubmVjdGluZyB0byB0aGUgSWNvbiBTZXJ2aWNlcyBkYWVtb24gaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2Vzcywgd2Ugc2hvdWxkIHNlbmQgdGhlIGljb25zIGZvciB0aGUgYXR0YWNobWVu
dAorICAgICAgICBlbGVtZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkg
cHJvY2Vzcy4gVGhlIGljb24gd2lsbCBiZSBzZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mg
d2hlbiB0aGUgYXR0YWNobWVudAorICAgICAgICBhdHRyaWJ1dGVzIGFyZSB1cGRhdGVkLCBvciB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyByZXF1ZXN0ZWQgdGhlIGljb24uIFRoZSBuZXcgY2xp
ZW50IGNsYXNzIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGlzCisgICAgICAgIHJlc3BvbnNp
YmxlIGZvciByZXF1ZXN0aW5nIGljb25zIGZyb20gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24pOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ6OnJlcXVlc3RBdHRhY2htZW50SWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxl
bWVudENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
ZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50VGh1bWJu
YWlsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDItMTUgIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgYWRkaXRpb25h
bCBSZXZlZWFsIG1ldGhvZHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI4OTIzNykKKysr
IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc5NCw2ICs3OTQs
NyBAQCBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvCiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1JlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAKIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbG9yQ2hvb3Nlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxOTgsNiArMTAxOTgsMTggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZQogICAgIHBhZ2VDbGllbnQo
KS53cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGluZm8pKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEZsb2F0U2l6ZSYgcmVxdWVzdGVkU2l6
ZSkKK3sKKyAgICBGbG9hdFNpemUgc2l6ZSA9IHJlcXVlc3RlZFNpemU7CisgICAgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gaWNv
biA9IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUsIHNpemUp
OworICAgIGlmIChpY29uKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNl
bmRpZgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlk
ZW50aWZpZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBX
ZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikgY29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSw3
ICsxMDIzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmkKIH0K
IAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1
cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDIyOCw3ICsxMDI0MCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5k
bGUpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAj
aWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVu
dEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0
aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5h
aWxXaXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0
aW9uICopOwpAQCAtMjUyNCw2ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlk
YXRlQWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRU
b1Bhc3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZv
aWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAg
ICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IHNlcmFsaXplZERhdGEpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRU
b1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykK
KyAgICBSZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250
ZW50VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNp
emUpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZp
c2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgU09GVF9MSU5LX0NM
QVNTX09QVElPTkFMKFN5bmFwc2UsIFNZTm90ZQogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8V2ViQ29yZS9SZW5k
ZXJUaGVtZUlPUy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMuaD4K
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJG
aWx0ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5Myw0MSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3Jh
cHBlcihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29j
b2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZml0dGluZ1NpemUpCit7
CisgICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAg
IGF1dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJh
dGlvSW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0s
IGZpdHRpbmdTaXplIH0pKTsKKyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAg
ICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0
aW9uOworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYg
KCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlm
IFVTRShBUFBLSVQpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpO
U1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFj
dGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1
cm4gYml0bWFwOworfQorCitSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQ
cm94eTo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQor
eworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1l
SU9TOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlLCBzaXpl
KTsKKyNlbHNlCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNo
bWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAgIHJldHVybiBj
b252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLCBzaXplKTsKK30KKwogI2Vu
ZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHBvaW50KQpAQCAtNTIyLDMxICs1NjMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnVs
bHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCiAK
LXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUlt
YWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZp
dHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdl
IHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVj
dFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJh
dGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlv
bih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0
bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRp
b24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAg
ICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQp
OwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0
UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJl
Y3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNv
dXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RU
aHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRp
b24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKQEAgLTU1NSw3ICs1
NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPCiAgICAgICAg
ICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChb
b3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKICAgICAg
ICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVydGVk
SW1hZ2UpOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVu
dGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH1dOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2ICs2Mzc4LDggQEAKIAkJRTMx
MzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2Iu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUw
QiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYxMkZGMDI2
RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9z
L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgcGF0aCA9
IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAwRjg4RkU5IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2Fn
ZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NjQsNiArMTA3
NjYsOCBAQAogCQkJCUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAvKiBTaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuY3BwICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMwMDk5MEUyNiAvKiBTaGFyZWFi
bGVCaXRtYXBVdGlsaXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyog
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUQyN0I3MThFRjAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLywKKwkJCQlFMzZENzAxQTI3
QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLywKIAkJCQk0
NkVFMjg0NzI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNw
cCAqLywKIAkJCQk0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmggKi8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKwor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQor
eworfQorCit2b2lkIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNobWVu
dEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUpCit7CisgICAgbV9wYWdlLnJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBz
aXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPFdlYkNvcmUvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdlJik7CisgICAgdmlydHVhbCB+
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlJiBtX3BhZ2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJX
S1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorI2luY2x1ZGUgIldlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmgiCkBAIC02NTIsNiArNjUzLDggQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIAogICAgICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rp
c2FibGVyOjpzaW5nbGV0b24oKS5zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJs
ZWQoZmFsc2UpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5hdHRhY2htZW50RWxlbWVudENsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQ+KCp0aGlzKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLmF0dGFjaG1l
bnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcykKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KCpwYXJhbWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFu
ZGxlcyk7CiAjZW5kaWYKQEAgLTczMTMsNyArNzMxNiw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMKICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQordm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQogewogICAgIGlmIChh
dXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiB0aHVtYm5haWwgPSAh
cWxUaHVtYm5haWxIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShxbFRo
dW1ibmFpbEhhbmRsZSkgOiBudWxscHRyKQpAQCAtNzMyMSw2ICs3MzI0LDI0IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFn
ZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaWNvbkhhbmRsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBzaXplKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVu
dFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBpY29uID0gIWljb25IYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpY29uSGFuZGxlKSA6IG51bGxwdHIpCisgICAgICAgICAgICBhdHRhY2htZW50LT51
cGRhdGVJY29uKGljb24tPmNyZWF0ZUltYWdlKCksIHNpemUpOworICAgIH0KK30KKwordm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVu
dCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAg
ICAgU3RyaW5nIGZpbGVOYW1lOworICAgICAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQt
PmZpbGUoKSkKKyAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZS0+cGF0aCgpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlm
aWVyLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgpLCBmaWxlTmFtZSwgYXR0YWNobWVudC0+
YXR0YWNobWVudFRpdGxlKCksIHNpemUpKTsKKyAgICB9Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0
YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMTAsNyArMTMxMCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
OworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7
CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKTsKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4OTIzNykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTU4MCw3ICs1ODAsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWluCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJ
bnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFz
eW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmlu
ZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4g
KCkgQXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRh
dGVBdHRhY2htZW50VGh1bWJuYWlsKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGlj
b24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCg==
</data>
<flag name="review"
          id="479033"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="479051"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452204</attachid>
            <date>2022-02-16 10:03:25 -0800</date>
            <delta_ts>2022-02-16 10:23:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216100324.patch</filename>
            <type>text/plain</type>
            <size>53395</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorSWNvbkFuZFNpemUgUmVuZGVy
VGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYg
c2l6ZSkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGF1
dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlE
b2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCi0gICAgU3RyaW5nIGZpbGVOYW1lOwotICAg
IGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkK
LSAgICAgICAgZmlsZU5hbWUgPSBmaWxlLT5uYW1lKCk7Ci0KLSAgICBpZiAoZmlsZU5hbWUuaXNF
bXB0eSgpKQotICAgICAgICBmaWxlTmFtZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS5hdHRhY2htZW50VGl0bGUoKTsKLSAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIg
c2V0TmFtZTpmaWxlTmFtZV07CisgICAgW2RvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyIHNl
dE5hbWU6ZmlsZU5hbWUuaXNFbXB0eSgpID8gdGl0bGUgOiBmaWxlTmFtZV07CiAKLSAgICBTdHJp
bmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNo
bWVudFR5cGUoKTsKICAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHkoKSkgewogICAgICAg
ICBTdHJpbmcgVVRJOwogICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkp
CkBAIC0xODIzLDcgKzE4MTYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25Gb3JB
dHRhY2htCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIE5TQXJyYXkgKmljb25zID0gW2RvY3VtZW50
SW50ZXJhY3Rpb25Db250cm9sbGVyIGljb25zXTsKICAgICBpZiAoIWljb25zLmNvdW50KQotICAg
ICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gSWNvbkFuZFNpemUgeyBuaWwsIEZsb2F0
U2l6ZSgpIH07CiAKICAgICByZXN1bHQgPSBpY29ucy5sYXN0T2JqZWN0OwogCkBAIC0xODQ2LDcg
KzE4MzksNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htCiAgICAg
Q0dGbG9hdCBpY29uQXNwZWN0ID0gW3Jlc3VsdCBzaXplXS53aWR0aCAvIFtyZXN1bHQgc2l6ZV0u
aGVpZ2h0OwogICAgIHNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qo
aWNvbkFzcGVjdCwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVu
dEljb25TaXplKSkuc2l6ZSgpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gSWNv
bkFuZFNpemUgeyByZXN1bHQsIHNpemUgfTsKIH0KIAogUmVuZGVyQXR0YWNobWVudEluZm86OlJl
bmRlckF0dGFjaG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCkBA
IC0xODY3LDggKzE4NjAsMTAgQEAgUmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFjaG1l
bnRJbgogICAgIH0KIAogICAgIGlmIChhY3Rpb24uaXNFbXB0eSgpICYmICFoYXNQcm9ncmVzcykg
ewotICAgICAgICBGbG9hdFNpemUgaWNvblNpemU7Ci0gICAgICAgIGljb24gPSBpY29uRm9yQXR0
YWNobWVudChhdHRhY2htZW50LCBpY29uU2l6ZSk7CisgICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6
ZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29uU2l6ZSgpOworICAgICAgICBp
Y29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb24oKTsKKyAgICAgICAgaWYg
KCFpY29uKQorICAgICAgICAgICAgYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnJlcXVl
c3RJY29uV2l0aFNpemUoRmxvYXRTaXplKCkpOwogICAgICAgICB0aHVtYm5haWxJY29uID0gYXR0
YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnRodW1ibmFpbCgpOwogICAgICAgICBpZiAodGh1
bWJuYWlsSWNvbikKICAgICAgICAgICAgIGljb25TaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0
UmF0aW9JbnNpZGVSZWN0KHRodW1ibmFpbEljb24tPnNpemUoKS5hc3BlY3RSYXRpbygpLCBGbG9h
dFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25TaXplLCBhdHRhY2htZW50SWNvblNpemUpKS5zaXpl
KCk7CkBAIC0xOTEzLDcgKzE5MDgsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29u
KEdyYXBoaWNzCiAgICAgaWYgKGluZm8udGh1bWJuYWlsSWNvbikKICAgICAgICAgaWNvbkltYWdl
ID0gaW5mby50aHVtYm5haWxJY29uOwogICAgIGVsc2UgaWYgKGluZm8uaWNvbikKLSAgICAgICAg
aWNvbkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShbaW5mby5pY29uIENHSW1hZ2VdKTsKKyAg
ICAgICAgaWNvbkltYWdlID0gaW5mby5pY29uOwogICAgIAogICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppY29uSW1hZ2UsIGluZm8uaWNvblJlY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiAr
MTAwLDggQEAgcHVibGljOgogICAgIC8vIEEgdmlldyBhc3NvY2lhdGVkIHRvIHRoZSBjb250YWlu
ZWQgZG9jdW1lbnQuCiAgICAgTlNWaWV3KiBkb2N1bWVudFZpZXdGb3IoY29uc3QgUmVuZGVyT2Jq
ZWN0JikgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPE5TSW1h
Z2U+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgYXR0YWNobWVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworCiBwcml2YXRlOgogICAg
IFJlbmRlclRoZW1lTWFjKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU2NCw2ICsyNTY0LDQ4
IEBAIGludCBSZW5kZXJUaGVtZU1hYzo6YXR0YWNobWVudEJhc2VsaW5lKGMKICAgICByZXR1cm4g
bGF5b3V0LmJhc2VsaW5lOwogfQogCitzdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUs
IGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUs
ICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1l
bnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIpKSB7CitBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICAgICAgYXV0byB0eXBlID0ga1VUVHlwZUZv
bGRlcjsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICAgICAgaWYg
KGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkodHlwZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGljb247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgdHlw
ZTsKKyAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKKyAgICAg
ICAgICAgICAgICB0eXBlID0gYXR0YWNobWVudFR5cGU7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdHlwZSA9IFVUSUZyb21NSU1FVHlwZShhdHRhY2htZW50VHlwZSk7CisKKyAg
ICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKHR5cGUpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCFmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlcyh7IGZpbGVOYW1lIH0pKQorICAgICAgICAgICAgcmV0dXJuIGljb247
CisgICAgfQorCisgICAgTlNTdHJpbmcgKmNvY29hVGl0bGUgPSB0aXRsZTsKKyAgICBpZiAoYXV0
byBmaWxlRXh0ZW5zaW9uID0gY29jb2FUaXRsZS5wYXRoRXh0ZW5zaW9uOyBmaWxlRXh0ZW5zaW9u
Lmxlbmd0aCkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVFeHRlbnNpb24oZmlsZUV4dGVuc2lvbikpCisgICAgICAgICAgICByZXR1cm4gaWNvbjsKKyAg
ICB9CisKKyAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRhdGEiKTsK
K30KKworUmV0YWluUHRyPE5TSW1hZ2U+IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmIChhdXRvIGljb24gPSBXZWJDb3JlOjppY29u
Rm9yQXR0YWNobWVudChmaWxlTmFtZSwgYXR0YWNobWVudFR5cGUsIHRpdGxlKSkKKyAgICAgICAg
cmV0dXJuIGljb24tPm5zSW1hZ2UoKTsKKyAgICByZXR1cm4gbmlsOworfQorCiBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuZChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxh
eW91dCkKIHsKICAgICBpZiAobGF5b3V0LnN0eWxlID09IEF0dGFjaG1lbnRMYXlvdXRTdHlsZTo6
Tm9uU2VsZWN0ZWQpCkBAIC0yNTk1LDUyICsyNjM3LDI5IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0
YWNobWVudEljb25CYWNrZ3JvdW4KICAgICB9CiB9CiAKLXN0YXRpYyBSZWZQdHI8SWNvbj4gaWNv
bkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKLXsKLSAg
ICBTdHJpbmcgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCku
YXR0YWNobWVudFR5cGUoKTsKLSAgICAKLSAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwg
Im11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVu
dFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKLUFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6
Y3JlYXRlSWNvbkZvclVUSShrVVRUeXBlRm9sZGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
aWNvbjsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgU3RyaW5nIFVUSTsKLSAgICAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJ
KGF0dGFjaG1lbnRUeXBlKSkKLSAgICAgICAgICAgICAgICBVVEkgPSBhdHRhY2htZW50VHlwZTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBVVEkgPSBVVElGcm9tTUlNRVR5cGUo
YXR0YWNobWVudFR5cGUpOwotCi0gICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3Jl
YXRlSWNvbkZvclVUSShVVEkpKQotICAgICAgICAgICAgICAgIHJldHVybiBpY29uOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuZmlsZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoeyBmaWxlLT5wYXRoKCkgfSkpCi0gICAgICAgICAgICByZXR1cm4gaWNvbjsK
LSAgICB9Ci0KLSAgICBOU1N0cmluZyAqZmlsZUV4dGVuc2lvbiA9IFtzdGF0aWNfY2FzdDxOU1N0
cmluZyAqPihhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCkp
IHBhdGhFeHRlbnNpb25dOwotICAgIGlmIChmaWxlRXh0ZW5zaW9uLmxlbmd0aCkgewotICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVFeHRlbnNpb24oZmlsZUV4
dGVuc2lvbikpCi0gICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSSgicHVibGljLmRhdGEiKTsKLX0KLQogc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKIHsKICAg
ICBpZiAoYXV0byB0aHVtYm5haWxJY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LnRodW1ibmFpbCgpKSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCp0aHVtYm5haWxJY29u
LCBsYXlvdXQuaWNvblJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gaWNv
biA9IGljb25Gb3JBdHRhY2htZW50KGF0dGFjaG1lbnQpOwotICAgIGlmICghaWNvbikKKworICAg
IGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlj
b24tPnBhaW50KGNvbnRleHQsIGxheW91dC5pY29uUmVjdCk7CisKKyAgICBhdXRvIGljb24gPSBh
dHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOworICAgIGlmICghaWNvbikgewor
ICAgICAgICBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkucmVxdWVzdEljb25XaXRoU2l6
ZShsYXlvdXQuaWNvblJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gaW1hZ2UgPSBpY29uLT5uc0ltYWdlKCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJl
bnRHQyhjb250ZXh0KTsKKworICAgIFtpbWFnZSBkcmF3SW5SZWN0OmxheW91dC5pY29uUmVjdCBm
cm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFtpbWFnZSBzaXplXS53aWR0aCwgW2ltYWdlIHNpemVd
LmhlaWdodCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0
aW9uOjEuMGZdOwogfQogCiBzdGF0aWMgc3RkOjpwYWlyPFJlZlB0cjxJbWFnZT4sIGZsb2F0PiBj
cmVhdGVBdHRhY2htZW50UGxhY2Vob2xkZXJJbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvciwg
Y29uc3QgQXR0YWNobWVudExheW91dCYgbGF5b3V0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
OTgyMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDIgQEAKKzIwMjItMDItMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFNlbmQgaWNvbnMgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmb3IgcmVu
ZGVyaW5nIG9mIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGNvbm5lY3RpbmcgdG8gdGhl
IEljb24gU2VydmljZXMgZGFlbW9uIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHNob3Vs
ZCBzZW5kIHRoZSBpY29ucyBmb3IgdGhlIGF0dGFjaG1lbnQKKyAgICAgICAgZWxlbWVudCB0byB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIGZyb20gdGhlIFVJIHByb2Nlc3MuIFRoZSBpY29uIHdpbGwg
YmUgc2VudCB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gdGhlIGF0dGFjaG1lbnQKKyAg
ICAgICAgYXR0cmlidXRlcyBhcmUgdXBkYXRlZCwgb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBo
YXMgcmVxdWVzdGVkIHRoZSBpY29uLiBUaGUgbmV3IGNsaWVudCBjbGFzcyBXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudCBpcworICAgICAgICByZXNwb25zaWJsZSBmb3IgcmVxdWVzdGluZyBpY29u
cyBmcm9tIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dHRhY2htZW50SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZUF0dGFjaG1lbnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZEluc2VydEF0dGFjaG1lbnRXaXRo
SWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIyLTAyLTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IGFkZGl0aW9uYWwgUmV2ZWVhbCBtZXRob2RzLgpJbmRl
eDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC03OTQsNiArNzk0LDcgQEAgV2ViUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoblBybwogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9SZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1h
cFV0aWxpdGllcy5jcHAKK1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI4
OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMTk4LDYgKzEwMTk4LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3cml0
ZVByb21pc2VkQXR0YWNobWUKICAgICBwYWdlQ2xpZW50KCkud3JpdGVQcm9taXNlZEF0dGFjaG1l
bnRUb1Bhc3RlYm9hcmQoV1RGTW92ZShpbmZvKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBGbG9hdFNpemUmIHJlcXVlc3RlZFNpemUpCit7CisgICAgRmxvYXRTaXplIHNp
emUgPSByZXF1ZXN0ZWRTaXplOworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoYXV0byBpY29uID0gaWNvbkZvckF0dGFjaG1l
bnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSwgc2l6ZSkpCisgICAgICAgIGljb24tPmNy
ZWF0ZUhhbmRsZShoYW5kbGUpOworI2VuZGlmCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlLCBzaXplKSk7Cit9CisKIFJl
ZlB0cjxBUEk6OkF0dGFjaG1lbnQ+IFdlYlBhZ2VQcm94eTo6YXR0YWNobWVudEZvcklkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIGlmIChpZGVudGlmaWVy
LmlzRW1wdHkoKSkKQEAgLTEwMjE5LDcgKzEwMjMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaQogfQogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5H
KQotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mIGJpdG1hcCkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mIGJpdG1hcCkKIHsKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMjI4LDcgKzEw
MjM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKAogICAgIGlm
IChiaXRtYXApCiAgICAgICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CiAKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBo
YW5kbGUpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50VGh1
bWJuYWlsKGlkZW50aWZpZXIsIGhhbmRsZSkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1MSw3
ICsxNzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEludmFsaWRhdGVEYXRhRm9yQXR0YWNobWVu
dChBUEk6OkF0dGFjaG1lbnQmKTsKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCi0g
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChj
b25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYpOwogICAgIHZvaWQg
cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyICos
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24o
V0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKik7CkBAIC0yNTI0LDYgKzI1MjQsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbGxBdHRhY2htZW50cygpOwogCiAgICAgdm9pZCB3
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXZWJDb3JlOjpQcm9taXNlZEF0dGFj
aG1lbnRJbmZvJiYpOworCisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisKKyAgICBS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydFBh
Z2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVy
KFN0cmluZyBpZGVudGlmaWVyKQogICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyYWxpemVkRGF0YSkgU3luY2hyb25vdXMKICAgICBX
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UHJvbWlz
ZWRBdHRhY2htZW50SW5mbyBpbmZvKQorICAgIFJlcXVlc3RBdHRhY2htZW50SWNvbihTdHJpbmcg
aWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgcGF0aCwgU3RyaW5nIHRpdGxl
LCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2
ICs4MywxMiBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoU3luYXBzZSwgU1lOb3RlCiAjaW1w
b3J0IDxVSUtpdC9VSUltYWdlLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lSU9TLmg+CisjZWxzZQorI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJUaGVtZU1hYy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQSS5oPgogCkBAIC0yODcsNiAr
MjkzLDQzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUNsb25lQXR0YWNobWUKICAgICB0
b0F0dGFjaG1lbnQtPnNldEZpbGVXcmFwcGVyKGZyb21BdHRhY2htZW50LT5maWxlV3JhcHBlcigp
KTsKIH0KIAorc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBs
YXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICppbWFnZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBmaXR0aW5nU2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxT
aXplKFtpbWFnZSBzaXplXSk7CisgICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3Qo
bGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6
ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOworICAgIHJlc3VsdFJlY3Qu
c2V0TG9jYXRpb24oeyB9KTsKKworICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247CisgICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBD
b25maWd1cmF0aW9uKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhp
Y3NDb250ZXh0KTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtpbWFnZSBkcmF3SW5S
ZWN0OnJlc3VsdFJlY3RdOworI2VsaWYgVVNFKEFQUEtJVCkKKyAgICBbaW1hZ2UgZHJhd0luUmVj
dDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdP
cGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5p
bF07CisjZW5kaWYKKworICAgIHJldHVybiBiaXRtYXA7Cit9CisKK1JlZlB0cjxXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcD4gV2ViUGFnZVByb3h5OjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGbG9hdFNpemUmIHNpemUpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBh
dXRvIGltYWdlQW5kU2l6ZSA9IFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChmaWxl
TmFtZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyAgICBhdXRvIGltYWdlID0gaW1hZ2VBbmRTaXpl
LmltYWdlOworICAgIHNpemUgPSBpbWFnZS5zaXplOworI2Vsc2UKKyAgICBhdXRvIGltYWdlID0g
UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwg
dGl0bGUpOworI2VuZGlmCisgICAgcmV0dXJuIGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAo
aW1hZ2UuZ2V0KCksIHNpemUpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9pbnQpCkBAIC01MjIsMzEgKzU2
NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmdWxsc2NyZWVuVmlkZW9FeHRyYWMKIAogI2lmIEhB
VkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKIAotc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcD4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICppbWFn
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgZml0dGluZ1NpemUpCi17Ci0gICAgRmxvYXRTaXpl
IG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOwotICAgIGF1dG8gcmVzdWx0UmVj
dCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChv
cmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZpdHRpbmdTaXplIH0p
KTsKLSAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7Ci0KLSAgICBXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAgIGF1dG8g
Yml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRS
ZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBz
YXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKLSNlbGlmIFVTRShBUFBLSVQpCi0g
ICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1plcm9SZWN0IG9wZXJh
dGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RG
bGlwcGVkOllFUyBoaW50czpuaWxdOwotI2VuZGlmCi0KLSAgICByZXR1cm4gYml0bWFwOwotfQot
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRo
dW1ibmFpbExvYWRPcGVyYXRpb24gKm9wZXJhdGlvbikKIHsKICAgICBbb3BlcmF0aW9uIHNldENv
bXBsZXRpb25CbG9jazpeewpAQCAtNTU1LDcgKzU3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0VGh1bWJuYWlsV2l0aE8KICAgICAgICAgICAgIGF1dG8gY29udmVydGVkSW1hZ2UgPSBj
b252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKFtvcGVyYXRpb24gdGh1bWJuYWlsXSwgV2ViQ29y
ZTo6SW50U2l6ZSg0MDAsIDQwMCkpOwogICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWRJbWFnZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2ht
ZW50SWNvbihpZGVudGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CisgICAgICAgICAgICB0aGlzLT51
cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGlkZW50aWZpZXIsIGNvbnZlcnRlZEltYWdlKTsKICAg
ICAgICAgfSk7CiAgICAgfV07CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02Mzc4LDYgKzYzNzgsOCBAQAogCQlFMzEzNjY0RDI2NUVFNUFGMDA1MTA4NEYgLyogY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBw
YXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBw
YXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcwMUEyN0I3
MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZF
OSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNjIz
OTc0MDUzMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5oOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFF
RDIzOTg0NzFBMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDc2NCw2ICsxMDc2Niw4IEBACiAJCQkJRjQzQTlDREUyNUQ3MkUy
RDAwOTkwRTI2IC8qIFNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAgKi8sCiAJCQkJRjQzQTlD
REQyNUQ3MkUwQzAwOTkwRTI2IC8qIFNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oICovLAogCQkJ
CUNFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAq
LywKKwkJCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuY3BwICovLAorCQkJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovLAogCQkJCTQ2RUUyODQ3MjY5RTA0OUIwMERENDhBQiAvKiBX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwICovLAogCQkJCTQ2RUUyODQ4MjY5RTA0OUIw
MERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCAqLywKIAkJCQk0NkU5NzYw
QTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2Vz
LmluICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIgorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdl
JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3ZvaWQgV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQ6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3BhZ2UucmVxdWVz
dEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIHNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6QXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50KFdlYlBhZ2UmKTsKKworICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgZmlu
YWw7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIu
aCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUgIldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
IgpAQCAtNjUyLDYgKzY1Myw4IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCAKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2lu
Z2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
YXR0YWNobWVudEVsZW1lbnRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50PigqdGhpcyk7CisKICAgICBpZiAocGFyYW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4
dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseSgqcGFyYW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMpOwogI2Vu
ZGlmCkBAIC03MzEzLDcgKzczMTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzCiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSkKIHsKICAgICBpZiAoYXV0byBhdHRhY2ht
ZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAg
ICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWls
SGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5k
bGUpIDogbnVsbHB0cikKQEAgLTczMjEsNiArNzMyNCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZUF0dGFjaG1lbnRJY29uKGNvbnN0CiAgICAgfQogfQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0
dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGljb25IYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkK
K3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
ZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gIWljb25IYW5kbGUu
aXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpY29uSGFuZGxlKSA6IG51bGxwdHIp
CisgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVJY29uKGljb24tPmNyZWF0ZUltYWdlKCks
IHNpemUpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEljb24o
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUp
Cit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50
aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAgICAgU3RyaW5nIGZpbGVOYW1lOworICAgICAgICBp
ZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQtPmZpbGUoKSkKKyAgICAgICAgICAgIGZpbGVOYW1l
ID0gZmlsZS0+cGF0aCgpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
cXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlw
ZSgpLCBmaWxlTmFtZSwgYXR0YWNobWVudC0+YXR0YWNobWVudFRpdGxlKCksIHNpemUpKTsKKyAg
ICB9Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1l
bnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMg
dG9vIGFzIHdlbGwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMTAsNyArMTMxMCw5IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYg
ZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VE
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNo
bWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudFRo
dW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIHJlcXVlc3RBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4MCw3ICs1ODAs
OCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBT
dHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
LCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50
SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBx
bFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKFN0cmluZyBp
ZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFu
ZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGljb24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCg==
</data>
<flag name="commit-queue"
          id="479177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452205</attachid>
            <date>2022-02-16 10:08:07 -0800</date>
            <delta_ts>2022-02-16 10:39:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216100806.patch</filename>
            <type>text/plain</type>
            <size>53411</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Oklj
b25BbmRTaXplIFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBhdXRvIGRvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyID0gYWRvcHRO
UyhbUEFMOjphbGxvY1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXJJbnN0YW5jZSgpIGlu
aXRdKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAotICAgIFN0cmlu
ZyBmaWxlTmFtZTsKLSAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5maWxlKCkpCi0gICAgICAgIGZpbGVOYW1lID0gZmlsZS0+bmFtZSgpOwotCi0gICAg
aWYgKGZpbGVOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZmlsZU5hbWUgPSBhdHRhY2htZW50LmF0
dGFjaG1lbnRFbGVtZW50KCkuYXR0YWNobWVudFRpdGxlKCk7Ci0gICAgW2RvY3VtZW50SW50ZXJh
Y3Rpb25Db250cm9sbGVyIHNldE5hbWU6ZmlsZU5hbWVdOworICAgIFtkb2N1bWVudEludGVyYWN0
aW9uQ29udHJvbGxlciBzZXROYW1lOmZpbGVOYW1lLmlzRW1wdHkoKSA/IHRpdGxlIDogZmlsZU5h
bWVdOwogCi0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRhY2htZW50
RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7CiAgICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgU3RyaW5nIFVUSTsKICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEko
YXR0YWNobWVudFR5cGUpKQpAQCAtMTgyMyw3ICsxODE2LDcgQEAgc3RhdGljIFJldGFpblB0cjxV
SUltYWdlPiBpY29uRm9yQXR0YWNobQogI2lmIFBMQVRGT1JNKElPUykKICAgICBOU0FycmF5ICpp
Y29ucyA9IFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBpY29uc107CiAgICAgaWYgKCFp
Y29ucy5jb3VudCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIEljb25BbmRT
aXplIHsgbmlsLCBGbG9hdFNpemUoKSB9OwogCiAgICAgcmVzdWx0ID0gaWNvbnMubGFzdE9iamVj
dDsKIApAQCAtMTg0Niw3ICsxODM5LDcgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29u
Rm9yQXR0YWNobQogICAgIENHRmxvYXQgaWNvbkFzcGVjdCA9IFtyZXN1bHQgc2l6ZV0ud2lkdGgg
LyBbcmVzdWx0IHNpemVdLmhlaWdodDsKICAgICBzaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0
UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50SWNv
blNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKIAotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIEljb25BbmRTaXplIHsgcmVzdWx0LCBzaXplIH07CiB9CiAKIFJlbmRlckF0
dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50
JiBhdHRhY2htZW50KQpAQCAtMTg2Nyw4ICsxODYwLDEwIEBAIFJlbmRlckF0dGFjaG1lbnRJbmZv
OjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0aW9uLmlzRW1wdHkoKSAm
JiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25TaXplOwotICAgICAgICBp
Y29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNpemUpOworICAgICAgICBG
bG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvblNp
emUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29u
KCk7CisgICAgICAgIGlmICghaWNvbikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXplKEZsb2F0U2l6ZSgpKTsKICAgICAgICAgdGh1
bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKTsK
ICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxhcmdl
c3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCkuYXNw
ZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNobWVu
dEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxMyw3ICsxOTA4LDcgQEAgc3RhdGljIHZvaWQgcGFp
bnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRodW1ibmFpbEljb24pCiAg
ICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAgICBlbHNlIGlmIChpbmZv
Lmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8uaWNv
biBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNvbjsKICAgICAKICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShyZXZpc2lvbiAyODkyMzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBBIHZpZXcgYXNzb2NpYXRl
ZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyogZG9jdW1lbnRWaWV3Rm9y
KGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1NjQsNiArMjU2NCw0OCBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0dGFjaG1lbnRCYXNlbGlu
ZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorc3RhdGljIFJlZlB0cjxJY29u
PiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghYXR0YWNo
bWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5mb2xkZXIiKSkg
eworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIGF1dG8g
dHlwZSA9IGtVVFR5cGVGb2xkZXI7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
KyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKHR5cGUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgU3RyaW5nIHR5cGU7CisgICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2ht
ZW50VHlwZSkpCisgICAgICAgICAgICAgICAgdHlwZSA9IGF0dGFjaG1lbnRUeXBlOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHR5cGUgPSBVVElGcm9tTUlNRVR5cGUoYXR0YWNo
bWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNv
bkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRv
IGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFtZSB9KSkKKyAgICAgICAg
ICAgIHJldHVybiBpY29uOworICAgIH0KKworICAgIE5TU3RyaW5nICpjb2NvYVRpdGxlID0gdGl0
bGU7CisgICAgaWYgKGF1dG8gZmlsZUV4dGVuc2lvbiA9IGNvY29hVGl0bGUucGF0aEV4dGVuc2lv
bjsgZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQorICAgICAgICAgICAg
cmV0dXJuIGljb247CisgICAgfQorCisgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEko
InB1YmxpYy5kYXRhIik7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1hYzo6
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoYXV0byBpY29u
ID0gV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGF0dGFjaG1lbnRUeXBlLCB0
aXRsZSkpCisgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgcmV0dXJuIG5pbDsK
K30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3QgUmVu
ZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRh
Y2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5zdHlsZSA9PSBBdHRhY2ht
ZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiArMjYzNywyOSBAQCBzdGF0
aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAgfQogfQogCi1zdGF0aWMg
UmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5hdHRh
Y2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0gICAgaWYgKCFhdHRhY2ht
ZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
YXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIpKSB7
Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7Ci0gICAgICAgICAgICBp
ZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICAgICAgVVRJID0g
YXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJID0g
VVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAgICAgICAgaWYgKGF1dG8g
aWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNo
bWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAgICBpZiAoYXV0byBpY29u
ID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgpIH0pKQotICAgICAgICAg
ICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBb
c3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0
dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAoZmlsZUV4dGVuc2lvbi5s
ZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
RXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAg
fQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Ci19
Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNobWVu
dCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0
JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0
YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KTsKLSAgICBp
ZiAoIWljb24pCisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQuaWNvblJlY3QpOworCisg
ICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb24oKTsKKyAg
ICBpZiAoIWljb24pIHsKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLnJl
cXVlc3RJY29uV2l0aFNpemUobGF5b3V0Lmljb25SZWN0LnNpemUoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlID0gaWNvbi0+bnNJbWFnZSgpOworICAgIGlmICgh
aW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CisKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDps
YXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBbaW1hZ2Ugc2l6ZV0ud2lk
dGgsIFtpbWFnZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9u
U291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0ZDo6cGFpcjxSZWZQdHI8
SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVySW1hZ2UoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODk4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBj
b25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRhY2htZW50CisgICAg
ICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9jZXNz
LiBUaGUgaWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVuIHRo
ZSBhdHRhY2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0ZWQsIG9yIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhlIG5ldyBjbGllbnQgY2xh
c3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9y
IHJlcXVlc3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxl
bWVudENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaWRJbnNl
cnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhZGRpdGlvbmFsIFJldmVl
YWwgbWV0aG9kcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDYgKzc5NCw3IEBAIFdl
YlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29s
b3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5OCw2ICsxMDE5OCwxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFnZUNsaWVudCgpLndyaXRl
UHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5mbykpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRmxvYXRTaXplJiByZXF1ZXN0ZWRTaXplKQorewor
ICAgIEZsb2F0U2l6ZSBzaXplID0gcmVxdWVzdGVkU2l6ZTsKKyAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGF1dG8gaWNvbiA9
IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUsIHNpemUpKQor
ICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRpZgorICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGhhbmRsZSwg
c2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQYWdlUHJveHk6OmF0dGFj
aG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAg
ICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSw3ICsxMDIzMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmkKIH0KIAogI2lmIEhBVkUoUVVJQ0tM
T09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiBi
aXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CkBAIC0xMDIyOCw3ICsxMDIzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2ht
ZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZSho
YW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudElj
b24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5kbGUpKTsKIH0KICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRl
RGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAjaWYgSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5n
JiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFj
aG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdyYXBwZXIo
TlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5h
aWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICopOwpAQCAtMjUyNCw2
ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQWxsQXR0YWNobWVudHMo
KTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoV2ViQ29y
ZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1l
bnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpOworCisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBpY29uRm9yQXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAg
ICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUyNiw2ICs1
MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlbW92ZUF0dGFjaG1l
bnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIFN5
bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9hcmQoc3RydWN0
IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAgICBSZXF1ZXN0QXR0YWNo
bWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHBh
dGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyODkyMzcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKFN5bmFw
c2UsIFNZTm90ZQogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUaGVtZUlPUy5oPgorI2Vs
c2UKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJGaWx0ZXJFdmFsdWF0b3JTUEku
aD4KIApAQCAtMjg3LDYgKzI5Myw0MyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1DbG9u
ZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3JhcHBlcihmcm9tQXR0YWNobWVu
dC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZml0dGluZ1NpemUpCit7CisgICAgRmxvYXRTaXplIG9y
aWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAgIGF1dG8gcmVzdWx0UmVjdCA9
IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChvcmln
aW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZpdHRpbmdTaXplIH0pKTsK
KyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAgICBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOworICAgIGF1dG8gYml0
bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0
LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZl
ZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlmIFVTRShBUFBLSVQpCisgICAg
W2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1plcm9SZWN0IG9wZXJhdGlv
bjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RGbGlw
cGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1cm4gYml0bWFwOworfQorCitS
ZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQoreworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgYXV0byBpbWFnZUFuZFNpemUgPSBSZW5kZXJUaGVtZUlPUzo6aWNvbkZv
ckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7CisgICAgYXV0byBpbWFn
ZSA9IGltYWdlQW5kU2l6ZS5pbWFnZTsKKyAgICBzaXplID0gaW1hZ2Uuc2l6ZTsKKyNlbHNlCisg
ICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0YWNobWVudChmaWxlTmFt
ZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAgIHJldHVybiBjb252ZXJ0UGxhdGZv
cm1JbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLCBzaXplKTsKK30KKwogI2VuZGlmIC8vIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50
KQpAQCAtNTIyLDMxICs1NjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnVsbHNjcmVlblZpZGVv
RXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCiAKLXN0YXRpYyBSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAo
Q29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGZpdHRpbmdTaXplKQot
ewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKLSAg
ICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9
LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOwotCi0g
ICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJh
dGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIGlm
ICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZ3JhcGhpY3ND
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOwotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07Ci0jZWxp
ZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6
TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJh
Y3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRo
T3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVyYXRpb24pCiB7CiAgICAg
W29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKQEAgLTU1NSw3ICs1NzMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPCiAgICAgICAgICAgICBhdXRvIGNv
bnZlcnRlZEltYWdlID0gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChbb3BlcmF0aW9uIHRo
dW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKICAgICAgICAgICAgIGlmICgh
Y29udmVydGVkSW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhp
cy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UpOworICAg
ICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBjb252
ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH1dOwogICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
Mjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2ICs2Mzc4LDggQEAKIAkJRTMxMzY2NEQyNjVFRTVB
RjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjEx
NzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFF
NDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgcGF0aCA9IGlvcy9XZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHBhdGgg
PSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NjQsNiArMTA3NjYsOCBAQAogCQkJ
CUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAvKiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3Bw
ICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMwMDk5MEUyNiAvKiBTaGFyZWFibGVCaXRtYXBVdGls
aXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLywKKwkJCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLywKIAkJCQk0NkVFMjg0NzI2OUUw
NDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCAqLywKIAkJCQk0
NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmgg
Ki8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1l
bnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lk
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7Cisg
ICAgbV9wYWdlLnJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBzaXplKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKworI2luY2x1ZGUgPFdlYkNvcmUvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdlJik7CisKKyAgICB2b2lkIHJlcXVl
c3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1
ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5j
bHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuaCIKQEAgLTY1Miw2ICs2NTMsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBh
Z2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudD4oKnRoaXMpOworCiAgICAgaWYgKHBhcmFtZXRlcnMuYXR0
YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkoKnBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNp
b25IYW5kbGVzKTsKICNlbmRpZgpAQCAtNzMxMyw3ICs3MzE2LDcgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcwogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpCiB7CiAgICAg
aWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRl
bnRpZmllcikpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHRodW1ibmFp
bCA9ICFxbFRodW1ibmFpbEhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KHFsVGh1bWJuYWlsSGFuZGxlKSA6IG51bGxwdHIpCkBAIC03MzIxLDYgKzczMjQsMjQgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdAogICAgIH0KIH0KIAordm9pZCBX
ZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRF
bGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNv
biA9ICFpY29uSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhh
bmRsZSkgOiBudWxscHRyKQorICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29u
LT5jcmVhdGVJbWFnZSgpLCBzaXplKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVz
dEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50
RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAgICAgIFN0cmluZyBmaWxl
TmFtZTsKKyAgICAgICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LT5maWxlKCkpCisgICAg
ICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPnBhdGgoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSZXF1ZXN0QXR0YWNobWVudEljb24oaWRlbnRpZmllciwgYXR0YWNobWVu
dC0+YXR0YWNobWVudFR5cGUoKSwgZmlsZU5hbWUsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRs
ZSgpLCBzaXplKSk7CisgICAgfQorfQorCiBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBX
ZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVu
dHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxsLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEwLDcg
KzEzMTAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOworICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaWNvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAg
dm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC01ODAsNyArNTgwLDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVu
dChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0
cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwogICAgIFVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCi0gICAg
VXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisgICAgVXBkYXRlQXR0YWNobWVudFRo
dW1ibmFpbChTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRl
bnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBpY29uLCBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQo=
</data>
<flag name="commit-queue"
          id="479181"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452207</attachid>
            <date>2022-02-16 10:14:54 -0800</date>
            <delta_ts>2022-02-16 10:42:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216101454.patch</filename>
            <type>text/plain</type>
            <size>53394</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Oklj
b25BbmRTaXplIFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0
byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSURv
Y3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAg
aWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQot
ICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlmIChmaWxlTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUaXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBz
ZXROYW1lOmZpbGVOYW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0
TmFtZTpmaWxlTmFtZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGZpbGVOYW1lXTsKIAotICAgIFN0cmlu
ZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2ht
ZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkK
QEAgLTE4MjMsNyArMTgxNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0
dGFjaG0KICNpZiBQTEFURk9STShJT1MpCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgaWNvbnNdOwogICAgIGlmICghaWNvbnMuY291bnQpCi0gICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBJY29uQW5kU2l6ZSB7IG5pbCwgRmxvYXRT
aXplKCkgfTsKIAogICAgIHJlc3VsdCA9IGljb25zLmxhc3RPYmplY3Q7CiAKQEAgLTE4NDYsNyAr
MTgzOSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICAgICBD
R0Zsb2F0IGljb25Bc3BlY3QgPSBbcmVzdWx0IHNpemVdLndpZHRoIC8gW3Jlc3VsdCBzaXplXS5o
ZWlnaHQ7CiAgICAgc2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChp
Y29uQXNwZWN0LCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25TaXplLCBhdHRhY2htZW50
SWNvblNpemUpKS5zaXplKCk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBJY29u
QW5kU2l6ZSB7IHJlc3VsdCwgc2l6ZSB9OwogfQogCiBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVu
ZGVyQXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKQEAg
LTE4NjcsOCArMTg2MCwxMCBAQCBSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluCiAgICAgfQogCiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkgJiYgIWhhc1Byb2dyZXNzKSB7
Ci0gICAgICAgIEZsb2F0U2l6ZSBpY29uU2l6ZTsKLSAgICAgICAgaWNvbiA9IGljb25Gb3JBdHRh
Y2htZW50KGF0dGFjaG1lbnQsIGljb25TaXplKTsKKyAgICAgICAgRmxvYXRTaXplIGljb25TaXpl
ID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb25TaXplKCk7CisgICAgICAgIGlj
b24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNvbigpOworICAgICAgICBpZiAo
IWljb24pCisgICAgICAgICAgICBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkucmVxdWVz
dEljb25XaXRoU2l6ZShGbG9hdFNpemUoKSk7CiAgICAgICAgIHRodW1ibmFpbEljb24gPSBhdHRh
Y2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkudGh1bWJuYWlsKCk7CiAgICAgICAgIGlmICh0aHVt
Ym5haWxJY29uKQogICAgICAgICAgICAgaWNvblNpemUgPSBsYXJnZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0luc2lkZVJlY3QodGh1bWJuYWlsSWNvbi0+c2l6ZSgpLmFzcGVjdFJhdGlvKCksIEZsb2F0
UmVjdCgwLCAwLCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUo
KTsKQEAgLTE5MTMsNyArMTkwOCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24o
R3JhcGhpY3MKICAgICBpZiAoaW5mby50aHVtYm5haWxJY29uKQogICAgICAgICBpY29uSW1hZ2Ug
PSBpbmZvLnRodW1ibmFpbEljb247CiAgICAgZWxzZSBpZiAoaW5mby5pY29uKQotICAgICAgICBp
Y29uSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFtpbmZvLmljb24gQ0dJbWFnZV0pOworICAg
ICAgICBpY29uSW1hZ2UgPSBpbmZvLmljb247CiAgICAgCiAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
Kmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsx
MDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gQSB2aWV3IGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRhaW5l
ZCBkb2N1bWVudC4KICAgICBOU1ZpZXcqIGRvY3VtZW50Vmlld0Zvcihjb25zdCBSZW5kZXJPYmpl
Y3QmKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8TlNJbWFn
ZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAg
UmVuZGVyVGhlbWVNYWMoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY0LDYgKzI1NjQsNDgg
QEAgaW50IFJlbmRlclRoZW1lTWFjOjphdHRhY2htZW50QmFzZWxpbmUoYwogICAgIHJldHVybiBs
YXlvdXQuYmFzZWxpbmU7CiB9CiAKK3N0YXRpYyBSZWZQdHI8SWNvbj4gaWNvbkZvckF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoIWF0dGFjaG1lbnRUeXBlLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwg
Im11bHRpcGFydC94LWZvbGRlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0YWNobWVu
dFR5cGUsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUuZm9sZGVyIikpIHsKK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgICAgICAgICBhdXRvIHR5cGUgPSBrVVRUeXBlRm9s
ZGVyOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgICAgICAgICBpZiAo
YXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaWNvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyB0eXBl
OworICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEkoYXR0YWNobWVudFR5cGUpKQorICAgICAg
ICAgICAgICAgIHR5cGUgPSBhdHRhY2htZW50VHlwZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0eXBlID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKKworICAg
ICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkodHlwZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGljb247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
IWZpbGVOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3Jl
YXRlSWNvbkZvckZpbGVzKHsgZmlsZU5hbWUgfSkpCisgICAgICAgICAgICByZXR1cm4gaWNvbjsK
KyAgICB9CisKKyAgICBOU1N0cmluZyAqY29jb2FUaXRsZSA9IHRpdGxlOworICAgIGlmIChhdXRv
IGZpbGVFeHRlbnNpb24gPSBjb2NvYVRpdGxlLnBhdGhFeHRlbnNpb247IGZpbGVFeHRlbnNpb24u
bGVuZ3RoKSB7CisgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZUV4dGVuc2lvbihmaWxlRXh0ZW5zaW9uKSkKKyAgICAgICAgICAgIHJldHVybiBpY29uOworICAg
IH0KKworICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0YSIpOwor
fQorCitSZXRhaW5QdHI8TlNJbWFnZT4gUmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudFR5cGUsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKGF1dG8gaWNvbiA9IFdlYkNvcmU6Omljb25G
b3JBdHRhY2htZW50KGZpbGVOYW1lLCBhdHRhY2htZW50VHlwZSwgdGl0bGUpKQorICAgICAgICBy
ZXR1cm4gaWNvbi0+bnNJbWFnZSgpOworICAgIHJldHVybiBuaWw7Cit9CisKIHN0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudEljb25CYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudExheW91dCYgbGF5
b3V0KQogewogICAgIGlmIChsYXlvdXQuc3R5bGUgPT0gQXR0YWNobWVudExheW91dFN0eWxlOjpO
b25TZWxlY3RlZCkKQEAgLTI1OTUsNTIgKzI2MzcsMjkgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRh
Y2htZW50SWNvbkJhY2tncm91bgogICAgIH0KIH0KIAotc3RhdGljIFJlZlB0cjxJY29uPiBpY29u
Rm9yQXR0YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQotewotICAg
IFN0cmluZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5h
dHRhY2htZW50VHlwZSgpOwotICAgIAotICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAi
bXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50
VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5mb2xkZXIiKSkgewotQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpj
cmVhdGVJY29uRm9yVVRJKGtVVFR5cGVGb2xkZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBp
Y29uOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBTdHJpbmcgVVRJOwotICAgICAgICAgICAgaWYgKGlzRGVjbGFyZWRVVEko
YXR0YWNobWVudFR5cGUpKQotICAgICAgICAgICAgICAgIFVUSSA9IGF0dGFjaG1lbnRUeXBlOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFVUSSA9IFVUSUZyb21NSU1FVHlwZShh
dHRhY2htZW50VHlwZSk7Ci0KLSAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVh
dGVJY29uRm9yVVRJKFVUSSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVs
ZW1lbnQoKS5maWxlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUlj
b25Gb3JGaWxlcyh7IGZpbGUtPnBhdGgoKSB9KSkKLSAgICAgICAgICAgIHJldHVybiBpY29uOwot
ICAgIH0KLQotICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5zaW9uID0gW3N0YXRpY19jYXN0PE5TU3Ry
aW5nICo+KGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VGl0bGUoKSkg
cGF0aEV4dGVuc2lvbl07Ci0gICAgaWYgKGZpbGVFeHRlbnNpb24ubGVuZ3RoKSB7Ci0gICAgICAg
IGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZUV4dGVuc2lvbihmaWxlRXh0
ZW5zaW9uKSkKLSAgICAgICAgICAgIHJldHVybiBpY29uOwotICAgIH0KLQotICAgIHJldHVybiBJ
Y29uOjpjcmVhdGVJY29uRm9yVVRJKCJwdWJsaWMuZGF0YSIpOwotfQotCiBzdGF0aWMgdm9pZCBw
YWludEF0dGFjaG1lbnRJY29uKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudExheW91dCYgbGF5b3V0KQogewogICAg
IGlmIChhdXRvIHRodW1ibmFpbEljb24gPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCku
dGh1bWJuYWlsKCkpIHsKICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKnRodW1ibmFpbEljb24s
IGxheW91dC5pY29uUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBpY29u
ID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCk7Ci0gICAgaWYgKCFpY29uKQorCisgICAg
aWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWNv
bi0+cGFpbnQoY29udGV4dCwgbGF5b3V0Lmljb25SZWN0KTsKKworICAgIGF1dG8gaWNvbiA9IGF0
dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5pY29uKCk7CisgICAgaWYgKCFpY29uKSB7Cisg
ICAgICAgIGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXpl
KGxheW91dC5pY29uUmVjdC5zaXplKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBpbWFnZSA9IGljb24tPm5zSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVu
dEdDKGNvbnRleHQpOworCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6bGF5b3V0Lmljb25SZWN0IGZy
b21SZWN0Ok5TTWFrZVJlY3QoMCwgMCwgW2ltYWdlIHNpemVdLndpZHRoLCBbaW1hZ2Ugc2l6ZV0u
aGVpZ2h0KSBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rp
b246MS4wZl07CiB9CiAKIHN0YXRpYyBzdGQ6OnBhaXI8UmVmUHRyPEltYWdlPiwgZmxvYXQ+IGNy
ZWF0ZUF0dGFjaG1lbnRQbGFjZWhvbGRlckltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBj
b25zdCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg5
ODIyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0MiBAQAorMjAyMi0wMi0xNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgU2VuZCBpY29ucyB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGZvciByZW5k
ZXJpbmcgb2YgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgY29ubmVjdGluZyB0byB0aGUg
SWNvbiBTZXJ2aWNlcyBkYWVtb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2Ugc2hvdWxk
IHNlbmQgdGhlIGljb25zIGZvciB0aGUgYXR0YWNobWVudAorICAgICAgICBlbGVtZW50IHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gVGhlIGljb24gd2lsbCBi
ZSBzZW50IHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiB0aGUgYXR0YWNobWVudAorICAg
ICAgICBhdHRyaWJ1dGVzIGFyZSB1cGRhdGVkLCBvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhh
cyByZXF1ZXN0ZWQgdGhlIGljb24uIFRoZSBuZXcgY2xpZW50IGNsYXNzIFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50IGlzCisgICAgICAgIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5nIGljb25z
IGZyb20gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6Omljb25Gb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF0
dGFjaG1lbnRJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
QXR0YWNobWVudFRodW1ibmFpbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEljb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ6OldlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQ6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMjItMDItMTUgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgYWRkaXRpb25hbCBSZXZlZWFsIG1ldGhvZHMuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTc5NCw2ICs3OTQsNyBAQCBXZWJQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhuUHJvCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1JlbW90ZVdl
YkxvY2tSZWdpc3RyeS5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFw
VXRpbGl0aWVzLmNwcAorV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxl
bWVudENsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxOTgsNiArMTAxOTgsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndyaXRl
UHJvbWlzZWRBdHRhY2htZQogICAgIHBhZ2VDbGllbnQoKS53cml0ZVByb21pc2VkQXR0YWNobWVu
dFRvUGFzdGVib2FyZChXVEZNb3ZlKGluZm8pKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IEZsb2F0U2l6ZSYgcmVxdWVzdGVkU2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgc2l6
ZSA9IHJlcXVlc3RlZFNpemU7CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVu
dChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlLCBzaXplKSkKKyAgICAgICAgaWNvbi0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CisjZW5kaWYKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5kbGUsIHNpemUpKTsKK30KKwogUmVm
UHRyPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVByb3h5OjphdHRhY2htZW50Rm9ySWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlkZW50aWZpZXIu
aXNFbXB0eSgpKQpAQCAtMTAyMTksNyArMTAyMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpCiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQordm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYgYml0bWFwKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyMjgsNyArMTAy
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEljb24oCiAgICAgaWYg
KGJpdG1hcCkKICAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGhh
bmRsZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRUaHVt
Ym5haWwoaWRlbnRpZmllciwgaGFuZGxlKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUxLDcg
KzE3NTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURhdGFGb3JBdHRhY2htZW50
KEFQSTo6QXR0YWNobWVudCYpOwogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLSAg
ICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+Jik7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CiAgICAgdm9pZCBy
ZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihX
S1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqKTsKQEAgLTI1MjQsNiArMjUyNCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCk7CiAKICAgICB2b2lkIHdy
aXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlByb21pc2VkQXR0YWNo
bWVudEluZm8mJik7CisKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKworICAgIFJl
ZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0UGFn
ZUxvYWRSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgPSB7IH0pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MjYsNiArNTI2LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIo
U3RyaW5nIGlkZW50aWZpZXIpCiAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRp
ZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6ZWREYXRhKSBTeW5jaHJvbm91cwogICAgIFdy
aXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQcm9taXNl
ZEF0dGFjaG1lbnRJbmZvIGluZm8pCisgICAgUmVxdWVzdEF0dGFjaG1lbnRJY29uKFN0cmluZyBp
ZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwYXRoLCBTdHJpbmcgdGl0bGUs
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDEyIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChTeW5hcHNlLCBTWU5vdGUKICNpbXBv
cnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4KKyNlbHNlCisjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlclRoZW1lTWFjLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmg+CiAKQEAgLTI4Nyw2ICsy
OTMsNDMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZQogICAgIHRv
QXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZnJvbUF0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkp
OwogfQogCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxh
dGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGZpdHRpbmdTaXplKQoreworICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNp
emUoW2ltYWdlIHNpemVdKTsKKyAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChs
YXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXpl
LmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7CisgICAgcmVzdWx0UmVjdC5z
ZXRMb2NhdGlvbih7IH0pOworCisgICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENv
bmZpZ3VyYXRpb24pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGlj
c0NvbnRleHQpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW2ltYWdlIGRyYXdJblJl
Y3Q6cmVzdWx0UmVjdF07CisjZWxpZiBVU0UoQVBQS0lUKQorICAgIFtpbWFnZSBkcmF3SW5SZWN0
OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09w
ZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmls
XTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGJpdG1hcDsKK30KKworUmVmUHRyPFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwPiBXZWJQYWdlUHJveHk6Omljb25Gb3JBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1
dG8gaW1hZ2VBbmRTaXplID0gUmVuZGVyVGhlbWVJT1M6Omljb25Gb3JBdHRhY2htZW50KGZpbGVO
YW1lLCBjb250ZW50VHlwZSwgdGl0bGUpOworICAgIGF1dG8gaW1hZ2UgPSBpbWFnZUFuZFNpemUu
aW1hZ2U7CisgICAgc2l6ZSA9IGltYWdlLnNpemU7CisjZWxzZQorICAgIGF1dG8gaW1hZ2UgPSBS
ZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0
aXRsZSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChp
bWFnZS5nZXQoKSwgc2l6ZSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRM
b2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb2ludCkKQEAgLTUyMiwzMSArNTY1
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZ1bGxzY3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFW
RShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQogCi1zdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUg
b3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBzaXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0
ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9y
aWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRpbygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkp
OwotICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oeyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBi
aXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJl
Y3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNh
dmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAg
ICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0
aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZs
aXBwZWQ6WUVTIGhpbnRzOm5pbF07Ci0jZW5kaWYKLQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0K
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1
bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9uKQogewogICAgIFtvcGVyYXRpb24gc2V0Q29t
cGxldGlvbkJsb2NrOl57CkBAIC01NTUsNyArNTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RUaHVtYm5haWxXaXRoTwogICAgICAgICAgICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNv
bnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoW29wZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3Jl
OjpJbnRTaXplKDQwMCwgNDAwKSk7CiAgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1l
bnRJY29uKGlkZW50aWZpZXIsIGNvbnZlcnRlZEltYWdlKTsKKyAgICAgICAgICAgIHRoaXMtPnVw
ZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoaWRlbnRpZmllciwgY29udmVydGVkSW1hZ2UpOwogICAg
ICAgICB9KTsKICAgICB9XTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTYzNzgsNiArNjM3OCw4IEBACiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBh
dGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBh
dGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxQTI3Qjcw
OUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbTsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5
NzQwNTMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lmg7IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVE
MjM5ODQ3MUEwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEwNzY0LDYgKzEwNzY2LDggQEAKIAkJCQlGNDNBOUNERTI1RDcyRTJE
MDA5OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlGNDNBOUNE
RDI1RDcyRTBDMDA5OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggKi8sCiAJCQkJ
Q0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICov
LAorCQkJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHAgKi8sCisJCQkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJNDZFRTI4NDcyNjlFMDQ5QjAwREQ0OEFCIC8qIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgKi8sCiAJCQkJNDZFRTI4NDgyNjlFMDQ5QjAw
REQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oICovLAogCQkJCTQ2RTk3NjBB
Mjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMu
aW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQ6OldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2Um
IHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIG1fcGFnZS5yZXF1ZXN0
QXR0YWNobWVudEljb24oaWRlbnRpZmllciwgc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudCBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQoV2ViUGFnZSYpOworCisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24o
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlJiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
Mjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5o
IgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oIgorI2luY2x1ZGUgIldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmgi
CkBAIC02NTIsNiArNjUzLDggQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIAogICAgICAgICBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5n
bGV0b24oKS5zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2UpOwog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5h
dHRhY2htZW50RWxlbWVudENsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQ+KCp0aGlzKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0
ZW5zaW9uSGFuZGxlcykKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KCpwYXJhbWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyk7CiAjZW5k
aWYKQEAgLTczMTMsNyArNzMxNiw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMKICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFj
aG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKQogewogICAgIGlmIChhdXRvIGF0dGFjaG1l
bnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiB0aHVtYm5haWwgPSAhcWxUaHVtYm5haWxI
YW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShxbFRodW1ibmFpbEhhbmRs
ZSkgOiBudWxscHRyKQpAQCAtNzMyMSw2ICs3MzI0LDI0IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
QXR0YWNobWVudEljb24oY29uc3QKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0
YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYgaWNvbkhhbmRsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQor
eworICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlm
aWVyKGlkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChhdXRvIGljb24gPSAhaWNvbkhhbmRsZS5p
c051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGljb25IYW5kbGUpIDogbnVsbHB0cikK
KyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUljb24oaWNvbi0+Y3JlYXRlSW1hZ2UoKSwg
c2l6ZSk7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbihj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkK
K3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
ZmllcihpZGVudGlmaWVyKSkgeworICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CisgICAgICAgIGlm
IChGaWxlKiBmaWxlID0gYXR0YWNobWVudC0+ZmlsZSgpKQorICAgICAgICAgICAgZmlsZU5hbWUg
PSBmaWxlLT5wYXRoKCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVx
dWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBl
KCksIGZpbGVOYW1lLCBhdHRhY2htZW50LT5hdHRhY2htZW50VGl0bGUoKSwgc2l6ZSkpOworICAg
IH0KK30KKwogUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVu
dEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IEhhbmRsZSBhdHRhY2htZW50IGVsZW1lbnRzIGluIHN1YmZyYW1lcyB0
b28gYXMgd2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxMCw3ICsxMzEwLDkgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBm
aWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURh
dGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2ht
ZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50VGh1
bWJuYWlsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgcmVxdWVzdEF0dGFj
aG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw4
IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0
cmluZyBjb250ZW50VHlwZSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUs
IFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFs
VGh1bWJuYWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoU3RyaW5nIGlk
ZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5k
bGUpCisgICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaWNvbiwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
</data>
<flag name="commit-queue"
          id="479182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452209</attachid>
            <date>2022-02-16 10:35:27 -0800</date>
            <delta_ts>2022-02-16 11:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216103526.patch</filename>
            <type>text/plain</type>
            <size>53540</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Oklj
b25BbmRTaXplIFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0
byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSURv
Y3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAg
aWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQot
ICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlmIChmaWxlTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUaXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBz
ZXROYW1lOmZpbGVOYW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0
TmFtZTpmaWxlTmFtZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGZpbGVOYW1lXTsKIAotICAgIFN0cmlu
ZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2ht
ZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkK
QEAgLTE4MjMsNyArMTgxNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0
dGFjaG0KICNpZiBQTEFURk9STShJT1MpCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgaWNvbnNdOwogICAgIGlmICghaWNvbnMuY291bnQpCi0gICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBJY29uQW5kU2l6ZSB7IG5pbCwgRmxvYXRT
aXplKCkgfTsKIAogICAgIHJlc3VsdCA9IGljb25zLmxhc3RPYmplY3Q7CiAKQEAgLTE4NDQsOSAr
MTgzNyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICAgICB9
CiAjZW5kaWYKICAgICBDR0Zsb2F0IGljb25Bc3BlY3QgPSBbcmVzdWx0IHNpemVdLndpZHRoIC8g
W3Jlc3VsdCBzaXplXS5oZWlnaHQ7Ci0gICAgc2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJh
dGlvSW5zaWRlUmVjdChpY29uQXNwZWN0LCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25T
aXplLCBhdHRhY2htZW50SWNvblNpemUpKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gbGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAw
LCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKIAotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIEljb25BbmRTaXplIHsgcmVzdWx0LCBzaXplIH07
CiB9CiAKIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBS
ZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQpAQCAtMTg2Nyw4ICsxODYwLDEwIEBAIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0
aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25T
aXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNp
emUpOworICAgICAgICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuaWNvblNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5pY29uKCk7CisgICAgICAgIGlmICghaWNvbikKKyAgICAgICAgICAgIGF0dGFj
aG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXplKEZsb2F0U2l6ZSgp
KTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBp
Y29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJ
Y29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29u
U2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxMyw3ICsxOTA4LDcgQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRo
dW1ibmFpbEljb24pCiAgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAg
ICBlbHNlIGlmIChpbmZvLmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNv
bjsKICAgICAKICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBB
IHZpZXcgYXNzb2NpYXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyog
ZG9jdW1lbnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAy
ODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1NjQsNiArMjU2NCw0OCBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0
dGFjaG1lbnRCYXNlbGluZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorc3Rh
dGljIFJlZlB0cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorewor
ICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5h
cHBsZS5mb2xkZXIiKSkgeworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IGtVVFR5cGVGb2xkZXI7CitBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJ
Y29uRm9yVVRJKHR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHR5cGU7CisgICAgICAgICAgICBpZiAoaXNEZWNs
YXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgdHlwZSA9IGF0dGFjaG1l
bnRUeXBlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHR5cGUgPSBVVElGcm9t
TUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNv
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFt
ZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uOworICAgIH0KKworICAgIE5TU3RyaW5nICpj
b2NvYVRpdGxlID0gdGl0bGU7CisgICAgaWYgKGF1dG8gZmlsZUV4dGVuc2lvbiA9IGNvY29hVGl0
bGUucGF0aEV4dGVuc2lvbjsgZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24p
KQorICAgICAgICAgICAgcmV0dXJuIGljb247CisgICAgfQorCisgICAgcmV0dXJuIEljb246OmNy
ZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBS
ZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICBpZiAoYXV0byBpY29uID0gV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGF0
dGFjaG1lbnRUeXBlLCB0aXRsZSkpCisgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tn
cm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5z
dHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiAr
MjYzNywyOSBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAg
fQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0g
YXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0g
ICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFw
cGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZv
bGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7
Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAg
ICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAg
ICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxl
KiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgp
IH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZp
bGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAo
ZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0
dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1
YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9
IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRh
Y2htZW50KTsKLSAgICBpZiAoIWljb24pCisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQu
aWNvblJlY3QpOworCisgICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVu
dCgpLmljb24oKTsKKyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLnJlcXVlc3RJY29uV2l0aFNpemUobGF5b3V0Lmljb25SZWN0LnNpemUoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlID0gaWNvbi0+bnNJbWFn
ZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CisKKyAgICBbaW1h
Z2UgZHJhd0luUmVjdDpsYXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBb
aW1hZ2Ugc2l6ZV0ud2lkdGgsIFtpbWFnZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBv
c2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0
ZDo6cGFpcjxSZWZQdHI8SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVy
SW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxh
eW91dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE1ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBUaGUgaWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyB3aGVuIHRoZSBhdHRhY2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0
ZWQsIG9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhl
IG5ldyBjbGllbnQgY2xhc3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAg
cmVzcG9uc2libGUgZm9yIHJlcXVlc3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0Jp
dG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFj
aG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdo
bGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNSAgTWVnYW4g
R2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBh
ZGRpdGlvbmFsIFJldmVlYWwgbWV0aG9kcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0
LDYgKzc5NCw3IEBAIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5OCw2ICsxMDE5
OCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFn
ZUNsaWVudCgpLndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5m
bykpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRmxvYXRTaXplJiByZXF1
ZXN0ZWRTaXplKQoreworICAgIEZsb2F0U2l6ZSBzaXplID0gcmVxdWVzdGVkU2l6ZTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwg
dGl0bGUsIHNpemUpKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRp
ZgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50
aWZpZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQ
YWdlUHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikgY29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSw3ICsx
MDIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmkKIH0KIAog
I2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiBiaXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDIyOCw3ICsxMDIzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVBdHRhY2htZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRtYXAt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5kbGUp
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAjaWYg
SEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxX
aXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9u
ICopOwpAQCAtMjUyNCw2ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRl
QWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZvaWQg
cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERp
ZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBT
ZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVu
dGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNl
cmFsaXplZERhdGEpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAg
ICBSZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50
VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lv
biAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKFN5bmFwc2UsIFNZTm90ZQogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJU
aGVtZUlPUy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMuaD4KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJGaWx0
ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5Myw0MyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
cihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJ
bWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZml0dGluZ1NpemUpCit7Cisg
ICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAgIGF1
dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
SW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZp
dHRpbmdTaXplIH0pKTsKKyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAgICBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFi
aXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3ND
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlmIFVT
RShBUFBLSVQpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1pl
cm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlv
bjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Yml0bWFwOworfQorCitSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQcm94
eTo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQorewor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpbWFnZUFuZFNpemUgPSBSZW5kZXJU
aGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7
CisgICAgYXV0byBpbWFnZSA9IGltYWdlQW5kU2l6ZS5pbWFnZTsKKyAgICBzaXplID0gaW1hZ2Uu
c2l6ZTsKKyNlbHNlCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29uRm9yQXR0
YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAgIHJldHVy
biBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLCBzaXplKTsKK30KKwog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIHBvaW50KQpAQCAtNTIyLDMxICs1NjUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZnVsbHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcp
CiAKLXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9y
bUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGZpdHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2lt
YWdlIHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0
UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVj
dFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5zZXRMb2Nh
dGlvbih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
Yml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3Vy
YXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
LSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRl
eHQpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVz
dWx0UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3Vs
dFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlv
blNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLSNl
bmRpZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICpvcGVy
YXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKQEAgLTU1NSw3
ICs1NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhPCiAgICAg
ICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1h
cChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDApKTsKICAg
ICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgY29udmVy
dGVkSW1hZ2UpOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChp
ZGVudGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH1dOwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2ICs2Mzc4LDggQEAKIAkJ
RTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5z
Yi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
c2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDEx
REUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzYxMkZG
MDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0g
aW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgcGF0
aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVz
c2FnZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3NjQsNiAr
MTA3NjYsOCBAQAogCQkJCUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAvKiBTaGFyZWFibGVCaXRt
YXBVdGlsaXRpZXMuY3BwICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMwMDk5MEUyNiAvKiBTaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUQyN0I3MThFRjAw
NjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLywKKwkJCQlFMzZENzAx
QTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLywKIAkJ
CQk0NkVFMjg0NzI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcCAqLywKIAkJCQk0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggKi8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8qIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIK
KworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdl
KQoreworfQorCit2b2lkIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0QXR0YWNo
bWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUpCit7CisgICAgbV9wYWdlLnJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlmaWVy
LCBzaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPFdlYkNvcmUvQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNz
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdlJik7CisK
KyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlBh
Z2UmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiAr
NzIsNyBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRl
ICJXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKQEAgLTY1Miw2ICs2NTMsOCBAQCBXZWJQ
YWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJBdHRhY2htZW50RWxlbWVudENsaWVudD4oKnRoaXMpOworCiAgICAgaWYg
KHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKQogICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKnBhcmFtZXRlcnMuYXR0YWNobWVu
dEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgpAQCAtNzMxMyw3ICs3MzE2LDcgQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcwogICAgIGNhbGxiYWNrKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5k
bGUpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxI
YW5kbGUpCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0
aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IHRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxlKSA6IG51bGxwdHIpCkBAIC03MzIxLDYg
KzczMjQsMjQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdAogICAg
IH0KIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFuZGxlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVu
dCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaWNvbiA9ICFpY29uSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRyKQorICAgICAgICAgICAgYXR0YWNobWVudC0+
dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgpLCBzaXplKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChhdXRvIGF0dGFjaG1l
bnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CisgICAg
ICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICAgICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50
LT5maWxlKCkpCisgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPnBhdGgoKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0QXR0YWNobWVudEljb24oaWRlbnRp
ZmllciwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgZmlsZU5hbWUsIGF0dGFjaG1lbnQt
PmF0dGFjaG1lbnRUaXRsZSgpLCBzaXplKSk7CisgICAgfQorfQorCiBSZWZQdHI8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSGFuZGxlIGF0
dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxsLgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg5MjM3KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEwLDcgKzEzMTAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxl
KTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
OworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaWNvbiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJik7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
SW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBB
c3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJp
bmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+
ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisgICAgVXBk
YXRlQXR0YWNobWVudFRodW1ibmFpbChTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRhdGVBdHRhY2htZW50
SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBp
Y29uLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQo=
</data>
<flag name="commit-queue"
          id="479187"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452215</attachid>
            <date>2022-02-16 11:11:24 -0800</date>
            <delta_ts>2022-02-16 11:39:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216111123.patch</filename>
            <type>text/plain</type>
            <size>53539</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Oklj
b25BbmRTaXplIFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0
byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSURv
Y3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAg
aWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQot
ICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlmIChmaWxlTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUaXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBz
ZXROYW1lOmZpbGVOYW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0
TmFtZTpmaWxlTmFtZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGZpbGVOYW1lXTsKIAotICAgIFN0cmlu
ZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2ht
ZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkK
QEAgLTE4MjMsNyArMTgxNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0
dGFjaG0KICNpZiBQTEFURk9STShJT1MpCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgaWNvbnNdOwogICAgIGlmICghaWNvbnMuY291bnQpCi0gICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBJY29uQW5kU2l6ZSB7IG5pbCwgRmxvYXRT
aXplKCkgfTsKIAogICAgIHJlc3VsdCA9IGljb25zLmxhc3RPYmplY3Q7CiAKQEAgLTE4NDQsOSAr
MTgzNyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICAgICB9
CiAjZW5kaWYKICAgICBDR0Zsb2F0IGljb25Bc3BlY3QgPSBbcmVzdWx0IHNpemVdLndpZHRoIC8g
W3Jlc3VsdCBzaXplXS5oZWlnaHQ7Ci0gICAgc2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJh
dGlvSW5zaWRlUmVjdChpY29uQXNwZWN0LCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25T
aXplLCBhdHRhY2htZW50SWNvblNpemUpKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gbGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAw
LCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKIAotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIEljb25BbmRTaXplIHsgcmVzdWx0LCBzaXplIH07
CiB9CiAKIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBS
ZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQpAQCAtMTg2Nyw4ICsxODYwLDEwIEBAIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0
aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25T
aXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNp
emUpOworICAgICAgICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuaWNvblNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5pY29uKCk7CisgICAgICAgIGlmICghaWNvbikKKyAgICAgICAgICAgIGF0dGFj
aG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXplKEZsb2F0U2l6ZSgp
KTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBp
Y29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJ
Y29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29u
U2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxMyw3ICsxOTA4LDcgQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRo
dW1ibmFpbEljb24pCiAgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAg
ICBlbHNlIGlmIChpbmZvLmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNv
bjsKICAgICAKICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBB
IHZpZXcgYXNzb2NpYXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyog
ZG9jdW1lbnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAy
ODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1NjQsNiArMjU2NCw0OCBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0
dGFjaG1lbnRCYXNlbGluZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorc3Rh
dGljIFJlZlB0cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorewor
ICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5h
cHBsZS5mb2xkZXIiKSkgeworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IGtVVFR5cGVGb2xkZXI7CitBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJ
Y29uRm9yVVRJKHR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHR5cGU7CisgICAgICAgICAgICBpZiAoaXNEZWNs
YXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgdHlwZSA9IGF0dGFjaG1l
bnRUeXBlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHR5cGUgPSBVVElGcm9t
TUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNv
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFt
ZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uOworICAgIH0KKworICAgIE5TU3RyaW5nICpj
b2NvYVRpdGxlID0gdGl0bGU7CisgICAgaWYgKGF1dG8gZmlsZUV4dGVuc2lvbiA9IGNvY29hVGl0
bGUucGF0aEV4dGVuc2lvbjsgZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24p
KQorICAgICAgICAgICAgcmV0dXJuIGljb247CisgICAgfQorCisgICAgcmV0dXJuIEljb246OmNy
ZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBS
ZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICBpZiAoYXV0byBpY29uID0gV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGF0
dGFjaG1lbnRUeXBlLCB0aXRsZSkpCisgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tn
cm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5z
dHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiAr
MjYzNywyOSBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAg
fQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0g
YXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0g
ICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFw
cGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZv
bGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7
Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAg
ICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAg
ICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxl
KiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgp
IH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZp
bGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAo
ZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0
dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1
YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9
IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRh
Y2htZW50KTsKLSAgICBpZiAoIWljb24pCisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQu
aWNvblJlY3QpOworCisgICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVu
dCgpLmljb24oKTsKKyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLnJlcXVlc3RJY29uV2l0aFNpemUobGF5b3V0Lmljb25SZWN0LnNpemUoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlID0gaWNvbi0+bnNJbWFn
ZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CisKKyAgICBbaW1h
Z2UgZHJhd0luUmVjdDpsYXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBb
aW1hZ2Ugc2l6ZV0ud2lkdGgsIFtpbWFnZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBv
c2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0
ZDo6cGFpcjxSZWZQdHI8SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVy
SW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxh
eW91dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE1ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBUaGUgaWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyB3aGVuIHRoZSBhdHRhY2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0
ZWQsIG9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhl
IG5ldyBjbGllbnQgY2xhc3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAg
cmVzcG9uc2libGUgZm9yIHJlcXVlc3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0Jp
dG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFj
aG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdo
bGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNSAgTWVnYW4g
R2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBh
ZGRpdGlvbmFsIFJldmVlYWwgbWV0aG9kcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0
LDYgKzc5NCw3IEBAIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5OCw2ICsxMDE5
OCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFn
ZUNsaWVudCgpLndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5m
bykpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRmxvYXRTaXplJiByZXF1
ZXN0ZWRTaXplKQoreworICAgIEZsb2F0U2l6ZSBzaXplID0gcmVxdWVzdGVkU2l6ZTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwg
dGl0bGUsIHNpemUpKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRp
ZgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50
aWZpZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQ
YWdlUHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikgY29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSw3ICsx
MDIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmkKIH0KIAog
I2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiBiaXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDIyOCw3ICsxMDIzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVBdHRhY2htZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRtYXAt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5kbGUp
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAjaWYg
SEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxX
aXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9u
ICopOwpAQCAtMjUyNCw2ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRl
QWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZvaWQg
cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERp
ZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBT
ZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVu
dGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNl
cmFsaXplZERhdGEpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAg
ICBSZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50
VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lv
biAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKFN5bmFwc2UsIFNZTm90ZQogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJU
aGVtZUlPUy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMuaD4KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJGaWx0
ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5Myw0MyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
cihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJ
bWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZml0dGluZ1NpemUpCit7Cisg
ICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAgIGF1
dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
SW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZp
dHRpbmdTaXplIH0pKTsKKyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAgICBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFi
aXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3ND
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlmIFVT
RShBUFBLSVQpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1pl
cm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlv
bjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Yml0bWFwOworfQorCitSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQcm94
eTo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQorewor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpbWFnZUFuZFNpemUgPSBSZW5kZXJU
aGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7
CisgICAgYXV0byBpbWFnZSA9IGltYWdlQW5kU2l6ZS5pY29uOworICAgIHNpemUgPSBpbWFnZS5z
aXplOworI2Vsc2UKKyAgICBhdXRvIGltYWdlID0gUmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRh
Y2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUpOworI2VuZGlmCisgICAgcmV0dXJu
IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCksIHNpemUpOworfQorCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgcG9pbnQpCkBAIC01MjIsMzEgKzU2NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
dWxsc2NyZWVuVmlkZW9FeHRyYWMKIAogI2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykK
IAotc3RhdGljIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBsYXRmb3Jt
SW1hZ2VUb0JpdG1hcChDb2NvYUltYWdlICppbWFnZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
Zml0dGluZ1NpemUpCi17Ci0gICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1h
Z2Ugc2l6ZV0pOwotICAgIGF1dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RS
ZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0
UmF0aW8oKSwgeyB7IH0sIGZpdHRpbmdTaXplIH0pKTsKLSAgICByZXN1bHRSZWN0LnNldExvY2F0
aW9uKHsgfSk7Ci0KLSAgICBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBi
aXRtYXBDb25maWd1cmF0aW9uOwotICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJh
dGlvbik7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
YXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwot
ICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4
dCk7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1
bHRSZWN0XTsKLSNlbGlmIFVTRShBUFBLSVQpCi0gICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0
UmVjdCBmcm9tUmVjdDpOU1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9u
U291cmNlT3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOwotI2Vu
ZGlmCi0KLSAgICByZXR1cm4gYml0bWFwOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKm9wZXJh
dGlvbikKIHsKICAgICBbb3BlcmF0aW9uIHNldENvbXBsZXRpb25CbG9jazpeewpAQCAtNTU1LDcg
KzU3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE8KICAgICAg
ICAgICAgIGF1dG8gY29udmVydGVkSW1hZ2UgPSBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFw
KFtvcGVyYXRpb24gdGh1bWJuYWlsXSwgV2ViQ29yZTo6SW50U2l6ZSg0MDAsIDQwMCkpOwogICAg
ICAgICAgICAgaWYgKCFjb252ZXJ0ZWRJbWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBjb252ZXJ0
ZWRJbWFnZSk7CisgICAgICAgICAgICB0aGlzLT51cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKGlk
ZW50aWZpZXIsIGNvbnZlcnRlZEltYWdlKTsKICAgICAgICAgfSk7CiAgICAgfV07CiAgICAgICAg
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02Mzc4LDYgKzYzNzgsOCBAQAogCQlF
MzEzNjY0RDI2NUVFNUFGMDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5z
Yi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFE
RTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjEyRkYw
MjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1
MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBp
b3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNjIzOTc0MDUzMDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBwYXRo
ID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFRDIzOTg0NzFBMDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNz
YWdlcy5pbjsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDc2NCw2ICsx
MDc2Niw4IEBACiAJCQkJRjQzQTlDREUyNUQ3MkUyRDAwOTkwRTI2IC8qIFNoYXJlYWJsZUJpdG1h
cFV0aWxpdGllcy5jcHAgKi8sCiAJCQkJRjQzQTlDREQyNUQ3MkUwQzAwOTkwRTI2IC8qIFNoYXJl
YWJsZUJpdG1hcFV0aWxpdGllcy5oICovLAogCQkJCUNFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAv
KiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLywKKwkJCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovLAorCQkJCUUzNkQ3MDFB
MjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovLAogCQkJ
CTQ2RUUyODQ3MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
Y3BwICovLAogCQkJCTQ2RUUyODQ4MjY5RTA0OUIwMERENDhBQiAvKiBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaCAqLywKIAkJCQk0NkU5NzYwQTI3NTdGNkM5MDBBQ0REMzcgLyogV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lm1lc3NhZ2VzLmluICovLApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgor
CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2Up
Cit7Cit9CisKK3ZvaWQgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ6OnJlcXVlc3RBdHRhY2ht
ZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgc2l6ZSkKK3sKKyAgICBtX3BhZ2UucmVxdWVzdEF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIs
IHNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BdHRhY2htZW50RWxlbWVudENs
aWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3Mg
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QXR0YWNo
bWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2UmKTsKKwor
ICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgV2ViUGFn
ZSYgbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw3IEBACiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNh
c3QuaCIKICNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKyNpbmNsdWRlICJX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIgogI2luY2x1ZGUg
IldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgpAQCAtNjUyLDYgKzY1Myw4IEBAIFdlYlBh
Z2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEVsZW1lbnRDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50PigqdGhpcyk7CisKICAgICBpZiAo
cGFyYW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMpCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSgqcGFyYW1ldGVycy5hdHRhY2htZW50
RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMpOwogI2VuZGlmCkBAIC03MzEzLDcgKzczMTYsNyBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzCiAgICAgY2FsbGJhY2soKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRs
ZSkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhh
bmRsZSkKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRo
SWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gdGh1bWJuYWlsID0gIXFsVGh1bWJuYWlsSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUocWxUaHVtYm5haWxIYW5kbGUpIDogbnVsbHB0cikKQEAgLTczMjEsNiAr
NzMyNCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0CiAgICAg
fQogfQogCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGljb25IYW5kbGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoYXV0byBhdHRhY2htZW50
ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgeworICAgICAg
ICBpZiAoYXV0byBpY29uID0gIWljb25IYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShpY29uSGFuZGxlKSA6IG51bGxwdHIpCisgICAgICAgICAgICBhdHRhY2htZW50LT51
cGRhdGVJY29uKGljb24tPmNyZWF0ZUltYWdlKCksIHNpemUpOworICAgIH0KK30KKwordm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0YWNobWVu
dCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKKyAgICAg
ICAgU3RyaW5nIGZpbGVOYW1lOworICAgICAgICBpZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQt
PmZpbGUoKSkKKyAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZS0+cGF0aCgpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVudGlm
aWVyLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgpLCBmaWxlTmFtZSwgYXR0YWNobWVudC0+
YXR0YWNobWVudFRpdGxlKCksIHNpemUpKTsKKyAgICB9Cit9CisKIFJlZlB0cjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgYXR0
YWNobWVudCBlbGVtZW50cyBpbiBzdWJmcmFtZXMgdG9vIGFzIHdlbGwuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMTAsNyArMTMxMCw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
OworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7
CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKTsKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4OTIzNykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTU4MCw3ICs1ODAsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWluCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJ
bnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFz
eW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmlu
ZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4g
KCkgQXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRh
dGVBdHRhY2htZW50VGh1bWJuYWlsKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQorICAgIFVwZGF0ZUF0dGFjaG1lbnRJ
Y29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGlj
b24sIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCg==
</data>
<flag name="commit-queue"
          id="479189"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452216</attachid>
            <date>2022-02-16 11:31:09 -0800</date>
            <delta_ts>2022-02-16 15:30:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216113108.patch</filename>
            <type>text/plain</type>
            <size>53546</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTU0NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTEwICBBZGl0eWEg
S2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBlbGVtZW50IHdpdGgg
Ym90aCAtd2Via2l0LXVzZXItc2VsZWN0OiBhbGwgYW5kIC13ZWJraXQtdXNlci1kcmFnOiBlbGVt
ZW50IGRvZXMgbm90IGdldCB0aGUgbmljZSBkcmFnIHNuYXBzaG90IHRoYXQgeW91IGdldCBpZiB5
b3UganVzdCBoYXZlIC13ZWJraXQtdXNlci1kcmFnOiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjEsNiArMTA2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5o
CiAgICAgcGFnZS9BZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oCisgICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9B
dXRvcGxheUV2ZW50LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNo
ZVN0b3JhZ2VQcm92aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQzMDIsNyArNDMwMiw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJ
bmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0
ODhBMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlclRoZW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkNFQTQ4OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFn
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
QTQ4NEYwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAt
NTI3Niw2ICs1Mjc2LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVK
SVRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzU4MkMyNjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3
RjIzRjYwQTUwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVT
Y3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3
QjcyMDBDMDA2NTMxQjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFC
NyAvKiBBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFE
QURDMDQ1MDA3MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBK
U0RPTVByb21pc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhG
MDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMTUsNiArMTczMTcsOCBAQAog
CQlFMzVCOTA3QzIzRjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNjQzMjFBMjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRh
Y2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2
NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1
RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI0MDAzLDYgKzI0MDA3LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDEx
NDAwNEU4N0Q2IC8qIEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNB
MUNCMDBEOUUwOEQgLyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIy
N0I3MEIyMzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlE
NDY3MDQxRTYwQzNFQjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0
QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1
ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAt
MjQwNzQsNiArMjQwNzksNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFn
U3RhdGUuaCAqLywKIAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8q
IEVkaXRvckNsaWVudC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0
eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFC
RDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDRE
IC8qIEV2ZW50SGFuZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBF
dmVudFNvdXJjZS5jcHAgKi8sCkBAIC0zMzQ3NCw2ICszMzQ4MCw3IEBACiAJCQkJRkQ1Njg2Q0Ex
M0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8q
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIy
OTRBMzNDMDA4Mjc0MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQzOTMsNiArMzQ0MDAsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRE
NThFQkIxN0I4RjEyODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY1NUIzREJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJC
ODI1QyAvKiBFbXB0eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5
MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5MDFENTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRl
KCk7CiB9CiAKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJl
ZlB0cjxJbWFnZT4mIGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7
CisgICAgbV9pY29uID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+
aW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdElj
b25XaXRoU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1
bWVudCgpLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmll
cigpLCBzaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+
JiBpY29uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJp
bmcgYXR0YWNobWVudFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2ht
ZW50VHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlw
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0
cjxJbWFnZT4gdGh1bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJl
cXVlc3RJY29uV2l0aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXpl
IGljb25TaXplKCkgY29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFj
aG1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdl
PiBtX2ljb247CisgICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2
aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1l
bnRDbGllbnQuaCIKICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTIsNiArMTI1
MywxMCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBF
bXB0eVN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlz
aXRlZExpbmtTdG9yZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAg
ICAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9u
LmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50PigpOworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVu
dENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6
ZTsKKworY2xhc3MgQXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisj
aW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitw
cml2YXRlOgorICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEZsb2F0U2l6ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1l
UmF0ZS5oIgogI2luY2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNo
ZS5oIgpAQCAtMzQyLDYgKzM0Myw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVs
UGxheWVyUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3Zp
ZGVyKSkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50
RWxlbWVudENsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50KSkKKyNlbmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBh
eUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7
CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTsKK2NsYXNzIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtOTI5LDYgKzkzMCwxMCBAQCBwdWJsaWM6CiAKICAgICBN
b2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2ht
ZW50RWxlbWVudENsaWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0
KCk7IH0KKyNlbmRpZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0ID0gcm9vdE9iamVjdDsgfQpAQCAtMTI4NSw2ICsxMjkwLDEwIEBAIHByaXZhdGU6CiAgICAg
VW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vh
a0hhc2hNYXA8SFRNTEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5MjM3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50
RWxlbWVudENsaWVudDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNs
YXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpA
QCAtMTUyLDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVy
PiBzdG9yYWdlUHJvdmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4g
bW9kZWxQbGF5ZXJQcm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1l
bnRDbGllbnQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgJKHJldmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvclVUSShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1h
Z2U+IG5zSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJl
dmlzaW9uIDI4OTIzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFT
UyBDSUNvbnRleHQ7CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKQEAgLTY3LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBzeXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRT
aXplIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6
ZSBzaXplOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUg
aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5QYWludChjb25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFs
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHN0cnVjdCBSZW5kZXJB
dHRhY2htZW50SW5mbyB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQg
cHJvZ3Jlc3M7CiAKLSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1h
Z2U+IGljb247CiAgICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJh
c2VsaW5lIHsgMCB9OwpAQCAtMTc5MiwyMSArMTc5MiwxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRh
Y2htZW50UHJvZ3Jlc3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Oklj
b25BbmRTaXplIFJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0
byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSURv
Y3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAg
aWYgKEZpbGUqIGZpbGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQot
ICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlmIChmaWxlTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUaXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBz
ZXROYW1lOmZpbGVOYW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0
TmFtZTpmaWxlTmFtZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGZpbGVOYW1lXTsKIAotICAgIFN0cmlu
ZyBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2ht
ZW50VHlwZSgpOwogICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZyBVVEk7CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkK
QEAgLTE4MjMsNyArMTgxNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0
dGFjaG0KICNpZiBQTEFURk9STShJT1MpCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgaWNvbnNdOwogICAgIGlmICghaWNvbnMuY291bnQpCi0gICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBJY29uQW5kU2l6ZSB7IG5pbCwgRmxvYXRT
aXplKCkgfTsKIAogICAgIHJlc3VsdCA9IGljb25zLmxhc3RPYmplY3Q7CiAKQEAgLTE4NDQsOSAr
MTgzNyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICAgICB9
CiAjZW5kaWYKICAgICBDR0Zsb2F0IGljb25Bc3BlY3QgPSBbcmVzdWx0IHNpemVdLndpZHRoIC8g
W3Jlc3VsdCBzaXplXS5oZWlnaHQ7Ci0gICAgc2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJh
dGlvSW5zaWRlUmVjdChpY29uQXNwZWN0LCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25T
aXplLCBhdHRhY2htZW50SWNvblNpemUpKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gbGFyZ2Vz
dFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAw
LCBhdHRhY2htZW50SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKIAotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIEljb25BbmRTaXplIHsgcmVzdWx0LCBzaXplIH07
CiB9CiAKIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBS
ZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQpAQCAtMTg2Nyw4ICsxODYwLDEwIEBAIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0
aW9uLmlzRW1wdHkoKSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25T
aXplOwotICAgICAgICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNp
emUpOworICAgICAgICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRF
bGVtZW50KCkuaWNvblNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVu
dEVsZW1lbnQoKS5pY29uKCk7CisgICAgICAgIGlmICghaWNvbikKKyAgICAgICAgICAgIGF0dGFj
aG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXplKEZsb2F0U2l6ZSgp
KTsKICAgICAgICAgdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQo
KS50aHVtYm5haWwoKTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBp
Y29uU2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJ
Y29uLT5zaXplKCkuYXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29u
U2l6ZSwgYXR0YWNobWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxMyw3ICsxOTA4LDcgQEAg
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRo
dW1ibmFpbEljb24pCiAgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAg
ICBlbHNlIGlmIChpbmZvLmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoW2luZm8uaWNvbiBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNv
bjsKICAgICAKICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShy
ZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBB
IHZpZXcgYXNzb2NpYXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyog
ZG9jdW1lbnRWaWV3Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAy
ODkyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1NjQsNiArMjU2NCw0OCBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0
dGFjaG1lbnRCYXNlbGluZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorc3Rh
dGljIFJlZlB0cjxJY29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorewor
ICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5h
cHBsZS5mb2xkZXIiKSkgeworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IGtVVFR5cGVGb2xkZXI7CitBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJ
Y29uRm9yVVRJKHR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHR5cGU7CisgICAgICAgICAgICBpZiAoaXNEZWNs
YXJlZFVUSShhdHRhY2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgdHlwZSA9IGF0dGFjaG1l
bnRUeXBlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHR5cGUgPSBVVElGcm9t
TUlNRVR5cGUoYXR0YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0g
SWNvbjo6Y3JlYXRlSWNvbkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNv
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFt
ZSB9KSkKKyAgICAgICAgICAgIHJldHVybiBpY29uOworICAgIH0KKworICAgIE5TU3RyaW5nICpj
b2NvYVRpdGxlID0gdGl0bGU7CisgICAgaWYgKGF1dG8gZmlsZUV4dGVuc2lvbiA9IGNvY29hVGl0
bGUucGF0aEV4dGVuc2lvbjsgZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24p
KQorICAgICAgICAgICAgcmV0dXJuIGljb247CisgICAgfQorCisgICAgcmV0dXJuIEljb246OmNy
ZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBS
ZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICBpZiAoYXV0byBpY29uID0gV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGF0
dGFjaG1lbnRUeXBlLCB0aXRsZSkpCisgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7Cisg
ICAgcmV0dXJuIG5pbDsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tn
cm91bmQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBdHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5z
dHlsZSA9PSBBdHRhY2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiAr
MjYzNywyOSBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAg
fQogfQogCi1zdGF0aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRl
ckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0g
YXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0g
ICAgaWYgKCFhdHRhY2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFw
cGxlLmZvbGRlciIpKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
ICAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZv
bGRlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7
Ci0gICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAg
ICAgICAgICAgVVRJID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgVVRJID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAg
ICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxl
KiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAg
ICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgp
IH0pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZp
bGVFeHRlbnNpb24gPSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAo
ZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0
dXJuIGljb247Ci0gICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1
YmxpYy5kYXRhIik7Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9
IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRh
Y2htZW50KTsKLSAgICBpZiAoIWljb24pCisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQu
aWNvblJlY3QpOworCisgICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVu
dCgpLmljb24oKTsKKyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLnJlcXVlc3RJY29uV2l0aFNpemUobGF5b3V0Lmljb25SZWN0LnNpemUoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlID0gaWNvbi0+bnNJbWFn
ZSgpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CisKKyAgICBbaW1h
Z2UgZHJhd0luUmVjdDpsYXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBb
aW1hZ2Ugc2l6ZV0ud2lkdGgsIFtpbWFnZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBv
c2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0
ZDo6cGFpcjxSZWZQdHI8SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVy
SW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxh
eW91dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE1ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRv
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYzODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBv
cmRlciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBh
dHRhY2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9t
IHRoZSBVSSBwcm9jZXNzLiBUaGUgaWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyB3aGVuIHRoZSBhdHRhY2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0
ZWQsIG9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhl
IG5ldyBjbGllbnQgY2xhc3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAg
cmVzcG9uc2libGUgZm9yIHJlcXVlc3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0Jp
dG1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFj
aG1lbnRJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdo
bGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRUaHVtYm5haWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
SWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNSAgTWVnYW4g
R2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBh
ZGRpdGlvbmFsIFJldmVlYWwgbWV0aG9kcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzk0
LDYgKzc5NCw3IEBAIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aG5Qcm8KIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcAogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCitXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5OCw2ICsxMDE5
OCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d3JpdGVQcm9taXNlZEF0dGFjaG1lCiAgICAgcGFn
ZUNsaWVudCgpLndyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdURk1vdmUoaW5m
bykpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRmxvYXRTaXplJiByZXF1
ZXN0ZWRTaXplKQoreworICAgIEZsb2F0U2l6ZSBzaXplID0gcmVxdWVzdGVkU2l6ZTsKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKGF1dG8gaWNvbiA9IGljb25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwg
dGl0bGUsIHNpemUpKQorICAgICAgICBpY29uLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyNlbmRp
ZgorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50
aWZpZXIsIGhhbmRsZSwgc2l6ZSkpOworfQorCiBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBXZWJQ
YWdlUHJveHk6OmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikgY29uc3QKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc0VtcHR5KCkpCkBAIC0xMDIxOSw3ICsx
MDIzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmkKIH0KIAog
I2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiBiaXRtYXApCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNo
bWVudFRodW1ibmFpbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiBiaXRtYXApCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDIyOCw3ICsxMDIzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVBdHRhY2htZW50SWNvbigKICAgICBpZiAoYml0bWFwKQogICAgICAgICBiaXRtYXAt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwgaGFuZGxlKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChpZGVudGlmaWVyLCBoYW5kbGUp
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBkaWRJbnZhbGlkYXRlRGF0YUZvckF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jik7CiAjaWYg
SEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mKTsKKyAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxX
aXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciAqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9u
ICopOwpAQCAtMjUyNCw2ICsyNTI0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRl
QWxsQXR0YWNobWVudHMoKTsKIAogICAgIHZvaWQgd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5mbyYmKTsKKworICAgIHZvaWQg
cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTUyNiw2ICs1MjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERp
ZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKICAgICBT
ZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVu
dGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNl
cmFsaXplZERhdGEpIFN5bmNocm9ub3VzCiAgICAgV3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8gaW5mbykKKyAg
ICBSZXF1ZXN0QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50
VHlwZSwgU3RyaW5nIHBhdGgsIFN0cmluZyB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lv
biAyODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsMTIgQEAgU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKFN5bmFwc2UsIFNZTm90ZQogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJU
aGVtZUlPUy5oPgorI2Vsc2UKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVNYWMuaD4KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9XZWJGaWx0
ZXJFdmFsdWF0b3JTUEkuaD4KIApAQCAtMjg3LDYgKzI5Myw0MyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cGxhdGZvcm1DbG9uZUF0dGFjaG1lCiAgICAgdG9BdHRhY2htZW50LT5zZXRGaWxlV3JhcHBl
cihmcm9tQXR0YWNobWVudC0+ZmlsZVdyYXBwZXIoKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJ
bWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgZml0dGluZ1NpemUpCit7Cisg
ICAgRmxvYXRTaXplIG9yaWdpbmFsVGh1bWJuYWlsU2l6ZShbaW1hZ2Ugc2l6ZV0pOworICAgIGF1
dG8gcmVzdWx0UmVjdCA9IHJvdW5kZWRJbnRSZWN0KGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlv
SW5zaWRlUmVjdChvcmlnaW5hbFRodW1ibmFpbFNpemUuYXNwZWN0UmF0aW8oKSwgeyB7IH0sIGZp
dHRpbmdTaXplIH0pKTsKKyAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKHsgfSk7CisKKyAgICBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OworICAgIGF1dG8gYml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShyZXN1bHRSZWN0LnNpemUoKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgaWYgKCFi
aXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghZ3JhcGhpY3ND
b250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29udGV4dCk7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0XTsKKyNlbGlmIFVT
RShBUFBLSVQpCisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdCBmcm9tUmVjdDpOU1pl
cm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNlT3ZlciBmcmFjdGlv
bjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOworI2VuZGlmCisKKyAgICByZXR1cm4g
Yml0bWFwOworfQorCitSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IFdlYlBhZ2VQcm94
eTo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRmxvYXRTaXplJiBzaXplKQorewor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byBpbWFnZUFuZFNpemUgPSBSZW5kZXJU
aGVtZUlPUzo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7
CisgICAgYXV0byBpbWFnZSA9IGltYWdlQW5kU2l6ZS5pY29uOworICAgIHNpemUgPSBpbWFnZUFu
ZFNpemUuc2l6ZTsKKyNlbHNlCisgICAgYXV0byBpbWFnZSA9IFJlbmRlclRoZW1lTWFjOjppY29u
Rm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlKTsKKyNlbmRpZgorICAg
IHJldHVybiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLCBzaXplKTsK
K30KKwogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHBvaW50KQpAQCAtNTIyLDMxICs1NjUsNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZnVsbHNjcmVlblZpZGVvRXh0cmFjCiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5B
SUxJTkcpCiAKLXN0YXRpYyBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRQ
bGF0Zm9ybUltYWdlVG9CaXRtYXAoQ29jb2FJbWFnZSAqaW1hZ2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGZpdHRpbmdTaXplKQotewotICAgIEZsb2F0U2l6ZSBvcmlnaW5hbFRodW1ibmFpbFNp
emUoW2ltYWdlIHNpemVdKTsKLSAgICBhdXRvIHJlc3VsdFJlY3QgPSByb3VuZGVkSW50UmVjdChs
YXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qob3JpZ2luYWxUaHVtYm5haWxTaXpl
LmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9KSk7Ci0gICAgcmVzdWx0UmVjdC5z
ZXRMb2NhdGlvbih7IH0pOwotCi0gICAgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBhdXRvIGJpdG1hcCA9IFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0UmVjdC5zaXplKCksIGJpdG1hcENv
bmZpZ3VyYXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGlj
c0NvbnRleHQpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2ltYWdlIGRyYXdJblJl
Y3Q6cmVzdWx0UmVjdF07Ci0jZWxpZiBVU0UoQVBQS0lUKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0
OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09w
ZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmls
XTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGJpdG1hcDsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9u
ICpvcGVyYXRpb24pCiB7CiAgICAgW29wZXJhdGlvbiBzZXRDb21wbGV0aW9uQmxvY2s6XnsKQEAg
LTU1NSw3ICs1NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhP
CiAgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEltYWdlID0gY29udmVydFBsYXRmb3JtSW1hZ2VU
b0JpdG1hcChbb3BlcmF0aW9uIHRodW1ibmFpbF0sIFdlYkNvcmU6OkludFNpemUoNDAwLCA0MDAp
KTsKICAgICAgICAgICAgIGlmICghY29udmVydGVkSW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudEljb24oaWRlbnRpZmllciwg
Y29udmVydGVkSW1hZ2UpOworICAgICAgICAgICAgdGhpcy0+dXBkYXRlQXR0YWNobWVudFRodW1i
bmFpbChpZGVudGlmaWVyLCBjb252ZXJ0ZWRJbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH1dOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjg5MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3OCw2ICs2Mzc4LDgg
QEAKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2
M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRDI3Qjcx
OEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBw
YXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHku
aDsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRUQyMzk4NDcxQTAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3
NjQsNiArMTA3NjYsOCBAQAogCQkJCUY0M0E5Q0RFMjVENzJFMkQwMDk5MEUyNiAvKiBTaGFyZWFi
bGVCaXRtYXBVdGlsaXRpZXMuY3BwICovLAogCQkJCUY0M0E5Q0REMjVENzJFMEMwMDk5MEUyNiAv
KiBTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCAqLywKIAkJCQlDRURBMTJERTE1MkNDQUU4MDBE
OUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUQyN0I3
MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLywKKwkJCQlF
MzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAq
LywKIAkJCQk0NkVFMjg0NzI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmNwcCAqLywKIAkJCQk0NkVFMjg0ODI2OUUwNDlCMDBERDQ4QUIgLyogV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmggKi8sCiAJCQkJNDZFOTc2MEEyNzU3RjZDOTAwQUNERDM3IC8q
IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1l
bnRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaCIKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFn
ZShwYWdlKQoreworfQorCit2b2lkIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OjpyZXF1ZXN0
QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUpCit7CisgICAgbV9wYWdlLnJlcXVlc3RBdHRhY2htZW50SWNvbihpZGVu
dGlmaWVyLCBzaXplKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKworI2luY2x1ZGUgPFdlYkNvcmUvQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisK
K2NsYXNzIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudChXZWJQYWdl
Jik7CisKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGZpbmFsOworCitwcml2YXRlOgorICAg
IFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODkyMzcpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTaGFy
ZWRBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNp
bmNsdWRlICJXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKQEAgLTY1Miw2ICs2NTMsOCBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIENyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRGlzYWJsZXI6OnNpbmdsZXRvbigpLnNldENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZChmYWxzZSk7CiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJBdHRhY2htZW50RWxlbWVudENsaWVudD4oKnRoaXMpOworCiAg
ICAgaWYgKHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoKnBhcmFtZXRlcnMuYXR0
YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgpAQCAtNzMxMyw3ICs3MzE2
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcwogICAgIGNhbGxi
YWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5h
aWxIYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVt
Ym5haWxIYW5kbGUpCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVt
ZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhhbmRsZS5pc051bGwoKSA/IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxlKSA6IG51bGxwdHIpCkBAIC03
MzIxLDYgKzczMjQsMjQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25z
dAogICAgIH0KIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpY29uSGFu
ZGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKGF1dG8gYXR0
YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsK
KyAgICAgICAgaWYgKGF1dG8gaWNvbiA9ICFpY29uSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRyKQorICAgICAgICAgICAgYXR0YWNo
bWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgpLCBzaXplKTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChhdXRvIGF0
dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7
CisgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICAgICAgaWYgKEZpbGUqIGZpbGUgPSBhdHRh
Y2htZW50LT5maWxlKCkpCisgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUtPnBhdGgoKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0QXR0YWNobWVudEljb24o
aWRlbnRpZmllciwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgZmlsZU5hbWUsIGF0dGFj
aG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgpLCBzaXplKSk7CisgICAgfQorfQorCiBSZWZQdHI8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogSGFu
ZGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3ZWxsLgpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg5
MjM3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzEwLDcgKzEzMTAsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWls
SGFuZGxlKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxI
YW5kbGUpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaWNvbiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
ODkyMzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDggQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAt
PiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBl
LCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBlbmNsb3NpbmdJbWFnZURh
dGEpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCisg
ICAgVXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAgICBVcGRhdGVBdHRh
Y2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBpY29uLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>
<flag name="commit-queue"
          id="479240"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452260</attachid>
            <date>2022-02-16 15:39:56 -0800</date>
            <delta_ts>2022-02-16 19:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236386-20220216153955.patch</filename>
            <type>text/plain</type>
            <size>53501</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRl
ciB0byBhdm9pZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRh
Y2htZW50CisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRo
ZSBVSSBwcm9jZXNzLiBXaGVuIHRoZSBpY29uIGlzIGJlaW5nIHBhaW50ZWQgaW4gdGhlIFdlYkNv
bnRlbnQgcHJvY2VzcywgaXQgaXMgZ2V0dGluZworICAgICAgICB0aGUgaWNvbiBmcm9tIHRoZSBI
VE1MIGF0dGFjaG1lbnQgZWxlbWVudCwgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBieSBjb25uZWN0
aW5nIHRvIEljb24gU2VydmljZXMuIFRoZSBpY29uIGluIHRoZSBhdHRhY2htZW50CisgICAgICAg
IGVsZW1lbnQgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gQSBuZXcgQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQgY2xhc3MgaXMgY3JlYXRlZCB0byBmb3J3YXJkIHRoZSBtZXNzYWdlcyB0
byB0aGUgVUkKKyAgICAgICAgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUljb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjppY29uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6aWNvblNpemUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50RWxlbWVudENsaWVudDo6
fkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bV9tb2RlbFBsYXllclByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okljb246Om5zSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjppY29uRm9yQXR0YWNobWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6Omljb25Gb3JBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2Vi
Q29yZTo6aWNvbkZvckF0dGFjaG1lbnQpOiBEZWxldGVkLgorCiAyMDIyLTAyLTE2ICBMYXVybyBN
b3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG5vbi11bmlm
aWVkIGJ1aWxkIGZpeCBhZnRlciByMjg5NzQyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlz
aW9uIDI4OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjksNiArMTA2OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBwYWdlL0FjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oCiAgICAgcGFnZS9B
ZGp1c3RWaWV3U2l6ZU9yTm90LmgKICAgICBwYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCisg
ICAgcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCiAgICAgcGFnZS9BdXRvcGxheUV2ZW50
LmgKICAgICBwYWdlL0Jhc2U2NFV0aWxpdGllcy5oCiAgICAgcGFnZS9DYWNoZVN0b3JhZ2VQcm92
aWRlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQzMTAsNyArNDMx
MCw3IEBACiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODM5MDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQ0VBNDg4NzA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUaGVtZU1hYy5oICovOyB9OworCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
VGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODhBMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNFQTQ4NEIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRoZW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4
OEMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODREMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkNFQTQ4OEUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4NEYwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclRleHRGcmFnbWVudC5oICovOyB9OwpAQCAtNTI4Niw2ICs1Mjg2
LDggQEAKIAkJRTM1ODJDMjgyNTI3RjY2OTAwRDFCNzkwIC8qIFdlYkNvcmVKSVRPcGVyYXRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU4MkMy
NjI1MjdGNjY4MDBEMUI3OTAgLyogV2ViQ29yZUpJVE9wZXJhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVCOTA3RjIzRjYwQTUwMDAw
MDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDdDMjNGNjA2NzcwMDAwMTFGRiAvKiBMb2NhbGl6
ZWREZXZpY2VNb2RlbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzNjQzMjFDMjVEMzdBNjcwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNjQzMjFB
MjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzZENzAxRjI3QjcyMDBDMDA2NTMx
QjcgLyogQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3MThG
M0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21pc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4NjRG
MUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyog
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTczMzcsNiArMTczMzksOCBAQAogCQlFMzVCOTA3QzIz
RjYwNjc3MDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1QjkwN0UyM0Y2MDY3NzAwMDAxMUZGIC8qIExvY2FsaXplZERldmlj
ZU1vZGVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxp
emVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjQzMjFB
MjVEMzdBNjYwMEY5MEUyQSAvKiBNb2R1bGVTY3JpcHRMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlU2NyaXB0TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzNkQ3MDFCMjdCNzBCMjMwMDY1MzFCNyAvKiBBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1w
dHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzN0M4NjRG
MUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01Qcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MDQ1
LDYgKzI0MDQ5LDcgQEAKIAkJCQk3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmggKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8q
IEFkanVzdFZpZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQg
LyogQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJRTM2RDcwMUIyN0I3MEIyMzAwNjUz
MUI3IC8qIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJQzlENDY3MDQxRTYwQzNF
QjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0QjE2NzlCNEY4MDBB
Q0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1ODMwRDRDMTY3OUI0
RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAtMjQxMTYsNiArMjQx
MjEsNyBAQAogCQkJCTgxRjY1RkY1MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUuaCAqLywK
IAkJCQk5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmggKi8sCiAJCQkJMUFGMzI2NzcwRDc4Qjk0NDAwNjhGMEM0IC8qIEVkaXRvckNsaWVu
dC5oICovLAorCQkJCUUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmggKi8sCiAJCQkJOTNDMDlBODAwQjA2NEYwMDAwNUFCRDREIC8qIEV2ZW50
SGFuZGxlci5jcHAgKi8sCiAJCQkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDREIC8qIEV2ZW50SGFu
ZGxlci5oICovLAogCQkJCUUwRkVGMzcxQjI3QzUzRUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5j
cHAgKi8sCkBAIC0zMzUxNiw2ICszMzUyMiw3IEBACiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5
QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUNERTkyMjE1
MDE5MTY5MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkZENEQ2MTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM2RDcwMUYyN0I3MjAwQzAwNjUzMUI3IC8qIEF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0QxMzUyNTIyOTRBMzNDMDA4Mjc0
MDEgLyogQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMzQ0NDAsNiArMzQ0NDcsNyBAQAogCQkJCUZCREI2MTlGMTZENjAzNjUwMEJCMzM5NCAvKiBF
bGVtZW50UnVsZUNvbGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENThFQkIxN0I4RjEy
ODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIz
REJDMTI1MUYxMkQwMDNFRjI2OSAvKiBFbWFpbElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUE1MEQwMEQ4QkEwMEJCODI1QyAvKiBFbXB0
eUNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNERFREU3MUY5RkU5MUUwMDQ3QzQwRCAv
KiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5MDFE
NTRGNUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
aCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgpAQCAtMjY0LDYgKzI2NSwyMyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlVGh1bWJuCiAgICAgICAgIHJlbmRlcmVyLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3Zv
aWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVJY29uKGNvbnN0IFJlZlB0cjxJbWFnZT4m
IGljb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaWNvblNpemUpCit7CisgICAgbV9pY29u
ID0gaWNvbjsKKyAgICBtX2ljb25TaXplID0gaWNvblNpemU7CisKKyAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+aW52YWxpZGF0ZSgp
OworfQorCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdEljb25XaXRoU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2Uo
KSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGRvY3VtZW50KCkucGFnZSgpLT5hdHRhY2htZW50RWxlbWVudENs
aWVudCgpLT5yZXF1ZXN0QXR0YWNobWVudEljb24odW5pcXVlSWRlbnRpZmllcigpLCBzaXplKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaAkocmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
RW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVw
ZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlSWNvbihjb25zdCBSZWZQdHI8SW1hZ2U+JiBpY29uLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0
IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5v
ZGUmKSBmaW5hbDsKQEAgLTY4LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBhdHRhY2htZW50VGl0bGUoKSBjb25zdDsKICAgICBTdHJpbmcgYXR0YWNobWVu
dFRpdGxlRm9yRGlzcGxheSgpIGNvbnN0OwotICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0Owog
ICAgIFN0cmluZyBhdHRhY2htZW50UGF0aCgpIGNvbnN0OwogICAgIFJlZlB0cjxJbWFnZT4gdGh1
bWJuYWlsKCkgY29uc3QgeyByZXR1cm4gbV90aHVtYm5haWw7IH0KKyAgICBSZWZQdHI8SW1hZ2U+
IGljb24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2b2lkIHJlcXVlc3RJY29uV2l0
aFNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgRmxvYXRTaXplIGljb25TaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9pY29uU2l6ZTsgfQogICAgIFJlbmRlckF0dGFjaG1lbnQqIHJlbmRl
cmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NSw4IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEZpbGU+IG1fZmlsZTsKICAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlmaWVyOwogICAg
IFJlZlB0cjxJbWFnZT4gbV90aHVtYm5haWw7CisgICAgUmVmUHRyPEltYWdlPiBtX2ljb247Cisg
ICAgRmxvYXRTaXplIG1faWNvblNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjg5OTc0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJEdW1teVNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkVk
aXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCIK
ICNpbmNsdWRlICJFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRmlsZUNob29z
ZXIuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKQEAgLTEyNTUsNiArMTI1NiwxMCBAQCBQYWdl
Q29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9y
ZSA9IGFkb3B0UmVmKCpuZXcgRW1wdHlWaXNpdGVkTGlua1N0b3JlKTsKICAgICAKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Pigp
OworI2VuZGlmCisKICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BdHRhY2htZW50RWxlbWVudENsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6ZTsKKworY2xhc3Mg
QXR0YWNobWVudEVsZW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHZpcnR1YWwgfkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VtcHR5QXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50IGZpbmFsIDogcHVibGljIEF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBF
bXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAg
IHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsb2F0U2l6
ZSYpIGZpbmFsIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gMjg5OTc0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkZyYW1lUmF0ZS5oIgogI2lu
Y2x1ZGUgIkFwcEhpZ2hsaWdodFN0b3JhZ2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDYWNoZS5oIgpAQCAtMzQz
LDYgKzM0NCw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAg
ICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJt
aXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCiAgICAgLCBtX21vZGVsUGxheWVyUHJvdmlk
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3ZpZGVyKSkKKyNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICwgbV9hdHRhY2htZW50RWxlbWVudENsaWVu
dChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KSkKKyNl
bmRpZgogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCShyZXZpc2lvbiAyODk5NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBjbGFzcyBBcHBsZVBheUFNU1VJUGF5bWVu
dEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBBbHRl
cm5hdGl2ZVRleHRDbGllbnQ7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNz
IEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50OwogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
OwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyOwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5OwpAQCAtOTMwLDYgKzkzMSwxMCBAQCBwdWJsaWM6CiAKICAgICBNb2RlbFBsYXllclBy
b3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVyKCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgIEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50KiBhdHRhY2htZW50RWxlbWVudENs
aWVudCgpIHsgcmV0dXJuIG1fYXR0YWNobWVudEVsZW1lbnRDbGllbnQuZ2V0KCk7IH0KKyNlbmRp
ZgorCiAjaWYgVVNFKEFUU1BJKQogICAgIEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIGFjY2Vzc2li
aWxpdHlSb290T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVj
dDsgfQogICAgIHZvaWQgc2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoQWNjZXNzaWJpbGl0eVJv
b3RBdHNwaSogcm9vdE9iamVjdCkgeyBtX2FjY2Vzc2liaWxpdHlSb290T2JqZWN0ID0gcm9vdE9i
amVjdDsgfQpAQCAtMTI4Niw2ICsxMjkxLDEwIEBAIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPFN0
b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CiAgICAgVW5pcXVlUmVmPE1vZGVsUGxh
eWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAorI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCisgICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRFbGVtZW50Q2xpZW50
PiBtX2F0dGFjaG1lbnRFbGVtZW50Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpw
YWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CiAgICAgV2Vha0hhc2hNYXA8SFRN
TEVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdD4gbV90ZXh0UmVjb2duaXRpb25S
ZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDI4OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IgorI2luY2x1ZGUgIkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0Zv
cndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogY2xh
c3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBBdHRhY2htZW50RWxlbWVudENsaWVu
dDsKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIEJhY2tGb3J3
YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwpAQCAtMTUyLDYgKzE1
Myw5IEBAIHB1YmxpYzoKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiBzdG9yYWdlUHJv
dmlkZXI7CiAKICAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4gbW9kZWxQbGF5ZXJQ
cm92aWRlcjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxBdHRhY2htZW50RWxlbWVudENsaWVudD4gYXR0YWNobWVudEVsZW1lbnRDbGllbnQ7Cisj
ZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29u
LmgJKHJldmlzaW9uIDI4OTk3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ljb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvclVUSShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYpOworCisgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG5zSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX25zSW1hZ2U7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJldmlzaW9uIDI4OTk3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZW5kaWYKIAogT0JKQ19DTEFTUyBDSUNvbnRleHQ7
CitPQkpDX0NMQVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTY3
LDYgKzY4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBz
eXN0ZW1Gb2N1c1JpbmdDb2xvcigpOwogCisgICAgc3RydWN0IEljb25BbmRTaXplIHsKKyAgICAg
ICAgUmV0YWluUHRyPFVJSW1hZ2U+IGljb247CisgICAgICAgIEZsb2F0U2l6ZSBzaXplOworICAg
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSWNvbkFuZFNpemUgaWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRhY2htZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5QYWludChj
b25zdCBQYWludEluZm8mLCBjb25zdCBTZXR0aW5ncyYpIGNvbnN0IGZpbmFsOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyODk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2ODEsNyArMTY4MSw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5m
byB7CiAgICAgQk9PTCBoYXNQcm9ncmVzcyB7IE5PIH07CiAgICAgZmxvYXQgcHJvZ3Jlc3M7CiAK
LSAgICBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbjsKKyAgICBSZWZQdHI8SW1hZ2U+IGljb247CiAg
ICAgUmVmUHRyPEltYWdlPiB0aHVtYm5haWxJY29uOwogCiAgICAgaW50IGJhc2VsaW5lIHsgMCB9
OwpAQCAtMTc5MywyMSArMTc5MywxNCBAQCBzdGF0aWMgQk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jl
c3MoY29uc3QgCiAgICAgcmV0dXJuIHZhbGlkUHJvZ3Jlc3M7CiB9CiAKLXN0YXRpYyBSZXRhaW5Q
dHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0
YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQorUmVuZGVyVGhlbWVJT1M6Okljb25BbmRTaXplIFJl
bmRlclRoZW1lSU9TOjppY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0byBkb2N1bWVudElu
dGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSURvY3VtZW50SW50ZXJh
Y3Rpb25Db250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKLSAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgaWYgKEZpbGUqIGZp
bGUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuZmlsZSgpKQotICAgICAgICBmaWxl
TmFtZSA9IGZpbGUtPm5hbWUoKTsKLQotICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIGZpbGVOYW1lID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRU
aXRsZSgpOwotICAgIFtkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBzZXROYW1lOmZpbGVO
YW1lXTsKKyAgICBbZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0TmFtZTpmaWxlTmFt
ZS5pc0VtcHR5KCkgPyB0aXRsZSA6IGZpbGVOYW1lXTsKIAotICAgIFN0cmluZyBhdHRhY2htZW50
VHlwZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5hdHRhY2htZW50VHlwZSgpOwog
ICAgIGlmICghYXR0YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBVVEk7
CiAgICAgICAgIGlmIChpc0RlY2xhcmVkVVRJKGF0dGFjaG1lbnRUeXBlKSkKQEAgLTE4MjQsNyAr
MTgxNyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICNpZiBQ
TEFURk9STShJT1MpCiAgICAgTlNBcnJheSAqaWNvbnMgPSBbZG9jdW1lbnRJbnRlcmFjdGlvbkNv
bnRyb2xsZXIgaWNvbnNdOwogICAgIGlmICghaWNvbnMuY291bnQpCi0gICAgICAgIHJldHVybiBu
aWw7CisgICAgICAgIHJldHVybiBJY29uQW5kU2l6ZSB7IG5pbCwgRmxvYXRTaXplKCkgfTsKIAog
ICAgIHJlc3VsdCA9IGljb25zLmxhc3RPYmplY3Q7CiAKQEAgLTE4NDUsOSArMTgzOCw5IEBAIHN0
YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG0KICAgICB9CiAjZW5kaWYKICAg
ICBDR0Zsb2F0IGljb25Bc3BlY3QgPSBbcmVzdWx0IHNpemVdLndpZHRoIC8gW3Jlc3VsdCBzaXpl
XS5oZWlnaHQ7Ci0gICAgc2l6ZSA9IGxhcmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVj
dChpY29uQXNwZWN0LCBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudEljb25TaXplLCBhdHRhY2ht
ZW50SWNvblNpemUpKS5zaXplKCk7CisgICAgYXV0byBzaXplID0gbGFyZ2VzdFJlY3RXaXRoQXNw
ZWN0UmF0aW9JbnNpZGVSZWN0KGljb25Bc3BlY3QsIEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50
SWNvblNpemUsIGF0dGFjaG1lbnRJY29uU2l6ZSkpLnNpemUoKTsKIAotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIEljb25BbmRTaXplIHsgcmVzdWx0LCBzaXplIH07CiB9CiAKIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2ht
ZW50JiBhdHRhY2htZW50KQpAQCAtMTg2OCw4ICsxODYxLDEwIEBAIFJlbmRlckF0dGFjaG1lbnRJ
bmZvOjpSZW5kZXJBdHRhY2htZW50SW4KICAgICB9CiAKICAgICBpZiAoYWN0aW9uLmlzRW1wdHko
KSAmJiAhaGFzUHJvZ3Jlc3MpIHsKLSAgICAgICAgRmxvYXRTaXplIGljb25TaXplOwotICAgICAg
ICBpY29uID0gaWNvbkZvckF0dGFjaG1lbnQoYXR0YWNobWVudCwgaWNvblNpemUpOworICAgICAg
ICBGbG9hdFNpemUgaWNvblNpemUgPSBhdHRhY2htZW50LmF0dGFjaG1lbnRFbGVtZW50KCkuaWNv
blNpemUoKTsKKyAgICAgICAgaWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5p
Y29uKCk7CisgICAgICAgIGlmICghaWNvbikKKyAgICAgICAgICAgIGF0dGFjaG1lbnQuYXR0YWNo
bWVudEVsZW1lbnQoKS5yZXF1ZXN0SWNvbldpdGhTaXplKEZsb2F0U2l6ZSgpKTsKICAgICAgICAg
dGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwo
KTsKICAgICAgICAgaWYgKHRodW1ibmFpbEljb24pCiAgICAgICAgICAgICBpY29uU2l6ZSA9IGxh
cmdlc3RSZWN0V2l0aEFzcGVjdFJhdGlvSW5zaWRlUmVjdCh0aHVtYm5haWxJY29uLT5zaXplKCku
YXNwZWN0UmF0aW8oKSwgRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnRJY29uU2l6ZSwgYXR0YWNo
bWVudEljb25TaXplKSkuc2l6ZSgpOwpAQCAtMTkxNCw3ICsxOTA5LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljcwogICAgIGlmIChpbmZvLnRodW1ibmFpbEljb24p
CiAgICAgICAgIGljb25JbWFnZSA9IGluZm8udGh1bWJuYWlsSWNvbjsKICAgICBlbHNlIGlmIChp
bmZvLmljb24pCi0gICAgICAgIGljb25JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoW2luZm8u
aWNvbiBDR0ltYWdlXSk7CisgICAgICAgIGljb25JbWFnZSA9IGluZm8uaWNvbjsKICAgICAKICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbkltYWdlLCBpbmZvLmljb25SZWN0KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCShyZXZpc2lvbiAyODk5
NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAvLyBBIHZpZXcgYXNzb2Np
YXRlZCB0byB0aGUgY29udGFpbmVkIGRvY3VtZW50LgogICAgIE5TVmlldyogZG9jdW1lbnRWaWV3
Rm9yKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJldGFpblB0cjxOU0ltYWdlPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKwogcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyODk5NzQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI1NjQsNiArMjU2NCw0OCBAQCBpbnQgUmVuZGVyVGhlbWVNYWM6OmF0dGFjaG1lbnRCYXNl
bGluZShjCiAgICAgcmV0dXJuIGxheW91dC5iYXNlbGluZTsKIH0KIAorc3RhdGljIFJlZlB0cjxJ
Y29uPiBpY29uRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJp
bmcmIGF0dGFjaG1lbnRUeXBlLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghYXR0
YWNobWVudFR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGF0dGFjaG1lbnRUeXBlLCAibXVsdGlwYXJ0L3gtZm9sZGVyIikgfHwgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShhdHRhY2htZW50VHlwZSwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5mb2xkZXIi
KSkgeworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgICAgIGF1
dG8gdHlwZSA9IGtVVFR5cGVGb2xkZXI7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKKyAgICAgICAgICAgIGlmIChhdXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yVVRJKHR5
cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBpY29uOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgU3RyaW5nIHR5cGU7CisgICAgICAgICAgICBpZiAoaXNEZWNsYXJlZFVUSShhdHRh
Y2htZW50VHlwZSkpCisgICAgICAgICAgICAgICAgdHlwZSA9IGF0dGFjaG1lbnRUeXBlOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHR5cGUgPSBVVElGcm9tTUlNRVR5cGUoYXR0
YWNobWVudFR5cGUpOworCisgICAgICAgICAgICBpZiAoYXV0byBpY29uID0gSWNvbjo6Y3JlYXRl
SWNvbkZvclVUSSh0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghZmlsZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChh
dXRvIGljb24gPSBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoeyBmaWxlTmFtZSB9KSkKKyAgICAg
ICAgICAgIHJldHVybiBpY29uOworICAgIH0KKworICAgIE5TU3RyaW5nICpjb2NvYVRpdGxlID0g
dGl0bGU7CisgICAgaWYgKGF1dG8gZmlsZUV4dGVuc2lvbiA9IGNvY29hVGl0bGUucGF0aEV4dGVu
c2lvbjsgZmlsZUV4dGVuc2lvbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9IElj
b246OmNyZWF0ZUljb25Gb3JGaWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQorICAgICAgICAg
ICAgcmV0dXJuIGljb247CisgICAgfQorCisgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JV
VEkoInB1YmxpYy5kYXRhIik7Cit9CisKK1JldGFpblB0cjxOU0ltYWdlPiBSZW5kZXJUaGVtZU1h
Yzo6aWNvbkZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBhdHRhY2htZW50VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICBpZiAoYXV0byBp
Y29uID0gV2ViQ29yZTo6aWNvbkZvckF0dGFjaG1lbnQoZmlsZU5hbWUsIGF0dGFjaG1lbnRUeXBl
LCB0aXRsZSkpCisgICAgICAgIHJldHVybiBpY29uLT5uc0ltYWdlKCk7CisgICAgcmV0dXJuIG5p
bDsKK30KKwogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbkJhY2tncm91bmQoY29uc3Qg
UmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBB
dHRhY2htZW50TGF5b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGxheW91dC5zdHlsZSA9PSBBdHRh
Y2htZW50TGF5b3V0U3R5bGU6Ok5vblNlbGVjdGVkKQpAQCAtMjU5NSw1MiArMjYzNywyOSBAQCBz
dGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uQmFja2dyb3VuCiAgICAgfQogfQogCi1zdGF0
aWMgUmVmUHRyPEljb24+IGljb25Gb3JBdHRhY2htZW50KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCi17Ci0gICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudC5h
dHRhY2htZW50RWxlbWVudCgpLmF0dGFjaG1lbnRUeXBlKCk7Ci0gICAgCi0gICAgaWYgKCFhdHRh
Y2htZW50VHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoYXR0YWNobWVudFR5cGUsICJtdWx0aXBhcnQveC1mb2xkZXIiKSB8fCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGF0dGFjaG1lbnRUeXBlLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLmZvbGRlciIp
KSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgaWYg
KGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoa1VUVHlwZUZvbGRlcikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGljb247Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBVVEk7Ci0gICAgICAgICAg
ICBpZiAoaXNEZWNsYXJlZFVUSShhdHRhY2htZW50VHlwZSkpCi0gICAgICAgICAgICAgICAgVVRJ
ID0gYXR0YWNobWVudFR5cGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVVRJ
ID0gVVRJRnJvbU1JTUVUeXBlKGF0dGFjaG1lbnRUeXBlKTsKLQotICAgICAgICAgICAgaWYgKGF1
dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JVVEkoVVRJKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gaWNvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChGaWxlKiBmaWxlID0gYXR0
YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmZpbGUoKSkgewotICAgICAgICBpZiAoYXV0byBp
Y29uID0gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKHsgZmlsZS0+cGF0aCgpIH0pKQotICAgICAg
ICAgICAgcmV0dXJuIGljb247Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24g
PSBbc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LmF0dGFjaG1lbnRUaXRsZSgpKSBwYXRoRXh0ZW5zaW9uXTsKLSAgICBpZiAoZmlsZUV4dGVuc2lv
bi5sZW5ndGgpIHsKLSAgICAgICAgaWYgKGF1dG8gaWNvbiA9IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlRXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pKQotICAgICAgICAgICAgcmV0dXJuIGljb247Ci0g
ICAgfQotCi0gICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JVVEkoInB1YmxpYy5kYXRhIik7
Ci19Ci0KIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oY29uc3QgUmVuZGVyQXR0YWNo
bWVudCYgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50TGF5
b3V0JiBsYXlvdXQpCiB7CiAgICAgaWYgKGF1dG8gdGh1bWJuYWlsSWNvbiA9IGF0dGFjaG1lbnQu
YXR0YWNobWVudEVsZW1lbnQoKS50aHVtYm5haWwoKSkgewogICAgICAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqdGh1bWJuYWlsSWNvbiwgbGF5b3V0Lmljb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvIGljb24gPSBpY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KTsKLSAg
ICBpZiAoIWljb24pCisKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpY29uLT5wYWludChjb250ZXh0LCBsYXlvdXQuaWNvblJlY3QpOwor
CisgICAgYXV0byBpY29uID0gYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgpLmljb24oKTsK
KyAgICBpZiAoIWljb24pIHsKKyAgICAgICAgYXR0YWNobWVudC5hdHRhY2htZW50RWxlbWVudCgp
LnJlcXVlc3RJY29uV2l0aFNpemUobGF5b3V0Lmljb25SZWN0LnNpemUoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGltYWdlID0gaWNvbi0+bnNJbWFnZSgpOworICAgIGlm
ICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CisKKyAgICBbaW1hZ2UgZHJhd0luUmVj
dDpsYXlvdXQuaWNvblJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBbaW1hZ2Ugc2l6ZV0u
d2lkdGgsIFtpbWFnZSBzaXplXS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0
aW9uU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KIAogc3RhdGljIHN0ZDo6cGFpcjxSZWZQ
dHI8SW1hZ2U+LCBmbG9hdD4gY3JlYXRlQXR0YWNobWVudFBsYWNlaG9sZGVySW1hZ2UoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IEF0dGFjaG1lbnRMYXlvdXQmIGxheW91dCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODk5NzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAyLTE2ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBTZW5kIGljb25zIHRvIHRoZSBXZWJDb250
ZW50IHByb2Nlc3MgZm9yIHJlbmRlcmluZyBvZiB0aGUgYXR0YWNobWVudCBlbGVtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBvcmRlciB0byBhdm9p
ZCBjb25uZWN0aW5nIHRvIHRoZSBJY29uIFNlcnZpY2VzIGRhZW1vbiBpbiB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzLCB3ZSBzaG91bGQgc2VuZCB0aGUgaWNvbnMgZm9yIHRoZSBhdHRhY2htZW50Cisg
ICAgICAgIGVsZW1lbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBmcm9tIHRoZSBVSSBwcm9j
ZXNzLiBUaGUgaWNvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyB3aGVu
IHRoZSBhdHRhY2htZW50CisgICAgICAgIGF0dHJpYnV0ZXMgYXJlIHVwZGF0ZWQsIG9yIHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MgaGFzIHJlcXVlc3RlZCB0aGUgaWNvbi4gVGhlIG5ldyBjbGllbnQg
Y2xhc3MgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQgaXMKKyAgICAgICAgcmVzcG9uc2libGUg
Zm9yIHJlcXVlc3RpbmcgaWNvbnMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aWNvbkZvckF0dGFjaG1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50VGh1bWJuYWlsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50SWNvbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudDo6V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpkaWRJ
bnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50SWNvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SWNvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMi0xNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bbWFjT1NdIEJsb2NrIGFjY2VzcyB0
byBJY29uIFNlcnZpY2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI4OTk3NCkKKysrIFNv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgwOSw2ICs4MDksNyBA
QCBXZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhuUHJvCiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1JlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAKIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAorV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAKIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbG9yQ2hvb3Nlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyMzAsNiArMTAyMzAsMTcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OndyaXRlUHJvbWlzZWRBdHRhY2htZQogICAgIHBhZ2VDbGllbnQoKS53
cml0ZVByb21pc2VkQXR0YWNobWVudFRvUGFzdGVib2FyZChXVEZNb3ZlKGluZm8pKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IEZsb2F0U2l6ZSYgcmVxdWVzdGVkU2l6ZSkK
K3sKKyAgICBGbG9hdFNpemUgc2l6ZSA9IHJlcXVlc3RlZFNpemU7CisgICAgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgaGFuZGxlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChhdXRvIGlj
b24gPSBpY29uRm9yQXR0YWNobWVudChmaWxlTmFtZSwgY29udGVudFR5cGUsIHRpdGxlLCBzaXpl
KSkKKyAgICAgICAgaWNvbi0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisjZW5kaWYKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50SWNvbihpZGVudGlmaWVyLCBoYW5k
bGUsIHNpemUpKTsKK30KKwogUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gV2ViUGFnZVByb3h5Ojph
dHRhY2htZW50Rm9ySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7
CiAgICAgaWYgKGlkZW50aWZpZXIuaXNFbXB0eSgpKQpAQCAtMTAyNTEsNyArMTAyNjIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpCiB9CiAKICNpZiBIQVZFKFFV
SUNLTE9PS19USFVNQk5BSUxJTkcpCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVu
dEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYgYml0bWFwKQordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5h
aWwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiYgYml0bWFwKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTAyNjAsNyArMTAyNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0
YWNobWVudEljb24oCiAgICAgaWYgKGJpdG1hcCkKICAgICAgICAgYml0bWFwLT5jcmVhdGVIYW5k
bGUoaGFuZGxlKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1l
bnRJY29uKGlkZW50aWZpZXIsIGhhbmRsZSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoaWRlbnRpZmllciwgaGFuZGxlKSk7CiB9CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9u
IDI4OTk3NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzU1LDcgKzE3NTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkSW52YWxp
ZGF0ZURhdGFGb3JBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYpOwogI2lmIEhBVkUoUVVJQ0tM
T09LX1RIVU1CTkFJTElORykKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CisgICAgdm9pZCB1cGRhdGVB
dHRhY2htZW50VGh1bWJuYWlsKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+Jik7CiAgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFw
cGVyKE5TRmlsZVdyYXBwZXIgKiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXF1ZXN0VGh1
bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqKTsKQEAgLTI1
MzYsNiArMjUzNiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFsbEF0dGFjaG1l
bnRzKCk7CiAKICAgICB2b2lkIHdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKFdl
YkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJik7CisKKyAgICB2b2lkIHJlcXVlc3RBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmKTsKKworICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gaWNvbkZv
ckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgPSB7IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MjYs
NiArNTI2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZW1vdmVBdHRh
Y2htZW50V2l0aElkZW50aWZpZXIoU3RyaW5nIGlkZW50aWZpZXIpCiAgICAgU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIC0+
IChWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6ZWREYXRh
KSBTeW5jaHJvbm91cwogICAgIFdyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkKHN0
cnVjdCBXZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvIGluZm8pCisgICAgUmVxdWVzdEF0
dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmlu
ZyBwYXRoLCBTdHJpbmcgdGl0bGUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjg5OTc0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEyIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChT
eW5hcHNlLCBTWU5vdGUKICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4K
KyNlbHNlCisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lTWFjLmg+CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKElPUykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9y
U1BJLmg+CiAKQEAgLTI4OSw2ICsyOTUsNDMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3Jt
Q2xvbmVBdHRhY2htZQogICAgIHRvQXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZnJvbUF0dGFj
aG1lbnQtPmZpbGVXcmFwcGVyKCkpOwogfQogCitzdGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGZpdHRpbmdTaXplKQoreworICAgIEZsb2F0U2l6
ZSBvcmlnaW5hbFRodW1ibmFpbFNpemUoW2ltYWdlIHNpemVdKTsKKyAgICBhdXRvIHJlc3VsdFJl
Y3QgPSByb3VuZGVkSW50UmVjdChsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3Qo
b3JpZ2luYWxUaHVtYm5haWxTaXplLmFzcGVjdFJhdGlvKCksIHsgeyB9LCBmaXR0aW5nU2l6ZSB9
KSk7CisgICAgcmVzdWx0UmVjdC5zZXRMb2NhdGlvbih7IH0pOworCisgICAgV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKKyAgICBhdXRv
IGJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUocmVzdWx0
UmVjdC5zaXplKCksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGlmICghYml0bWFwKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
c2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRleHQpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgW2ltYWdlIGRyYXdJblJlY3Q6cmVzdWx0UmVjdF07CisjZWxpZiBVU0UoQVBQS0lUKQor
ICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJlY3QgZnJvbVJlY3Q6TlNaZXJvUmVjdCBvcGVy
YXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIgZnJhY3Rpb246MSByZXNwZWN0
RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGJpdG1hcDsKK30K
KworUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBXZWJQYWdlUHJveHk6Omljb25Gb3JB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIGF1dG8gaW1hZ2VBbmRTaXplID0gUmVuZGVyVGhlbWVJT1M6Omlj
b25Gb3JBdHRhY2htZW50KGZpbGVOYW1lLCBjb250ZW50VHlwZSwgdGl0bGUpOworICAgIGF1dG8g
aW1hZ2UgPSBpbWFnZUFuZFNpemUuaWNvbjsKKyAgICBzaXplID0gaW1hZ2VBbmRTaXplLnNpemU7
CisjZWxzZQorICAgIGF1dG8gaW1hZ2UgPSBSZW5kZXJUaGVtZU1hYzo6aWNvbkZvckF0dGFjaG1l
bnQoZmlsZU5hbWUsIGNvbnRlbnRUeXBlLCB0aXRsZSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29u
dmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKSwgc2l6ZSk7Cit9CisKICNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb2ludCkKQEAgLTUyNCwzMSArNTY3LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZ1bGxz
Y3JlZW5WaWRlb0V4dHJhYwogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQogCi1z
dGF0aWMgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFn
ZVRvQml0bWFwKENvY29hSW1hZ2UgKmltYWdlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBmaXR0
aW5nU2l6ZSkKLXsKLSAgICBGbG9hdFNpemUgb3JpZ2luYWxUaHVtYm5haWxTaXplKFtpbWFnZSBz
aXplXSk7Ci0gICAgYXV0byByZXN1bHRSZWN0ID0gcm91bmRlZEludFJlY3QobGFyZ2VzdFJlY3RX
aXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KG9yaWdpbmFsVGh1bWJuYWlsU2l6ZS5hc3BlY3RSYXRp
bygpLCB7IHsgfSwgZml0dGluZ1NpemUgfSkpOwotICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24o
eyB9KTsKLQotICAgIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1h
cENvbmZpZ3VyYXRpb247Ci0gICAgYXV0byBiaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHJlc3VsdFJlY3Quc2l6ZSgpLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtpbWFnZSBkcmF3SW5SZWN0OnJlc3VsdFJl
Y3RdOwotI2VsaWYgVVNFKEFQUEtJVCkKLSAgICBbaW1hZ2UgZHJhd0luUmVjdDpyZXN1bHRSZWN0
IGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3Vy
Y2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07Ci0jZW5kaWYK
LQotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1
bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAqb3BlcmF0aW9u
KQogewogICAgIFtvcGVyYXRpb24gc2V0Q29tcGxldGlvbkJsb2NrOl57CkBAIC01NTcsNyArNTc1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoTwogICAgICAgICAg
ICAgYXV0byBjb252ZXJ0ZWRJbWFnZSA9IGNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXAoW29w
ZXJhdGlvbiB0aHVtYm5haWxdLCBXZWJDb3JlOjpJbnRTaXplKDQwMCwgNDAwKSk7CiAgICAgICAg
ICAgICBpZiAoIWNvbnZlcnRlZEltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRJY29uKGlkZW50aWZpZXIsIGNvbnZlcnRlZElt
YWdlKTsKKyAgICAgICAgICAgIHRoaXMtPnVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwoaWRlbnRp
ZmllciwgY29udmVydGVkSW1hZ2UpOwogICAgICAgICB9KTsKICAgICB9XTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI4OTk3NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY0NDcsNiArNjQ0Nyw4IEBACiAJCUUzMTM2
NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MTJGRjAyNkY5
MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3
IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgcGF0aCA9IGlvcy9X
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5NzQwNTMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lmg7IHBhdGggPSBp
b3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVEMjM5ODQ3MUEwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2Vz
LmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwODk2LDYgKzEwODk4
LDggQEAKIAkJCQlGNDNBOUNERTI1RDcyRTJEMDA5OTBFMjYgLyogU2hhcmVhYmxlQml0bWFwVXRp
bGl0aWVzLmNwcCAqLywKIAkJCQlGNDNBOUNERDI1RDcyRTBDMDA5OTBFMjYgLyogU2hhcmVhYmxl
Qml0bWFwVXRpbGl0aWVzLmggKi8sCiAJCQkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAorCQkJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFC
NyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8sCisJCQkJRTM2RDcwMUEyN0I3
MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8sCiAJCQkJNDZF
RTI4NDcyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAg
Ki8sCiAJCQkJNDZFRTI4NDgyNjlFMDQ5QjAwREQ0OEFCIC8qIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeS5oICovLAogCQkJCTQ2RTk3NjBBMjc1N0Y2QzkwMEFDREQzNyAvKiBXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkubWVzc2FnZXMuaW4gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJB
dHRhY2htZW50RWxlbWVudENsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCisKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ6OldlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50KFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sK
K30KKwordm9pZCBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudDo6cmVxdWVzdEF0dGFjaG1lbnRJ
Y29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplKQoreworICAgIG1fcGFnZS5yZXF1ZXN0QXR0YWNobWVudEljb24oaWRlbnRpZmllciwgc2l6
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRFbGVtZW50Q2xpZW50
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpBdHRhY2htZW50
RWxlbWVudENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQoV2ViUGFnZSYpOworCisgICAg
dm9pZCByZXF1ZXN0QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWJQYWdlJiBt
X3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcg
QEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorI2luY2x1ZGUgIldlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgiCkBAIC02NTEsNiArNjUyLDEwIEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBpZiAoIXBhcmFtZXRlcnMuY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQogICAgICAgICBDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0Rpc2FibGVyOjpzaW5nbGV0b24oKS5zZXRDcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQoZmFsc2UpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5hdHRhY2htZW50RWxlbWVudENsaWVudCA9IG1h
a2VVbmlxdWU8V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQ+KCp0aGlzKTsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRklYTUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBjb21wbGV0ZS4KICAgICBz
dGF0aWMgYm9vbCBoYXNDb25zdW1lZE1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IGZhbHNlOwpAQCAt
NzM1Miw3ICs3MzU3LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cwogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgcWxUaHVtYm5haWxIYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRUaHVt
Ym5haWwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0
dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgaWYg
KFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHRodW1ibmFpbCA9ICFxbFRodW1ibmFpbEhhbmRsZS5p
c051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKHFsVGh1bWJuYWlsSGFuZGxlKSA6IG51
bGxwdHIpCkBAIC03MzYwLDYgKzczNjUsMjQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50SWNvbihjb25zdAogICAgIH0KIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBpY29uSGFuZGxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit7CisgICAg
aWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRl
bnRpZmllcikpIHsKKyAgICAgICAgaWYgKGF1dG8gaWNvbiA9ICFpY29uSGFuZGxlLmlzTnVsbCgp
ID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaWNvbkhhbmRsZSkgOiBudWxscHRyKQorICAgICAg
ICAgICAgYXR0YWNobWVudC0+dXBkYXRlSWNvbihpY29uLT5jcmVhdGVJbWFnZSgpLCBzaXplKTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1lbnRJY29uKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQoreworICAg
IGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlk
ZW50aWZpZXIpKSB7CisgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKKyAgICAgICAgaWYgKEZpbGUq
IGZpbGUgPSBhdHRhY2htZW50LT5maWxlKCkpCisgICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUt
PnBhdGgoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0QXR0
YWNobWVudEljb24oaWRlbnRpZmllciwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwgZmls
ZU5hbWUsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgpLCBzaXplKSk7CisgICAgfQorfQor
CiBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxlbWVu
dFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICAv
LyBGSVhNRTogSGFuZGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgaW4gc3ViZnJhbWVzIHRvbyBhcyB3
ZWxsLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMjg5OTc0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE5LDcgKzEzMTksOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYm
IGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IHFsVGh1bWJuYWlsSGFuZGxlKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRUaHVtYm5haWwo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
cWxUaHVtYm5haWxIYW5kbGUpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaWNvbiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudElj
b24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyODk5NzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01ODQsNyArNTg0LDggQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNv
bnRlbnRUeXBlKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0
cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5n
IGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBlbmNs
b3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEljb24oU3Ry
aW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5h
aWxIYW5kbGUpCisgICAgVXBkYXRlQXR0YWNobWVudFRodW1ibmFpbChTdHJpbmcgaWRlbnRpZmll
ciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKKyAg
ICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBpY29uLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>