<?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>221236</bug_id>
          
          <creation_ts>2021-02-01 17:40:46 -0800</creation_ts>
          <short_desc>Introduce image overlays and add UA shadow root support for image extraction</short_desc>
          <delta_ts>2021-02-10 14:44:53 -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>Platform</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724483</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-01 17:40:46 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724973</commentid>
    <comment_count>1</comment_count>
      <attachid>419089</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-02 18:07:49 -0800</bug_when>
    <thetext>Created attachment 419089
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724975</commentid>
    <comment_count>2</comment_count>
      <attachid>419090</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-02 18:10:52 -0800</bug_when>
    <thetext>Created attachment 419090
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725339</commentid>
    <comment_count>3</comment_count>
      <attachid>419090</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-02-03 14:38:50 -0800</bug_when>
    <thetext>Comment on attachment 419090
WIP

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

r=me

&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.cpp:41
&gt; +class RenderImageExtractionContentContainer : public RenderBlockFlow {

should the entire class be `final`?

&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.h:35
&gt; +class HTMLDivElement;

NIT: you&apos;ve already `#include` this so no need to forward declare again :P

&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.h:39
&gt; +class ImageExtractionContentContainer : public HTMLDivElement {

should the entire class be `final`?

&gt; Source/WebCore/rendering/RenderImage.cpp:839
&gt; +        LayoutStateMaintainer statePusher(*this, locationOffset(), hasTransform() || hasReflection() || style().isFlippedBlocksWritingMode());

does this need to be hoisted outside the `for` so that it also covers `clearChildNeedsLayout()` like before?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725368</commentid>
    <comment_count>4</comment_count>
      <attachid>419090</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-03 15:23:08 -0800</bug_when>
    <thetext>Comment on attachment 419090
WIP

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

I&apos;m going to additionally try to simplify the logic here by avoiding a custom renderer subclass (RenderImageExtractionContentContainer).

&gt;&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.cpp:41
&gt;&gt; +class RenderImageExtractionContentContainer : public RenderBlockFlow {
&gt; 
&gt; should the entire class be `final`?

Good call. Although, from chatting with Simon and Alan, it looks like I should be able to remove this custom renderer subclass altogether, so I&apos;ll try that first.

&gt;&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.h:35
&gt;&gt; +class HTMLDivElement;
&gt; 
&gt; NIT: you&apos;ve already `#include` this so no need to forward declare again :P

Whoops, good catch.

&gt;&gt; Source/WebCore/html/shadow/ImageExtractionContentContainer.h:39
&gt;&gt; +class ImageExtractionContentContainer : public HTMLDivElement {
&gt; 
&gt; should the entire class be `final`?

👍🏻

&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:839
&gt;&gt; +        LayoutStateMaintainer statePusher(*this, locationOffset(), hasTransform() || hasReflection() || style().isFlippedBlocksWritingMode());
&gt; 
&gt; does this need to be hoisted outside the `for` so that it also covers `clearChildNeedsLayout()` like before?

From reading the code, it looks like the `LayoutStateMaintainer` just needs to encompass the recursive layout calls on the children, and clearChildNeedsLayout() just clears a few &quot;needs layout&quot; flags, so I *think* this should be okay...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725837</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 15:40:32 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 419090 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419090&amp;action=review
&gt; 
&gt; I&apos;m going to additionally try to simplify the logic here by avoiding a
&gt; custom renderer subclass (RenderImageExtractionContentContainer).

Alan helped me figure out how to do this — we needed to make a slight adjustment in RenderImage::layoutShadowControls(), so that we set fixed layout dimensions on the child renderers even in the case where `shadowControlsNeedCustomLayoutMetrics()` is `false` (that is, in the case where the renderer is not a RenderMedia).

This method (shadowControlsNeedCustomLayoutMetrics) was added as a part of original support for &quot;image controls&quot;, but is currently only used to ensure that the size of media controls (e.g. controls in video elements) matches that of the media element&apos;s renderer, since support for &quot;image controls&quot; has been removed.

This means we should be able to remove `shadowControlsNeedCustomLayoutMetrics` altogether, and just always set a fixed width and height in RenderImage::layoutShadowControls(), since both regular images and media (video) elements now require it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725846</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-04 15:57:31 -0800</bug_when>
    <thetext>How does all this work in the face of object-fit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725882</commentid>
    <comment_count>7</comment_count>
      <attachid>419342</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 17:01:00 -0800</bug_when>
    <thetext>Created attachment 419342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725884</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 17:06:43 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; How does all this work in the face of object-fit?

We&apos;ll eventually need to transform the normalized quads in the coordinate space of the image into bounding rects in the coordinate space of the image element. In the case of `object-fit: contain;`, this is going to mean applying an additional x or y offset.

This patch doesn&apos;t attempt to implement that part yet (it currently just scales each quad&apos;s bounds against the size of the container).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725926</commentid>
    <comment_count>9</comment_count>
      <attachid>419342</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-04 20:30:29 -0800</bug_when>
    <thetext>Comment on attachment 419342
Patch

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

&gt; Source/WebCore/dom/Node.h:211
&gt; +#if ENABLE(IMAGE_EXTRACTION)
&gt; +    virtual bool isImageExtractionContentContainer() const { return false; }
&gt; +#endif

Please define this in HTMLElement instead under isTextControlInnerTextElement() and such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725945</commentid>
    <comment_count>10</comment_count>
      <attachid>419363</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 22:33:04 -0800</bug_when>
    <thetext>Created attachment 419363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725948</commentid>
    <comment_count>11</comment_count>
      <attachid>419365</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 23:16:07 -0800</bug_when>
    <thetext>Created attachment 419365
Fix GTK/WPE builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725949</commentid>
    <comment_count>12</comment_count>
      <attachid>419342</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-04 23:19:07 -0800</bug_when>
    <thetext>Comment on attachment 419342
Patch

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

&gt;&gt; Source/WebCore/dom/Node.h:211
&gt;&gt; +#endif
&gt; 
&gt; Please define this in HTMLElement instead under isTextControlInnerTextElement() and such.

Done! (and also renamed to isImageOverlayElement())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726052</commentid>
    <comment_count>13</comment_count>
      <attachid>419365</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-02-05 07:02:07 -0800</bug_when>
    <thetext>Comment on attachment 419365
Fix GTK/WPE builds

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

&gt; Source/WebCore/dom/Element.cpp:4586
&gt; +    auto container = ImageOverlayElement::create(document());
&gt; +    ensureUserAgentShadowRoot().appendChild(container);

Is updateWithImageExtractionResult() guaranteed to be only called once? I don&apos;t see any code to update or remove the existing ImageOverlayElement.

&gt; Source/WebCore/html/shadow/ImageOverlayElement.h:39
&gt; +class ImageOverlayElement final : public HTMLDivElement {

Why do we need this subclass? As far as I can see it currently has no data members or unique behaviours in virtual functions. Could you just use HTMLDivElement and put the related functions somewhere else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726056</commentid>
    <comment_count>14</comment_count>
      <attachid>419365</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-02-05 07:18:18 -0800</bug_when>
    <thetext>Comment on attachment 419365
Fix GTK/WPE builds

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

&gt; Source/WebCore/style/UserAgentStyle.cpp:193
&gt; +        else if (!imageOverlayStyleSheet &amp;&amp; is&lt;ImageOverlayElement&gt;(element)) {
&gt; +            imageOverlayStyleSheet = parseUASheet(imageOverlayUserAgentStyleSheet, sizeof(imageOverlayUserAgentStyleSheet));
&gt; +            addToDefaultStyle(*imageOverlayStyleSheet);
&gt; +        }

Please don&apos;t add anything to default style sheet for this. Instead insert a &lt;style&gt; element in the shadow tree. All selectors will be scoped to that tree so nothing leaks out. See HTMLMeterElement::didAddUserAgentShadowRoot for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726080</commentid>
    <comment_count>15</comment_count>
      <attachid>419365</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-05 08:33:32 -0800</bug_when>
    <thetext>Comment on attachment 419365
Fix GTK/WPE builds

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

&gt;&gt; Source/WebCore/dom/Element.cpp:4586
&gt;&gt; +    ensureUserAgentShadowRoot().appendChild(container);
&gt; 
&gt; Is updateWithImageExtractionResult() guaranteed to be only called once? I don&apos;t see any code to update or remove the existing ImageOverlayElement.

In its current form, it will only be called once, yes. In the (near) future, we&apos;ll need to be able to remove the overlay if (for instance) the image source changes.

&gt;&gt; Source/WebCore/html/shadow/ImageOverlayElement.h:39
&gt;&gt; +class ImageOverlayElement final : public HTMLDivElement {
&gt; 
&gt; Why do we need this subclass? As far as I can see it currently has no data members or unique behaviours in virtual functions. Could you just use HTMLDivElement and put the related functions somewhere else?

I was planning to stash some additional members on `ImageOverlayElement` in a future patch, but it looks like an alternative to that is perhaps keeping a map of some sort on like `Document` or `Page`.

The `ImageOverlayElement` subclass also allows me to (more easily) identify one of these image overlay elements through a type traits check…though I suppose I could just check the class list?

&gt;&gt; Source/WebCore/style/UserAgentStyle.cpp:193
&gt;&gt; +        }
&gt; 
&gt; Please don&apos;t add anything to default style sheet for this. Instead insert a &lt;style&gt; element in the shadow tree. All selectors will be scoped to that tree so nothing leaks out. See HTMLMeterElement::didAddUserAgentShadowRoot for an example.

Whoops. Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726085</commentid>
    <comment_count>16</comment_count>
      <attachid>419365</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-05 08:46:51 -0800</bug_when>
    <thetext>Comment on attachment 419365
Fix GTK/WPE builds

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

&gt;&gt;&gt; Source/WebCore/style/UserAgentStyle.cpp:193
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; Please don&apos;t add anything to default style sheet for this. Instead insert a &lt;style&gt; element in the shadow tree. All selectors will be scoped to that tree so nothing leaks out. See HTMLMeterElement::didAddUserAgentShadowRoot for an example.
&gt; 
&gt; Whoops. Will do!

I suppose this also means I&apos;ll need to tie this to HTMLImageElement (at least, for the time being?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726152</commentid>
    <comment_count>17</comment_count>
      <attachid>419425</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-05 10:25:06 -0800</bug_when>
    <thetext>Created attachment 419425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726154</commentid>
    <comment_count>18</comment_count>
      <attachid>419426</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-05 10:27:48 -0800</bug_when>
    <thetext>Created attachment 419426
Fix title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726359</commentid>
    <comment_count>19</comment_count>
      <attachid>419426</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-05 21:23:43 -0800</bug_when>
    <thetext>Comment on attachment 419426
Fix title

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:827
&gt; +bool HTMLImageElement::hasOverlay() const
&gt; +{

Don&apos;t we need to have this on HTMLPlugInImageElement too so that this will also work on object element?

&gt; Source/WebCore/html/HTMLImageElement.cpp:832
&gt; +    for (auto child = makeRefPtr(shadowRoot-&gt;firstChild()); child; child = child-&gt;nextSibling()) {

Use childrenOfType&lt;Element&gt;?

&gt; Source/WebCore/html/HTMLImageElement.cpp:878
&gt; +        container-&gt;appendChild(child);

It&apos;s more efficient to build tree bottom up so do this before appending children to child.

&gt; Source/WebCore/html/HTMLImageElement.cpp:898
&gt; +    if (auto* frame = document().frame())

Please use makeRefPtr here.

&gt; Source/WebCore/html/shadow/imageOverlay.css:25
&gt; +div#image-overlay {

img element is display: inline by default. div is display: block by default.
Don&apos;t we want this to be inline-block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726415</commentid>
    <comment_count>20</comment_count>
      <attachid>419426</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-06 12:40:12 -0800</bug_when>
    <thetext>Comment on attachment 419426
Fix title

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

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:827
&gt;&gt; +{
&gt; 
&gt; Don&apos;t we need to have this on HTMLPlugInImageElement too so that this will also work on object element?

Good point. I will move these helper methods into `HTMLElement` as `HTMLElement::hasImageOverlay()` and `HTMLElement::updateWithImageExtractionResult()`, so it can work for both image plugin elements and regular image elements (as well as anything else we may want to support in the future, such as canvas or video elements).

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:832
&gt;&gt; +    for (auto child = makeRefPtr(shadowRoot-&gt;firstChild()); child; child = child-&gt;nextSibling()) {
&gt; 
&gt; Use childrenOfType&lt;Element&gt;?

👍🏻 changed to use childrenOfType&lt;Element&gt;

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:878
&gt;&gt; +        container-&gt;appendChild(child);
&gt; 
&gt; It&apos;s more efficient to build tree bottom up so do this before appending children to child.

Fixed!

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:898
&gt;&gt; +    if (auto* frame = document().frame())
&gt; 
&gt; Please use makeRefPtr here.

👍🏻

&gt;&gt; Source/WebCore/html/shadow/imageOverlay.css:25
&gt;&gt; +div#image-overlay {
&gt; 
&gt; img element is display: inline by default. div is display: block by default.
&gt; Don&apos;t we want this to be inline-block?

Good catch — added `display: inline-block;` to the style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726418</commentid>
    <comment_count>21</comment_count>
      <attachid>419514</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-06 13:16:43 -0800</bug_when>
    <thetext>Created attachment 419514
Move code out of HTMLImageElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726424</commentid>
    <comment_count>22</comment_count>
      <attachid>419514</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-06 15:53:03 -0800</bug_when>
    <thetext>Comment on attachment 419514
Move code out of HTMLImageElement

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

&gt; Source/WebCore/html/HTMLElement.cpp:1210
&gt; +    for (auto&amp; child : childrenOfType&lt;Element&gt;(*shadowRoot)) {
&gt; +        if (child.getIdAttribute() == imageOverlayElementIdentifier())

Oh, now that I&apos;m thinking about this, we should just use TreeScope::hasElementWithId instead.
Assuming we don&apos;t use this same ID elsewhere in the shadow tree.
It would be a single HashMap lookup!

&gt; Source/WebCore/rendering/RenderImage.cpp:817
&gt; +    for (auto* renderer = firstChild(); renderer; renderer = renderer-&gt;nextSibling()) {
&gt; +        if (!is&lt;RenderBox&gt;(renderer))

Use childrenOfType&lt;RenderBox&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726432</commentid>
    <comment_count>23</comment_count>
      <attachid>419514</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-06 17:01:21 -0800</bug_when>
    <thetext>Comment on attachment 419514
Move code out of HTMLImageElement

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

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:1210
&gt;&gt; +        if (child.getIdAttribute() == imageOverlayElementIdentifier())
&gt; 
&gt; Oh, now that I&apos;m thinking about this, we should just use TreeScope::hasElementWithId instead.
&gt; Assuming we don&apos;t use this same ID elsewhere in the shadow tree.
&gt; It would be a single HashMap lookup!

Nice — changed to use `hasElementWithId()`.

&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:817
&gt;&gt; +        if (!is&lt;RenderBox&gt;(renderer))
&gt; 
&gt; Use childrenOfType&lt;RenderBox&gt;?

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726433</commentid>
    <comment_count>24</comment_count>
      <attachid>419516</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-06 17:14:18 -0800</bug_when>
    <thetext>Created attachment 419516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726440</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-06 19:29:02 -0800</bug_when>
    <thetext>Committed r272467: &lt;https://commits.webkit.org/r272467&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419516.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727822</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-10 14:44:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/74207182&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419089</attachid>
            <date>2021-02-02 18:07:49 -0800</date>
            <delta_ts>2021-02-02 18:10:51 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-221236-20210202180748.patch</filename>
            <type>text/plain</type>
            <size>30240</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ3MDgwODdjNGVkYWEz
N2U1YjEzNzc3YWEyMTkyNzU3YjIyMWViOS4uMGNmODAyOWE3ZGZjMWY3MWRlYTdlMjY2YzhhNjlk
ZTQ0YmI1OGNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAyLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyIGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3Vw
cG9ydCBmb3IgaW1hZ2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBw
cmV2aW91c2x5IGludHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3
KSB0byByZW5kZXIKKyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFu
ZCBhZGRpdGlvbmFsbHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFj
dGlvbiwgYSBuZXcKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNJbWFnZUV4dHJhY3Rpb25D
b250ZW50IGNvbnN0KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgb3Igbm90IGFuIGVsZW1lbnQncyBVQSBzaGFkb3cgcm9vdCBoYXMgYSBgSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lcmAuCisgICAgICAgIFRoaXMgaXMgY29uc3VsdGVkIGluIHRoZSBj
b25zdHJ1Y3RvciBvZiBgUmVuZGVySW1hZ2VgIGJlbG93LgorCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBBZGQg
YSBoZWxwZXIgbWV0aG9kIHRvIGluc3RhbGwgaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IGluIHRo
ZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50LCBnaXZlbgorICAgICAgICBgSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0YHMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRD
b250YWluZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXIuY3BwOiBBZGRlZC4KKworICAgICAgICBSZWludHJvZHVjZSBgSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50YCBhcyBgSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcmA7
IHRoaXMgd2lsbCBlbmNhcHN1bGF0ZSBhbGwKKyAgICAgICAgaW1hZ2UtZXh0cmFjdGlvbi1yZWxh
dGVkIFVBIHNoYWRvdyByb290IGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OlJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRl
bnRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29u
dGVudENvbnRhaW5lcjo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKworICAgICAgICBSZWludHJvZHVjZSBgUmVuZGVySW1hZ2VDb250cm9sc2AgYXMg
YFJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXJgOyBsaWtlIGJlZm9yZSwgd2Ug
c3RpbGwgd2FudCB0aGlzIHRvCisgICAgICAgIGV4dGVuZCB0byBmaXQgdGhlIGxvZ2ljYWwgaGVp
Z2h0IGFuZCB3aWR0aCBvZiB0aGUgcGFyZW50IGBSZW5kZXJJbWFnZWAuCisKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisKKyAgICAgICAgQ3JlYXRl
IGFuZCByZXR1cm4gYSBgUmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcmAuCisK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OnVwZGF0
ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcik6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYW5kIGFwcGVuZCBjaGlsZCBg
ZGl2YCBlbGVtZW50cyB0byB0aGUgY29udGFpbmVyLCB1c2luZyBgSW1hZ2VFeHRyYWN0aW9uVGV4
dERhdGFgCisgICAgICAgIHJlc3VsdHMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZUV4
dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwor
ICAgICAgICBBZGQgdHlwZSB0cmFpdHMgc3VwcG9ydCBmb3IgdGhpcyBzaGFkb3cgRE9NIGVsZW1l
bnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmxheW91dCk6CisKKyAgICAgICAgVXNlIHRoZSBgaGFzU2hhZG93Q29udGVudGAgaGVs
cGVyIGluc3RlYWQgb2YgY29uc3VsdGluZyB0aGUgZmxhZ3MgZGlyZWN0bHkgaW4gdGhlc2UgdHdv
IG92ZXJyaWRkZW4gbWV0aG9kcy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Omxh
eW91dFNoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91
dFNoYWRvd0NvbnRyb2xzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYGxheW91dFNoYWRv
d0NvbnRyb2xzYCB0byBgbGF5b3V0U2hhZG93Q29udGVudGAsIGFuZCBhbGxvdyBpdCB0byBzdXBw
b3J0IGJvdGggdGhlICJzaGFkb3cgY29udHJvbHMiIGNhc2UKKyAgICAgICAgKGkuZS4gYFJlbmRl
ck1lZGlhYCkgYW5kIHRoZSAiaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IiBjYXNlLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6c2V0SGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6aGFzU2hhZG93Q29udGVudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIG1ldGhvZCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGBSZW5kZXJJbWFnZWAgc2hv
dWxkIGNvbnRhaW4gc2hhZG93IGNvbnRlbnQuIFRoaXMgY29uc3VsdHMKKyAgICAgICAgdGhlIGV4
aXN0aW5nIGBtX2hhc1NoYWRvd0NvbnRyb2xzYCBmbGFnLCBhcyB3ZWxsIGFzIHRoZSBuZXcgYG1f
aGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudGAgZmxhZyBndWFyZGVkIGJ5CisgICAgICAgIGBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTilgLgorCiAyMDIxLTAyLTAyICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogSW5kaWNhdGUgaWYgbmV0d29y
ayBsb2FkIGRhdGEgaXMgdXNlciBpZGVudGlmaWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODk4YTkw
N2Q4NGNmYWFhNDk1YjAyNDk4MGJiMzE2MmJlOGQwMWE0NS4uNzA5NDk4ZTIyMjExZTIyM2U5YzA1
OTBlMWZlMzJjOWJhZmU0NzBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzOTQsNiArMTM5NCw3IEBA
IGh0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvRGF0ZVRp
bWVGaWVsZEVsZW1lbnRzLmNwcAogaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVt
ZW50LmNwcAogaHRtbC9zaGFkb3cvRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5jcHAKK2h0
bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuY3BwCiBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cv
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDgwZTU5MWQ4N2MzOWMxNjI3YzA1ZWVmZGMwZDcxMTQ1YzFlODZhMjYuLjI3ZjU0
NmEzZDIzMzgyNGZhYTQ1ZWViMjJkYTdlMmRjZTZhOGJiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUyNzAsNiArNTI3MCw3
IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gKi87
IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgy
MjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0ODIyMzEzMUUz
ODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBB
YnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlGNDhCN0Q0RjI1QzIyRThBMDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9u
Q29udGVudENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ4QjdENEQyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRl
bnRDb250YWluZXIuaCAqLzsgfTsKIAkJRjQ4QjdENTMyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdl
RXh0cmFjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJlc3Vs
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0
OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYyM0I0MDBDNjc1MkIgLyog
Rm9udFNoYWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBNzEyMTU2REMw
QTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NjAwLDYgKzE2NjAxLDggQEAKIAkJRjQ4MjIzMTIx
RTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9y
eS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5n
SGlzdG9yeS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGlu
Z0hpc3RvcnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
RWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEI3RDREMjVDMjJFOEEwMDlFNzVE
RCAvKiBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjQ4QjdENEUyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRlbnRD
b250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VFeHRyYWN0aW9uQ29udGVudENv
bnRhaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEI3RDUyMjVDMzQx
RTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQy
QTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRT
aGFkb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDJBNzEyMTU2REMwQTAw
QzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTMzNSw2ICsxOTMzOCw4IEBACiAJ
CQkJRTVGMDZBRUQyNEQ0QTYzNzAwQkJDNEY4IC8qIERhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1l
bnQuaCAqLywKIAkJCQlBN0M5QUJGNjEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwICovLAogCQkJCUE3QzlBQkY3MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oICovLAorCQkJCUY0OEI3RDRFMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4
dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmNwcCAqLywKKwkJCQlGNDhCN0Q0RDI1QzIyRThBMDA5
RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oICovLAogCQkJCTQxNzI1
M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcCAqLywKIAkJCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5oICovLAogCQkJCUU0RTI0MzgyMURBQjk1M0UwMEMy
NkU0QiAvKiBtZXRlckVsZW1lbnRTaGFkb3cuY3NzICovLApAQCAtMzE1NzYsNyArMzE1ODEsNiBA
QAogCQkJCTc3RDUxMDE3MUVENjAyMjIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQg
LyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0OEI3RDUz
MjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdCMUQwNTgwREIwMDZEODYyRCAvKiBDcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNURBMEY2
NTVENkYwMDkyRDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMyNTI3LDYgKzMyNTMxLDggQEAKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAw
QzQyRkIgLyogSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU1Qjg3
RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzIwNUFCNjEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRjQ4QjdENEYyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRl
bnRDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEI3RDUzMjVDMzQxRTYwMDlFNzVE
RCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NzZBNTY1
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVC
M0RDMjEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNTdiZjZkZTk0ZmI0OWI5N2Y0OWNlMzcwOWEy
Y2EwNzVhYjY0Yzg5OC4uMGU2ZTEzMzlmNDYzZThhNzY4NGQ4ZTZhZWM1NzU2Mjg3YTZhNWNmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiUXVpcmtzLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0xMzEsNiArMTMyLDExIEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorI2luY2x1ZGUgIkltYWdlRXh0
cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaCIKKyNpbmNsdWRlICJJbWFnZUV4dHJhY3Rpb25SZXN1
bHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChFbGVtZW50KTsKQEAgLTQ1NjIsNCArNDU2OCwzOSBAQCB2b2lkIEVsZW1lbnQ6
OnNldEF0dHJpYnV0ZVN0eWxlTWFwKFJlZjxTdHlsZVByb3BlcnR5TWFwPiYmIG1hcCkKIAogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworYm9vbCBFbGVtZW50OjpoYXNJ
bWFnZUV4dHJhY3Rpb25Db250ZW50KCkgY29uc3QKK3sKKyAgICBhdXRvIHNoYWRvd1Jvb3QgPSB1
c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKExJS0VMWSghc2hhZG93Um9vdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byBjaGlsZCA9IHNoYWRvd1Jvb3QtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgaWYgKGlzPEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI+KGNoaWxkKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBFbGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlv
blJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewor
ICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuc2V0SGFzSW1h
Z2VFeHRyYWN0aW9uQ29udGVudCgpOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmVyID0gSW1h
Z2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGVu
c3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChjb250YWluZXIpOworICAgIGNv
bnRhaW5lci0+dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGVjYmI1ZmQwMmQ0NGMyNDQ1YzYxY2Zk
Nzc4N2U0OGJhNzUyODhlN2EuLmVhOTZmYWEwNGUyMTgzOGRlZGJkNjVjMWI2MTA5ZDI4Mjg1MmZh
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjcsNiArNjcsMTAgQEAgc3RydWN0IEtleWZyYW1l
QW5pbWF0aW9uT3B0aW9uczsKIHN0cnVjdCBTY3JvbGxJbnRvVmlld09wdGlvbnM7CiBzdHJ1Y3Qg
U2Nyb2xsVG9PcHRpb25zOwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1Y3Qg
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0OworI2VuZGlmCisKIGVudW0gY2xhc3MgRXZlbnRQcm9jZXNz
aW5nIDogdWludDhfdDsKIAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCkBAIC02
MTksNiArNjIzLDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0JiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAppbmRleCA1MDllMGViNmUzNmVlYzViOGU3NTNmNjNmMGIxMGM2YmRiODYzMGRlLi45ZjVi
OTgyMDBkM2I5NzcwNTE0MmViZmM2NzNjMzRlMzdmYzI3MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTIw
Niw2ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NoYXJhY3RlckRhdGFOb2RlKCkgY29u
c3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzQ2hhcmFjdGVyRGF0YSk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUGx1Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgdmlydHVhbCBib29sIGlz
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisjZW5kaWYKIAogICAgIGJvb2wgaXNEb2N1bWVudE5vZGUoKSBjb25zdCB7IHJldHVybiBoYXNO
b2RlRmxhZyhOb2RlRmxhZzo6SXNEb2N1bWVudE5vZGUpOyB9CiAgICAgYm9vbCBpc1RyZWVTY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50Tm9kZSkg
fHwgaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzU2hhZG93Um9vdCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENv
bnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1MDQxZTFlMTkwOGIwOWIyZDMxZTdjMTY0ZDMxMDY0
YmU1ZDU4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXIuaCIKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCisjaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlRXh0cmFjdGlvblJlc3VsdC5o
IgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIp
OworCitjbGFzcyBSZW5kZXJJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyIDogcHVibGlj
IFJlbmRlckJsb2NrRmxvdyB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTkxJTkUoUmVu
ZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcik7CitwdWJsaWM6CisgICAgUmVuZGVy
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcihIVE1MRWxlbWVudCYsIFJlbmRlclN0eWxl
JiYpOworICAgIHZpcnR1YWwgflJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIo
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIGZpbmFsOworICAg
IExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QgZmluYWw7CisK
KyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRl
ckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIiOyB9Cit9OworCitSZW5kZXJJbWFnZUV4
dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpSZW5kZXJJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyKEhUTUxFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQoreworfQorCitSZW5kZXJJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjp+UmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29u
dGVudENvbnRhaW5lcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW5kZXJJbWFnZUV4dHJhY3Rpb25D
b250ZW50Q29udGFpbmVyOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQoreworICAgIFJlbmRlckJveDo6
dXBkYXRlTG9naWNhbFdpZHRoKCk7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVtZW50
KCktPnNoYWRvd0hvc3QoKS0+cmVuZGVyZXIoKTsgaXM8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikp
CisgICAgICAgIHNldExvZ2ljYWxXaWR0aChkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVy
KS5sb2dpY2FsV2lkdGgoKSk7Cit9CisKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVk
VmFsdWVzIFJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
KSBjb25zdAoreworICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBSZW5kZXJCb3g6OmNvbXB1dGVM
b2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3ApOworICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpLT5yZW5kZXJlcigpOyBpczxSZW5kZXJJ
bWFnZT4ocmVuZGVyZXIpKQorICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGRvd25j
YXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmxvZ2ljYWxIZWlnaHQoKTsKKyAgICByZXR1cm4g
Y29tcHV0ZWRWYWx1ZXM7Cit9CisKK1JlZjxJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVy
PiBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQoreworICAgIGF1dG8gY29udGFpbmVyID0gYWRvcHRSZWYoKm5ldyBJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyKGRvY3VtZW50KSk7CisgICAgY29udGFpbmVyLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9zaXRpb24sIENTU1ZhbHVlUmVsYXRpdmUpOworICAg
IGNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCBD
U1NWYWx1ZUhpZGRlbik7CisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKworSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lcjo6SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcihEb2N1
bWVudCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywg
ZG9jdW1lbnQpCit7Cit9CisKK1JlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKK3sKKyAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKK30KKworSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6fkltYWdl
RXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lcjo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJ
bWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQpCit7CisgICAgVmVjdG9yPFJlZjxIVE1MRGl2
RWxlbWVudD4+IHRleHRDb250YWluZXJzOworICAgIHRleHRDb250YWluZXJzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkocmVzdWx0LnRleHREYXRhLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBkYXRh
IDogcmVzdWx0LnRleHREYXRhKQorICAgICAgICB0ZXh0Q29udGFpbmVycy5hcHBlbmQoY3JlYXRl
QW5kQXBwZW5kVGV4dENvbnRhaW5lcihkYXRhKSk7CisKKyAgICBJbnRTaXplIGNvbnRhaW5lclNp
emUgeyBvZmZzZXRXaWR0aCgpLCBvZmZzZXRIZWlnaHQoKSB9OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGV4dENvbnRhaW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgY29u
dGFpbmVyID0gdGV4dENvbnRhaW5lcnNbaV07CisgICAgICAgIEludFJlY3QgY3VycmVudFJlY3Qg
eyBjb250YWluZXItPm9mZnNldExlZnQoKSwgY29udGFpbmVyLT5vZmZzZXRUb3AoKSwgY29udGFp
bmVyLT5vZmZzZXRXaWR0aCgpLCBjb250YWluZXItPm9mZnNldEhlaWdodCgpIH07CisgICAgICAg
IGlmIChjdXJyZW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBhdXRvIHRhcmdldFJlY3QgPSByZXN1bHQudGV4dERhdGFbaV0ubm9ybWFsaXplZFF1YWQu
Ym91bmRpbmdCb3goKTsKKyAgICAgICAgdGFyZ2V0UmVjdC5zY2FsZShjb250YWluZXJTaXplKTsK
KworICAgICAgICBJbnRQb2ludCB0cmFuc2xhdGlvbk9mZnNldCB7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KCh0YXJnZXRSZWN0LndpZHRoKCkgLSBjdXJyZW50UmVjdC53aWR0aCgpKSAv
IDIgKyAodGFyZ2V0UmVjdC54KCkgLSBjdXJyZW50UmVjdC54KCkpKSwKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4oKHRhcmdldFJlY3QuaGVpZ2h0KCkgLSBjdXJyZW50UmVjdC5oZWlnaHQo
KSkgLyAyICsgKHRhcmdldFJlY3QueSgpIC0gY3VycmVudFJlY3QueSgpKSkKKyAgICAgICAgfTsK
KworICAgICAgICBjb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlU
cmFuc2Zvcm0sIG1ha2VTdHJpbmcoCisgICAgICAgICAgICAidHJhbnNsYXRlKCJfcywgdHJhbnNs
YXRpb25PZmZzZXQueCgpLCAicHgsICJfcywgdHJhbnNsYXRpb25PZmZzZXQueSgpLCAicHgpICJf
cworICAgICAgICAgICAgInNjYWxlKCJfcywgdGFyZ2V0UmVjdC53aWR0aCgpIC8gY3VycmVudFJl
Y3Qud2lkdGgoKSwgIiwgIl9zLCB0YXJnZXRSZWN0LmhlaWdodCgpIC8gY3VycmVudFJlY3QuaGVp
Z2h0KCksICIpIl9zCisgICAgICAgICkpOworICAgIH0KKworICAgIGlmIChhdXRvKiBmcmFtZSA9
IGRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNjaGVk
dWxlQ3Vyc29yVXBkYXRlKCk7Cit9CisKK1JlZjxIVE1MRGl2RWxlbWVudD4gSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcihjb25zdCBJ
bWFnZUV4dHJhY3Rpb25UZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBhdXRvIHRleHRDb250YWluZXIg
PSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIHRleHRDb250YWluZXIt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNv
bHV0ZSk7CisgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZUhpZGRlbik7CisgICAgdGV4dENvbnRhaW5lci0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBDU1NWYWx1ZVRyYW5zcGFyZW50KTsK
KworICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlU
ZXh0QWxpZ24sIENTU1ZhbHVlQ2VudGVyKTsKKyAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVOb3dyYXApOworICAg
IHRleHRDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVp
Z2h0LCAxMDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisKKyAgICB0ZXh0Q29udGFp
bmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YS50ZXh0KSk7Cisg
ICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpKTsKKyAgICBhcHBlbmRDaGlsZCh0ZXh0Q29udGFpbmVyKTsKKworICAgIHJldHVybiB0
ZXh0Q29udGFpbmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfRVhUUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YzM0OTViZWRlNGM5YTY0YTE3MGI3MTRmZGY0ZWZhZjE0ODFmOGI1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENv
bnRhaW5lci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxE
aXZFbGVtZW50Oworc3RydWN0IEltYWdlRXh0cmFjdGlvblJlc3VsdDsKK3N0cnVjdCBJbWFnZUV4
dHJhY3Rpb25UZXh0RGF0YTsKKworY2xhc3MgSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5l
ciA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5J
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKCk7CisKKyAgICBzdGF0aWMgUmVmPEltYWdl
RXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHZvaWQg
dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJik7
CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFp
bmVyKERvY3VtZW50Jik7CisKK3ByaXZhdGU6CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBmaW5hbDsKKyAgICBib29sIGlzSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5l
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlZjxIVE1MRGl2RWxlbWVu
dD4gY3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcihjb25zdCBJbWFnZUV4dHJhY3Rpb25UZXh0
RGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIpCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpIHsg
cmV0dXJuIGVsZW1lbnQuaXNJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKCk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Tm9kZSYgbm9kZSkgeyByZXR1cm4g
aXM8V2ViQ29yZTo6RWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkVs
ZW1lbnQ+KG5vZGUpKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYg
Ly8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCAyOTkzZGU5MDUwNjdiMmE0MTkxNjNiZTgzYjgxMGE4ZTBkMmUzMzlm
Li4yOTY5ZTIxYTA0OGYwOGU0NDhiOWQ2Y2VhODE3MDBhZTU1NWMwNDY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTEzOCw2ICsxMzgsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0
IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5
bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHls
ZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyNpZiBFTkFCTEUo
SU1BR0VfRVhUUkFDVElPTikKKyAgICAsIG1faGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudChlbGVt
ZW50Lmhhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQoKSkKKyNlbmRpZgogICAgICwgbV9pbWFnZURl
dmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRl
eHQoKTsKQEAgLTc4OCwxNyArNzkxLDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUFsdFRl
eHQoKQogCiBib29sIFJlbmRlckltYWdlOjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAogewotI2lm
ICFFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAg
IHJldHVybiBtX2hhc1NoYWRvd0NvbnRyb2xzOwotI2VuZGlmCisgICAgcmV0dXJuIGhhc1NoYWRv
d0NvbnRlbnQoKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkKIHsKLSAgICAvLyBS
ZWNvbXB1dGluZyBvdmVyZmxvdyBpcyByZXF1aXJlZCBvbmx5IHdoZW4gY2hpbGQgY29udGVudCBp
cyBwcmVzZW50LiAKLSAgICBpZiAobmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHko
KSAmJiAhbV9oYXNTaGFkb3dDb250cm9scykgeworICAgIC8vIFJlY29tcHV0aW5nIG92ZXJmbG93
IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBjaGlsZCBjb250ZW50IGlzIHByZXNlbnQuCisgICAgaWYg
KG5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXRPbmx5KCkgJiYgIWhhc1NoYWRvd0NvbnRl
bnQoKSkgewogICAgICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC04MTAsNDUgKzgwOSw0NSBAQCB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogCiAg
ICAgdXBkYXRlSW5uZXJDb250ZW50UmVjdCgpOwogCi0gICAgaWYgKG1faGFzU2hhZG93Q29udHJv
bHMpCi0gICAgICAgIGxheW91dFNoYWRvd0NvbnRyb2xzKG9sZFNpemUpOworICAgIGlmIChoYXNT
aGFkb3dDb250ZW50KCkpCisgICAgICAgIGxheW91dFNoYWRvd0NvbnRlbnQob2xkU2l6ZSk7CiB9
CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRyb2xzKGNvbnN0IExheW91dFNp
emUmIG9sZFNpemUpCit2b2lkIFJlbmRlckltYWdlOjpsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0
IExheW91dFNpemUmIG9sZFNpemUpCiB7Ci0gICAgLy8gV2UgZXhwZWN0IGEgc2luZ2xlIGNvbnRh
aW5pbmcgYm94IHVuZGVyIHRoZSBVQSBzaGFkb3cgcm9vdC4KLSAgICBBU1NFUlQoZmlyc3RDaGls
ZCgpID09IGxhc3RDaGlsZCgpKTsKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyID0gZmlyc3RDaGls
ZCgpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICBhdXRvKiBjb250cm9sc1JlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PihmaXJz
dENoaWxkKCkpOwotICAgIGlmICghY29udHJvbHNSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGJvb2wgY29udHJvbHNOZWVkTGF5b3V0ID0gY29udHJvbHNSZW5kZXJlci0+bmVl
ZHNMYXlvdXQoKTsKLSAgICAvLyBJZiB0aGUgcmVnaW9uIGNoYWluIGhhcyBjaGFuZ2VkIHdlIGFs
c28gbmVlZCB0byByZWxheW91dCB0aGUgY29udHJvbHMgdG8gdXBkYXRlIHRoZSByZWdpb24gYm94
IGluZm8uCi0gICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgb25jZSB3ZSBjb21wdXRlIHJl
Z2lvbiBib3ggaW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQsIG5vdCBvbmx5IGZvciBSZW5kZXJCbG9j
ay4KLSAgICBjb25zdCBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cgPSBlbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpOwotICAgIGlmIChmcmFnbWVudGVkRmxvdyAmJiAhY29udHJv
bHNOZWVkTGF5b3V0KSB7Ci0gICAgICAgIGlmIChmcmFnbWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxT
aXplQ2hhbmdlZCgpKQotICAgICAgICAgICAgY29udHJvbHNOZWVkTGF5b3V0ID0gdHJ1ZTsKLSAg
ICB9CisgICAgICAgIGF1dG8qIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVy
ZXIpOworICAgICAgICBib29sIGNoaWxkTmVlZExheW91dCA9IHJlbmRlckJveC0+bmVlZHNMYXlv
dXQoKTsKKyAgICAgICAgLy8gSWYgdGhlIHJlZ2lvbiBjaGFpbiBoYXMgY2hhbmdlZCB3ZSBhbHNv
IG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNoaWxkcmVuIHRvIHVwZGF0ZSB0aGUgcmVnaW9uIGJveCBp
bmZvLgorICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciBvbmNlIHdlIGNvbXB1dGUg
cmVnaW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNlZCwgbm90IG9ubHkgZm9yIFJlbmRlckJs
b2NrLgorICAgICAgICBjb25zdCBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cg
PSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOworICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3cg
JiYgIWNoaWxkTmVlZExheW91dCkgeworICAgICAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93LT5w
YWdlTG9naWNhbFNpemVDaGFuZ2VkKCkpCisgICAgICAgICAgICAgICAgY2hpbGROZWVkTGF5b3V0
ID0gdHJ1ZTsKKyAgICAgICAgfQogCi0gICAgTGF5b3V0U2l6ZSBuZXdTaXplID0gY29udGVudEJv
eFJlY3QoKS5zaXplKCk7Ci0gICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSAmJiAhY29udHJvbHNO
ZWVkTGF5b3V0KQotICAgICAgICByZXR1cm47CisgICAgICAgIExheW91dFNpemUgbmV3U2l6ZSA9
IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOworICAgICAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXpl
ICYmICFjaGlsZE5lZWRMYXlvdXQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIC8vIFdo
ZW4gY2FsbGluZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11c3QgZWl0aGVy
IHB1c2ggYSBMYXlvdXRTdGF0ZU1haW50YWludGVyLCBvciAKLSAgICAvLyBpbnN0YW50aWF0ZSBM
YXlvdXRTdGF0ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExheW91dFN0YXRlTWFpbnRhaW5lciBp
cyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCwKLSAgICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQg
YmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVz
ZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKLSAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3Rh
dGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1Jl
ZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworICAg
ICAgICAvLyBXaGVuIGNhbGxpbmcgbGF5b3V0KCkgb24gYSBjaGlsZCBub2RlLCBhIHBhcmVudCBt
dXN0IGVpdGhlciBwdXNoIGEgTGF5b3V0U3RhdGVNYWludGFpbnRlciwgb3IKKyAgICAgICAgLy8g
aW5zdGFudGlhdGUgTGF5b3V0U3RhdGVEaXNhYmxlci4gU2luY2UgdXNpbmcgYSBMYXlvdXRTdGF0
ZU1haW50YWluZXIgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQsCisgICAgICAgIC8vIGFuZCB0
aGlzIG1ldGhvZCBtaWdodCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2
aWRlbyBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgorICAgICAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhh
c1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOworCisgICAgICAgIGlmIChzaGFkb3dDb250cm9sc05lZWRDdXN0b21M
YXlvdXRNZXRyaWNzKCkpIHsKKyAgICAgICAgICAgIHJlbmRlckJveC0+c2V0TG9jYXRpb24oTGF5
b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBhZGRpbmdM
ZWZ0KCksIHBhZGRpbmdUb3AoKSkpOworICAgICAgICAgICAgcmVuZGVyQm94LT5tdXRhYmxlU3R5
bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAg
ICAgICByZW5kZXJCb3gtPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChuZXdTaXplLndp
ZHRoKCksIEZpeGVkKSk7CisgICAgICAgIH0KIAotICAgIGlmIChzaGFkb3dDb250cm9sc05lZWRD
dXN0b21MYXlvdXRNZXRyaWNzKCkpIHsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9j
YXRpb24oTGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXpl
KHBhZGRpbmdMZWZ0KCksIHBhZGRpbmdUb3AoKSkpOwotICAgICAgICBjb250cm9sc1JlbmRlcmVy
LT5tdXRhYmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIEZpeGVk
KSk7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExl
bmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC0+c2V0TmVl
ZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAgICAgcmVuZGVyQm94LT5sYXlvdXQoKTsKICAg
ICB9CiAKLSAgICBjb250cm9sc1JlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OwotICAgIGNvbnRyb2xzUmVuZGVyZXItPmxheW91dCgpOwogICAgIGNsZWFyQ2hpbGROZWVkc0xh
eW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDlk
Mjc5YTU3MGQxZjQ4ZDcyNThlZDk0MzkwMmJlMjkxMTg4NzYzMTMuLjMxYjg4MzYxMmZmNjM0MDVl
NDlhZTgyYWRkYWQ0OWU3N2NiMDYzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCkBAIC03MCw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBpbWFnZURldmljZVBp
eGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbzsgfQogCiAg
ICAgdm9pZCBzZXRIYXNTaGFkb3dDb250cm9scyhib29sIGhhc1NoYWRvd0NvbnRyb2xzKSB7IG1f
aGFzU2hhZG93Q29udHJvbHMgPSBoYXNTaGFkb3dDb250cm9sczsgfQorI2lmIEVOQUJMRShJTUFH
RV9FWFRSQUNUSU9OKQorICAgIHZvaWQgc2V0SGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCgpIHsg
bV9oYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50ID0gdHJ1ZTsgfQorI2VuZGlmCiAgICAgCiAgICAg
Ym9vbCBpc1Nob3dpbmdNaXNzaW5nT3JJbWFnZUVycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1No
b3dpbmdBbHRUZXh0KCkgY29uc3Q7CkBAIC0xMzAsNyArMTMzLDIwIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KTsKICAgICAKLSAgICB2b2lkIGxheW91dFNoYWRvd0NvbnRyb2xz
KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpOworICAgIHZvaWQgbGF5b3V0U2hhZG93Q29udGVu
dChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKTsKKworICAgIGJvb2wgaGFzU2hhZG93Q29udGVu
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNTaGFkb3dDb250cm9scykKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAg
ICAgIGlmIChtX2hhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVk
ID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRX
aWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNDMsNiArMTU5LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNUb1NldFNpemVGb3JBbHRUZXh0IHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNHZW5lcmF0ZWRDb250ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
U2hhZG93Q29udHJvbHMgeyBmYWxzZSB9OworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQor
ICAgIGJvb2wgbV9oYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50IHsgZmFsc2UgfTsKKyNlbmRpZgog
ICAgIGZsb2F0IG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvIHsgMSB9OwogCiAgICAgZnJpZW5kIGNs
YXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419090</attachid>
            <date>2021-02-02 18:10:52 -0800</date>
            <delta_ts>2021-02-03 15:23:20 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-221236-20210202181051.patch</filename>
            <type>text/plain</type>
            <size>29669</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FlNWQ0NjZhZDQyNDI5
ZTcwZmQwMjM0NjBkZWVkYTkwOGEyMWRiZi4uYjEwOTFhNzg2YmJlODQ0MTE4N2U1MTkzOTMwZTAw
OWVmNTc1ODg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAyLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyIGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3Vw
cG9ydCBmb3IgaW1hZ2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBw
cmV2aW91c2x5IGludHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3
KSB0byByZW5kZXIKKyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFu
ZCBhZGRpdGlvbmFsbHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFj
dGlvbiwgYSBuZXcKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNJbWFnZUV4dHJhY3Rpb25D
b250ZW50IGNvbnN0KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gZGV0ZXJtaW5lIHdoZXRo
ZXIgb3Igbm90IGFuIGVsZW1lbnQncyBVQSBzaGFkb3cgcm9vdCBoYXMgYSBgSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lcmAuCisgICAgICAgIFRoaXMgaXMgY29uc3VsdGVkIGluIHRoZSBj
b25zdHJ1Y3RvciBvZiBgUmVuZGVySW1hZ2VgIGJlbG93LgorCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBBZGQg
YSBoZWxwZXIgbWV0aG9kIHRvIGluc3RhbGwgaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IGluIHRo
ZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50LCBnaXZlbgorICAgICAgICBgSW1hZ2VFeHRyYWN0
aW9uUmVzdWx0YHMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRD
b250YWluZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXIuY3BwOiBBZGRlZC4KKworICAgICAgICBSZWludHJvZHVjZSBgSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50YCBhcyBgSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcmA7
IHRoaXMgd2lsbCBlbmNhcHN1bGF0ZSBhbGwKKyAgICAgICAgaW1hZ2UtZXh0cmFjdGlvbi1yZWxh
dGVkIFVBIHNoYWRvdyByb290IGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OlJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRl
bnRDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29u
dGVudENvbnRhaW5lcjo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKworICAgICAgICBSZWludHJvZHVjZSBgUmVuZGVySW1hZ2VDb250cm9sc2AgYXMg
YFJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXJgOyBsaWtlIGJlZm9yZSwgd2Ug
c3RpbGwgd2FudCB0aGlzIHRvCisgICAgICAgIGV4dGVuZCB0byBmaXQgdGhlIGxvZ2ljYWwgaGVp
Z2h0IGFuZCB3aWR0aCBvZiB0aGUgcGFyZW50IGBSZW5kZXJJbWFnZWAuCisKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisKKyAgICAgICAgQ3JlYXRl
IGFuZCByZXR1cm4gYSBgUmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcmAuCisK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OnVwZGF0
ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcik6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYW5kIGFwcGVuZCBjaGlsZCBg
ZGl2YCBlbGVtZW50cyB0byB0aGUgY29udGFpbmVyLCB1c2luZyBgSW1hZ2VFeHRyYWN0aW9uVGV4
dERhdGFgCisgICAgICAgIHJlc3VsdHMuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZUV4
dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmg6IEFkZGVkLgorICAgICAgICAoaXNUeXBlKToKKwor
ICAgICAgICBBZGQgdHlwZSB0cmFpdHMgc3VwcG9ydCBmb3IgdGhpcyBzaGFkb3cgRE9NIGVsZW1l
bnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmxheW91dCk6CisKKyAgICAgICAgVXNlIHRoZSBgaGFzU2hhZG93Q29udGVudGAgaGVs
cGVyIGluc3RlYWQgb2YgY29uc3VsdGluZyB0aGUgZmxhZ3MgZGlyZWN0bHkgaW4gdGhlc2UgdHdv
IG92ZXJyaWRkZW4gbWV0aG9kcy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Omxh
eW91dFNoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91
dFNoYWRvd0NvbnRyb2xzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYGxheW91dFNoYWRv
d0NvbnRyb2xzYCB0byBgbGF5b3V0U2hhZG93Q29udGVudGAsIGFuZCBhbGxvdyBpdCB0byBzdXBw
b3J0IGJvdGggdGhlICJzaGFkb3cgY29udHJvbHMiIGNhc2UKKyAgICAgICAgKGkuZS4gYFJlbmRl
ck1lZGlhYCkgYW5kIHRoZSAiaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IiBjYXNlLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6c2V0SGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6aGFzU2hhZG93Q29udGVudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIG1ldGhvZCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGBSZW5kZXJJbWFnZWAgc2hv
dWxkIGNvbnRhaW4gc2hhZG93IGNvbnRlbnQuIFRoaXMgY29uc3VsdHMKKyAgICAgICAgdGhlIGV4
aXN0aW5nIGBtX2hhc1NoYWRvd0NvbnRyb2xzYCBmbGFnLCBhcyB3ZWxsIGFzIHRoZSBuZXcgYG1f
aGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudGAgZmxhZyBndWFyZGVkIGJ5CisgICAgICAgIGBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTilgLgorCiAyMDIxLTAyLTAyICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCkgdG8gdXBkYXRlV2lsbFZhbGlkYXRlQW5k
VmFsaWRpdHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4OThhOTA3ZDg0Y2ZhYWE0OTViMDI0OTgwYmIz
MTYyYmU4ZDAxYTQ1Li43MDk0OThlMjIyMTFlMjIzZTljMDU5MGUxZmUzMmM5YmFmZTQ3MGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTM5NCw2ICsxMzk0LDcgQEAgaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCiBo
dG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9E
YXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcAoraHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lci5jcHAKIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwCiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzdlMzc0Y2JiMGQ5
OTg5NDVhMzFlMmEzYjU0NGQ4NWRjYTRkZmFiNy4uODkxOTllMmE3YmU2YWY0ZjM3YjMwZmI5Yjk1
Mzg5OTYwYTNhNjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTI3MCw2ICs1MjcwLDcgQEAKIAkJRjQ4MjIzMTAxRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRTFFMzg2OUI4MDA2NkZDNzkg
LyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjQ4MjIzMTExRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBGMUUzODY5QjgwMDY2RkM3OSAv
KiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0OEI3RDRG
MjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhCN0Q0RDI1QzIy
RThBMDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oICovOyB9Owog
CQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhCN0Q1MjI1QzM0
MUU2MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4RDJBNkMyMTU2MjNCNDAwQzY3NTJC
IC8qIEZvbnRTaGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4RDJBN0UyMTU3MTgy
NjAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJp
YnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTY2MDAsNiArMTY2MDEsOCBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJz
dHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3Ry
YWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFF
MURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2Ny
aXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7
IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ4QjdENEQyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VFeHRyYWN0aW9uQ29udGVudENv
bnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhCN0Q0RTI1QzIyRThB
MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0
cmFjdGlvblJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8q
IEZvbnRTaGFkb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNoYWRvdy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE5MzM1LDYgKzE5MzM4LDggQEAKIAkJCQlFNUYwNkFFRDI0RDRBNjM3MDBC
QkM0RjggLyogRGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oICovLAogCQkJCUE3QzlBQkY2
MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgKi8sCiAJCQkJQTdD
OUFCRjcxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmggKi8sCisJCQkJ
RjQ4QjdENEUyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWlu
ZXIuY3BwICovLAorCQkJCUY0OEI3RDREMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwICovLAogCQkJCTQxNzI1
M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmggKi8sCiAJCQkJRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1ldGVyRWxlbWVudFNo
YWRvdy5jc3MgKi8sCkBAIC0zMjUyNiw2ICszMjUzMSw3IEBACiAJCQkJQ0QxOUZFQUUxRjU3NEI2
RDAwMEM0MkZCIC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1
NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUY0OEI3RDRGMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25D
b250ZW50Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhCN0Q1MzI1QzM0MUU2MDA5
RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTc2
QTU2NTFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjU1QjNEQzIxMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1N2JmNmRlOTRmYjQ5Yjk3ZjQ5Y2UzNzA5YTJj
YTA3NWFiNjRjODk4Li4wZTZlMTMzOWY0NjNlOGE3Njg0ZDhlNmFlYzU3NTYyODdhNmE1Y2ZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJRdWlya3MuaCIKICNpbmNsdWRl
ICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTEzMSw2ICsxMzIsMTEgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisjaW5jbHVkZSAiSW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkltYWdlRXh0cmFjdGlvblJlc3Vs
dC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKEVsZW1lbnQpOwpAQCAtNDU2Miw0ICs0NTY4LDM5IEBAIHZvaWQgRWxlbWVudDo6
c2V0QXR0cmlidXRlU3R5bGVNYXAoUmVmPFN0eWxlUHJvcGVydHlNYXA+JiYgbWFwKQogCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCitib29sIEVsZW1lbnQ6Omhhc0lt
YWdlRXh0cmFjdGlvbkNvbnRlbnQoKSBjb25zdAoreworICAgIGF1dG8gc2hhZG93Um9vdCA9IHVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoTElLRUxZKCFzaGFkb3dSb290KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChhdXRvIGNoaWxkID0gc2hhZG93Um9vdC0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoaXM8SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcj4oY2hpbGQpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9u
UmVzdWx0JiYgcmVzdWx0KQoreworICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Cisg
ICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5zZXRIYXNJbWFn
ZUV4dHJhY3Rpb25Db250ZW50KCk7CisgICAgfQorCisgICAgYXV0byBjb250YWluZXIgPSBJbWFn
ZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgY29u
dGFpbmVyLT51cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KFdURk1vdmUocmVzdWx0KSk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZWNiYjVmZDAyZDQ0YzI0NDVjNjFjZmQ3
Nzg3ZTQ4YmE3NTI4OGU3YS4uZWE5NmZhYTA0ZTIxODM4ZGVkYmQ2NWMxYjYxMDlkMjgyODUyZmFl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC02Nyw2ICs2NywxMCBAQCBzdHJ1Y3QgS2V5ZnJhbWVB
bmltYXRpb25PcHRpb25zOwogc3RydWN0IFNjcm9sbEludG9WaWV3T3B0aW9uczsKIHN0cnVjdCBT
Y3JvbGxUb09wdGlvbnM7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKK3N0cnVjdCBJ
bWFnZUV4dHJhY3Rpb25SZXN1bHQ7CisjZW5kaWYKKwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3Np
bmcgOiB1aW50OF90OwogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKQEAgLTYx
OSw2ICs2MjMsMTEgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4
dHJhY3Rpb25SZXN1bHQmJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDUwOWUwZWI2ZTM2ZWVjNWI4ZTc1M2Y2M2YwYjEwYzZiZGI4NjMwZGUuLjlmNWI5
ODIwMGQzYjk3NzA1MTQyZWJmYzY3M2MzNGUzN2ZjMjcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjA2
LDYgKzIwNiw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2hhcmFjdGVyRGF0YU5vZGUoKSBjb25z
dCB7IHJldHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6SXNDaGFyYWN0ZXJEYXRhKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZgogCiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGhhc05v
ZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50Tm9kZSk7IH0KICAgICBib29sIGlzVHJlZVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzRG9jdW1lbnROb2RlKSB8
fCBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6SXNTaGFkb3dSb290KTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjUwNDFlMWUxOTA4YjA5YjJkMzFlN2MxNjRkMzEwNjRi
ZTVkNTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1h
Z2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uQ29u
dGVudENvbnRhaW5lci5oIgorCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKKyNpbmNs
dWRlICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJIVE1MQlJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTFNwYW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Lmgi
CisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcik7
CisKK2NsYXNzIFJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIgOiBwdWJsaWMg
UmVuZGVyQmxvY2tGbG93IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lOTElORShSZW5k
ZXJJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKTsKK3B1YmxpYzoKKyAgICBSZW5kZXJJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKEhUTUxFbGVtZW50JiwgUmVuZGVyU3R5bGUm
Jik7CisgICAgdmlydHVhbCB+UmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcigp
OworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgZmluYWw7CisgICAg
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBmaW5hbDsKKwor
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lciI7IH0KK307CisKK1JlbmRlckltYWdlRXh0
cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OlJlbmRlckltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250
YWluZXIoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCisgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCit7Cit9CisKK1JlbmRlcklt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6On5SZW5kZXJJbWFnZUV4dHJhY3Rpb25Db250
ZW50Q29udGFpbmVyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbmRlckltYWdlRXh0cmFjdGlvbkNv
bnRlbnRDb250YWluZXI6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCit7CisgICAgUmVuZGVyQm94Ojp1
cGRhdGVMb2dpY2FsV2lkdGgoKTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQo
KS0+c2hhZG93SG9zdCgpLT5yZW5kZXJlcigpOyBpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSkK
KyAgICAgICAgc2V0TG9naWNhbFdpZHRoKGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIp
LmxvZ2ljYWxXaWR0aCgpKTsKK30KKworUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMgUmVuZGVySW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ap
IGNvbnN0Cit7CisgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCk7CisgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCktPnJlbmRlcmVyKCk7IGlzPFJlbmRlcklt
YWdlPihyZW5kZXJlcikpCisgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gZG93bmNh
c3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikubG9naWNhbEhlaWdodCgpOworICAgIHJldHVybiBj
b21wdXRlZFZhbHVlczsKK30KKworUmVmPEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI+
IEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCit7CisgICAgYXV0byBjb250YWluZXIgPSBhZG9wdFJlZigqbmV3IEltYWdlRXh0cmFjdGlv
bkNvbnRlbnRDb250YWluZXIoZG9jdW1lbnQpKTsKKyAgICBjb250YWluZXItPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVSZWxhdGl2ZSk7CisgICAg
Y29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3csIENT
U1ZhbHVlSGlkZGVuKTsKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCitJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyOjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBk
b2N1bWVudCkKK3sKK30KKworUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlRXh0cmFjdGlv
bkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOworfQorCitJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjp+SW1hZ2VF
eHRyYWN0aW9uQ29udGVudENvbnRhaW5lcigpID0gZGVmYXVsdDsKKwordm9pZCBJbWFnZUV4dHJh
Y3Rpb25Db250ZW50Q29udGFpbmVyOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KElt
YWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBWZWN0b3I8UmVmPEhUTUxEaXZF
bGVtZW50Pj4gdGV4dENvbnRhaW5lcnM7CisgICAgdGV4dENvbnRhaW5lcnMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZXN1bHQudGV4dERhdGEuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEg
OiByZXN1bHQudGV4dERhdGEpCisgICAgICAgIHRleHRDb250YWluZXJzLmFwcGVuZChjcmVhdGVB
bmRBcHBlbmRUZXh0Q29udGFpbmVyKGRhdGEpKTsKKworICAgIEludFNpemUgY29udGFpbmVyU2l6
ZSB7IG9mZnNldFdpZHRoKCksIG9mZnNldEhlaWdodCgpIH07CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB0ZXh0Q29udGFpbmVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiBjb250
YWluZXIgPSB0ZXh0Q29udGFpbmVyc1tpXTsKKyAgICAgICAgSW50UmVjdCBjdXJyZW50UmVjdCB7
IGNvbnRhaW5lci0+b2Zmc2V0TGVmdCgpLCBjb250YWluZXItPm9mZnNldFRvcCgpLCBjb250YWlu
ZXItPm9mZnNldFdpZHRoKCksIGNvbnRhaW5lci0+b2Zmc2V0SGVpZ2h0KCkgfTsKKyAgICAgICAg
aWYgKGN1cnJlbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGF1dG8gdGFyZ2V0UmVjdCA9IHJlc3VsdC50ZXh0RGF0YVtpXS5ub3JtYWxpemVkUXVhZC5i
b3VuZGluZ0JveCgpOworICAgICAgICB0YXJnZXRSZWN0LnNjYWxlKGNvbnRhaW5lclNpemUpOwor
CisgICAgICAgIEludFBvaW50IHRyYW5zbGF0aW9uT2Zmc2V0IHsKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludD4oKHRhcmdldFJlY3Qud2lkdGgoKSAtIGN1cnJlbnRSZWN0LndpZHRoKCkpIC8g
MiArICh0YXJnZXRSZWN0LngoKSAtIGN1cnJlbnRSZWN0LngoKSkpLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PigodGFyZ2V0UmVjdC5oZWlnaHQoKSAtIGN1cnJlbnRSZWN0LmhlaWdodCgp
KSAvIDIgKyAodGFyZ2V0UmVjdC55KCkgLSBjdXJyZW50UmVjdC55KCkpKQorICAgICAgICB9Owor
CisgICAgICAgIGNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRy
YW5zZm9ybSwgbWFrZVN0cmluZygKKyAgICAgICAgICAgICJ0cmFuc2xhdGUoIl9zLCB0cmFuc2xh
dGlvbk9mZnNldC54KCksICJweCwgIl9zLCB0cmFuc2xhdGlvbk9mZnNldC55KCksICJweCkgIl9z
CisgICAgICAgICAgICAic2NhbGUoIl9zLCB0YXJnZXRSZWN0LndpZHRoKCkgLyBjdXJyZW50UmVj
dC53aWR0aCgpLCAiLCAiX3MsIHRhcmdldFJlY3QuaGVpZ2h0KCkgLyBjdXJyZW50UmVjdC5oZWln
aHQoKSwgIikiX3MKKyAgICAgICAgKSk7CisgICAgfQorCisgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1
bGVDdXJzb3JVcGRhdGUoKTsKK30KKworUmVmPEhUTUxEaXZFbGVtZW50PiBJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyOjpjcmVhdGVBbmRBcHBlbmRUZXh0Q29udGFpbmVyKGNvbnN0IElt
YWdlRXh0cmFjdGlvblRleHREYXRhJiBkYXRhKQoreworICAgIGF1dG8gdGV4dENvbnRhaW5lciA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgdGV4dENvbnRhaW5lci0+
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29s
dXRlKTsKKyAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5T3ZlcmZsb3csIENTU1ZhbHVlSGlkZGVuKTsKKyAgICB0ZXh0Q29udGFpbmVyLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIENTU1ZhbHVlVHJhbnNwYXJlbnQpOwor
CisgICAgdGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgQ1NTVmFsdWVDZW50ZXIpOworICAgIHRleHRDb250YWluZXItPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZU5vd3JhcCk7CisgICAg
dGV4dENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWln
aHQsIDEwMCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKKworICAgIHRleHRDb250YWlu
ZXItPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkYXRhLnRleHQpKTsKKyAg
ICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQoKSkpOworICAgIGFwcGVuZENoaWxkKHRleHRDb250YWluZXIpOworCisgICAgcmV0dXJuIHRl
eHRDb250YWluZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9FWFRSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVjMzQ5NWJlZGU0YzlhNjRhMTcwYjcxNGZkZjRlZmFmMTQ4MWY4YjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgSFRNTERp
dkVsZW1lbnQ7CitzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Oworc3RydWN0IEltYWdlRXh0
cmFjdGlvblRleHREYXRhOworCitjbGFzcyBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVy
IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIpOworcHVibGljOgorICAgIHZpcnR1YWwgfklt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIoKTsKKworICAgIHN0YXRpYyBSZWY8SW1hZ2VF
eHRyYWN0aW9uQ29udGVudENvbnRhaW5lcj4gY3JlYXRlKERvY3VtZW50Jik7CisgICAgdm9pZCB1
cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmKTsK
KworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWlu
ZXIoRG9jdW1lbnQmKTsKKworcHJpdmF0ZToKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOworICAgIGJvb2wgaXNJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUmVmPEhUTUxEaXZFbGVtZW50
PiBjcmVhdGVBbmRBcHBlbmRUZXh0Q29udGFpbmVyKGNvbnN0IEltYWdlRXh0cmFjdGlvblRleHRE
YXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcikKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5pc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIoKTsgfQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBp
czxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8V2ViQ29yZTo6RWxl
bWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCmluZGV4IDI5OTNkZTkwNTA2N2IyYTQxOTE2M2JlODNiODEwYThlMGQyZTMzOWYu
LjI5NjllMjFhMDQ4ZjA4ZTQ0OGI5ZDZjZWE4MTcwMGFlNTU1YzA0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTM4LDYgKzEzOCw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29uc3Qg
ZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVu
dCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHls
ZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxl
SW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorI2lmIEVOQUJMRShJ
TUFHRV9FWFRSQUNUSU9OKQorICAgICwgbV9oYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50KGVsZW1l
bnQuaGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCgpKQorI2VuZGlmCiAgICAgLCBtX2ltYWdlRGV2
aWNlUGl4ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4
dCgpOwpAQCAtNzg4LDE3ICs3OTEsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4
dCgpCiAKIGJvb2wgUmVuZGVySW1hZ2U6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiB7Ci0jaWYg
IUVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAg
cmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHM7Ci0jZW5kaWYKKyAgICByZXR1cm4gaGFzU2hhZG93
Q29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogewotICAgIC8vIFJl
Y29tcHV0aW5nIG92ZXJmbG93IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBjaGlsZCBjb250ZW50IGlz
IHByZXNlbnQuIAotICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgp
ICYmICFtX2hhc1NoYWRvd0NvbnRyb2xzKSB7CisgICAgLy8gUmVjb21wdXRpbmcgb3ZlcmZsb3cg
aXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNvbnRlbnQgaXMgcHJlc2VudC4KKyAgICBpZiAo
bmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHkoKSAmJiAhaGFzU2hhZG93Q29udGVu
dCgpKSB7CiAgICAgICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTgxMCw0NSArODA5LDQ1IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAKICAg
ICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKLSAgICBpZiAobV9oYXNTaGFkb3dDb250cm9s
cykKLSAgICAgICAgbGF5b3V0U2hhZG93Q29udHJvbHMob2xkU2l6ZSk7CisgICAgaWYgKGhhc1No
YWRvd0NvbnRlbnQoKSkKKyAgICAgICAgbGF5b3V0U2hhZG93Q29udGVudChvbGRTaXplKTsKIH0K
IAotdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMoY29uc3QgTGF5b3V0U2l6
ZSYgb2xkU2l6ZSkKK3ZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQoY29uc3Qg
TGF5b3V0U2l6ZSYgb2xkU2l6ZSkKIHsKLSAgICAvLyBXZSBleHBlY3QgYSBzaW5nbGUgY29udGFp
bmluZyBib3ggdW5kZXIgdGhlIFVBIHNoYWRvdyByb290LgotICAgIEFTU0VSVChmaXJzdENoaWxk
KCkgPT0gbGFzdENoaWxkKCkpOworICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBmaXJzdENoaWxk
KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCisgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgIGF1dG8qIGNvbnRyb2xzUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KGZpcnN0
Q2hpbGQoKSk7Ci0gICAgaWYgKCFjb250cm9sc1JlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYm9vbCBjb250cm9sc05lZWRMYXlvdXQgPSBjb250cm9sc1JlbmRlcmVyLT5uZWVk
c0xheW91dCgpOwotICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4gaGFzIGNoYW5nZWQgd2UgYWxz
byBuZWVkIHRvIHJlbGF5b3V0IHRoZSBjb250cm9scyB0byB1cGRhdGUgdGhlIHJlZ2lvbiBib3gg
aW5mby4KLSAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciBvbmNlIHdlIGNvbXB1dGUgcmVn
aW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNlZCwgbm90IG9ubHkgZm9yIFJlbmRlckJsb2Nr
LgotICAgIGNvbnN0IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xv
c2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0gICAgaWYgKGZyYWdtZW50ZWRGbG93ICYmICFjb250cm9s
c05lZWRMYXlvdXQpIHsKLSAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93LT5wYWdlTG9naWNhbFNp
emVDaGFuZ2VkKCkpCi0gICAgICAgICAgICBjb250cm9sc05lZWRMYXlvdXQgPSB0cnVlOwotICAg
IH0KKyAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cik7CisgICAgICAgIGJvb2wgY2hpbGROZWVkTGF5b3V0ID0gcmVuZGVyQm94LT5uZWVkc0xheW91
dCgpOworICAgICAgICAvLyBJZiB0aGUgcmVnaW9uIGNoYWluIGhhcyBjaGFuZ2VkIHdlIGFsc28g
bmVlZCB0byByZWxheW91dCB0aGUgY2hpbGRyZW4gdG8gdXBkYXRlIHRoZSByZWdpb24gYm94IGlu
Zm8uCisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIG9uY2Ugd2UgY29tcHV0ZSBy
ZWdpb24gYm94IGluZm8gZm9yIFJlbmRlclJlcGxhY2VkLCBub3Qgb25seSBmb3IgUmVuZGVyQmxv
Y2suCisgICAgICAgIGNvbnN0IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9
IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CisgICAgICAgIGlmIChmcmFnbWVudGVkRmxvdyAm
JiAhY2hpbGROZWVkTGF5b3V0KSB7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPnBh
Z2VMb2dpY2FsU2l6ZUNoYW5nZWQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZE5lZWRMYXlvdXQg
PSB0cnVlOworICAgICAgICB9CiAKLSAgICBMYXlvdXRTaXplIG5ld1NpemUgPSBjb250ZW50Qm94
UmVjdCgpLnNpemUoKTsKLSAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFjb250cm9sc05l
ZWRMYXlvdXQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgTGF5b3V0U2l6ZSBuZXdTaXplID0g
Y29udGVudEJveFJlY3QoKS5zaXplKCk7CisgICAgICAgIGlmIChuZXdTaXplID09IG9sZFNpemUg
JiYgIWNoaWxkTmVlZExheW91dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgLy8gV2hl
biBjYWxsaW5nIGxheW91dCgpIG9uIGEgY2hpbGQgbm9kZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIg
cHVzaCBhIExheW91dFN0YXRlTWFpbnRhaW50ZXIsIG9yIAotICAgIC8vIGluc3RhbnRpYXRlIExh
eW91dFN0YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyIGlz
IHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LAotICAgIC8vIGFuZCB0aGlzIG1ldGhvZCBtaWdodCBi
ZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2aWRlbyBwbGF5YmFjaywgdXNl
IGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgotICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0
ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVm
bGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CisgICAg
ICAgIC8vIFdoZW4gY2FsbGluZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11
c3QgZWl0aGVyIHB1c2ggYSBMYXlvdXRTdGF0ZU1haW50YWludGVyLCBvcgorICAgICAgICAvLyBp
bnN0YW50aWF0ZSBMYXlvdXRTdGF0ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExheW91dFN0YXRl
TWFpbnRhaW5lciBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCwKKyAgICAgICAgLy8gYW5kIHRo
aXMgbWV0aG9kIG1pZ2h0IGJlIGNhbGxlZCBtYW55IHRpbWVzIHBlciBzZWNvbmQgZHVyaW5nIHZp
ZGVvIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRTdGF0ZU1haW50YWluZXI6CisgICAgICAgIExheW91
dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFz
VHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tz
V3JpdGluZ01vZGUoKSk7CisKKyAgICAgICAgaWYgKHNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxh
eW91dE1ldHJpY3MoKSkgeworICAgICAgICAgICAgcmVuZGVyQm94LT5zZXRMb2NhdGlvbihMYXlv
dXRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIExheW91dFNpemUocGFkZGluZ0xl
ZnQoKSwgcGFkZGluZ1RvcCgpKSk7CisgICAgICAgICAgICByZW5kZXJCb3gtPm11dGFibGVTdHls
ZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICAgICAg
ICAgIHJlbmRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUud2lk
dGgoKSwgRml4ZWQpKTsKKyAgICAgICAgfQogCi0gICAgaWYgKHNoYWRvd0NvbnRyb2xzTmVlZEN1
c3RvbUxheW91dE1ldHJpY3MoKSkgewotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5zZXRMb2Nh
dGlvbihMYXlvdXRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIExheW91dFNpemUo
cGFkZGluZ0xlZnQoKSwgcGFkZGluZ1RvcCgpKSk7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXIt
Pm11dGFibGVTdHlsZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4ZWQp
KTsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVu
Z3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAgcmVuZGVyQm94LT5zZXROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICByZW5kZXJCb3gtPmxheW91dCgpOwogICAg
IH0KIAotICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7
Ci0gICAgY29udHJvbHNSZW5kZXJlci0+bGF5b3V0KCk7CiAgICAgY2xlYXJDaGlsZE5lZWRzTGF5
b3V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggOWQy
NzlhNTcwZDFmNDhkNzI1OGVkOTQzOTAyYmUyOTExODg3NjMxMy4uMzFiODgzNjEyZmY2MzQwNWU0
OWFlODJhZGRhZDQ5ZTc3Y2IwNjMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKQEAgLTcwLDYgKzcwLDkgQEAgcHVibGljOgogICAgIGZsb2F0IGltYWdlRGV2aWNlUGl4
ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvOyB9CiAKICAg
ICB2b2lkIHNldEhhc1NoYWRvd0NvbnRyb2xzKGJvb2wgaGFzU2hhZG93Q29udHJvbHMpIHsgbV9o
YXNTaGFkb3dDb250cm9scyA9IGhhc1NoYWRvd0NvbnRyb2xzOyB9CisjaWYgRU5BQkxFKElNQUdF
X0VYVFJBQ1RJT04pCisgICAgdm9pZCBzZXRIYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50KCkgeyBt
X2hhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQgPSB0cnVlOyB9CisjZW5kaWYKICAgICAKICAgICBi
b29sIGlzU2hvd2luZ01pc3NpbmdPckltYWdlRXJyb3IoKSBjb25zdDsKICAgICBib29sIGlzU2hv
d2luZ0FsdFRleHQoKSBjb25zdDsKQEAgLTEzMCw3ICsxMzMsMjAgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIHZvaWQgbGF5b3V0U2hhZG93Q29udHJvbHMo
Y29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSk7CisgICAgdm9pZCBsYXlvdXRTaGFkb3dDb250ZW50
KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpOworCisgICAgYm9vbCBoYXNTaGFkb3dDb250ZW50
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2hhc1NoYWRvd0NvbnRyb2xzKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAg
ICAgaWYgKG1faGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQg
PSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdp
ZHRoID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKQEAgLTE0Myw2ICsxNTksOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc0dlbmVyYXRlZENvbnRlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNT
aGFkb3dDb250cm9scyB7IGZhbHNlIH07CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisg
ICAgYm9vbCBtX2hhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQgeyBmYWxzZSB9OworI2VuZGlmCiAg
ICAgZmxvYXQgbV9pbWFnZURldmljZVBpeGVsUmF0aW8geyAxIH07CiAKICAgICBmcmllbmQgY2xh
c3MgUmVuZGVySW1hZ2VTY2FsZU9ic2VydmVyOwo=
</data>
<flag name="review"
          id="437320"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419342</attachid>
            <date>2021-02-04 17:01:00 -0800</date>
            <delta_ts>2021-02-04 22:33:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221236-20210204170059.patch</filename>
            <type>text/plain</type>
            <size>36778</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjODgwZjQzZGY5MzRl
ZWUwY2M1OWNlOTc5YjQzNGFmMDU3ZTkwNy4uMjdiMGJkMTdmY2E4MTdlZWNhMTdjNWY3YzhlZWQ1
NmU5ZjkyNzUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTAyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyIGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3Vw
cG9ydCBmb3IgaW1hZ2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBw
cmV2aW91c2x5IGludHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3
KSB0byByZW5kZXIKKyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFu
ZCBhZGRpdGlvbmFsbHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFj
dGlvbiwgYSBuZXcKKyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
aGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVy
IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbiBlbGVtZW50J3MgVUEgc2hhZG93IHJvb3Qg
aGFzIGEgYEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXJgLgorICAgICAgICBUaGlzIGlz
IGNvbnN1bHRlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYFJlbmRlckltYWdlYCBiZWxvdy4KKwor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3Vs
dCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGltYWdlIGV4dHJh
Y3Rpb24gY29udGVudCBpbiB0aGUgc2hhZG93IHJvb3Qgb2YgYW4gZWxlbWVudCwgZ2l2ZW4KKyAg
ICAgICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGBzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJbWFn
ZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9JbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmNwcDogQWRkZWQuCisKKyAgICAgICAg
UmVpbnRyb2R1Y2UgYEltYWdlQ29udHJvbHNSb290RWxlbWVudGAgYXMgYEltYWdlRXh0cmFjdGlv
bkNvbnRlbnRDb250YWluZXJgOyB0aGlzIHdpbGwgZW5jYXBzdWxhdGUgYWxsCisgICAgICAgIGlt
YWdlLWV4dHJhY3Rpb24tcmVsYXRlZCBVQSBzaGFkb3cgcm9vdCBjb250ZW50LgorCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6SW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUV4dHJhY3Rp
b25Db250ZW50Q29udGFpbmVyOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZUFu
ZEFwcGVuZFRleHRDb250YWluZXIpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8g
Y3JlYXRlIGFuZCBhcHBlbmQgY2hpbGQgYGRpdmAgZWxlbWVudHMgdG8gdGhlIGNvbnRhaW5lciwg
dXNpbmcgYEltYWdlRXh0cmFjdGlvblRleHREYXRhYAorICAgICAgICByZXN1bHRzLgorCisgICAg
ICAgICogaHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oOiBBZGRl
ZC4KKworICAgICAgICBBZGQgdHlwZSB0cmFpdHMgc3VwcG9ydCBmb3IgdGhpcyBzaGFkb3cgRE9N
IGVsZW1lbnQuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9pbWFnZUV4dHJhY3Rpb24uY3NzOiBB
ZGRlZC4KKyAgICAgICAgKC5pbWFnZS1leHRyYWN0aW9uLXRleHQpOgorCisgICAgICAgIEFkZCBh
IG5ldyBVQSBzdHlsZXNoZWV0IGZvciB0aGUgaW1hZ2UgZXh0cmFjdGlvbiBzaGFkb3cgRE9NIHN1
YnRyZWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpjYW5IYXZlQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0
U2hhZG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0U2hh
ZG93Q29udHJvbHMpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBgbGF5b3V0U2hhZG93Q29u
dHJvbHNgIHRvIGBsYXlvdXRTaGFkb3dDb250ZW50YCwgYW5kIGFsbG93IGl0IHRvIHN1cHBvcnQg
Ym90aCB0aGUgInNoYWRvdyBjb250cm9scyIgY2FzZQorICAgICAgICAoaS5lLiBgUmVuZGVyTWVk
aWFgKSBhbmQgdGhlICJpbWFnZSBleHRyYWN0aW9uIGNvbnRlbnQiIGNhc2UuIEFkZGl0b25hbGx5
LCByZW1vdmUgdGhlIGNoZWNrIGZvcgorICAgICAgICBgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9t
TGF5b3V0TWV0cmljcygpYCB3aGVuIHNldHRpbmcgY2hpbGQgcmVuZGVyZXIgd2lkdGgvaGVpZ2h0
LiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGxheWluZyBvdXQgbWVk
aWEgY29udHJvbHMgaW4gYFJlbmRlck1lZGlhYCwgYnV0IHdlJ2xsIG5lZWQgaXQgbm93IGZvciBh
bGwgYFJlbmRlckltYWdlYHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzZXRIYXNJbWFnZUV4dHJhY3Rpb25Db250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpoYXNTaGFkb3dDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaGFkb3dDb250cm9sc05lZWRD
dXN0b21MYXlvdXRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICBTZWUgYFJlbmRl
ckltYWdlOjpsYXlvdXRTaGFkb3dDb250cm9sc2AgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTWVkaWEuaDoKKworICAgICAgICBTZWUgYFJlbmRlckltYWdlOjpsYXlvdXRTaGFk
b3dDb250cm9sc2AgYWJvdmUuCisKKyAgICAgICAgKiBzdHlsZS9Vc2VyQWdlbnRTdHlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VXNlckFnZW50U3R5bGU6OmVuc3VyZURlZmF1bHRT
dHlsZVNoZWV0c0ZvckVsZW1lbnQpOgorCisgICAgICAgIE9ubHkgcGFyc2UgYW5kIGxvYWQgdGhl
IG5ldyBzdHlsZXNoZWV0IGluIHRoZSBjYXNlIHdoZXJlIHdlIGVuY291bnRlciBgSW1hZ2VFeHRy
YWN0aW9uQ29udGVudENvbnRhaW5lcmAuCisKKyAgICAgICAgKiBzdHlsZS9Vc2VyQWdlbnRTdHls
ZS5oOgorCiAyMDIxLTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAg
ICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2duaXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CmluZGV4IGQ3ZWU5NmRjYTdiZGM0M2E0ZWQ2ZWEzMDFkMTA0MDE0MzMwNDAwZTIuLjM1NmYz
YjQwZjIxOWI3NGE1Mzg5N2ZhMjlkMGJjYzk0NWVkNmVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAzOCw2ICsxMDM4LDcgQEAg
JChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICQo
UFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCiAk
KFBST0pFQ1RfRElSKS9odG1sL3BhcnNlci9IVE1MRW50aXR5TmFtZXMuaW4KICQoUFJPSkVDVF9E
SVIpL2h0bWwvcGFyc2VyL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorJChQUk9KRUNUX0RJUikv
aHRtbC9zaGFkb3cvaW1hZ2VFeHRyYWN0aW9uLmNzcwogJChQUk9KRUNUX0RJUikvaHRtbC9zaGFk
b3cvbWV0ZXJFbGVtZW50U2hhZG93LmNzcwogJChQUk9KRUNUX0RJUikvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGFkNzljMDJiOWIyNmYwYzI0YTE0N2Rk
NTAyNmFjZWE0OTBmZjdhMzcuLjBiMjNjZDMyMGE0MTIzNDc1NTUzMTI1MWQ4ODliNjY2MTQ2ODYy
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTUxMSw2ICsxNTExLDcgQEAg
VVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAgICAgJChXZWJDb3JlKS9jc3MvcGx1Z0lucy5j
c3MgXAogICAgICQoV2ViQ29yZSkvY3NzL3F1aXJrcy5jc3MgXAogICAgICQoV2ViQ29yZSkvY3Nz
L3N2Zy5jc3MgXAorICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvaW1hZ2VFeHRyYWN0aW9uLmNz
cyBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jc3MgXAogIwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4OThhOTA3ZDg0Y2ZhYWE0OTViMDI0OTgwYmIz
MTYyYmU4ZDAxYTQ1Li43MDk0OThlMjIyMTFlMjIzZTljMDU5MGUxZmUzMmM5YmFmZTQ3MGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTM5NCw2ICsxMzk0LDcgQEAgaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudHMuY3BwCiBo
dG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9E
YXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmNwcAoraHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0
aW9uQ29udGVudENvbnRhaW5lci5jcHAKIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwCiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjNkY2JmZWQxNzUw
YTNmZjVkNjY4MDNkY2JmYjY1YjIyZmVkZTBjMS4uZjQ2YTI2MzZhZDhkNWQ4MTE3YzE1NTIyYWUy
ZmM1ODcxNjE0NGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTI3Miw2ICs1MjcyLDcgQEAKIAkJRjQ4MjIzMTAxRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRTFFMzg2OUI4MDA2NkZDNzkg
LyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjQ4MjIzMTExRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBGMUUzODY5QjgwMDY2RkM3OSAv
KiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0OEI3RDRG
MjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhCN0Q0RDI1QzIy
RThBMDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oICovOyB9Owog
CQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhCN0Q1MjI1QzM0
MUU2MDA5RTc1REQgLyogSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4RDJBNkMyMTU2MjNCNDAwQzY3NTJC
IC8qIEZvbnRTaGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4RDJBN0UyMTU3MTgy
NjAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJp
YnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNTI4NSw2ICs1Mjg2LDcgQEAKIAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3
MjEzNDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjRENDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0REQ4NjY1
MjVDQzYwQTMwMDU5QkZEQSAvKiBpbWFnZUV4dHJhY3Rpb24uY3NzIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEg
LyogaW1hZ2VFeHRyYWN0aW9uLmNzcyAqLzsgfTsKIAkJRjRFNTdFREMyMTNGM0Y1RjAwNEVBOThF
IC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0
ZUNoYW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGNEU1N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRy
YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3
RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RkIzNEZDMjM1
MEM4NUQwMEYwMDk0QSAvKiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjM0RkEyMzUwQzg1RDAwRjAwOTRBIC8q
IFBhc3RlYm9hcmRDdXN0b21EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE2NjAyLDYgKzE2NjA0LDggQEAKIAkJRjQ4MjIzMTIxRTM4NkUy
NDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9y
eS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGlu
Z0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEI3RDREMjVDMjJFOEEwMDlFNzVERCAvKiBJ
bWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRXh0
cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjQ4QjdENEUyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWlu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEI3RDUyMjVDMzQxRTYwMDlF
NzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VFeHRy
YWN0aW9uUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQTZBMjE1
NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTaGFkb3cu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDJBNzEyMTU2REMwQTAwQzY3NTJC
IC8qIEZvbnRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjYxOSw2ICsxNjYyMyw3IEBACiAJCUY0RDQz
RDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1h
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0
VHlwZUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRERDg2NjIyNUNDNjA4NDAwNTlC
RkRBIC8qIGltYWdlRXh0cmFjdGlvbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGltYWdlRXh0cmFjdGlvbi5jc3M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjVBMjFGMjM5NTAwMDI4NTA3OCAv
KiBKU1VuZG9JdGVtQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVW5kb0l0ZW1DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEUxOTY1RjIxRjI2RTRFMDAyODUwNzggLyogVW5kb0l0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVW5kb0l0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEUxOTY2MTIx
RjI3RDNDMDAyODUwNzggLyogQ3VzdG9tVW5kb1N0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tVW5kb1N0ZXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5MzM3LDYgKzE5MzQyLDkgQEAKIAkJCQlFNUYwNkFFRDI0RDRBNjM3MDBCQkM0RjggLyog
RGF0ZVRpbWVTeW1ib2xpY0ZpZWxkRWxlbWVudC5oICovLAogCQkJCUE3QzlBQkY2MTM1N0EzQkYw
MEY1NTAzRiAvKiBEZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgKi8sCiAJCQkJQTdDOUFCRjcxMzU3
QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmggKi8sCisJCQkJRjRERDg2NjIy
NUNDNjA4NDAwNTlCRkRBIC8qIGltYWdlRXh0cmFjdGlvbi5jc3MgKi8sCisJCQkJRjQ4QjdENEUy
NUMyMkU4QTAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuY3BwICov
LAorCQkJCUY0OEI3RDREMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25Db250ZW50
Q29udGFpbmVyLmggKi8sCiAJCQkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwICovLAogCQkJCTQxNzI1M0E5MTM1NEJC
QkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmggKi8s
CiAJCQkJRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1ldGVyRWxlbWVudFNoYWRvdy5jc3Mg
Ki8sCkBAIC0zMjUyOCw2ICszMjUzNiw3IEBACiAJCQkJQ0QxOUZFQUUxRjU3NEI2RDAwMEM0MkZC
IC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1NUI4N0VEMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcy
MDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY0OEI3RDRGMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhCN0Q1MzI1QzM0MUU2MDA5RTc1REQgLyog
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTc2QTU2NTFEODhB
NzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQzIx
MjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1
Njk5LDYgKzM1NzA4LDcgQEAKIAkJCQkyRDUwQTRCODFDRTEwRTAwMDAxOTgwNDkgLyogQXR0YWNo
bWVudFBsYWNlaG9sZGVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTFBQTlBQjkxRDIz
OTExNTAwRkVBREIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sIGluIFJlc291cmNl
cyAqLywKIAkJCQlBMTFFOEMwNTFCMUUyOEY0MDAwM0E3QzcgLyogY29weUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAorCQkJCUY0REQ4NjY1MjVDQzYwQTMwMDU5QkZEQSAvKiBpbWFnZUV4dHJh
Y3Rpb24uY3NzIGluIFJlc291cmNlcyAqLywKIAkJCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcg
LyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovLAogCQkJCUU1OURENEI4MjEwOTgyODcw
MDNDOEI0NyAvKiBMaXN0QnV0dG9uQXJyb3cucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlFNTE2
Njk5MTIwRkY5OTE4MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNTdiZjZkZTk0ZmI0OWI5N2Y0OWNlMzcw
OWEyY2EwNzVhYjY0Yzg5OC4uMGU2ZTEzMzlmNDYzZThhNzY4NGQ4ZTZhZWM1NzU2Mjg3YTZhNWNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIlBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiUXVpcmtzLmgiCiAjaW5j
bHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCkBAIC0xMzEsNiArMTMyLDExIEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorI2luY2x1ZGUgIkltYWdl
RXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuaCIKKyNpbmNsdWRlICJJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChFbGVtZW50KTsKQEAgLTQ1NjIsNCArNDU2OCwzOSBAQCB2b2lkIEVsZW1l
bnQ6OnNldEF0dHJpYnV0ZVN0eWxlTWFwKFJlZjxTdHlsZVByb3BlcnR5TWFwPiYmIG1hcCkKIAog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworYm9vbCBFbGVtZW50Ojpo
YXNJbWFnZUV4dHJhY3Rpb25Db250ZW50KCkgY29uc3QKK3sKKyAgICBhdXRvIHNoYWRvd1Jvb3Qg
PSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKExJS0VMWSghc2hhZG93Um9vdCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byBjaGlsZCA9IHNoYWRvd1Jvb3Qt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKGlzPEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI+KGNoaWxkKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBFbGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFj
dGlvblJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkg
eworICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikuc2V0SGFz
SW1hZ2VFeHRyYWN0aW9uQ29udGVudCgpOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmVyID0g
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAg
IGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChjb250YWluZXIpOworICAg
IGNvbnRhaW5lci0+dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3Vs
dCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGVjYmI1ZmQwMmQ0NGMyNDQ1YzYx
Y2ZkNzc4N2U0OGJhNzUyODhlN2EuLmVhOTZmYWEwNGUyMTgzOGRlZGJkNjVjMWI2MTA5ZDI4Mjg1
MmZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjcsNiArNjcsMTAgQEAgc3RydWN0IEtleWZy
YW1lQW5pbWF0aW9uT3B0aW9uczsKIHN0cnVjdCBTY3JvbGxJbnRvVmlld09wdGlvbnM7CiBzdHJ1
Y3QgU2Nyb2xsVG9PcHRpb25zOwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1
Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OworI2VuZGlmCisKIGVudW0gY2xhc3MgRXZlbnRQcm9j
ZXNzaW5nIDogdWludDhfdDsKIAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCkBA
IC02MTksNiArNjIzLDExIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhhc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnQoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0JiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCA1MDllMGViNmUzNmVlYzViOGU3NTNmNjNmMGIxMGM2YmRiODYzMGRlLi45
ZjViOTgyMDBkM2I5NzcwNTE0MmViZmM2NzNjMzRlMzdmYzI3MTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTIwNiw2ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NoYXJhY3RlckRhdGFOb2RlKCkg
Y29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzQ2hhcmFjdGVyRGF0YSk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGx1Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgdmlydHVhbCBib29s
IGlzSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisjZW5kaWYKIAogICAgIGJvb2wgaXNEb2N1bWVudE5vZGUoKSBjb25zdCB7IHJldHVybiBo
YXNOb2RlRmxhZyhOb2RlRmxhZzo6SXNEb2N1bWVudE5vZGUpOyB9CiAgICAgYm9vbCBpc1RyZWVT
Y29wZSgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50Tm9k
ZSkgfHwgaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzU2hhZG93Um9vdCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVu
dENvbnRhaW5lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkxZDIzMzk3MWM5MWFlMDJjZTQ3YjIzNWJkNmYw
ZmYwMTQwODZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRXh0cmFjdGlv
bkNvbnRlbnRDb250YWluZXIuaCIKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCisj
aW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5j
bHVkZSAiSFRNTEJSRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkltYWdlRXh0cmFjdGlvblJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIpOworCitSZWY8SW1hZ2VFeHRyYWN0aW9uQ29u
dGVudENvbnRhaW5lcj4gSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXJDbGFzcygi
aW1hZ2UtZXh0cmFjdGlvbi1jb250ZW50LWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKworICAgIGF1dG8gY29udGFpbmVyID0gYWRvcHRSZWYoKm5ldyBJbWFn
ZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKGRvY3VtZW50KSk7CisgICAgY29udGFpbmVyLT5j
bGFzc0xpc3QoKS5hZGQoaW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lckNsYXNzKTsKKyAg
ICByZXR1cm4gY29udGFpbmVyOworfQorCitJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVy
OjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKK3sKK30KKwor
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcjo6fkltYWdlRXh0cmFjdGlvbkNvbnRlbnRD
b250YWluZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRh
aW5lcjo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1
bHQmJiByZXN1bHQpCit7CisgICAgSW50U2l6ZSBjb250YWluZXJTaXplIHsgb2Zmc2V0V2lkdGgo
KSwgb2Zmc2V0SGVpZ2h0KCkgfTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiByZXN1bHQudGV4dERh
dGEpIHsKKyAgICAgICAgYXV0byBjaGlsZENvbnRhaW5lciA9IGNyZWF0ZUFuZEFwcGVuZFRleHRD
b250YWluZXIoZGF0YSk7CisKKyAgICAgICAgSW50U2l6ZSBvcmlnaW5hbFNpemUgeyBjaGlsZENv
bnRhaW5lci0+b2Zmc2V0V2lkdGgoKSwgY2hpbGRDb250YWluZXItPm9mZnNldEhlaWdodCgpIH07
CisgICAgICAgIGlmIChvcmlnaW5hbFNpemUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgYXV0byB0YXJnZXRSZWN0ID0gZGF0YS5ub3JtYWxpemVkUXVhZC5ib3Vu
ZGluZ0JveCgpOworICAgICAgICB0YXJnZXRSZWN0LnNjYWxlKGNvbnRhaW5lclNpemUpOworCisg
ICAgICAgIEludFBvaW50IHRyYW5zbGF0aW9uT2Zmc2V0IHsKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4odGFyZ2V0UmVjdC54KCkgKyAodGFyZ2V0UmVjdC53aWR0aCgpIC0gb3JpZ2luYWxT
aXplLndpZHRoKCkpIC8gMiksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldFJl
Y3QueSgpICsgKHRhcmdldFJlY3QuaGVpZ2h0KCkgLSBvcmlnaW5hbFNpemUuaGVpZ2h0KCkpIC8g
MikKKyAgICAgICAgfTsKKworICAgICAgICBjaGlsZENvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgbWFrZVN0cmluZygKKyAgICAgICAgICAgICJ0
cmFuc2xhdGUoIl9zLCB0cmFuc2xhdGlvbk9mZnNldC54KCksICJweCwgIl9zLCB0cmFuc2xhdGlv
bk9mZnNldC55KCksICJweCkgIl9zCisgICAgICAgICAgICAic2NhbGUoIl9zLCB0YXJnZXRSZWN0
LndpZHRoKCkgLyBvcmlnaW5hbFNpemUud2lkdGgoKSwgIiwgIl9zLCB0YXJnZXRSZWN0LmhlaWdo
dCgpIC8gb3JpZ2luYWxTaXplLmhlaWdodCgpLCAiKSJfcworICAgICAgICApKTsKKyAgICB9CisK
KyAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgpOworfQorCitSZWY8SFRNTERp
dkVsZW1lbnQ+IEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXI6OmNyZWF0ZUFuZEFwcGVu
ZFRleHRDb250YWluZXIoY29uc3QgSW1hZ2VFeHRyYWN0aW9uVGV4dERhdGEmIGRhdGEpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbWFn
ZUV4dHJhY3Rpb25UZXh0Q2xhc3MoImltYWdlLWV4dHJhY3Rpb24tdGV4dCIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAgIGF1dG8gdGV4dENvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgdGV4dENvbnRhaW5lci0+Y2xhc3NM
aXN0KCkuYWRkKGltYWdlRXh0cmFjdGlvblRleHRDbGFzcyk7CisgICAgdGV4dENvbnRhaW5lci0+
YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRhdGEudGV4dCkpOworICAgIHRl
eHRDb250YWluZXItPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgp
KSk7CisgICAgYXBwZW5kQ2hpbGQodGV4dENvbnRhaW5lcik7CisgICAgcmV0dXJuIHRleHRDb250
YWluZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TUFHRV9FWFRSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNDUz
MDFhODYwNWE2Yjc5Yzg1ZDRjMzZlNzk3MGFjMDNhYjI4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVy
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50Oworc3RydWN0IEltYWdlRXh0cmFj
dGlvblJlc3VsdDsKK3N0cnVjdCBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YTsKKworY2xhc3MgSW1h
Z2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVu
dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbWFnZUV4dHJhY3Rpb25Db250ZW50Q29u
dGFpbmVyKCk7CisKKyAgICBzdGF0aWMgUmVmPEltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWlu
ZXI+IGNyZWF0ZShEb2N1bWVudCYpOworICAgIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFjdGlv
blJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJik7CisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKERvY3VtZW50Jik7CisKK3ByaXZh
dGU6CisgICAgYm9vbCBpc0ltYWdlRXh0cmFjdGlvbkNvbnRlbnRDb250YWluZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IGNyZWF0
ZUFuZEFwcGVuZFRleHRDb250YWluZXIoY29uc3QgSW1hZ2VFeHRyYWN0aW9uVGV4dERhdGEmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpJbWFnZUV4dHJhY3Rpb25Db250ZW50Q29udGFpbmVyKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBl
bGVtZW50LmlzSW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5lcigpOyB9CisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIGlzPFdlYkNv
cmU6OkVsZW1lbnQ+KG5vZGUpICYmIGlzVHlwZShkb3duY2FzdDxXZWJDb3JlOjpFbGVtZW50Pihu
b2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIEVOQUJM
RShJTUFHRV9FWFRSQUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvaW1hZ2VFeHRyYWN0aW9uLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdl
RXh0cmFjdGlvbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY5YmE3ZDE0ZmU4NTAxZDJmZjNhZmU2YmU0MzNk
MDRmMGQ2MGI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L2ltYWdlRXh0cmFjdGlvbi5jc3MKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIGRlZmluZWQoRU5BQkxFX0lNQUdFX0VYVFJBQ1RJT04pICYmIEVO
QUJMRV9JTUFHRV9FWFRSQUNUSU9OCisKKy5pbWFnZS1leHRyYWN0aW9uLWNvbnRlbnQtY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
ICBjb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIHdoaXRl
LXNwYWNlOiBub3dyYXA7CisgICAgbGluZS1oZWlnaHQ6IDEwMCU7Cit9CisKKy5pbWFnZS1leHRy
YWN0aW9uLXRleHQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBvdmVyZmxvdzogaGlk
ZGVuOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CmluZGV4IDI5OTNkZTkwNTA2N2IyYTQxOTE2M2JlODNiODEwYThlMGQyZTMzOWYuLjBjYzJiN2Nm
ZTM3ODc0MTEzNjY2NmVkYThmNGZlZjAwZjhkN2I2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTM4LDYgKzEzOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSksIEludFNpemUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8g
bWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDog
bWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQorICAgICwgbV9oYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50KGVsZW1lbnQuaGFzSW1h
Z2VFeHRyYWN0aW9uQ29udGVudCgpKQorI2VuZGlmCiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxS
YXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAt
Nzg4LDE3ICs3OTEsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4dCgpCiAKIGJv
b2wgUmVuZGVySW1hZ2U6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiB7Ci0jaWYgIUVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgcmV0dXJuIG1f
aGFzU2hhZG93Q29udHJvbHM7Ci0jZW5kaWYKKyAgICByZXR1cm4gaGFzU2hhZG93Q29udGVudCgp
OwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogewotICAgIC8vIFJlY29tcHV0aW5n
IG92ZXJmbG93IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBjaGlsZCBjb250ZW50IGlzIHByZXNlbnQu
IAotICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgpICYmICFtX2hh
c1NoYWRvd0NvbnRyb2xzKSB7CisgICAgLy8gUmVjb21wdXRpbmcgb3ZlcmZsb3cgaXMgcmVxdWly
ZWQgb25seSB3aGVuIGNoaWxkIGNvbnRlbnQgaXMgcHJlc2VudC4KKyAgICBpZiAobmVlZHNTaW1w
bGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHkoKSAmJiAhaGFzU2hhZG93Q29udGVudCgpKSB7CiAg
ICAgICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgx
MCw0NSArODA5LDQxIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAKICAgICB1cGRhdGVJ
bm5lckNvbnRlbnRSZWN0KCk7CiAKLSAgICBpZiAobV9oYXNTaGFkb3dDb250cm9scykKLSAgICAg
ICAgbGF5b3V0U2hhZG93Q29udHJvbHMob2xkU2l6ZSk7CisgICAgaWYgKGhhc1NoYWRvd0NvbnRl
bnQoKSkKKyAgICAgICAgbGF5b3V0U2hhZG93Q29udGVudChvbGRTaXplKTsKIH0KIAotdm9pZCBS
ZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMoY29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6
ZSkKK3ZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQoY29uc3QgTGF5b3V0U2l6
ZSYgb2xkU2l6ZSkKIHsKLSAgICAvLyBXZSBleHBlY3QgYSBzaW5nbGUgY29udGFpbmluZyBib3gg
dW5kZXIgdGhlIFVBIHNoYWRvdyByb290LgotICAgIEFTU0VSVChmaXJzdENoaWxkKCkgPT0gbGFz
dENoaWxkKCkpOwotCi0gICAgYXV0byogY29udHJvbHNSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRl
ckJveD4oZmlyc3RDaGlsZCgpKTsKLSAgICBpZiAoIWNvbnRyb2xzUmVuZGVyZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBib29sIGNvbnRyb2xzTmVlZExheW91dCA9IGNvbnRyb2xzUmVu
ZGVyZXItPm5lZWRzTGF5b3V0KCk7Ci0gICAgLy8gSWYgdGhlIHJlZ2lvbiBjaGFpbiBoYXMgY2hh
bmdlZCB3ZSBhbHNvIG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNvbnRyb2xzIHRvIHVwZGF0ZSB0aGUg
cmVnaW9uIGJveCBpbmZvLgotICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIG9uY2Ugd2Ug
Y29tcHV0ZSByZWdpb24gYm94IGluZm8gZm9yIFJlbmRlclJlcGxhY2VkLCBub3Qgb25seSBmb3Ig
UmVuZGVyQmxvY2suCi0gICAgY29uc3QgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRG
bG93ID0gZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKLSAgICBpZiAoZnJhZ21lbnRlZEZsb3cg
JiYgIWNvbnRyb2xzTmVlZExheW91dCkgewotICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPnBh
Z2VMb2dpY2FsU2l6ZUNoYW5nZWQoKSkKLSAgICAgICAgICAgIGNvbnRyb2xzTmVlZExheW91dCA9
IHRydWU7Ci0gICAgfQorICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJl
bmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlm
ICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
IExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwotICAgIGlmIChu
ZXdTaXplID09IG9sZFNpemUgJiYgIWNvbnRyb2xzTmVlZExheW91dCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gV2hlbiBjYWxsaW5nIGxheW91dCgpIG9uIGEgY2hpbGQgbm9kZSwgYSBwYXJl
bnQgbXVzdCBlaXRoZXIgcHVzaCBhIExheW91dFN0YXRlTWFpbnRhaW50ZXIsIG9yIAotICAgIC8v
IGluc3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3Rh
dGVNYWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LAotICAgIC8vIGFuZCB0aGlz
IG1ldGhvZCBtaWdodCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2aWRl
byBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgotICAgIExheW91dFN0YXRl
TWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNm
b3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoKSk7CisgICAgICAgIGF1dG8qIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
cmVuZGVyZXIpOworICAgICAgICBib29sIGNoaWxkTmVlZHNMYXlvdXQgPSByZW5kZXJCb3gtPm5l
ZWRzTGF5b3V0KCk7CisgICAgICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4gaGFzIGNoYW5nZWQg
d2UgYWxzbyBuZWVkIHRvIHJlbGF5b3V0IHRoZSBjaGlsZHJlbiB0byB1cGRhdGUgdGhlIHJlZ2lv
biBib3ggaW5mby4KKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgb25jZSB3ZSBj
b21wdXRlIHJlZ2lvbiBib3ggaW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQsIG5vdCBvbmx5IGZvciBS
ZW5kZXJCbG9jay4KKyAgICAgICAgYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFn
bWVudGVkRmxvdygpOworICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgIWNoaWxkTmVlZHNM
YXlvdXQpIHsKKyAgICAgICAgICAgIGlmIChmcmFnbWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxTaXpl
Q2hhbmdlZCgpKQorICAgICAgICAgICAgICAgIGNoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOworICAg
ICAgICB9CiAKLSAgICBpZiAoc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygp
KSB7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldExvY2F0aW9uKExheW91dFBvaW50KGJv
cmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRk
aW5nVG9wKCkpKTsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0
SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAgICBjb250cm9s
c1JlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgp
LCBGaXhlZCkpOworICAgICAgICBhdXRvIG5ld1NpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUo
KTsKKyAgICAgICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSAmJiAhY2hpbGROZWVkc0xheW91dCkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBsYXlvdXQo
KSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11c3QgZWl0aGVyIHB1c2ggYSBMYXlvdXRTdGF0
ZU1haW50YWluZXIsIG9yCisgICAgICAgIC8vIGluc3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJs
ZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUg
ZWZmaWNpZW50LAorICAgICAgICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIG1h
bnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVzZSBhIExheW91dFN0
YXRlTWFpbnRhaW5lcjoKKyAgICAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVy
KCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9u
KCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgcmVu
ZGVyQm94LT5zZXRMb2NhdGlvbihMYXlvdXRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgp
KSArIExheW91dFNpemUocGFkZGluZ0xlZnQoKSwgcGFkZGluZ1RvcCgpKSk7CisgICAgICAgIHJl
bmRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgp
LCBGaXhlZCkpOworICAgICAgICByZW5kZXJCb3gtPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExl
bmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC0+c2V0TmVl
ZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAgICAgcmVuZGVyQm94LT5sYXlvdXQoKTsKICAg
ICB9CiAKLSAgICBjb250cm9sc1JlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OwotICAgIGNvbnRyb2xzUmVuZGVyZXItPmxheW91dCgpOwogICAgIGNsZWFyQ2hpbGROZWVkc0xh
eW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDlk
Mjc5YTU3MGQxZjQ4ZDcyNThlZDk0MzkwMmJlMjkxMTg4NzYzMTMuLjhhYjE4ODExYzQ1NGJhODQ2
MjFlOTc1YjcyMDJjZmI4MDE3MjIzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCkBAIC03MCw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBpbWFnZURldmljZVBp
eGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbzsgfQogCiAg
ICAgdm9pZCBzZXRIYXNTaGFkb3dDb250cm9scyhib29sIGhhc1NoYWRvd0NvbnRyb2xzKSB7IG1f
aGFzU2hhZG93Q29udHJvbHMgPSBoYXNTaGFkb3dDb250cm9sczsgfQorI2lmIEVOQUJMRShJTUFH
RV9FWFRSQUNUSU9OKQorICAgIHZvaWQgc2V0SGFzSW1hZ2VFeHRyYWN0aW9uQ29udGVudCgpIHsg
bV9oYXNJbWFnZUV4dHJhY3Rpb25Db250ZW50ID0gdHJ1ZTsgfQorI2VuZGlmCiAgICAgCiAgICAg
Ym9vbCBpc1Nob3dpbmdNaXNzaW5nT3JJbWFnZUVycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1No
b3dpbmdBbHRUZXh0KCkgY29uc3Q7CkBAIC0xMjAsOCArMTIzLDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94
KikgY29uc3QgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3Vz
dG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBJbnRTaXpl
IGltYWdlU2l6ZUZvckVycm9yKENhY2hlZEltYWdlKikgY29uc3Q7CiAgICAgdm9pZCByZXBhaW50
T3JNYXJrRm9yTGF5b3V0KEltYWdlU2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVs
bHB0cik7CiAgICAgdm9pZCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0
U2l6ZSYpOwpAQCAtMTMwLDcgKzEzMSwyMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludEFy
ZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCk7CiAgICAgCi0gICAgdm9pZCBsYXlvdXRTaGFkb3dDb250cm9scyhjb25zdCBMYXlvdXRT
aXplJiBvbGRTaXplKTsKKyAgICB2b2lkIGxheW91dFNoYWRvd0NvbnRlbnQoY29uc3QgTGF5b3V0
U2l6ZSYgb2xkU2l6ZSk7CisKKyAgICBib29sIGhhc1NoYWRvd0NvbnRlbnQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKG1faGFzU2hhZG93Q29udHJvbHMpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgICAgICBpZiAobV9oYXNJ
bWFnZUV4dHJhY3Rpb25Db250ZW50KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1
YWwpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51
bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQzLDYgKzE1Nyw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lz
R2VuZXJhdGVkQ29udGVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1NoYWRvd0NvbnRyb2xz
IHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBib29sIG1faGFz
SW1hZ2VFeHRyYWN0aW9uQ29udGVudCB7IGZhbHNlIH07CisjZW5kaWYKICAgICBmbG9hdCBtX2lt
YWdlRGV2aWNlUGl4ZWxSYXRpbyB7IDEgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFn
ZVNjYWxlT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4
IDY2ZTA2NDI3YzE1ODAzM2JhZTRlNzZhMTY5MjgxYzBjNDNlNDRiYzEuLjEwMWRkMDQ3MDI3ZTI3
NzE5OWU1YzMyNmY0YzcyMGQ3ODdiNmYwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYS5oCkBAIC01Niw3ICs1Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ltYWdlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2hhZG93
Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Vz
ZXJBZ2VudFN0eWxlLmNwcAppbmRleCBlYTY4NjgwNzE5NThkNGYwNDEzODU2ZGRhMTNkODZjNWQz
YWNlNjBhLi4yODkwZTlhYzI4YzNkOWFjZDdiZGZkNTJlOWQ5NzA4ZjNjNmE2MzFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdlbnRTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvVXNlckFnZW50U3R5bGUuY3BwCkBAIC01Nyw2ICs1NywxMCBAQAogI2lu
Y2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyNpbmNsdWRlICJJbWFnZUV4
dHJhY3Rpb25Db250ZW50Q29udGFpbmVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIFN0eWxlIHsKIApAQCAtODUsNiArODksOSBAQCBTdHlsZVNoZWV0Q29udGVu
dHMqIFVzZXJBZ2VudFN0eWxlOjpjb2xvcklucHV0U3R5bGVTaGVldDsKICNpZiBFTkFCTEUoSU9T
X0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQogU3R5bGVTaGVldENvbnRlbnRzKiBVc2VyQWdlbnRTdHls
ZTo6Zm9ybUNvbnRyb2xzSU9TU3R5bGVTaGVldDsKICNlbmRpZgorI2lmIEVOQUJMRShJTUFHRV9F
WFRSQUNUSU9OKQorU3R5bGVTaGVldENvbnRlbnRzKiBVc2VyQWdlbnRTdHlsZTo6aW1hZ2VFeHRy
YWN0aW9uU3R5bGVTaGVldDsKKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1
YXRvciYgc2NyZWVuRXZhbCgpCiB7CkBAIC0xODUsNiArMTkyLDEyIEBAIHZvaWQgVXNlckFnZW50
U3R5bGU6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShWSURF
TykKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAgICAgZWxzZSBpZiAoIWltYWdl
RXh0cmFjdGlvblN0eWxlU2hlZXQgJiYgaXM8SW1hZ2VFeHRyYWN0aW9uQ29udGVudENvbnRhaW5l
cj4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGltYWdlRXh0cmFjdGlvblN0eWxlU2hlZXQgPSBw
YXJzZVVBU2hlZXQoaW1hZ2VFeHRyYWN0aW9uVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGlt
YWdlRXh0cmFjdGlvblVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICAgICAgICAgIGFkZFRvRGVm
YXVsdFN0eWxlKCppbWFnZUV4dHJhY3Rpb25TdHlsZVNoZWV0KTsKKyAgICAgICAgfQorI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgICAgICBlbHNlIGlmICghZGF0YUxpc3RTdHlsZVNoZWV0ICYmIGlzPEhUTUxEYXRhTGlz
dEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBkYXRhTGlzdFN0eWxlU2hlZXQgPSBw
YXJzZVVBU2hlZXQoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLmRhdGFMaXN0U3R5bGVTaGVldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdlbnRTdHlsZS5oCmluZGV4IGU2ZjBhYWE1NGMxZTMw
NjliZjdjNDI2ZmQ3YmEyMDI3MGM2ZWMyZmUuLjMyZDBhYjJlYzM0MDM2ZjUwNDM1MzAwOGIyNWU1
NzJlNTBhOTQxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1VzZXJBZ2VudFN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvVXNlckFnZW50U3R5bGUuaApAQCAtNDks
NiArNDksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3Rh
dGljIFN0eWxlU2hlZXRDb250ZW50cyogZGF0YUxpc3RTdHlsZVNoZWV0OwogI2VuZGlmCisjaWYg
RU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgc3RhdGljIFN0eWxlU2hlZXRDb250ZW50cyog
aW1hZ2VFeHRyYWN0aW9uU3R5bGVTaGVldDsKKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIGNvbG9ySW5wdXRTdHlsZVNo
ZWV0OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419363</attachid>
            <date>2021-02-04 22:33:04 -0800</date>
            <delta_ts>2021-02-04 23:03:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221236-20210204223303.patch</filename>
            <type>text/plain</type>
            <size>36163</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjODgwZjQzZGY5MzRl
ZWUwY2M1OWNlOTc5YjQzNGFmMDU3ZTkwNy4uZGRiNDI0MGRhYzdhZTdhNmQ3NTdjNGMxMGM0NjZm
MWRkNDUyNzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTAyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZU92ZXJsYXlFbGVtZW50IGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3VwcG9ydCBmb3IgaW1h
Z2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBwcmV2aW91c2x5IGlu
dHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3KSB0byByZW5kZXIK
KyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFuZCBhZGRpdGlvbmFs
bHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFjdGlvbiwgYSBuZXcK
KyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlV2l0aElt
YWdlRXh0cmFjdGlvblJlc3VsdCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNJ
bWFnZU92ZXJsYXlFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZU92
ZXJsYXlFbGVtZW50LmNwcDogQWRkZWQuCisKKyAgICAgICAgUmVpbnRyb2R1Y2UgYEltYWdlQ29u
dHJvbHNSb290RWxlbWVudGAgYXMgYEltYWdlT3ZlcmxheUVsZW1lbnRgOyB0aGlzIGVuY2Fwc3Vs
YXRlcyBhbGwgaW1hZ2UtZXh0cmFjdGlvbi1yZWxhdGVkCisgICAgICAgIFVBIHNoYWRvdyByb290
IGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlFbGVtZW50OjpJbWFnZU92ZXJsYXlF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUVsZW1lbnQ6Omhhc0ltYWdl
T3ZlcmxheSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIHRvIGRldGVybWluZSB3aGV0aGVyIG9y
IG5vdCBhbiBlbGVtZW50J3MgVUEgc2hhZG93IHJvb3QgaGFzIGEgYEltYWdlT3ZlcmxheUVsZW1l
bnRgLiBUaGlzIGlzCisgICAgICAgIGNvbnN1bHRlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYFJl
bmRlckltYWdlYC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5RWxlbWVudDo6dXBk
YXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1l
dGhvZCB0byBpbnN0YWxsIGltYWdlIGV4dHJhY3Rpb24gY29udGVudCBpbiB0aGUgc2hhZG93IHJv
b3Qgb2YgYW4gZWxlbWVudCwgZ2l2ZW4KKyAgICAgICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGBz
LgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlFbGVtZW50OjpjcmVhdGVBbmRBcHBl
bmRUZXh0Q29udGFpbmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVt
ZW50Lmg6IEFkZGVkLgorCisgICAgICAgIEFkZCB0eXBlIHRyYWl0cyBzdXBwb3J0IGZvciB0aGlz
IHNoYWRvdyBET00gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3Zlcmxh
eS5jc3M6IEFkZGVkLgorICAgICAgICAoLmltYWdlLW92ZXJsYXkpOgorICAgICAgICAoLmltYWdl
LW92ZXJsYXktdGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IFVBIHN0eWxlc2hlZXQgZm9yIHRo
ZSBpbWFnZSBvdmVybGF5IHNoYWRvdyBET00gc3VidHJlZS4gVGhlIG92ZXJsYXkgY29udGFpbnMg
YSBudW1iZXIgb2YgYWJzb2x1dGVseQorICAgICAgICBwb3NpdG9uZWQgYGRpdmAgZWxlbWVudHMs
IHdoaWNoIGFyZSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgb3ZlcmxheSBlbGVtZW50IHVzaW5nIHVz
aW5nIENTUyB0cmFuc2Zvcm1zLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OmxheW91dFNoYWRvd0NvbnRyb2xzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYGxh
eW91dFNoYWRvd0NvbnRyb2xzYCB0byBgbGF5b3V0U2hhZG93Q29udGVudGAsIGFuZCBhbGxvdyBp
dCB0byBzdXBwb3J0IGJvdGggdGhlICJzaGFkb3cgY29udHJvbHMiIGNhc2UKKyAgICAgICAgKGku
ZS4gYFJlbmRlck1lZGlhYCkgYW5kIHRoZSAiaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IiBjYXNl
LiBBZGRpdG9uYWxseSwgcmVtb3ZlIHRoZSBjaGVjayBmb3IKKyAgICAgICAgYHNoYWRvd0NvbnRy
b2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKWAgd2hlbiBzZXR0aW5nIGNoaWxkIHJlbmRlcmVy
IHdpZHRoL2hlaWdodC4gVGhpcyBpcyBjdXJyZW50bHkgb25seSB1c2VkCisgICAgICAgIGZvciBs
YXlpbmcgb3V0IG1lZGlhIGNvbnRyb2xzIGluIGBSZW5kZXJNZWRpYWAsIGJ1dCB3ZSdsbCBuZWVk
IGl0IG5vdyBmb3IgYWxsIGBSZW5kZXJJbWFnZWBzLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2V0SGFzSW1hZ2VP
dmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpoYXNTaGFkb3dDb250ZW50
IGNvbnN0KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHJldHVybiB3aGV0aGVy
IG9yIG5vdCB0aGUgYFJlbmRlckltYWdlYCBzaG91bGQgZXhwZWN0IHNoYWRvdyByb290IGNvbnRl
bnQuIFRoaXMgaXMgdHJ1ZQorICAgICAgICBmb3IgYm90aCBtZWRpYSBjb250cm9scyAoYG1faGFz
U2hhZG93Q29udHJvbHNgKSBhbmQgZm9yIHRoZSBuZXcgaW1hZ2Ugb3ZlcmxheSBjb250ZW50IChg
bV9oYXNJbWFnZU92ZXJsYXlgKS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNo
YWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgorCisgICAgICAgIFNlZSBgUmVuZGVySW1h
Z2U6OmxheW91dFNoYWRvd0NvbnRyb2xzYCBhYm92ZS4KKworICAgICAgICAqIHN0eWxlL1VzZXJB
Z2VudFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpVc2VyQWdlbnRTdHlsZTo6
ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudCk6CisKKyAgICAgICAgT25seSBwYXJz
ZSBhbmQgbG9hZCB0aGUgbmV3IHN0eWxlc2hlZXQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgZW5jb3Vu
dGVyIGBJbWFnZU92ZXJsYXlFbGVtZW50YC4KKworICAgICAgICAqIHN0eWxlL1VzZXJBZ2VudFN0
eWxlLmg6CisKIDIwMjEtMDItMDMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAog
ICAgICAgICBDcmVhdGUgYSBTcGVlY2hSZWNvZ25pemVyIGZvciBlYWNoIFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKaW5kZXggZDdlZTk2ZGNhN2JkYzQzYTRlZDZlYTMwMWQxMDQwMTQzMzA0MDBlMi4uNDI3
MWMzNzg4ZWYwN2FkNzZlNjM5ZWVmMjEwMjc1YTQ1ZmIyNjJjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDM4LDYgKzEwMzgsNyBA
QCAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmlkbAog
JChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwK
ICQoUFJPSkVDVF9ESVIpL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlOYW1lcy5pbgogJChQUk9KRUNU
X0RJUikvaHRtbC9wYXJzZXIvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCiskKFBST0pFQ1RfRElS
KS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCiAkKFBST0pFQ1RfRElSKS9odG1sL3NoYWRv
dy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYWQ3OWMwMmI5YjI2ZjBjMjRhMTQ3ZGQ1
MDI2YWNlYTQ5MGZmN2EzNy4uNmVlNTQxODk2MzUxYTA4NDUwYzIzZGMzNjJjZTVhMTNkZjEzMmRh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTExLDYgKzE1MTEsNyBAQCBV
U0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9wbHVnSW5zLmNz
cyBcCiAgICAgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyBcCiAgICAgJChXZWJDb3JlKS9jc3Mv
c3ZnLmNzcyBcCisgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzIFwK
ICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRvdy5jc3MgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNz
cyBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg5OGE5MDdkODRjZmFhYTQ5NWIwMjQ5ODBiYjMxNjJi
ZThkMDFhNDUuLmJjNjVlNDIwNzQ0YjEwYTAzNmMxZTVlZDU2YjM3MmVmYjIzMjNiOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xMzk0LDYgKzEzOTQsNyBAQCBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxk
RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50cy5jcHAKIGh0bWwv
c2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L0RhdGVU
aW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCitodG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVt
ZW50LmNwcAogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dC5jcHAKIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyM2RjYmZlZDE3NTBhM2ZmNWQ2NjgwM2RjYmZi
NjViMjJmZWRlMGMxLi5kNWZhN2JhYjgzY2Y4Y2IxNTdjYjQ3NmVlYWUwMTc1YTgyYzVhYWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MjcyLDYgKzUyNzIsNyBAQAogCQlGNDgyMjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBFMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ4MjIzMEYxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFF
Mzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4QjdENEYyNUMyMkU4QTAwOUU3NURE
IC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0OEI3RDREMjVDMjJFOEEwMDlFNzVERCAvKiBJbWFnZU92ZXJsYXlF
bGVtZW50LmggKi87IH07CiAJCUY0OEI3RDUzMjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJh
Y3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0OEI3RDUyMjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkE2
QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRT
aGFkb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGNDhEMkE3RTIxNTcxODI2MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTcxMjE1NkRDMEEwMEM2
NzUyQiAvKiBGb250QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01Mjg1LDYgKzUyODYsNyBAQAogCQlGNEQwNzU1OTIzNEQ4MjMz
MDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ4MDIzNDY1NDdBMDAz
OUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggKi87IH07CiAJCUY0
RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjJCOEI1MjUzRjcwNjUw
MDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyog
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRjRERDg2NjUyNUNDNjBBMzAwNTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0REQ4NjYyMjVD
QzYwODQwMDU5QkZEQSAvKiBpbWFnZU92ZXJsYXkuY3NzICovOyB9OwogCQlGNEU1N0VEQzIxM0Yz
RjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBG
b250QXR0cmlidXRlQ2hhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUY0RTU3RUUxMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0
cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RjRGQjM0RkMyMzUwQzg1RDAwRjAwOTRBIC8qIFBhc3RlYm9hcmRDdXN0b21EYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZCMzRGQTIzNTBDODVE
MDBGMDA5NEEgLyogUGFzdGVib2FyZEN1c3RvbURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY2MDIsNiArMTY2MDQsOCBAQAogCQlGNDgy
MjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdI
aXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVk
aXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBF
ZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5
VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4QjdENEQyNUMyMkU4QTAw
OUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVy
bGF5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhCN0Q0RTI1QzIy
RThBMDA5RTc1REQgLyogSW1hZ2VPdmVybGF5RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZU92ZXJsYXlFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udFNoYWRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDhE
MkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE5LDYg
KzE2NjIzLDcgQEAKIAkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8q
IENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNv
bW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0UyMTk1RkJGNjAw
ODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
aGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VPdmVybGF5LmNzcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gaW1h
Z2VPdmVybGF5LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NUEyMUYy
Mzk1MDAwMjg1MDc4IC8qIEpTVW5kb0l0ZW1DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvSXRlbUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RTE5NjVGMjFGMjZFNEUwMDI4NTA3OCAvKiBVbmRvSXRlbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmRvSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RTE5NjYxMjFGMjdEM0MwMDI4NTA3OCAvKiBDdXN0b21VbmRvU3RlcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21VbmRvU3RlcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTkzMzcsNiArMTkzNDIsOSBAQAogCQkJCUU1RjA2QUVEMjRENEE2
MzcwMEJCQzRGOCAvKiBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmggKi8sCiAJCQkJQTdD
OUFCRjYxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmNwcCAqLywKIAkJ
CQlBN0M5QUJGNzEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNvbnRyb2wuaCAqLywK
KwkJCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VPdmVybGF5LmNzcyAqLywKKwkJ
CQlGNDhCN0Q0RTI1QzIyRThBMDA5RTc1REQgLyogSW1hZ2VPdmVybGF5RWxlbWVudC5jcHAgKi8s
CisJCQkJRjQ4QjdENEQyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCAq
LywKIAkJCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuaCAqLywKIAkJCQlFNEUyNDM4
MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAqLywKQEAgLTMyNTM0
LDYgKzMyNTQyLDcgQEAKIAkJCQkwODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFn
ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVBNTkzMTE1MjUyNUQwMDAzNkVFNTEg
LyogSW1hZ2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ4QjdENEYyNUMyMkU4
QTAwOUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcy
MjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJ
bWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzU2OTksNiArMzU3MDgsNyBA
QAogCQkJCTJENTBBNEI4MUNFMTBFMDAwMDE5ODA0OSAvKiBBdHRhY2htZW50UGxhY2Vob2xkZXJA
MngucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlBMUFBOUFCOTFEMjM5MTE1MDBGRUFEQjMgLyog
Q29udGVudEZpbHRlckJsb2NrZWRQYWdlLmh0bWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUExMUU4
QzA1MUIxRTI4RjQwMDAzQTdDNyAvKiBjb3B5Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJRjRERDg2NjUyNUNDNjBBMzAwNTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJRTU5REQ0QjgyMTA5ODI4NzAwM0M4QjQ3IC8qIExpc3RCdXR0
b25BcnJvdy5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCUU1MTY2OTkxMjBGRjk5MTgwMDlEMkMy
NyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5nIGluIFJlc291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCA1N2JmNmRlOTRmYjQ5Yjk3ZjQ5Y2UzNzA5YTJjYTA3NWFiNjRjODk4Li4w
NjA1NzllODIxODcwOGI5YzE4YjdhZDU1MzRmYzhkNDQ5NzM4MjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5o
IgogI2luY2x1ZGUgIklkQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC04OSw2ICs5MCw3IEBA
CiAjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJR
dWlya3MuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgorI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTEz
MSw2ICsxMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisj
aW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRWxlbWVudCk7CkBAIC00NTYy
LDQgKzQ1NjgsMjUgQEAgdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVTdHlsZU1hcChSZWY8U3R5
bGVQcm9wZXJ0eU1hcD4mJiBtYXApCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJB
Q1RJT04pCisKK3ZvaWQgRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJ
bWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQpCit7CisgICAgaWYgKHJlc3VsdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVy
ZXIpLnNldEhhc0ltYWdlT3ZlcmxheSgpOworICAgIH0KKworICAgIGF1dG8gY29udGFpbmVyID0g
SW1hZ2VPdmVybGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChjb250YWluZXIpOworICAgIGNvbnRhaW5lci0+
dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IGVjYmI1ZmQwMmQ0NGMyNDQ1YzYxY2ZkNzc4N2U0OGJh
NzUyODhlN2EuLjRjYzE2MDQwZmYzM2NmYWI3MmIxMzJjNmU1NjJmMTFmZWVmNGQ5NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNjcsNiArNjcsMTAgQEAgc3RydWN0IEtleWZyYW1lQW5pbWF0aW9u
T3B0aW9uczsKIHN0cnVjdCBTY3JvbGxJbnRvVmlld09wdGlvbnM7CiBzdHJ1Y3QgU2Nyb2xsVG9P
cHRpb25zOwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1Y3QgSW1hZ2VFeHRy
YWN0aW9uUmVzdWx0OworI2VuZGlmCisKIGVudW0gY2xhc3MgRXZlbnRQcm9jZXNzaW5nIDogdWlu
dDhfdDsKIAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCkBAIC02MTksNiArNjIz
LDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVz
dWx0JiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmgKaW5kZXggNzZhYzA3NDY3OTRlNzFkMDUwN2U2MWEwYWRhODA0M2ZmNzZhMjg5OC4u
MjFjMmVhZTQwMjY0NGEyZWU0NTBjZGIyYmJkZDhjMWFlOTI1MWJkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNIVE1MVW5rbm93bkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2VPdmVybGF5RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVu
dHMoKSBvdmVycmlkZTsKICAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZU92
ZXJsYXlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdlT3Zlcmxh
eUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMDhjNDNjZjU1Y2VhN2U5YTBiZmFmY2NiOThhNjUz
M2FlOTZkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bWFnZU92ZXJsYXlFbGVtZW50LmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXlFbGVtZW50LmgiCisKKwor
I2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgorI2lu
Y2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorI2luY2x1
ZGUgIkltYWdlRXh0cmFjdGlvblJlc3VsdC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlT3ZlcmxheUVsZW1lbnQpOwor
CitSZWY8SW1hZ2VPdmVybGF5RWxlbWVudD4gSW1hZ2VPdmVybGF5RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGltYWdlT3ZlcmxheUNsYXNzKCJpbWFnZS1vdmVybGF5IiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgYXV0byBjb250YWluZXIgPSBh
ZG9wdFJlZigqbmV3IEltYWdlT3ZlcmxheUVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBjb250YWlu
ZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlDbGFzcyk7CisgICAgcmV0dXJuIGNvbnRh
aW5lcjsKK30KKworSW1hZ2VPdmVybGF5RWxlbWVudDo6SW1hZ2VPdmVybGF5RWxlbWVudChEb2N1
bWVudCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywg
ZG9jdW1lbnQpCit7Cit9CisKK0ltYWdlT3ZlcmxheUVsZW1lbnQ6On5JbWFnZU92ZXJsYXlFbGVt
ZW50KCkgPSBkZWZhdWx0OworCitib29sIEltYWdlT3ZlcmxheUVsZW1lbnQ6Omhhc0ltYWdlT3Zl
cmxheShFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8gc2hhZG93Um9vdCA9IGVsZW1lbnQu
dXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIGlmIChMSUtFTFkoIXNoYWRvd1Jvb3QpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8gY2hpbGQgPSBzaGFkb3dSb290LT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChpczxJbWFnZU92ZXJsYXlFbGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNpZiBFTkFCTEUoSU1B
R0VfRVhUUkFDVElPTikKKwordm9pZCBJbWFnZU92ZXJsYXlFbGVtZW50Ojp1cGRhdGVXaXRoSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCkKK3sKKyAg
ICBJbnRTaXplIGNvbnRhaW5lclNpemUgeyBvZmZzZXRXaWR0aCgpLCBvZmZzZXRIZWlnaHQoKSB9
OworICAgIGZvciAoYXV0byYgZGF0YSA6IHJlc3VsdC50ZXh0RGF0YSkgeworICAgICAgICBhdXRv
IGNoaWxkQ29udGFpbmVyID0gY3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcihkYXRhKTsKKwor
ICAgICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZSB7IGNoaWxkQ29udGFpbmVyLT5vZmZzZXRXaWR0
aCgpLCBjaGlsZENvbnRhaW5lci0+b2Zmc2V0SGVpZ2h0KCkgfTsKKyAgICAgICAgaWYgKG9yaWdp
bmFsU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
IHRhcmdldFJlY3QgPSBkYXRhLm5vcm1hbGl6ZWRRdWFkLmJvdW5kaW5nQm94KCk7CisgICAgICAg
IHRhcmdldFJlY3Quc2NhbGUoY29udGFpbmVyU2l6ZSk7CisKKyAgICAgICAgSW50UG9pbnQgdHJh
bnNsYXRpb25PZmZzZXQgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0
LngoKSArICh0YXJnZXRSZWN0LndpZHRoKCkgLSBvcmlnaW5hbFNpemUud2lkdGgoKSkgLyAyKSwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4odGFyZ2V0UmVjdC55KCkgKyAodGFyZ2V0UmVj
dC5oZWlnaHQoKSAtIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSkgLyAyKQorICAgICAgICB9OworCisg
ICAgICAgIGNoaWxkQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VHJhbnNmb3JtLCBtYWtlU3RyaW5nKAorICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsIHRyYW5z
bGF0aW9uT2Zmc2V0LngoKSwgInB4LCAiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0LnkoKSwgInB4KSAi
X3MKKyAgICAgICAgICAgICJzY2FsZSgiX3MsIHRhcmdldFJlY3Qud2lkdGgoKSAvIG9yaWdpbmFs
U2l6ZS53aWR0aCgpLCAiLCAiX3MsIHRhcmdldFJlY3QuaGVpZ2h0KCkgLyBvcmlnaW5hbFNpemUu
aGVpZ2h0KCksICIpIl9zCisgICAgICAgICkpOworICAgIH0KKworICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNj
aGVkdWxlQ3Vyc29yVXBkYXRlKCk7Cit9CisKK1JlZjxIVE1MRGl2RWxlbWVudD4gSW1hZ2VPdmVy
bGF5RWxlbWVudDo6Y3JlYXRlQW5kQXBwZW5kVGV4dENvbnRhaW5lcihjb25zdCBJbWFnZUV4dHJh
Y3Rpb25UZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGltYWdlT3ZlcmxheVRleHRDbGFzcygiaW1hZ2Utb3Zlcmxh
eS10ZXh0IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgYXV0byB0
ZXh0Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICB0
ZXh0Q29udGFpbmVyLT5jbGFzc0xpc3QoKS5hZGQoaW1hZ2VPdmVybGF5VGV4dENsYXNzKTsKKyAg
ICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgZGF0
YS50ZXh0KSk7CisgICAgdGV4dENvbnRhaW5lci0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpKTsKKyAgICBhcHBlbmRDaGlsZCh0ZXh0Q29udGFpbmVyKTsKKyAg
ICByZXR1cm4gdGV4dENvbnRhaW5lcjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwZjcwZWM1YmE1
ZTY4NzUyNDlmNGRlZDRmYzA3YmFjYjkwZjUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdlT3ZlcmxheUVsZW1lbnQuaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCisjaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Oworc3RydWN0
IEltYWdlRXh0cmFjdGlvblRleHREYXRhOworI2VuZGlmCisKK2NsYXNzIEltYWdlT3ZlcmxheUVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgeworICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoSW1hZ2VPdmVybGF5RWxlbWVudCk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW1h
Z2VPdmVybGF5RWxlbWVudCgpOworCisgICAgc3RhdGljIFJlZjxJbWFnZU92ZXJsYXlFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgYm9vbCBoYXNJbWFnZU92ZXJsYXkoRWxl
bWVudCYpOworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgdm9pZCB1cGRhdGVX
aXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmKTsKKyNlbmRp
ZgorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgSW1hZ2VPdmVybGF5RWxlbWVudChEb2N1bWVu
dCYpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNJbWFnZU92ZXJsYXlFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04p
CisgICAgUmVmPEhUTUxEaXZFbGVtZW50PiBjcmVhdGVBbmRBcHBlbmRUZXh0Q29udGFpbmVyKGNv
bnN0IEltYWdlRXh0cmFjdGlvblRleHREYXRhJik7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbWFn
ZU92ZXJsYXlFbGVtZW50KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpI
VE1MRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc0ltYWdlT3ZlcmxheUVsZW1l
bnQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2Rl
KSB7IHJldHVybiBpczxXZWJDb3JlOjpFbGVtZW50Pihub2RlKSAmJiBpc1R5cGUoZG93bmNhc3Q8
V2ViQ29yZTo6RWxlbWVudD4obm9kZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZWJjNDc3YzQzYzI2ZTFmNjdmY2RkZThjYWEyY2QxNmVjMTE2MGE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcwpAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuaW1hZ2Utb3Zlcmxh
eSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAg
Y29sb3I6IHRyYW5zcGFyZW50OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOworICAgIGxpbmUtaGVpZ2h0OiAxMDAlOworfQorCisuaW1hZ2Utb3Zlcmxh
eS10ZXh0IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDI5OTNkZTkw
NTA2N2IyYTQxOTE2M2JlODNiODEwYThlMGQyZTMzOWYuLjg0OGIzYTZkNTYxNTQ1ZDI0YWY0NzU4
N2UxZDU5NGEwYWNjNGNlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUg
IkltYWdlT3ZlcmxheUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgiCkBAIC0xMzgsNiArMTM5LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBm
bG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxl
SW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJ
bWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2hhc0lt
YWdlT3ZlcmxheShJbWFnZU92ZXJsYXlFbGVtZW50OjpoYXNJbWFnZU92ZXJsYXkoZWxlbWVudCkp
CiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7
CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAtNzg4LDE3ICs3OTAsMTMgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6dXBkYXRlQWx0VGV4dCgpCiAKIGJvb2wgUmVuZGVySW1hZ2U6OmNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0CiB7Ci0jaWYgIUVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIHJldHVybiBm
YWxzZTsKLSNlbHNlCi0gICAgcmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHM7Ci0jZW5kaWYKKyAg
ICByZXR1cm4gaGFzU2hhZG93Q29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpsYXlv
dXQoKQogewotICAgIC8vIFJlY29tcHV0aW5nIG92ZXJmbG93IGlzIHJlcXVpcmVkIG9ubHkgd2hl
biBjaGlsZCBjb250ZW50IGlzIHByZXNlbnQuIAotICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3Jt
YWxGbG93TGF5b3V0T25seSgpICYmICFtX2hhc1NoYWRvd0NvbnRyb2xzKSB7CisgICAgLy8gUmVj
b21wdXRpbmcgb3ZlcmZsb3cgaXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNvbnRlbnQgaXMg
cHJlc2VudC4KKyAgICBpZiAobmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHkoKSAm
JiAhaGFzU2hhZG93Q29udGVudCgpKSB7CiAgICAgICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgxMCw0NSArODA4LDQxIEBAIHZvaWQgUmVuZGVySW1h
Z2U6OmxheW91dCgpCiAKICAgICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKLSAgICBpZiAo
bV9oYXNTaGFkb3dDb250cm9scykKLSAgICAgICAgbGF5b3V0U2hhZG93Q29udHJvbHMob2xkU2l6
ZSk7CisgICAgaWYgKGhhc1NoYWRvd0NvbnRlbnQoKSkKKyAgICAgICAgbGF5b3V0U2hhZG93Q29u
dGVudChvbGRTaXplKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJv
bHMoY29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSkKK3ZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNo
YWRvd0NvbnRlbnQoY29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSkKIHsKLSAgICAvLyBXZSBleHBl
Y3QgYSBzaW5nbGUgY29udGFpbmluZyBib3ggdW5kZXIgdGhlIFVBIHNoYWRvdyByb290LgotICAg
IEFTU0VSVChmaXJzdENoaWxkKCkgPT0gbGFzdENoaWxkKCkpOworICAgIGZvciAoYXV0byogcmVu
ZGVyZXIgPSBmaXJzdENoaWxkKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCisgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgIGF1dG8qIGNvbnRyb2xzUmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJCb3g+KGZpcnN0Q2hpbGQoKSk7Ci0gICAgaWYgKCFjb250cm9sc1JlbmRlcmVyKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBjb250cm9sc05lZWRMYXlvdXQgPSBjb250
cm9sc1JlbmRlcmVyLT5uZWVkc0xheW91dCgpOwotICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4g
aGFzIGNoYW5nZWQgd2UgYWxzbyBuZWVkIHRvIHJlbGF5b3V0IHRoZSBjb250cm9scyB0byB1cGRh
dGUgdGhlIHJlZ2lvbiBib3ggaW5mby4KLSAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciBv
bmNlIHdlIGNvbXB1dGUgcmVnaW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNlZCwgbm90IG9u
bHkgZm9yIFJlbmRlckJsb2NrLgotICAgIGNvbnN0IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFn
bWVudGVkRmxvdyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0gICAgaWYgKGZyYWdtZW50
ZWRGbG93ICYmICFjb250cm9sc05lZWRMYXlvdXQpIHsKLSAgICAgICAgaWYgKGZyYWdtZW50ZWRG
bG93LT5wYWdlTG9naWNhbFNpemVDaGFuZ2VkKCkpCi0gICAgICAgICAgICBjb250cm9sc05lZWRM
YXlvdXQgPSB0cnVlOwotICAgIH0KLQotICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRC
b3hSZWN0KCkuc2l6ZSgpOwotICAgIGlmIChuZXdTaXplID09IG9sZFNpemUgJiYgIWNvbnRyb2xz
TmVlZExheW91dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2hlbiBjYWxsaW5nIGxheW91
dCgpIG9uIGEgY2hpbGQgbm9kZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIgcHVzaCBhIExheW91dFN0
YXRlTWFpbnRhaW50ZXIsIG9yIAotICAgIC8vIGluc3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJs
ZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUg
ZWZmaWNpZW50LAotICAgIC8vIGFuZCB0aGlzIG1ldGhvZCBtaWdodCBiZSBjYWxsZWQgbWFueSB0
aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2aWRlbyBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVN
YWludGFpbmVyOgotICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywg
bG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0
eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CisgICAgICAgIGF1dG8qIHJlbmRl
ckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpOworICAgICAgICBib29sIGNoaWxk
TmVlZHNMYXlvdXQgPSByZW5kZXJCb3gtPm5lZWRzTGF5b3V0KCk7CisgICAgICAgIC8vIElmIHRo
ZSByZWdpb24gY2hhaW4gaGFzIGNoYW5nZWQgd2UgYWxzbyBuZWVkIHRvIHJlbGF5b3V0IHRoZSBj
aGlsZHJlbiB0byB1cGRhdGUgdGhlIHJlZ2lvbiBib3ggaW5mby4KKyAgICAgICAgLy8gRklYTUU6
IFdlIGNhbiBkbyBiZXR0ZXIgb25jZSB3ZSBjb21wdXRlIHJlZ2lvbiBib3ggaW5mbyBmb3IgUmVu
ZGVyUmVwbGFjZWQsIG5vdCBvbmx5IGZvciBSZW5kZXJCbG9jay4KKyAgICAgICAgYXV0byogZnJh
Z21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOworICAgICAgICBpZiAoZnJh
Z21lbnRlZEZsb3cgJiYgIWNoaWxkTmVlZHNMYXlvdXQpIHsKKyAgICAgICAgICAgIGlmIChmcmFn
bWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxTaXplQ2hhbmdlZCgpKQorICAgICAgICAgICAgICAgIGNo
aWxkTmVlZHNMYXlvdXQgPSB0cnVlOworICAgICAgICB9CiAKLSAgICBpZiAoc2hhZG93Q29udHJv
bHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpKSB7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXIt
PnNldExvY2F0aW9uKExheW91dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5
b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKLSAgICAgICAgY29udHJvbHNS
ZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgp
LCBGaXhlZCkpOwotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRX
aWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAgICBhdXRvIG5ld1Np
emUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKKyAgICAgICAgaWYgKG5ld1NpemUgPT0gb2xk
U2l6ZSAmJiAhY2hpbGROZWVkc0xheW91dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIC8vIFdoZW4gY2FsbGluZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11
c3QgZWl0aGVyIHB1c2ggYSBMYXlvdXRTdGF0ZU1haW50YWluZXIsIG9yCisgICAgICAgIC8vIGlu
c3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3RhdGVN
YWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LAorICAgICAgICAvLyBhbmQgdGhp
cyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlk
ZW8gcGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKKyAgICAgICAgTGF5b3V0
U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNU
cmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpKTsKKyAgICAgICAgcmVuZGVyQm94LT5zZXRMb2NhdGlvbihMYXlvdXRQb2lu
dChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIExheW91dFNpemUocGFkZGluZ0xlZnQoKSwg
cGFkZGluZ1RvcCgpKSk7CisgICAgICAgIHJlbmRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0SGVp
Z2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOworICAgICAgICByZW5kZXJCb3gt
Pm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7
CisgICAgICAgIHJlbmRlckJveC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAg
ICAgcmVuZGVyQm94LT5sYXlvdXQoKTsKICAgICB9CiAKLSAgICBjb250cm9sc1JlbmRlcmVyLT5z
ZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwotICAgIGNvbnRyb2xzUmVuZGVyZXItPmxheW91
dCgpOwogICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDlkMjc5YTU3MGQxZjQ4ZDcyNThlZDk0MzkwMmJlMjkx
MTg4NzYzMTMuLmVmYWJkMmFhZTQ4MmRiODAxYmM3OTNiMTkzNzIzNTU2MzBjNWZkMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlRGV2aWNlUGl4ZWxSYXRpbzsgfQogCiAgICAgdm9pZCBzZXRIYXNTaGFkb3dDb250cm9scyhi
b29sIGhhc1NoYWRvd0NvbnRyb2xzKSB7IG1faGFzU2hhZG93Q29udHJvbHMgPSBoYXNTaGFkb3dD
b250cm9sczsgfQorICAgIHZvaWQgc2V0SGFzSW1hZ2VPdmVybGF5KCkgeyBtX2hhc0ltYWdlT3Zl
cmxheSA9IHRydWU7IH0KICAgICAKICAgICBib29sIGlzU2hvd2luZ01pc3NpbmdPckltYWdlRXJy
b3IoKSBjb25zdDsKICAgICBib29sIGlzU2hvd2luZ0FsdFRleHQoKSBjb25zdDsKQEAgLTEyMCw4
ICsxMjEsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRU
b0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdCBmaW5hbDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0b21MYXlvdXRNZXRyaWNzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLQogICAgIEludFNpemUgaW1hZ2VTaXplRm9yRXJyb3IoQ2FjaGVkSW1hZ2Uq
KSBjb25zdDsKICAgICB2b2lkIHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdl
VHlwZSwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKTsKICAgICB2b2lkIHVwZGF0ZUludHJpbnNp
Y1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJik7CkBAIC0xMzAsNyArMTI5LDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIHZvaWQgbGF5b3V0U2hh
ZG93Q29udHJvbHMoY29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSk7CisgICAgdm9pZCBsYXlvdXRT
aGFkb3dDb250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpOworCisgICAgYm9vbCBoYXNT
aGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9scyB8fCBtX2hh
c0ltYWdlT3ZlcmxheTsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
V2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25h
bDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxvcHQpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtMTQzLDYgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25lZWRzVG9T
ZXRTaXplRm9yQWx0VGV4dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzR2VuZXJhdGVkQ29udGVu
dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1NoYWRvd0NvbnRyb2xzIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzSW1hZ2VPdmVybGF5IHsgZmFsc2UgfTsKICAgICBmbG9hdCBtX2ltYWdlRGV2
aWNlUGl4ZWxSYXRpbyB7IDEgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxl
T2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVk
aWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IDY2ZTA2
NDI3YzE1ODAzM2JhZTRlNzZhMTY5MjgxYzBjNDNlNDRiYzEuLjEwMWRkMDQ3MDI3ZTI3NzE5OWU1
YzMyNmY0YzcyMGQ3ODdiNmYwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YS5oCkBAIC01Niw3ICs1Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2hhZG93Q29udHJv
bHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1VzZXJBZ2VudFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1VzZXJBZ2Vu
dFN0eWxlLmNwcAppbmRleCBlYTY4NjgwNzE5NThkNGYwNDEzODU2ZGRhMTNkODZjNWQzYWNlNjBh
Li41ZDEwM2FlZjRmOTVjNjlkMGM4YzYzMWI5MzY5YmI0NTc3YmU0YTNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdlbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvVXNlckFnZW50U3R5bGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFNwYW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5RWxlbWVudC5o
IgogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtODUsNiArODYsNyBAQCBTdHlsZVNoZWV0Q29u
dGVudHMqIFVzZXJBZ2VudFN0eWxlOjpjb2xvcklucHV0U3R5bGVTaGVldDsKICNpZiBFTkFCTEUo
SU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQogU3R5bGVTaGVldENvbnRlbnRzKiBVc2VyQWdlbnRT
dHlsZTo6Zm9ybUNvbnRyb2xzSU9TU3R5bGVTaGVldDsKICNlbmRpZgorU3R5bGVTaGVldENvbnRl
bnRzKiBVc2VyQWdlbnRTdHlsZTo6aW1hZ2VPdmVybGF5U3R5bGVTaGVldDsKIAogc3RhdGljIGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHNjcmVlbkV2YWwoKQogewpAQCAtMTg1LDYgKzE4Nywx
MCBAQCB2b2lkIFVzZXJBZ2VudFN0eWxlOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoVklERU8pCisgICAgICAgIGVsc2UgaWYgKCFpbWFnZU92ZXJsYXlTdHls
ZVNoZWV0ICYmIGlzPEltYWdlT3ZlcmxheUVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAg
ICBpbWFnZU92ZXJsYXlTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KGltYWdlT3ZlcmxheVVzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihpbWFnZU92ZXJsYXlVc2VyQWdlbnRTdHlsZVNoZWV0KSk7
CisgICAgICAgICAgICBhZGRUb0RlZmF1bHRTdHlsZSgqaW1hZ2VPdmVybGF5U3R5bGVTaGVldCk7
CisgICAgICAgIH0KICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICAgICAgZWxzZSBp
ZiAoIWRhdGFMaXN0U3R5bGVTaGVldCAmJiBpczxIVE1MRGF0YUxpc3RFbGVtZW50PihlbGVtZW50
KSkgewogICAgICAgICAgICAgZGF0YUxpc3RTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KFJlbmRl
clRoZW1lOjpzaW5nbGV0b24oKS5kYXRhTGlzdFN0eWxlU2hlZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdlbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvVXNlckFnZW50U3R5bGUuaAppbmRleCBlNmYwYWFhNTRjMWUzMDY5YmY3YzQyNmZkN2JhMjAy
NzBjNmVjMmZlLi41MTk2NTM2OTAxZjM5ZDc4MDcyOTYzYjg0ZjIyNzZiNmE0N2IzYWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdlbnRTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0
OwogICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIGZ1bGxzY3JlZW5TdHlsZVNoZWV0Owog
ICAgIHN0YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIHBsdWdJbnNTdHlsZVNoZWV0OworICAgIHN0
YXRpYyBTdHlsZVNoZWV0Q29udGVudHMqIGltYWdlT3ZlcmxheVN0eWxlU2hlZXQ7CiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgc3RhdGljIFN0eWxlU2hlZXRDb250ZW50cyogZGF0
YUxpc3RTdHlsZVNoZWV0OwogI2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="437572"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419365</attachid>
            <date>2021-02-04 23:16:07 -0800</date>
            <delta_ts>2021-02-05 10:25:03 -0800</delta_ts>
            <desc>Fix GTK/WPE builds</desc>
            <filename>bug-221236-20210204231606.patch</filename>
            <type>text/plain</type>
            <size>36723</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjODgwZjQzZGY5MzRl
ZWUwY2M1OWNlOTc5YjQzNGFmMDU3ZTkwNy4uNTMyMWRmNGE1YmRmNmE0NTVkN2E0OGVlOTk4ZDBk
YWRhNjExYmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTAyLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZU92ZXJsYXlFbGVtZW50IGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3VwcG9ydCBmb3IgaW1h
Z2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBwcmV2aW91c2x5IGlu
dHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3KSB0byByZW5kZXIK
KyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFuZCBhZGRpdGlvbmFs
bHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFjdGlvbiwgYSBuZXcK
KyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlFbGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmNwcDogQWRkZWQuCisKKyAg
ICAgICAgUmVpbnRyb2R1Y2UgYEltYWdlQ29udHJvbHNSb290RWxlbWVudGAgYXMgYEltYWdlT3Zl
cmxheUVsZW1lbnRgOyB0aGlzIGVuY2Fwc3VsYXRlcyBhbGwgaW1hZ2UtZXh0cmFjdGlvbi1yZWxh
dGVkCisgICAgICAgIFVBIHNoYWRvdyByb290IGNvbnRlbnQuCisKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlT3ZlcmxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXlFbGVtZW50OjpJbWFnZU92ZXJsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3ZlcmxheUVsZW1lbnQ6Omhhc0ltYWdlT3ZlcmxheSk6CisKKyAgICAgICAgQWRkIGEgaGVs
cGVyIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbiBlbGVtZW50J3MgVUEgc2hhZG93IHJv
b3QgaGFzIGEgYEltYWdlT3ZlcmxheUVsZW1lbnRgLiBUaGlzIGlzCisgICAgICAgIGNvbnN1bHRl
ZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYFJlbmRlckltYWdlYC4KKworICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VPdmVybGF5RWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6
CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGltYWdlIGV4dHJhY3Rp
b24gY29udGVudCBpbiB0aGUgc2hhZG93IHJvb3Qgb2YgYW4gZWxlbWVudCwgZ2l2ZW4KKyAgICAg
ICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGBzLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXlFbGVtZW50OjpjcmVhdGVBbmRBcHBlbmRUZXh0Q29udGFpbmVyKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50Lmg6IEFkZGVkLgorCisgICAgICAgIEFkZCB0
eXBlIHRyYWl0cyBzdXBwb3J0IGZvciB0aGlzIHNoYWRvdyBET00gZWxlbWVudC4KKworICAgICAg
ICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6IEFkZGVkLgorICAgICAgICAoLmltYWdl
LW92ZXJsYXkpOgorICAgICAgICAoLmltYWdlLW92ZXJsYXktdGV4dCk6CisKKyAgICAgICAgQWRk
IGEgbmV3IFVBIHN0eWxlc2hlZXQgZm9yIHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyBET00gc3Vi
dHJlZS4gVGhlIG92ZXJsYXkgY29udGFpbnMgYSBudW1iZXIgb2YgYWJzb2x1dGVseQorICAgICAg
ICBwb3NpdG9uZWQgYGRpdmAgZWxlbWVudHMsIHdoaWNoIGFyZSBwb3NpdGlvbmVkIGluc2lkZSB0
aGUgb3ZlcmxheSBlbGVtZW50IHVzaW5nIHVzaW5nIENTUyB0cmFuc2Zvcm1zLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FuSGF2
ZUNoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRyb2xzKTogRGVs
ZXRlZC4KKworICAgICAgICBSZW5hbWUgYGxheW91dFNoYWRvd0NvbnRyb2xzYCB0byBgbGF5b3V0
U2hhZG93Q29udGVudGAsIGFuZCBhbGxvdyBpdCB0byBzdXBwb3J0IGJvdGggdGhlICJzaGFkb3cg
Y29udHJvbHMiIGNhc2UKKyAgICAgICAgKGkuZS4gYFJlbmRlck1lZGlhYCkgYW5kIHRoZSAiaW1h
Z2UgZXh0cmFjdGlvbiBjb250ZW50IiBjYXNlLiBBZGRpdG9uYWxseSwgcmVtb3ZlIHRoZSBjaGVj
ayBmb3IKKyAgICAgICAgYHNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKWAg
d2hlbiBzZXR0aW5nIGNoaWxkIHJlbmRlcmVyIHdpZHRoL2hlaWdodC4gVGhpcyBpcyBjdXJyZW50
bHkgb25seSB1c2VkCisgICAgICAgIGZvciBsYXlpbmcgb3V0IG1lZGlhIGNvbnRyb2xzIGluIGBS
ZW5kZXJNZWRpYWAsIGJ1dCB3ZSdsbCBuZWVkIGl0IG5vdyBmb3IgYWxsIGBSZW5kZXJJbWFnZWBz
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6c2V0SGFzSW1hZ2VPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpoYXNTaGFkb3dDb250ZW50IGNvbnN0KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgbWV0aG9kIHRvIHJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgYFJlbmRlckltYWdlYCBzaG91
bGQgZXhwZWN0IHNoYWRvdyByb290IGNvbnRlbnQuIFRoaXMgaXMgdHJ1ZQorICAgICAgICBmb3Ig
Ym90aCBtZWRpYSBjb250cm9scyAoYG1faGFzU2hhZG93Q29udHJvbHNgKSBhbmQgZm9yIHRoZSBu
ZXcgaW1hZ2Ugb3ZlcmxheSBjb250ZW50IChgbV9oYXNJbWFnZU92ZXJsYXlgKS4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1l
dHJpY3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5o
OgorCisgICAgICAgIFNlZSBgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRyb2xzYCBhYm92
ZS4KKworICAgICAgICAqIHN0eWxlL1VzZXJBZ2VudFN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpVc2VyQWdlbnRTdHlsZTo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxl
bWVudCk6CisKKyAgICAgICAgT25seSBwYXJzZSBhbmQgbG9hZCB0aGUgbmV3IHN0eWxlc2hlZXQg
aW4gdGhlIGNhc2Ugd2hlcmUgd2UgZW5jb3VudGVyIGBJbWFnZU92ZXJsYXlFbGVtZW50YC4KKwor
ICAgICAgICAqIHN0eWxlL1VzZXJBZ2VudFN0eWxlLmg6CisKIDIwMjEtMDItMDMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBDcmVhdGUgYSBTcGVlY2hSZWNvZ25p
emVyIGZvciBlYWNoIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBiYWE0NTNkNmNmMWMyMmU2NTkzMTE1NDRiMDI2Yjc4YWQ0YjU4ZDY0Li5kZDA1OTkyYmFj
NmRiMmE5OTllOWVlNzJmMTMxZDIyY2M2NWM3Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTQzNSw2ICsxNDM1LDcgQEAgc2V0KFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMKICAg
ICAke1dFQkNPUkVfRElSfS9jc3MvcGx1Z0lucy5jc3MKICAgICAke1dFQkNPUkVfRElSfS9jc3Mv
cXVpcmtzLmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9zdmcuY3NzCisgICAgJHtXRUJDT1JF
X0RJUn0vaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2h0
bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRvdy5jc3MKICkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggZDdlZTk2ZGNhN2JkYzQzYTRl
ZDZlYTMwMWQxMDQwMTQzMzA0MDBlMi4uNDI3MWMzNzg4ZWYwN2FkNzZlNjM5ZWVmMjEwMjc1YTQ1
ZmIyNjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDM4LDYgKzEwMzgsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0LmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvcGFyc2VyL0hU
TUxFbnRpdHlOYW1lcy5pbgogJChQUk9KRUNUX0RJUikvaHRtbC9wYXJzZXIvY3JlYXRlLWh0bWwt
ZW50aXR5LXRhYmxlCiskKFBST0pFQ1RfRElSKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3Nz
CiAkKFBST0pFQ1RfRElSKS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzCiAkKFBS
T0pFQ1RfRElSKS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggYWQ3OWMwMmI5YjI2ZjBjMjRhMTQ3ZGQ1MDI2YWNlYTQ5MGZmN2EzNy4uNmVlNTQxODk2MzUx
YTA4NDUwYzIzZGMzNjJjZTVhMTNkZjEzMmRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0xNTExLDYgKzE1MTEsNyBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKICAg
ICAkKFdlYkNvcmUpL2Nzcy9wbHVnSW5zLmNzcyBcCiAgICAgJChXZWJDb3JlKS9jc3MvcXVpcmtz
LmNzcyBcCiAgICAgJChXZWJDb3JlKS9jc3Mvc3ZnLmNzcyBcCisgICAgJChXZWJDb3JlKS9odG1s
L3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21l
dGVyRWxlbWVudFNoYWRvdy5jc3MgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNzcyBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg5OGE5
MDdkODRjZmFhYTQ5NWIwMjQ5ODBiYjMxNjJiZThkMDFhNDUuLmJjNjVlNDIwNzQ0YjEwYTAzNmMx
ZTVlZDU2YjM3MmVmYjIzMjNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMzk0LDYgKzEzOTQsNyBA
QCBodG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L0RhdGVU
aW1lRmllbGRFbGVtZW50cy5jcHAKIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxl
bWVudC5jcHAKIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVsZW1lbnQuY3BwCito
dG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmNwcAogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
M2RjYmZlZDE3NTBhM2ZmNWQ2NjgwM2RjYmZiNjViMjJmZWRlMGMxLi5kNWZhN2JhYjgzY2Y4Y2Ix
NTdjYjQ3NmVlYWUwMTc1YTgyYzVhYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjcyLDYgKzUyNzIsNyBAQAogCQlGNDgy
MjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBFMUUzODY5
QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlGNDgy
MjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMEYxRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZD
NzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0
ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRjQ4QjdENEYyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEI3RDREMjVDMjJF
OEEwMDlFNzVERCAvKiBJbWFnZU92ZXJsYXlFbGVtZW50LmggKi87IH07CiAJCUY0OEI3RDUzMjVD
MzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEI3RDUyMjVDMzQxRTYwMDlFNzVERCAv
KiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkE2QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJB
NkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkE3RTIxNTcxODI2MDBDNjc1MkIgLyog
Rm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0OEQyQTcxMjE1NkRDMEEwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01Mjg1LDYgKzUy
ODYsNyBAQAogCQlGNEQwNzU1OTIzNEQ4MjMzMDA4ODFFNzMgLyogQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDZDNDQ4MDIzNDY1NDdBMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9h
cmREYXRhU291cmNlLmggKi87IH07CiAJCUY0RDQwQkM5MjU1NDYzQkYwMDcyMTM0OSAvKiBEaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MjJCOEI1MjUzRjcwNjUwMDRFNzdFOCAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
NEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ0M0Q2NDIxODgw
MkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjRERDg2NjUyNUNDNjBBMzAwNTlC
RkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0REQ4NjYyMjVDQzYwODQwMDU5QkZEQSAvKiBpbWFnZU92ZXJsYXku
Y3NzICovOyB9OwogCQlGNEU1N0VEQzIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNo
YW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RUUxMjEzRjQz
NEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREYyMTNGNDM0QTAwNEVBOThF
IC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRGQjM0RkMyMzUwQzg1RDAwRjAwOTRBIC8qIFBh
c3RlYm9hcmRDdXN0b21EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEZCMzRGQTIzNTBDODVEMDBGMDA5NEEgLyogUGFzdGVib2FyZEN1c3RvbURh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTY2MDIsNiArMTY2MDQsOCBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJh
Y3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0
UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURE
RjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0
cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBh
dGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjQ4QjdENEQyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVybGF5RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDhCN0Q0RTI1QzIyRThBMDA5RTc1REQgLyogSW1hZ2VPdmVybGF5RWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZU92ZXJsYXlFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIElt
YWdlRXh0cmFjdGlvblJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUV4dHJhY3Rpb25SZXN1
bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDJBNkEyMTU2MjNCNDAwQzY3
NTJCIC8qIEZvbnRTaGFkb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNoYWRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0
dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE5LDYgKzE2NjIzLDcgQEAKIAkJRjRENDNENjQyMTg4MDJF
NjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjREOTgxN0QyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjREOTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1h
Z2VPdmVybGF5LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gaW1hZ2VPdmVybGF5LmNzczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NUEyMUYyMzk1MDAwMjg1MDc4IC8qIEpTVW5kb0l0ZW1DdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvSXRlbUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjVGMjFGMjZFNEUw
MDI4NTA3OCAvKiBVbmRvSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvSXRlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjYxMjFGMjdEM0MwMDI4NTA3OCAv
KiBDdXN0b21VbmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0
b21VbmRvU3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzMzcsNiArMTkz
NDIsOSBAQAogCQkJCUU1RjA2QUVEMjRENEE2MzcwMEJCQzRGOCAvKiBEYXRlVGltZVN5bWJvbGlj
RmllbGRFbGVtZW50LmggKi8sCiAJCQkJQTdDOUFCRjYxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFp
bHNNYXJrZXJDb250cm9sLmNwcCAqLywKIAkJCQlBN0M5QUJGNzEzNTdBM0JGMDBGNTUwM0YgLyog
RGV0YWlsc01hcmtlckNvbnRyb2wuaCAqLywKKwkJCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEg
LyogaW1hZ2VPdmVybGF5LmNzcyAqLywKKwkJCQlGNDhCN0Q0RTI1QzIyRThBMDA5RTc1REQgLyog
SW1hZ2VPdmVybGF5RWxlbWVudC5jcHAgKi8sCisJCQkJRjQ4QjdENEQyNUMyMkU4QTAwOUU3NURE
IC8qIEltYWdlT3ZlcmxheUVsZW1lbnQuaCAqLywKIAkJCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBG
MkEgLyogTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgKi8sCiAJCQkJ
NDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQuaCAqLywKIAkJCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVt
ZW50U2hhZG93LmNzcyAqLywKQEAgLTMyNTM0LDYgKzMyNTQyLDcgQEAKIAkJCQkwODk1ODI1NjBF
ODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0Y0
NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDVBNTkzMTE1MjUyNUQwMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRjQ4QjdENEYyNUMyMkU4QTAwOUU3NUREIC8qIEltYWdlT3ZlcmxheUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAw
NzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzU2OTksNiArMzU3MDgsNyBAQAogCQkJCTJENTBBNEI4MUNFMTBFMDAwMDE5ODA0
OSAvKiBBdHRhY2htZW50UGxhY2Vob2xkZXJAMngucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlB
MUFBOUFCOTFEMjM5MTE1MDBGRUFEQjMgLyogQ29udGVudEZpbHRlckJsb2NrZWRQYWdlLmh0bWwg
aW4gUmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA1MUIxRTI4RjQwMDAzQTdDNyAvKiBjb3B5Q3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRjRERDg2NjUyNUNDNjBBMzAwNTlCRkRBIC8q
IGltYWdlT3ZlcmxheS5jc3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTJEOUYwRTEzMTRGRjFDQkYw
MEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTU5REQ0Qjgy
MTA5ODI4NzAwM0M4QjQ3IC8qIExpc3RCdXR0b25BcnJvdy5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCUU1MTY2OTkxMjBGRjk5MTgwMDlEMkMyNyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5nIGlu
IFJlc291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1N2JmNmRlOTRmYjQ5Yjk3
ZjQ5Y2UzNzA5YTJjYTA3NWFiNjRjODk4Li4wNjA1NzllODIxODcwOGI5YzE4YjdhZDU1MzRmYzhk
NDQ5NzM4MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5j
bHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogI2luY2x1ZGUgIklkQ2hhbmdlSW52YWxpZGF0
aW9uLmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAi
SW1hZ2VPdmVybGF5RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCkBAIC04OSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJRdWlya3MuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFn
bWVudGVkRmxvdy5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKQEAgLTEzMSw2ICsxMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYg
RU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRWxlbWVudCk7CkBAIC00NTYyLDQgKzQ1NjgsMjUgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGVTdHlsZU1hcChSZWY8U3R5bGVQcm9wZXJ0eU1hcD4mJiBtYXApCiAKICNlbmRp
ZgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKK3ZvaWQgRWxlbWVudDo6dXBkYXRl
V2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQp
Cit7CisgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKCFpczxS
ZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRv
d25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLnNldEhhc0ltYWdlT3ZlcmxheSgpOworICAg
IH0KKworICAgIGF1dG8gY29udGFpbmVyID0gSW1hZ2VPdmVybGF5RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpOworICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChj
b250YWluZXIpOworICAgIGNvbnRhaW5lci0+dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3Vs
dChXVEZNb3ZlKHJlc3VsdCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJ
T04pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGVjYmI1
ZmQwMmQ0NGMyNDQ1YzYxY2ZkNzc4N2U0OGJhNzUyODhlN2EuLjRjYzE2MDQwZmYzM2NmYWI3MmIx
MzJjNmU1NjJmMTFmZWVmNGQ5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjcsNiArNjcsMTAg
QEAgc3RydWN0IEtleWZyYW1lQW5pbWF0aW9uT3B0aW9uczsKIHN0cnVjdCBTY3JvbGxJbnRvVmll
d09wdGlvbnM7CiBzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25zOwogCisjaWYgRU5BQkxFKElNQUdFX0VY
VFJBQ1RJT04pCitzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OworI2VuZGlmCisKIGVudW0g
Y2xhc3MgRXZlbnRQcm9jZXNzaW5nIDogdWludDhfdDsKIAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJ
T05fT0JTRVJWRVIpCkBAIC02MTksNiArNjIzLDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBk
ZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rp
b25SZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoK
ICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlv
blR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNzZhYzA3NDY3OTRlNzFk
MDUwN2U2MWEwYWRhODA0M2ZmNzZhMjg5OC4uMjFjMmVhZTQwMjY0NGEyZWU0NTBjZGIyYmJkZDhj
MWFlOTI1MWJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtODMsNiArODMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MVW5rbm93bkVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
SW1hZ2VPdmVybGF5RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZTsKICAgICBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0ltYWdlT3ZlcmxheUVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzY2Nh
YWU5NTAzMjkyZDc2NjQ1NmJkYzRiZmIyMDdkZDU3ZDE2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlFbGVtZW50LmNwcApAQCAtMCww
ICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bWFnZU92ZXJsYXlFbGVtZW50LmgiCisKKworI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2lu
Y2x1ZGUgIkV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKworI2lmIEVOQUJM
RShJTUFHRV9FWFRSQUNUSU9OKQorI2luY2x1ZGUgIkltYWdlRXh0cmFjdGlvblJlc3VsdC5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEltYWdlT3ZlcmxheUVsZW1lbnQpOworCitSZWY8SW1hZ2VPdmVybGF5RWxlbWVudD4gSW1h
Z2VPdmVybGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGltYWdlT3Zlcmxh
eUNsYXNzKCJpbWFnZS1vdmVybGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworCisgICAgYXV0byBjb250YWluZXIgPSBhZG9wdFJlZigqbmV3IEltYWdlT3ZlcmxheUVsZW1l
bnQoZG9jdW1lbnQpKTsKKyAgICBjb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJs
YXlDbGFzcyk7CisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKworSW1hZ2VPdmVybGF5RWxlbWVu
dDo6SW1hZ2VPdmVybGF5RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2
RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCit7Cit9CisKK0ltYWdlT3Zlcmxh
eUVsZW1lbnQ6On5JbWFnZU92ZXJsYXlFbGVtZW50KCkgPSBkZWZhdWx0OworCitib29sIEltYWdl
T3ZlcmxheUVsZW1lbnQ6Omhhc0ltYWdlT3ZlcmxheShjb25zdCBFbGVtZW50JiBlbGVtZW50KQor
eworICAgIGF1dG8gc2hhZG93Um9vdCA9IGVsZW1lbnQudXNlckFnZW50U2hhZG93Um9vdCgpOwor
ICAgIGlmIChMSUtFTFkoIXNoYWRvd1Jvb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBmb3IgKGF1dG8gY2hpbGQgPSBzaGFkb3dSb290LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChpczxJbWFnZU92ZXJsYXlF
bGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwordm9pZCBJ
bWFnZU92ZXJsYXlFbGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdl
RXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBJbnRTaXplIGNvbnRhaW5lclNpemUg
eyBvZmZzZXRXaWR0aCgpLCBvZmZzZXRIZWlnaHQoKSB9OworICAgIGZvciAoYXV0byYgZGF0YSA6
IHJlc3VsdC50ZXh0RGF0YSkgeworICAgICAgICBhdXRvIGNoaWxkQ29udGFpbmVyID0gY3JlYXRl
QW5kQXBwZW5kVGV4dENvbnRhaW5lcihkYXRhKTsKKworICAgICAgICBJbnRTaXplIG9yaWdpbmFs
U2l6ZSB7IGNoaWxkQ29udGFpbmVyLT5vZmZzZXRXaWR0aCgpLCBjaGlsZENvbnRhaW5lci0+b2Zm
c2V0SGVpZ2h0KCkgfTsKKyAgICAgICAgaWYgKG9yaWdpbmFsU2l6ZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHRhcmdldFJlY3QgPSBkYXRhLm5vcm1h
bGl6ZWRRdWFkLmJvdW5kaW5nQm94KCk7CisgICAgICAgIHRhcmdldFJlY3Quc2NhbGUoY29udGFp
bmVyU2l6ZSk7CisKKyAgICAgICAgSW50UG9pbnQgdHJhbnNsYXRpb25PZmZzZXQgeworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0LngoKSArICh0YXJnZXRSZWN0LndpZHRo
KCkgLSBvcmlnaW5hbFNpemUud2lkdGgoKSkgLyAyKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4odGFyZ2V0UmVjdC55KCkgKyAodGFyZ2V0UmVjdC5oZWlnaHQoKSAtIG9yaWdpbmFsU2l6
ZS5oZWlnaHQoKSkgLyAyKQorICAgICAgICB9OworCisgICAgICAgIGNoaWxkQ29udGFpbmVyLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKAor
ICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0LngoKSwgInB4LCAi
X3MsIHRyYW5zbGF0aW9uT2Zmc2V0LnkoKSwgInB4KSAiX3MKKyAgICAgICAgICAgICJzY2FsZSgi
X3MsIHRhcmdldFJlY3Qud2lkdGgoKSAvIG9yaWdpbmFsU2l6ZS53aWR0aCgpLCAiLCAiX3MsIHRh
cmdldFJlY3QuaGVpZ2h0KCkgLyBvcmlnaW5hbFNpemUuaGVpZ2h0KCksICIpIl9zCisgICAgICAg
ICkpOworICAgIH0KKworICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCk7Cit9
CisKK1JlZjxIVE1MRGl2RWxlbWVudD4gSW1hZ2VPdmVybGF5RWxlbWVudDo6Y3JlYXRlQW5kQXBw
ZW5kVGV4dENvbnRhaW5lcihjb25zdCBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YSYgZGF0YSkKK3sK
KyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGlt
YWdlT3ZlcmxheVRleHRDbGFzcygiaW1hZ2Utb3ZlcmxheS10ZXh0IiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgYXV0byB0ZXh0Q29udGFpbmVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICB0ZXh0Q29udGFpbmVyLT5jbGFzc0xpc3Qo
KS5hZGQoaW1hZ2VPdmVybGF5VGV4dENsYXNzKTsKKyAgICB0ZXh0Q29udGFpbmVyLT5hcHBlbmRD
aGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YS50ZXh0KSk7CisgICAgdGV4dENvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKKyAg
ICBhcHBlbmRDaGlsZCh0ZXh0Q29udGFpbmVyKTsKKyAgICByZXR1cm4gdGV4dENvbnRhaW5lcjsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZU92
ZXJsYXlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbWFnZU92ZXJsYXlF
bGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhN2NlY2MyMTlmOTJhOTI2YjdmN2E2OTI5ODBmYzc0MDAz
M2UxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0ltYWdl
T3ZlcmxheUVsZW1lbnQuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERvY3VtZW50OworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1
Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Oworc3RydWN0IEltYWdlRXh0cmFjdGlvblRleHREYXRh
OworI2VuZGlmCisKK2NsYXNzIEltYWdlT3ZlcmxheUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TERpdkVsZW1lbnQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VPdmVybGF5RWxl
bWVudCk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW1hZ2VPdmVybGF5RWxlbWVudCgpOworCisg
ICAgc3RhdGljIFJlZjxJbWFnZU92ZXJsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgYm9vbCBoYXNJbWFnZU92ZXJsYXkoY29uc3QgRWxlbWVudCYpOworCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgdm9pZCB1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9u
UmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmKTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6Cisg
ICAgZXhwbGljaXQgSW1hZ2VPdmVybGF5RWxlbWVudChEb2N1bWVudCYpOworCitwcml2YXRlOgor
ICAgIGJvb2wgaXNJbWFnZU92ZXJsYXlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgUmVmPEhUTUxEaXZF
bGVtZW50PiBjcmVhdGVBbmRBcHBlbmRUZXh0Q29udGFpbmVyKGNvbnN0IEltYWdlRXh0cmFjdGlv
blRleHREYXRhJik7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpJbWFnZU92ZXJsYXlFbGVtZW50KQor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpIVE1MRWxlbWVudCYgZWxlbWVu
dCkgeyByZXR1cm4gZWxlbWVudC5pc0ltYWdlT3ZlcmxheUVsZW1lbnQoKTsgfQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpOb2RlJiBub2RlKSB7IHJldHVybiBpczxXZWJD
b3JlOjpIVE1MRWxlbWVudD4obm9kZSkgJiYgaXNUeXBlKGRvd25jYXN0PFdlYkNvcmU6OkhUTUxF
bGVtZW50Pihub2RlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlYmM0Nzdj
NDNjMjZlMWY2N2ZjZGRlOGNhYTJjZDE2ZWMxMTYwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5pbWFnZS1vdmVybGF5IHsKKyAgICBw
b3NpdGlvbjogcmVsYXRpdmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBjb2xvcjogdHJh
bnNwYXJlbnQ7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgIHdoaXRlLXNwYWNlOiBub3dy
YXA7CisgICAgbGluZS1oZWlnaHQ6IDEwMCU7Cit9CisKKy5pbWFnZS1vdmVybGF5LXRleHQgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk5M2RlOTA1MDY3YjJhNDE5
MTYzYmU4M2I4MTBhOGUwZDJlMzM5Zi4uODQ4YjNhNmQ1NjE1NDVkMjRhZjQ3NTg3ZTFkNTk0YTBh
Y2M0Y2U2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVy
bGF5RWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJM
YXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3IuaCIKQEAgLTEzOCw2ICsxMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdl
RGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1h
a2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1h
a2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faGFzSW1hZ2VPdmVybGF5
KEltYWdlT3ZlcmxheUVsZW1lbnQ6Omhhc0ltYWdlT3ZlcmxheShlbGVtZW50KSkKICAgICAsIG1f
aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICB1cGRh
dGVBbHRUZXh0KCk7CkBAIC03ODgsMTcgKzc5MCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRh
dGVBbHRUZXh0KCkKIAogYm9vbCBSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QK
IHsKLSNpZiAhRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vs
c2UKLSAgICByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9sczsKLSNlbmRpZgorICAgIHJldHVybiBo
YXNTaGFkb3dDb250ZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiB7Ci0g
ICAgLy8gUmVjb21wdXRpbmcgb3ZlcmZsb3cgaXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNv
bnRlbnQgaXMgcHJlc2VudC4gCi0gICAgaWYgKG5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlv
dXRPbmx5KCkgJiYgIW1faGFzU2hhZG93Q29udHJvbHMpIHsKKyAgICAvLyBSZWNvbXB1dGluZyBv
dmVyZmxvdyBpcyByZXF1aXJlZCBvbmx5IHdoZW4gY2hpbGQgY29udGVudCBpcyBwcmVzZW50Lgor
ICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgpICYmICFoYXNTaGFk
b3dDb250ZW50KCkpIHsKICAgICAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtODEwLDQ1ICs4MDgsNDEgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0
KCkKIAogICAgIHVwZGF0ZUlubmVyQ29udGVudFJlY3QoKTsKIAotICAgIGlmIChtX2hhc1NoYWRv
d0NvbnRyb2xzKQotICAgICAgICBsYXlvdXRTaGFkb3dDb250cm9scyhvbGRTaXplKTsKKyAgICBp
ZiAoaGFzU2hhZG93Q29udGVudCgpKQorICAgICAgICBsYXlvdXRTaGFkb3dDb250ZW50KG9sZFNp
emUpOwogfQogCi12b2lkIFJlbmRlckltYWdlOjpsYXlvdXRTaGFkb3dDb250cm9scyhjb25zdCBM
YXlvdXRTaXplJiBvbGRTaXplKQordm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVu
dChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogewotICAgIC8vIFdlIGV4cGVjdCBhIHNpbmds
ZSBjb250YWluaW5nIGJveCB1bmRlciB0aGUgVUEgc2hhZG93IHJvb3QuCi0gICAgQVNTRVJUKGZp
cnN0Q2hpbGQoKSA9PSBsYXN0Q2hpbGQoKSk7CisgICAgZm9yIChhdXRvKiByZW5kZXJlciA9IGZp
cnN0Q2hpbGQoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgYXV0byogY29udHJvbHNSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJv
eD4oZmlyc3RDaGlsZCgpKTsKLSAgICBpZiAoIWNvbnRyb2xzUmVuZGVyZXIpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBib29sIGNvbnRyb2xzTmVlZExheW91dCA9IGNvbnRyb2xzUmVuZGVy
ZXItPm5lZWRzTGF5b3V0KCk7Ci0gICAgLy8gSWYgdGhlIHJlZ2lvbiBjaGFpbiBoYXMgY2hhbmdl
ZCB3ZSBhbHNvIG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNvbnRyb2xzIHRvIHVwZGF0ZSB0aGUgcmVn
aW9uIGJveCBpbmZvLgotICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIG9uY2Ugd2UgY29t
cHV0ZSByZWdpb24gYm94IGluZm8gZm9yIFJlbmRlclJlcGxhY2VkLCBub3Qgb25seSBmb3IgUmVu
ZGVyQmxvY2suCi0gICAgY29uc3QgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRGbG93
ID0gZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKLSAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYg
IWNvbnRyb2xzTmVlZExheW91dCkgewotICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPnBhZ2VM
b2dpY2FsU2l6ZUNoYW5nZWQoKSkKLSAgICAgICAgICAgIGNvbnRyb2xzTmVlZExheW91dCA9IHRy
dWU7Ci0gICAgfQotCi0gICAgTGF5b3V0U2l6ZSBuZXdTaXplID0gY29udGVudEJveFJlY3QoKS5z
aXplKCk7Ci0gICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSAmJiAhY29udHJvbHNOZWVkTGF5b3V0
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXaGVuIGNhbGxpbmcgbGF5b3V0KCkgb24gYSBj
aGlsZCBub2RlLCBhIHBhcmVudCBtdXN0IGVpdGhlciBwdXNoIGEgTGF5b3V0U3RhdGVNYWludGFp
bnRlciwgb3IgCi0gICAgLy8gaW5zdGFudGlhdGUgTGF5b3V0U3RhdGVEaXNhYmxlci4gU2luY2Ug
dXNpbmcgYSBMYXlvdXRTdGF0ZU1haW50YWluZXIgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQs
Ci0gICAgLy8gYW5kIHRoaXMgbWV0aG9kIG1pZ2h0IGJlIGNhbGxlZCBtYW55IHRpbWVzIHBlciBz
ZWNvbmQgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRTdGF0ZU1haW50YWluZXI6
Ci0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9m
ZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcik7CisgICAgICAgIGJvb2wgY2hpbGROZWVkc0xheW91
dCA9IHJlbmRlckJveC0+bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgLy8gSWYgdGhlIHJlZ2lvbiBj
aGFpbiBoYXMgY2hhbmdlZCB3ZSBhbHNvIG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNoaWxkcmVuIHRv
IHVwZGF0ZSB0aGUgcmVnaW9uIGJveCBpbmZvLgorICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRv
IGJldHRlciBvbmNlIHdlIGNvbXB1dGUgcmVnaW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNl
ZCwgbm90IG9ubHkgZm9yIFJlbmRlckJsb2NrLgorICAgICAgICBhdXRvKiBmcmFnbWVudGVkRmxv
dyA9IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CisgICAgICAgIGlmIChmcmFnbWVudGVkRmxv
dyAmJiAhY2hpbGROZWVkc0xheW91dCkgeworICAgICAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93
LT5wYWdlTG9naWNhbFNpemVDaGFuZ2VkKCkpCisgICAgICAgICAgICAgICAgY2hpbGROZWVkc0xh
eW91dCA9IHRydWU7CisgICAgICAgIH0KIAotICAgIGlmIChzaGFkb3dDb250cm9sc05lZWRDdXN0
b21MYXlvdXRNZXRyaWNzKCkpIHsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9jYXRp
b24oTGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBh
ZGRpbmdMZWZ0KCksIHBhZGRpbmdUb3AoKSkpOwotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5t
dXRhYmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7
Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0
aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIGF1dG8gbmV3U2l6ZSA9IGNvbnRl
bnRCb3hSZWN0KCkuc2l6ZSgpOworICAgICAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFj
aGlsZE5lZWRzTGF5b3V0KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gV2hl
biBjYWxsaW5nIGxheW91dCgpIG9uIGEgY2hpbGQgbm9kZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIg
cHVzaCBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgb3IKKyAgICAgICAgLy8gaW5zdGFudGlhdGUg
TGF5b3V0U3RhdGVEaXNhYmxlci4gU2luY2UgdXNpbmcgYSBMYXlvdXRTdGF0ZU1haW50YWluZXIg
aXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQsCisgICAgICAgIC8vIGFuZCB0aGlzIG1ldGhvZCBt
aWdodCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2aWRlbyBwbGF5YmFj
aywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgorICAgICAgICBMYXlvdXRTdGF0ZU1haW50
YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgp
IHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkpOworICAgICAgICByZW5kZXJCb3gtPnNldExvY2F0aW9uKExheW91dFBvaW50KGJvcmRlckxl
ZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9w
KCkpKTsKKyAgICAgICAgcmVuZGVyQm94LT5tdXRhYmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3Ro
KG5ld1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC0+bXV0YWJsZVN0
eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAg
cmVuZGVyQm94LT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICByZW5kZXJC
b3gtPmxheW91dCgpOwogICAgIH0KIAotICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldE5lZWRzTGF5
b3V0KE1hcmtPbmx5VGhpcyk7Ci0gICAgY29udHJvbHNSZW5kZXJlci0+bGF5b3V0KCk7CiAgICAg
Y2xlYXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKaW5kZXggOWQyNzlhNTcwZDFmNDhkNzI1OGVkOTQzOTAyYmUyOTExODg3NjMxMy4u
ZWZhYmQyYWFlNDgyZGI4MDFiYzc5M2IxOTM3MjM1NTYzMGM1ZmQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGZs
b2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZXZpY2VQ
aXhlbFJhdGlvOyB9CiAKICAgICB2b2lkIHNldEhhc1NoYWRvd0NvbnRyb2xzKGJvb2wgaGFzU2hh
ZG93Q29udHJvbHMpIHsgbV9oYXNTaGFkb3dDb250cm9scyA9IGhhc1NoYWRvd0NvbnRyb2xzOyB9
CisgICAgdm9pZCBzZXRIYXNJbWFnZU92ZXJsYXkoKSB7IG1faGFzSW1hZ2VPdmVybGF5ID0gdHJ1
ZTsgfQogICAgIAogICAgIGJvb2wgaXNTaG93aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0
OwogICAgIGJvb2wgaXNTaG93aW5nQWx0VGV4dCgpIGNvbnN0OwpAQCAtMTIwLDggKzEyMSw2IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3Vu
ZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIHNoYWRv
d0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotCiAgICAgSW50U2l6ZSBpbWFnZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0Owog
ICAgIHZvaWQgcmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlLCBjb25z
dCBJbnRSZWN0KiA9IG51bGxwdHIpOwogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVl
ZGVkKGNvbnN0IExheW91dFNpemUmKTsKQEAgLTEzMCw3ICsxMjksOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCk7CiAgICAgCi0gICAgdm9pZCBsYXlvdXRTaGFkb3dDb250cm9s
cyhjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKTsKKyAgICB2b2lkIGxheW91dFNoYWRvd0NvbnRl
bnQoY29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSk7CisKKyAgICBib29sIGhhc1NoYWRvd0NvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1NoYWRvd0NvbnRyb2xzIHx8IG1faGFzSW1hZ2VPdmVy
bGF5OyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91
bGRDb21wdXRlUHJlZmVycmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVu
aXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0xNDMsNiArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNUb1NldFNpemVGb3JB
bHRUZXh0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNHZW5lcmF0ZWRDb250ZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIG1faGFzU2hhZG93Q29udHJvbHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9o
YXNJbWFnZU92ZXJsYXkgeyBmYWxzZSB9OwogICAgIGZsb2F0IG1faW1hZ2VEZXZpY2VQaXhlbFJh
dGlvIHsgMSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXggNjZlMDY0MjdjMTU4MDMz
YmFlNGU3NmExNjkyODFjMGM0M2U0NGJjMS4uMTAxZGQwNDcwMjdlMjc3MTk5ZTVjMzI2ZjRjNzIw
ZDc4N2I2ZjA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTU2
LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0
b21MYXlvdXRNZXRyaWNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpIGZpbmFsOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvVXNl
ckFnZW50U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvVXNlckFnZW50U3R5bGUuY3Bw
CmluZGV4IGVhNjg2ODA3MTk1OGQ0ZjA0MTM4NTZkZGExM2Q4NmM1ZDNhY2U2MGEuLjVkMTAzYWVm
NGY5NWM2OWQwYzhjNjMxYjkzNjliYjQ1NzdiZTRhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9V
c2VyQWdlbnRTdHlsZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
U3BhbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXlFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNp
bmNsdWRlICJQYWdlLmgiCkBAIC04NSw2ICs4Niw3IEBAIFN0eWxlU2hlZXRDb250ZW50cyogVXNl
ckFnZW50U3R5bGU6OmNvbG9ySW5wdXRTdHlsZVNoZWV0OwogI2lmIEVOQUJMRShJT1NfRk9STV9D
T05UUk9MX1JFRlJFU0gpCiBTdHlsZVNoZWV0Q29udGVudHMqIFVzZXJBZ2VudFN0eWxlOjpmb3Jt
Q29udHJvbHNJT1NTdHlsZVNoZWV0OwogI2VuZGlmCitTdHlsZVNoZWV0Q29udGVudHMqIFVzZXJB
Z2VudFN0eWxlOjppbWFnZU92ZXJsYXlTdHlsZVNoZWV0OwogCiBzdGF0aWMgY29uc3QgTWVkaWFR
dWVyeUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7CkBAIC0xODUsNiArMTg3LDEwIEBAIHZvaWQg
VXNlckFnZW50U3R5bGU6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShWSURFTykKKyAgICAgICAgZWxzZSBpZiAoIWltYWdlT3ZlcmxheVN0eWxlU2hlZXQgJiYg
aXM8SW1hZ2VPdmVybGF5RWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGltYWdlT3Zl
cmxheVN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKKyAgICAgICAg
ICAgIGFkZFRvRGVmYXVsdFN0eWxlKCppbWFnZU92ZXJsYXlTdHlsZVNoZWV0KTsKKyAgICAgICAg
fQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgICAgICBlbHNlIGlmICghZGF0YUxp
c3RTdHlsZVNoZWV0ICYmIGlzPEhUTUxEYXRhTGlzdEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAg
ICAgICAgICBkYXRhTGlzdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoUmVuZGVyVGhlbWU6OnNp
bmdsZXRvbigpLmRhdGFMaXN0U3R5bGVTaGVldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Vc2VyQWdl
bnRTdHlsZS5oCmluZGV4IGU2ZjBhYWE1NGMxZTMwNjliZjdjNDI2ZmQ3YmEyMDI3MGM2ZWMyZmUu
LjUxOTY1MzY5MDFmMzlkNzgwNzI5NjNiODRmMjI3NmI2YTQ3YjNhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1VzZXJBZ2VudFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvVXNlckFnZW50U3R5bGUuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0eWxlU2hlZXRDb250ZW50cyogbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7CiAgICAgc3Rh
dGljIFN0eWxlU2hlZXRDb250ZW50cyogZnVsbHNjcmVlblN0eWxlU2hlZXQ7CiAgICAgc3RhdGlj
IFN0eWxlU2hlZXRDb250ZW50cyogcGx1Z0luc1N0eWxlU2hlZXQ7CisgICAgc3RhdGljIFN0eWxl
U2hlZXRDb250ZW50cyogaW1hZ2VPdmVybGF5U3R5bGVTaGVldDsKICNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKICAgICBzdGF0aWMgU3R5bGVTaGVldENvbnRlbnRzKiBkYXRhTGlzdFN0eWxl
U2hlZXQ7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419425</attachid>
            <date>2021-02-05 10:25:06 -0800</date>
            <delta_ts>2021-02-05 10:27:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221236-20210205102506.patch</filename>
            <type>text/plain</type>
            <size>24698</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjODgwZjQzZGY5MzRl
ZWUwY2M1OWNlOTc5YjQzNGFmMDU3ZTkwNy4uMDExMDY0ODQ0NTRlZTU0MGQ3YTEwNmIxMGQ1MTFi
MTQwZTAxNTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAyLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBJ
bWFnZU92ZXJsYXlFbGVtZW50IGFuZCBhZGQgVUEgc2hhZG93IHJvb3Qgc3VwcG9ydCBmb3IgaW1h
Z2UgZXh0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXN0b3JlcyBzb21lIG9mIHRoZSBsb2dpYyBwcmV2aW91c2x5IGlu
dHJvZHVjZWQgaW4gcjE2NDQ1NyAoYW5kIHJlbW92ZWQgd2l0aCByMjcyMTE3KSB0byByZW5kZXIK
KyAgICAgICAgc2VydmljZSBidXR0b24gY2VsbHMgb3ZlciBpbWFnZXMsIGFuZCBhZGRpdGlvbmFs
bHkgcmVuYW1lcyBhbmQgcmVwdXJwb3NlcyBpdCBmb3IgaW1hZ2UgZXh0cmFjdGlvbiwgYSBuZXcK
KyAgICAgICAgYWNjZXNzaWJpbGl0eSBmZWF0dXJlLiBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlT3Zl
cmxheUVsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1l
bnQ6Omhhc092ZXJsYXkgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciB0byBkZXRlcm1p
bmUgd2hldGhlciBvciBub3QgYW4gaW1hZ2UgZWxlbWVudCdzIFVBIHNoYWRvdyByb290IGhhcyBh
biBpbWFnZSBvdmVybGF5IGVsZW1lbnQuIFRoaXMgaXMKKyAgICAgICAgY29uc3VsdGVkIGluIHRo
ZSBjb25zdHJ1Y3RvciBvZiBgUmVuZGVySW1hZ2VgLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKworICAgICAgICBMb2Fk
IHRoZSBpbWFnZSBvdmVybGF5IHN0eWxlc2hlZXQgYXMgdGV4dCB3aXRoaW4gYSBzdHlsZSBlbGVt
ZW50IHdoZW4gY3JlYXRpbmcgdGhlIFVBIHNoYWRvdyByb290LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KToKKwor
ICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGluc3RhbGwgaW1hZ2UgZXh0cmFjdGlvbiBj
b250ZW50IGluIHRoZSBzaGFkb3cgcm9vdCBvZiBhbiBpbWFnZSBlbGVtZW50LCBnaXZlbiBhbgor
ICAgICAgICBgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0YC4gVGhpcyBjb25zaXN0cyBvZiBhbiBpbWFn
ZSBvdmVybGF5IGNvbnRhaW5lciAoYSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgYGRpdmApLCB3aGlj
aCB0aGVuCisgICAgICAgIGNvbnRhaW5zIHNvbWUgbnVtYmVyIG9mIGFic29sdXRlbHkgcG9zaXRp
b25lZCBjaGlsZCBgZGl2YCBlbGVtZW50cy4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3M6IEFkZGVkLgor
ICAgICAgICAoZGl2I2ltYWdlLW92ZXJsYXkpOgorICAgICAgICAoZGl2LmltYWdlLW92ZXJsYXkt
dGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IFVBIHN0eWxlc2hlZXQgZm9yIHRoZSBpbWFnZSBv
dmVybGF5IHNoYWRvdyBET00gc3VidHJlZS4gVGhlIG92ZXJsYXkgY29udGFpbnMgYSBudW1iZXIg
b2YgYWJzb2x1dGVseQorICAgICAgICBwb3NpdG9uZWQgYGRpdmAgZWxlbWVudHMsIHdoaWNoIGFy
ZSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgb3ZlcmxheSBlbGVtZW50IHVzaW5nIHVzaW5nIENTUyB0
cmFuc2Zvcm1zLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuIGNvbnN0KToKKworICAgICAgICBSZXR1cm4g
YHRydWVgIGlmIHdlIHJlcXVpcmUgY2hpbGRyZW4gaW4gdGhlIHNoYWRvdyByb290IChmb3IgZWl0
aGVyIG1lZGlhIGNvbnRyb2xzLCBvciB0aGlzIG5ldyBpbWFnZSBvdmVybGF5KS4KKworICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBg
bGF5b3V0U2hhZG93Q29udHJvbHNgIHRvIGBsYXlvdXRTaGFkb3dDb250ZW50YCwgYW5kIGFsbG93
IGl0IHRvIHN1cHBvcnQgYm90aCB0aGUgInNoYWRvdyBjb250cm9scyIgY2FzZQorICAgICAgICAo
aS5lLiBgUmVuZGVyTWVkaWFgKSBhbmQgdGhlICJpbWFnZSBleHRyYWN0aW9uIGNvbnRlbnQiIGNh
c2UuIEFkZGl0b25hbGx5LCByZW1vdmUgdGhlIGNoZWNrIGZvcgorICAgICAgICBgc2hhZG93Q29u
dHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpYCB3aGVuIHNldHRpbmcgY2hpbGQgcmVuZGVy
ZXIgd2lkdGgvaGVpZ2h0LiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQKKyAgICAgICAgZm9y
IGxheWluZyBvdXQgbWVkaWEgY29udHJvbHMgaW4gYFJlbmRlck1lZGlhYCwgYnV0IHdlJ2xsIG5l
ZWQgaXQgbm93IGZvciBhbGwgYFJlbmRlckltYWdlYHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzZXRIYXNJbWFn
ZU92ZXJsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Omhhc1NoYWRvd0NvbnRl
bnQgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gcmV0dXJuIHdoZXRo
ZXIgb3Igbm90IHRoZSBgUmVuZGVySW1hZ2VgIHNob3VsZCBleHBlY3Qgc2hhZG93IHJvb3QgY29u
dGVudC4gVGhpcyBpcyB0cnVlCisgICAgICAgIGZvciBib3RoIG1lZGlhIGNvbnRyb2xzIChgbV9o
YXNTaGFkb3dDb250cm9sc2ApIGFuZCBmb3IgdGhlIG5ldyBpbWFnZSBvdmVybGF5IGNvbnRlbnQg
KGBtX2hhc0ltYWdlT3ZlcmxheWApLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
c2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6CisKKyAgICAgICAgU2VlIGBSZW5kZXJJ
bWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHNgIGFib3ZlLgorCiAyMDIxLTAyLTAzICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIGEgU3BlZWNoUmVjb2du
aXplciBmb3IgZWFjaCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggYmFhNDUzZDZjZjFjMjJlNjU5MzExNTQ0YjAyNmI3OGFkNGI1OGQ2NC4uZGQwNTk5MmJh
YzZkYjJhOTk5ZTllZTcyZjEzMWQyMmNjNjVjN2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE0MzUsNiArMTQzNSw3IEBAIHNldChXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCiAg
ICAgJHtXRUJDT1JFX0RJUn0vY3NzL3BsdWdJbnMuY3NzCiAgICAgJHtXRUJDT1JFX0RJUn0vY3Nz
L3F1aXJrcy5jc3MKICAgICAke1dFQkNPUkVfRElSfS9jc3Mvc3ZnLmNzcworICAgICR7V0VCQ09S
RV9ESVJ9L2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKICAgICAke1dFQkNPUkVfRElSfS9o
dG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGQ3ZWU5NmRjYTdiZGM0M2E0
ZWQ2ZWEzMDFkMTA0MDE0MzMwNDAwZTIuLjQyNzFjMzc4OGVmMDdhZDc2ZTYzOWVlZjIxMDI3NWE0
NWZiMjYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMTAzOCw2ICsxMDM4LDcgQEAgJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3BhcnNlci9I
VE1MRW50aXR5TmFtZXMuaW4KICQoUFJPSkVDVF9ESVIpL2h0bWwvcGFyc2VyL2NyZWF0ZS1odG1s
LWVudGl0eS10YWJsZQorJChQUk9KRUNUX0RJUikvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNz
cwogJChQUk9KRUNUX0RJUikvaHRtbC9zaGFkb3cvbWV0ZXJFbGVtZW50U2hhZG93LmNzcwogJChQ
Uk9KRUNUX0RJUikvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IGFkNzljMDJiOWIyNmYwYzI0YTE0N2RkNTAyNmFjZWE0OTBmZjdhMzcuLjZlZTU0MTg5NjM1
MWEwODQ1MGMyM2RjMzYyY2U1YTEzZGYxMzJkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTUxMSw2ICsxNTExLDcgQEAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9jc3MvcGx1Z0lucy5jc3MgXAogICAgICQoV2ViQ29yZSkvY3NzL3F1aXJr
cy5jc3MgXAogICAgICQoV2ViQ29yZSkvY3NzL3N2Zy5jc3MgXAorICAgICQoV2ViQ29yZSkvaHRt
bC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBcCiAgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9t
ZXRlckVsZW1lbnRTaGFkb3cuY3NzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jc3MgXAogIwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIzZGNiZmVkMTc1MGEzZmY1
ZDY2ODAzZGNiZmI2NWIyMmZlZGUwYzEuLjZhY2U0NWRjZDExYTAzZmJiNmUyYzA4MWVhOTI0NTk1
N2U0NzkxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTUyODUsNiArNTI4NSw3IEBACiAJCUY0RDA3NTU5MjM0RDgyMzMwMDg4
MUU3MyAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkM0NDgwMjM0NjU0N0EwMDM5QTc5
RCAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjRENDBC
QzkyNTU0NjNCRjAwNzIxMzQ5IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyMkI4QjUyNTNGNzA2NTAwNEU3
N0U4IC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0RDQzRDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlGNEREODY2NTI1Q0M2MEEzMDA1OUJGREEgLyogaW1hZ2VPdmVybGF5LmNzcyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRERDg2NjIyNUNDNjA4
NDAwNTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgKi87IH07CiAJCUY0RTU3RURDMjEzRjNGNUYw
MDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5h
Z2VyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEZC
MzRGQzIzNTBDODVEMDBGMDA5NEEgLyogUGFzdGVib2FyZEN1c3RvbURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkIzNEZBMjM1MEM4NUQwMEYw
MDk0QSAvKiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjYxOSw2ICsxNjYyMCw3IEBACiAJCUY0RDQzRDY0
MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0RDk4MTdEMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0RDk4MTdFMjE5NUZCRjYwMDgyMzBGQyAvKiBDaGFuZ2VMaXN0VHlw
ZUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRERDg2NjIyNUNDNjA4NDAwNTlCRkRB
IC8qIGltYWdlT3ZlcmxheS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGltYWdlT3ZlcmxheS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjVBMjFGMjM5NTAwMDI4NTA3OCAvKiBKU1VuZG9J
dGVtQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5k
b0l0ZW1DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEUxOTY1RjIx
RjI2RTRFMDAyODUwNzggLyogVW5kb0l0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5kb0l0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEUxOTY2MTIxRjI3RDNDMDAy
ODUwNzggLyogQ3VzdG9tVW5kb1N0ZXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3VzdG9tVW5kb1N0ZXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzM3
LDYgKzE5MzM5LDcgQEAKIAkJCQlFNUYwNkFFRDI0RDRBNjM3MDBCQkM0RjggLyogRGF0ZVRpbWVT
eW1ib2xpY0ZpZWxkRWxlbWVudC5oICovLAogCQkJCUE3QzlBQkY2MTM1N0EzQkYwMEY1NTAzRiAv
KiBEZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgKi8sCiAJCQkJQTdDOUFCRjcxMzU3QTNCRjAwRjU1
MDNGIC8qIERldGFpbHNNYXJrZXJDb250cm9sLmggKi8sCisJCQkJRjRERDg2NjIyNUNDNjA4NDAw
NTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgKi8sCiAJCQkJNDE3MjUzQTgxMzU0QkJCQzAwMzYw
RjJBIC8qIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwICovLAogCQkJ
CTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50LmggKi8sCiAJCQkJRTRFMjQzODIxREFCOTUzRTAwQzI2RTRCIC8qIG1ldGVyRWxl
bWVudFNoYWRvdy5jc3MgKi8sCkBAIC0zNTY5OSw2ICszNTcwMiw3IEBACiAJCQkJMkQ1MEE0Qjgx
Q0UxMEUwMDAwMTk4MDQ5IC8qIEF0dGFjaG1lbnRQbGFjZWhvbGRlckAyeC5wbmcgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCUExQUE5QUI5MUQyMzkxMTUwMEZFQURCMyAvKiBDb250ZW50RmlsdGVyQmxv
Y2tlZFBhZ2UuaHRtbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTExRThDMDUxQjFFMjhGNDAwMDNB
N0M3IC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlGNEREODY2NTI1Q0M2
MEEzMDA1OUJGREEgLyogaW1hZ2VPdmVybGF5LmNzcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMkQ5
RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjIGluIFJlc291cmNlcyAqLywK
IAkJCQlFNTlERDRCODIxMDk4Mjg3MDAzQzhCNDcgLyogTGlzdEJ1dHRvbkFycm93LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJRTUxNjY5OTEyMEZGOTkxODAwOUQyQzI3IC8qIExpc3RCdXR0b25B
cnJvd0AyeC5wbmcgaW4gUmVzb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKaW5kZXggZDAzMGFmZDUxYjhiNTU1ZjQ5OTU3Mzg4MTQwMDRjNDNlMmU2YzBm
MS4uZjI5YjUzMWU0ZWI0OTZiYWFlM2EyMTI5ZWNhNzQxY2RlMTJhNjM0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0zMCwxMCArMzAsMTMgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MQlJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW1hZ2VMb2FkZXIuaCIKQEAgLTQyLDYgKzQ1LDcgQEAKICNpbmNsdWRlICJIVE1MTWFwRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxTb3VyY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNy
Y3NldFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJM
YXp5TG9hZEltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtNTcsOSArNjEsMTQgQEAKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaXplc0F0dHJpYnV0ZVBh
cnNlci5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyNpbmNsdWRlICJJbWFnZUV4dHJhY3Rp
b25SZXN1bHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChIVE1MSW1hZ2VFbGVtZW50KTsKQEAgLTgwOCw0ICs4MTcsODggQEAg
UmVmZXJyZXJQb2xpY3kgSFRNTEltYWdlRWxlbWVudDo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAog
ICAgIHJldHVybiBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKK3N0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpCit7CisgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpZGVudGlmaWVy
KCJpbWFnZS1vdmVybGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHJldHVybiBpZGVudGlmaWVyOworfQorCitib29sIEhUTUxJbWFnZUVsZW1lbnQ6Omhhc092ZXJs
YXkoKSBjb25zdAoreworICAgIGF1dG8gc2hhZG93Um9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KTsKKyAgICBpZiAoTElLRUxZKCFzaGFkb3dSb290KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZm9yIChhdXRvIGNoaWxkID0gbWFrZVJlZlB0cihzaGFkb3dSb290LT5maXJzdENoaWxk
KCkpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
IWlzPEVsZW1lbnQ+KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm
IChkb3duY2FzdDxFbGVtZW50PigqY2hpbGQpLmdldElkQXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVy
bGF5RWxlbWVudElkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRBZGRV
c2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhZG93U3R5bGUoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5bGVT
aGVldCwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICBhdXRvIHN0eWxlID0g
SFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIGRvY3VtZW50KCks
IGZhbHNlKTsKKyAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoc2hhZG93U3R5bGUpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOworfQorCisjaWYgRU5BQkxFKElNQUdFX0VY
VFJBQ1RJT04pCisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFj
dGlvblJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQpCit7CisgICAgaWYgKHJl
c3VsdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVu
ZGVyZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRvd25jYXN0PFJlbmRlcklt
YWdlPigqcmVuZGVyZXIpLnNldEhhc0ltYWdlT3ZlcmxheSgpOworICAgIH0KKworICAgIGF1dG8g
Y29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICBjb250
YWluZXItPnNldElkQXR0cmlidXRlKGltYWdlT3ZlcmxheUVsZW1lbnRJZGVudGlmaWVyKCkpOwor
ICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKS5hcHBlbmRDaGlsZChjb250YWluZXIpOwor
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBp
bWFnZU92ZXJsYXlUZXh0Q2xhc3MoImltYWdlLW92ZXJsYXktdGV4dCIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKworICAgIEludFNpemUgY29udGFpbmVyU2l6ZSB7IG9mZnNl
dFdpZHRoKCksIG9mZnNldEhlaWdodCgpIH07CisgICAgZm9yIChhdXRvJiBkYXRhIDogcmVzdWx0
LnRleHREYXRhKSB7CisgICAgICAgIGF1dG8gY2hpbGQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpOworICAgICAgICBjaGlsZC0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3Zlcmxh
eVRleHRDbGFzcyk7CisgICAgICAgIGNoaWxkLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9j
dW1lbnQoKSwgZGF0YS50ZXh0KSk7CisgICAgICAgIGNoaWxkLT5hcHBlbmRDaGlsZChIVE1MQlJF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOworICAgICAgICBjb250YWluZXItPmFwcGVuZENo
aWxkKGNoaWxkKTsKKworICAgICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZSB7IGNoaWxkLT5vZmZz
ZXRXaWR0aCgpLCBjaGlsZC0+b2Zmc2V0SGVpZ2h0KCkgfTsKKyAgICAgICAgaWYgKG9yaWdpbmFs
U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHRh
cmdldFJlY3QgPSBkYXRhLm5vcm1hbGl6ZWRRdWFkLmJvdW5kaW5nQm94KCk7CisgICAgICAgIHRh
cmdldFJlY3Quc2NhbGUoY29udGFpbmVyU2l6ZSk7CisKKyAgICAgICAgSW50UG9pbnQgdHJhbnNs
YXRpb25PZmZzZXQgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0Lngo
KSArICh0YXJnZXRSZWN0LndpZHRoKCkgLSBvcmlnaW5hbFNpemUud2lkdGgoKSkgLyAyKSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4odGFyZ2V0UmVjdC55KCkgKyAodGFyZ2V0UmVjdC5o
ZWlnaHQoKSAtIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSkgLyAyKQorICAgICAgICB9OworCisgICAg
ICAgIGNoaWxkLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBt
YWtlU3RyaW5nKAorICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0
LngoKSwgInB4LCAiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0LnkoKSwgInB4KSAiX3MKKyAgICAgICAg
ICAgICJzY2FsZSgiX3MsIHRhcmdldFJlY3Qud2lkdGgoKSAvIG9yaWdpbmFsU2l6ZS53aWR0aCgp
LCAiLCAiX3MsIHRhcmdldFJlY3QuaGVpZ2h0KCkgLyBvcmlnaW5hbFNpemUuaGVpZ2h0KCksICIp
Il9zCisgICAgICAgICkpOworICAgIH0KKworICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
KCkuZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNjaGVkdWxlQ3Vyc29y
VXBkYXRlKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA4M2Y2Y2VjZTcyNjM3NzEy
ODEzMjVkMDE4NjZiNjlhNmM1ZTkyODUxLi43ZmQ5ODAxZTE3YzQ5NzZkYzFmZWU2NzdiZWQ1ZjE1
ODkxMTFhOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtMzks
OSArMzksMTQgQEAgY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1F
bGVtZW50OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7Citj
bGFzcyBTaGFkb3dSb290OwogCiBzdHJ1Y3QgSW1hZ2VDYW5kaWRhdGU7CiAKKyNpZiBFTkFCTEUo
SU1BR0VfRVhUUkFDVElPTikKK3N0cnVjdCBJbWFnZUV4dHJhY3Rpb25SZXN1bHQ7CisjZW5kaWYK
KwogZW51bSBjbGFzcyBSZWxldmFudE11dGF0aW9uIDogYm9vbDsKIAogY2xhc3MgSFRNTEltYWdl
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewpAQCAt
MTM5LDYgKzE0NCwxMyBAQCBwdWJsaWM6CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dzT3JpZW50YXRpb25PdmVycmlkZSgpIGNvbnN0
OworICAgIGJvb2wgaGFzT3ZlcmxheSgpIGNvbnN0OworCisgICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKSBmaW5hbDsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRS
QUNUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFjdGlv
blJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgog
ICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50KiA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2lt
YWdlT3ZlcmxheS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRkZGJmOTY2OWM0Y2Q2OTA1MDcyMDhlZjQ3Njcz
ZGZkYTc1NGVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworZGl2I2ltYWdlLW92ZXJsYXkgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICBsaW5lLWhlaWdo
dDogMTAwJTsKK30KKworZGl2LmltYWdlLW92ZXJsYXktdGV4dCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCAyOTkzZGU5MDUwNjdiMmE0MTkxNjNiZTgzYjgxMGE4ZTBk
MmUzMzlmLi4yOTJiZDkwZGMyYjJiNDY0MjRmOGQyOGM2MDAyYjJhNTBiY2VmYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTEzOCw2ICsxMzgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Us
IGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2Vk
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCiAgICAgLCBtX2ltYWdlUmVzb3Vy
Y2Uoc3R5bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+
KCpzdHlsZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAs
IG1faGFzSW1hZ2VPdmVybGF5KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25j
YXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhhc092ZXJsYXkoKSkKICAgICAsIG1faW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICB1cGRhdGVB
bHRUZXh0KCk7CkBAIC03ODgsMTcgKzc4OSwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVB
bHRUZXh0KCkKIAogYm9vbCBSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKIHsK
LSNpZiAhRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UK
LSAgICByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9sczsKLSNlbmRpZgorICAgIHJldHVybiBoYXNT
aGFkb3dDb250ZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiB7Ci0gICAg
Ly8gUmVjb21wdXRpbmcgb3ZlcmZsb3cgaXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNvbnRl
bnQgaXMgcHJlc2VudC4gCi0gICAgaWYgKG5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXRP
bmx5KCkgJiYgIW1faGFzU2hhZG93Q29udHJvbHMpIHsKKyAgICAvLyBSZWNvbXB1dGluZyBvdmVy
ZmxvdyBpcyByZXF1aXJlZCBvbmx5IHdoZW4gY2hpbGQgY29udGVudCBpcyBwcmVzZW50LgorICAg
IGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgpICYmICFoYXNTaGFkb3dD
b250ZW50KCkpIHsKICAgICAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtODEwLDQ1ICs4MDcsNDEgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkK
IAogICAgIHVwZGF0ZUlubmVyQ29udGVudFJlY3QoKTsKIAotICAgIGlmIChtX2hhc1NoYWRvd0Nv
bnRyb2xzKQotICAgICAgICBsYXlvdXRTaGFkb3dDb250cm9scyhvbGRTaXplKTsKKyAgICBpZiAo
aGFzU2hhZG93Q29udGVudCgpKQorICAgICAgICBsYXlvdXRTaGFkb3dDb250ZW50KG9sZFNpemUp
OwogfQogCi12b2lkIFJlbmRlckltYWdlOjpsYXlvdXRTaGFkb3dDb250cm9scyhjb25zdCBMYXlv
dXRTaXplJiBvbGRTaXplKQordm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudChj
b25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogewotICAgIC8vIFdlIGV4cGVjdCBhIHNpbmdsZSBj
b250YWluaW5nIGJveCB1bmRlciB0aGUgVUEgc2hhZG93IHJvb3QuCi0gICAgQVNTRVJUKGZpcnN0
Q2hpbGQoKSA9PSBsYXN0Q2hpbGQoKSk7CisgICAgZm9yIChhdXRvKiByZW5kZXJlciA9IGZpcnN0
Q2hpbGQoKTsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgYXV0byogY29udHJvbHNSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckJveD4o
Zmlyc3RDaGlsZCgpKTsKLSAgICBpZiAoIWNvbnRyb2xzUmVuZGVyZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBib29sIGNvbnRyb2xzTmVlZExheW91dCA9IGNvbnRyb2xzUmVuZGVyZXIt
Pm5lZWRzTGF5b3V0KCk7Ci0gICAgLy8gSWYgdGhlIHJlZ2lvbiBjaGFpbiBoYXMgY2hhbmdlZCB3
ZSBhbHNvIG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNvbnRyb2xzIHRvIHVwZGF0ZSB0aGUgcmVnaW9u
IGJveCBpbmZvLgotICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIG9uY2Ugd2UgY29tcHV0
ZSByZWdpb24gYm94IGluZm8gZm9yIFJlbmRlclJlcGxhY2VkLCBub3Qgb25seSBmb3IgUmVuZGVy
QmxvY2suCi0gICAgY29uc3QgUmVuZGVyRnJhZ21lbnRlZEZsb3cqIGZyYWdtZW50ZWRGbG93ID0g
ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKTsKLSAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgIWNv
bnRyb2xzTmVlZExheW91dCkgewotICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPnBhZ2VMb2dp
Y2FsU2l6ZUNoYW5nZWQoKSkKLSAgICAgICAgICAgIGNvbnRyb2xzTmVlZExheW91dCA9IHRydWU7
Ci0gICAgfQotCi0gICAgTGF5b3V0U2l6ZSBuZXdTaXplID0gY29udGVudEJveFJlY3QoKS5zaXpl
KCk7Ci0gICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSAmJiAhY29udHJvbHNOZWVkTGF5b3V0KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXaGVuIGNhbGxpbmcgbGF5b3V0KCkgb24gYSBjaGls
ZCBub2RlLCBhIHBhcmVudCBtdXN0IGVpdGhlciBwdXNoIGEgTGF5b3V0U3RhdGVNYWludGFpbnRl
ciwgb3IgCi0gICAgLy8gaW5zdGFudGlhdGUgTGF5b3V0U3RhdGVEaXNhYmxlci4gU2luY2UgdXNp
bmcgYSBMYXlvdXRTdGF0ZU1haW50YWluZXIgaXMgc2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQsCi0g
ICAgLy8gYW5kIHRoaXMgbWV0aG9kIG1pZ2h0IGJlIGNhbGxlZCBtYW55IHRpbWVzIHBlciBzZWNv
bmQgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRTdGF0ZU1haW50YWluZXI6Ci0g
ICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNl
dCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZG93bmNh
c3Q8UmVuZGVyQm94PihyZW5kZXJlcik7CisgICAgICAgIGJvb2wgY2hpbGROZWVkc0xheW91dCA9
IHJlbmRlckJveC0+bmVlZHNMYXlvdXQoKTsKKyAgICAgICAgLy8gSWYgdGhlIHJlZ2lvbiBjaGFp
biBoYXMgY2hhbmdlZCB3ZSBhbHNvIG5lZWQgdG8gcmVsYXlvdXQgdGhlIGNoaWxkcmVuIHRvIHVw
ZGF0ZSB0aGUgcmVnaW9uIGJveCBpbmZvLgorICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJl
dHRlciBvbmNlIHdlIGNvbXB1dGUgcmVnaW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNlZCwg
bm90IG9ubHkgZm9yIFJlbmRlckJsb2NrLgorICAgICAgICBhdXRvKiBmcmFnbWVudGVkRmxvdyA9
IGVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCk7CisgICAgICAgIGlmIChmcmFnbWVudGVkRmxvdyAm
JiAhY2hpbGROZWVkc0xheW91dCkgeworICAgICAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93LT5w
YWdlTG9naWNhbFNpemVDaGFuZ2VkKCkpCisgICAgICAgICAgICAgICAgY2hpbGROZWVkc0xheW91
dCA9IHRydWU7CisgICAgICAgIH0KIAotICAgIGlmIChzaGFkb3dDb250cm9sc05lZWRDdXN0b21M
YXlvdXRNZXRyaWNzKCkpIHsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9jYXRpb24o
TGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3JkZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBhZGRp
bmdMZWZ0KCksIHBhZGRpbmdUb3AoKSkpOwotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5tdXRh
YmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7Ci0g
ICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChu
ZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIGF1dG8gbmV3U2l6ZSA9IGNvbnRlbnRC
b3hSZWN0KCkuc2l6ZSgpOworICAgICAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFjaGls
ZE5lZWRzTGF5b3V0KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gV2hlbiBj
YWxsaW5nIGxheW91dCgpIG9uIGEgY2hpbGQgbm9kZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIgcHVz
aCBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgb3IKKyAgICAgICAgLy8gaW5zdGFudGlhdGUgTGF5
b3V0U3RhdGVEaXNhYmxlci4gU2luY2UgdXNpbmcgYSBMYXlvdXRTdGF0ZU1haW50YWluZXIgaXMg
c2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQsCisgICAgICAgIC8vIGFuZCB0aGlzIG1ldGhvZCBtaWdo
dCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1cmluZyB2aWRlbyBwbGF5YmFjaywg
dXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgorICAgICAgICBMYXlvdXRTdGF0ZU1haW50YWlu
ZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgpIHx8
IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkp
OworICAgICAgICByZW5kZXJCb3gtPnNldExvY2F0aW9uKExheW91dFBvaW50KGJvcmRlckxlZnQo
KSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkp
KTsKKyAgICAgICAgcmVuZGVyQm94LT5tdXRhYmxlU3R5bGUoKS5zZXRIZWlnaHQoTGVuZ3RoKG5l
d1NpemUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC0+bXV0YWJsZVN0eWxl
KCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAgcmVu
ZGVyQm94LT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICByZW5kZXJCb3gt
PmxheW91dCgpOwogICAgIH0KIAotICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldE5lZWRzTGF5b3V0
KE1hcmtPbmx5VGhpcyk7Ci0gICAgY29udHJvbHNSZW5kZXJlci0+bGF5b3V0KCk7CiAgICAgY2xl
YXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKaW5kZXggOWQyNzlhNTcwZDFmNDhkNzI1OGVkOTQzOTAyYmUyOTExODg3NjMxMy4uZWZh
YmQyYWFlNDgyZGI4MDFiYzc5M2IxOTM3MjM1NTYzMGM1ZmQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIGZsb2F0
IGltYWdlRGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZXZpY2VQaXhl
bFJhdGlvOyB9CiAKICAgICB2b2lkIHNldEhhc1NoYWRvd0NvbnRyb2xzKGJvb2wgaGFzU2hhZG93
Q29udHJvbHMpIHsgbV9oYXNTaGFkb3dDb250cm9scyA9IGhhc1NoYWRvd0NvbnRyb2xzOyB9Cisg
ICAgdm9pZCBzZXRIYXNJbWFnZU92ZXJsYXkoKSB7IG1faGFzSW1hZ2VPdmVybGF5ID0gdHJ1ZTsg
fQogICAgIAogICAgIGJvb2wgaXNTaG93aW5nTWlzc2luZ09ySW1hZ2VFcnJvcigpIGNvbnN0Owog
ICAgIGJvb2wgaXNTaG93aW5nQWx0VGV4dCgpIGNvbnN0OwpAQCAtMTIwLDggKzEyMSw2IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCopIGNvbnN0IGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIHNoYWRvd0Nv
bnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
CiAgICAgSW50U2l6ZSBpbWFnZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0OwogICAg
IHZvaWQgcmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlLCBjb25zdCBJ
bnRSZWN0KiA9IG51bGxwdHIpOwogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVk
KGNvbnN0IExheW91dFNpemUmKTsKQEAgLTEzMCw3ICsxMjksOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCk7CiAgICAgCi0gICAgdm9pZCBsYXlvdXRTaGFkb3dDb250cm9scyhj
b25zdCBMYXlvdXRTaXplJiBvbGRTaXplKTsKKyAgICB2b2lkIGxheW91dFNoYWRvd0NvbnRlbnQo
Y29uc3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSk7CisKKyAgICBib29sIGhhc1NoYWRvd0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc1NoYWRvd0NvbnRyb2xzIHx8IG1faGFzSW1hZ2VPdmVybGF5
OyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRD
b21wdXRlUHJlZmVycmVkID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+
IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0x
NDMsNiArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmVlZHNUb1NldFNpemVGb3JBbHRU
ZXh0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNHZW5lcmF0ZWRDb250ZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzU2hhZG93Q29udHJvbHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJ
bWFnZU92ZXJsYXkgeyBmYWxzZSB9OwogICAgIGZsb2F0IG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlv
IHsgMSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlckltYWdlU2NhbGVPYnNlcnZlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKaW5kZXggNjZlMDY0MjdjMTU4MDMzYmFl
NGU3NmExNjkyODFjMGM0M2U0NGJjMS4uMTAxZGQwNDcwMjdlMjc3MTk5ZTVjMzI2ZjRjNzIwZDc4
N2I2ZjA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmgKQEAgLTU2LDcg
KzU2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0b21M
YXlvdXRNZXRyaWNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpIGZpbmFsOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419426</attachid>
            <date>2021-02-05 10:27:48 -0800</date>
            <delta_ts>2021-02-06 13:16:41 -0800</delta_ts>
            <desc>Fix title</desc>
            <filename>bug-221236-20210205102747.patch</filename>
            <type>text/plain</type>
            <size>24693</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZjODgwZjQzZGY5MzRl
ZWUwY2M1OWNlOTc5YjQzNGFmMDU3ZTkwNy4uYjM5MjYwZjU3YTBhNTZkZDUzMmY1OWRlODc5Nzlk
Y2I5MDBkMTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAyLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBp
bWFnZSBvdmVybGF5cyBhbmQgYWRkIFVBIHNoYWRvdyByb290IHN1cHBvcnQgZm9yIGltYWdlIGV4
dHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVzdG9yZXMgc29tZSBvZiB0aGUgbG9naWMgcHJldmlvdXNseSBpbnRyb2R1
Y2VkIGluIHIxNjQ0NTcgKGFuZCByZW1vdmVkIHdpdGggcjI3MjExNykgdG8gcmVuZGVyCisgICAg
ICAgIHNlcnZpY2UgYnV0dG9uIGNlbGxzIG92ZXIgaW1hZ2VzLCBhbmQgYWRkaXRpb25hbGx5IHJl
bmFtZXMgYW5kIHJlcHVycG9zZXMgaXQgZm9yIGltYWdlIGV4dHJhY3Rpb24sIGEgbmV3CisgICAg
ICAgIGFjY2Vzc2liaWxpdHkgZmVhdHVyZS4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnZU92ZXJsYXlF
bGVtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpo
YXNPdmVybGF5IGNvbnN0KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgb3Igbm90IGFuIGltYWdlIGVsZW1lbnQncyBVQSBzaGFkb3cgcm9vdCBoYXMgYW4gaW1h
Z2Ugb3ZlcmxheSBlbGVtZW50LiBUaGlzIGlzCisgICAgICAgIGNvbnN1bHRlZCBpbiB0aGUgY29u
c3RydWN0b3Igb2YgYFJlbmRlckltYWdlYC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisKKyAgICAgICAgTG9hZCB0aGUg
aW1hZ2Ugb3ZlcmxheSBzdHlsZXNoZWV0IGFzIHRleHQgd2l0aGluIGEgc3R5bGUgZWxlbWVudCB3
aGVuIGNyZWF0aW5nIHRoZSBVQSBzaGFkb3cgcm9vdC4KKworICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAg
ICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBpbnN0YWxsIGltYWdlIGV4dHJhY3Rpb24gY29udGVu
dCBpbiB0aGUgc2hhZG93IHJvb3Qgb2YgYW4gaW1hZ2UgZWxlbWVudCwgZ2l2ZW4gYW4KKyAgICAg
ICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGAuIFRoaXMgY29uc2lzdHMgb2YgYW4gaW1hZ2Ugb3Zl
cmxheSBjb250YWluZXIgKGEgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGBkaXZgKSwgd2hpY2ggdGhl
bgorICAgICAgICBjb250YWlucyBzb21lIG51bWJlciBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Y2hpbGQgYGRpdmAgZWxlbWVudHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzOiBBZGRlZC4KKyAgICAg
ICAgKGRpdiNpbWFnZS1vdmVybGF5KToKKyAgICAgICAgKGRpdi5pbWFnZS1vdmVybGF5LXRleHQp
OgorCisgICAgICAgIEFkZCBhIG5ldyBVQSBzdHlsZXNoZWV0IGZvciB0aGUgaW1hZ2Ugb3Zlcmxh
eSBzaGFkb3cgRE9NIHN1YnRyZWUuIFRoZSBvdmVybGF5IGNvbnRhaW5zIGEgbnVtYmVyIG9mIGFi
c29sdXRlbHkKKyAgICAgICAgcG9zaXRvbmVkIGBkaXZgIGVsZW1lbnRzLCB3aGljaCBhcmUgcG9z
aXRpb25lZCBpbnNpZGUgdGhlIG92ZXJsYXkgZWxlbWVudCB1c2luZyB1c2luZyBDU1MgdHJhbnNm
b3Jtcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNhbkhhdmVDaGlsZHJlbiBjb25zdCk6CisKKyAgICAgICAgUmV0dXJuIGB0cnVl
YCBpZiB3ZSByZXF1aXJlIGNoaWxkcmVuIGluIHRoZSBzaGFkb3cgcm9vdCAoZm9yIGVpdGhlciBt
ZWRpYSBjb250cm9scywgb3IgdGhpcyBuZXcgaW1hZ2Ugb3ZlcmxheSkuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OmxheW91dFNoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OmxheW91dFNoYWRvd0NvbnRyb2xzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgYGxheW91
dFNoYWRvd0NvbnRyb2xzYCB0byBgbGF5b3V0U2hhZG93Q29udGVudGAsIGFuZCBhbGxvdyBpdCB0
byBzdXBwb3J0IGJvdGggdGhlICJzaGFkb3cgY29udHJvbHMiIGNhc2UKKyAgICAgICAgKGkuZS4g
YFJlbmRlck1lZGlhYCkgYW5kIHRoZSAiaW1hZ2UgZXh0cmFjdGlvbiBjb250ZW50IiBjYXNlLiBB
ZGRpdG9uYWxseSwgcmVtb3ZlIHRoZSBjaGVjayBmb3IKKyAgICAgICAgYHNoYWRvd0NvbnRyb2xz
TmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKWAgd2hlbiBzZXR0aW5nIGNoaWxkIHJlbmRlcmVyIHdp
ZHRoL2hlaWdodC4gVGhpcyBpcyBjdXJyZW50bHkgb25seSB1c2VkCisgICAgICAgIGZvciBsYXlp
bmcgb3V0IG1lZGlhIGNvbnRyb2xzIGluIGBSZW5kZXJNZWRpYWAsIGJ1dCB3ZSdsbCBuZWVkIGl0
IG5vdyBmb3IgYWxsIGBSZW5kZXJJbWFnZWBzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2V0SGFzSW1hZ2VPdmVy
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpoYXNTaGFkb3dDb250ZW50IGNv
bnN0KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIHJldHVybiB3aGV0aGVyIG9y
IG5vdCB0aGUgYFJlbmRlckltYWdlYCBzaG91bGQgZXhwZWN0IHNoYWRvdyByb290IGNvbnRlbnQu
IFRoaXMgaXMgdHJ1ZQorICAgICAgICBmb3IgYm90aCBtZWRpYSBjb250cm9scyAoYG1faGFzU2hh
ZG93Q29udHJvbHNgKSBhbmQgZm9yIHRoZSBuZXcgaW1hZ2Ugb3ZlcmxheSBjb250ZW50IChgbV9o
YXNJbWFnZU92ZXJsYXlgKS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNoYWRv
d0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYS5oOgorCisgICAgICAgIFNlZSBgUmVuZGVySW1hZ2U6
OmxheW91dFNoYWRvd0NvbnRyb2xzYCBhYm92ZS4KKwogMjAyMS0wMi0wMyAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBhIFNwZWVjaFJlY29nbml6ZXIg
Zm9yIGVhY2ggU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGJhYTQ1M2Q2Y2YxYzIyZTY1OTMxMTU0NGIwMjZiNzhhZDRiNThkNjQuLmRkMDU5OTJiYWM2ZGIy
YTk5OWU5ZWU3MmYxMzFkMjJjYzY1YzdiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNDM1
LDYgKzE0MzUsNyBAQCBzZXQoV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUwogICAgICR7
V0VCQ09SRV9ESVJ9L2Nzcy9wbHVnSW5zLmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9xdWly
a3MuY3NzCiAgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3N2Zy5jc3MKKyAgICAke1dFQkNPUkVfRElS
fS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCiAgICAgJHtXRUJDT1JFX0RJUn0vaHRtbC9z
aGFkb3cvbWV0ZXJFbGVtZW50U2hhZG93LmNzcwogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBkN2VlOTZkY2E3YmRjNDNhNGVkNmVh
MzAxZDEwNDAxNDMzMDQwMGUyLi40MjcxYzM3ODhlZjA3YWQ3NmU2MzllZWYyMTAyNzVhNDVmYjI2
MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKQEAgLTEwMzgsNiArMTAzOCw3IEBAICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3QuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9wYXJzZXIvSFRNTEVu
dGl0eU5hbWVzLmluCiAkKFBST0pFQ1RfRElSKS9odG1sL3BhcnNlci9jcmVhdGUtaHRtbC1lbnRp
dHktdGFibGUKKyQoUFJPSkVDVF9ESVIpL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKICQo
UFJPSkVDVF9ESVIpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRvdy5jc3MKICQoUFJPSkVD
VF9ESVIpL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvdHJh
Y2svQXVkaW9UcmFja0xpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBh
ZDc5YzAyYjliMjZmMGMyNGExNDdkZDUwMjZhY2VhNDkwZmY3YTM3Li42ZWU1NDE4OTYzNTFhMDg0
NTBjMjNkYzM2MmNlNWExM2RmMTMyZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE1MTEsNiArMTUxMSw3IEBAIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTID0gXAogICAgICQo
V2ViQ29yZSkvY3NzL3BsdWdJbnMuY3NzIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9xdWlya3MuY3Nz
IFwKICAgICAkKFdlYkNvcmUpL2Nzcy9zdmcuY3NzIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvc2hh
ZG93L2ltYWdlT3ZlcmxheS5jc3MgXAogICAgICQoV2ViQ29yZSkvaHRtbC9zaGFkb3cvbWV0ZXJF
bGVtZW50U2hhZG93LmNzcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3NzIFwKICMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyM2RjYmZlZDE3NTBhM2ZmNWQ2Njgw
M2RjYmZiNjViMjJmZWRlMGMxLi42YWNlNDVkY2QxMWEwM2ZiYjZlMmMwODFlYTkyNDU5NTdlNDc5
MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01Mjg1LDYgKzUyODUsNyBAQAogCQlGNEQwNzU1OTIzNEQ4MjMzMDA4ODFFNzMg
LyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ4MDIzNDY1NDdBMDAzOUE3OUQgLyog
Q2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmggKi87IH07CiAJCUY0RDQwQkM5MjU1
NDYzQkYwMDcyMTM0OSAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MjJCOEI1MjUzRjcwNjUwMDRFNzdFOCAv
KiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RjRERDg2NjUyNUNDNjBBMzAwNTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0REQ4NjYyMjVDQzYwODQwMDU5
QkZEQSAvKiBpbWFnZU92ZXJsYXkuY3NzICovOyB9OwogCQlGNEU1N0VEQzIxM0YzRjVGMDA0RUE5
OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmli
dXRlQ2hhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUY0RTU3RUUxMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4
dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRF
NTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRGQjM0RkMy
MzUwQzg1RDAwRjAwOTRBIC8qIFBhc3RlYm9hcmRDdXN0b21EYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZCMzRGQTIzNTBDODVEMDBGMDA5NEEg
LyogUGFzdGVib2FyZEN1c3RvbURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTY2MTksNiArMTY2MjAsNyBAQAogCQlGNEQ0M0Q2NDIxODgw
MkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEQ5ODE3RDIxOTVGQkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEQ5ODE3RTIxOTVGQkY2MDA4MjMwRkMgLyogQ2hhbmdlTGlzdFR5cGVDb21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0REQ4NjYyMjVDQzYwODQwMDU5QkZEQSAvKiBp
bWFnZU92ZXJsYXkuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBpbWFnZU92ZXJsYXkuY3NzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNEUxOTY1QTIxRjIzOTUwMDAyODUwNzggLyogSlNVbmRvSXRlbUN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VuZG9JdGVt
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NUYyMUYyNkU0
RTAwMjg1MDc4IC8qIFVuZG9JdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZG9JdGVtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFMTk2NjEyMUYyN0QzQzAwMjg1MDc4
IC8qIEN1c3RvbVVuZG9TdGVwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1
c3RvbVVuZG9TdGVwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTMzNyw2ICsx
OTMzOSw3IEBACiAJCQkJRTVGMDZBRUQyNEQ0QTYzNzAwQkJDNEY4IC8qIERhdGVUaW1lU3ltYm9s
aWNGaWVsZEVsZW1lbnQuaCAqLywKIAkJCQlBN0M5QUJGNjEzNTdBM0JGMDBGNTUwM0YgLyogRGV0
YWlsc01hcmtlckNvbnRyb2wuY3BwICovLAogCQkJCUE3QzlBQkY3MTM1N0EzQkYwMEY1NTAzRiAv
KiBEZXRhaWxzTWFya2VyQ29udHJvbC5oICovLAorCQkJCUY0REQ4NjYyMjVDQzYwODQwMDU5QkZE
QSAvKiBpbWFnZU92ZXJsYXkuY3NzICovLAogCQkJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAv
KiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcCAqLywKIAkJCQk0MTcy
NTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudC5oICovLAogCQkJCUU0RTI0MzgyMURBQjk1M0UwMEMyNkU0QiAvKiBtZXRlckVsZW1lbnRT
aGFkb3cuY3NzICovLApAQCAtMzU2OTksNiArMzU3MDIsNyBAQAogCQkJCTJENTBBNEI4MUNFMTBF
MDAwMDE5ODA0OSAvKiBBdHRhY2htZW50UGxhY2Vob2xkZXJAMngucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQlBMUFBOUFCOTFEMjM5MTE1MDBGRUFEQjMgLyogQ29udGVudEZpbHRlckJsb2NrZWRQ
YWdlLmh0bWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA1MUIxRTI4RjQwMDAzQTdDNyAv
KiBjb3B5Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRjRERDg2NjUyNUNDNjBBMzAw
NTlCRkRBIC8qIGltYWdlT3ZlcmxheS5jc3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTJEOUYwRTEz
MTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
RTU5REQ0QjgyMTA5ODI4NzAwM0M4QjQ3IC8qIExpc3RCdXR0b25BcnJvdy5wbmcgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCUU1MTY2OTkxMjBGRjk5MTgwMDlEMkMyNyAvKiBMaXN0QnV0dG9uQXJyb3dA
MngucG5nIGluIFJlc291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGQwMzBhZmQ1MWI4YjU1NWY0OTk1NzM4ODE0MDA0YzQzZTJlNmMwZjEuLmYy
OWI1MzFlNGViNDk2YmFhZTNhMjEyOWVjYTc0MWNkZTEyYTYzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMzAsMTAgKzMwLDEzIEBACiAjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJS
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlTG9hZGVyLmgiCkBAIC00Miw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTcmNzZXRQ
YXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGF6eUxv
YWRJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKQEAgLTU3LDkgKzYxLDE0IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2l6ZXNBdHRyaWJ1dGVQYXJzZXIu
aCIKKyNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisj
aWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVz
dWx0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoSFRNTEltYWdlRWxlbWVudCk7CkBAIC04MDgsNCArODE3LDg4IEBAIFJlZmVy
cmVyUG9saWN5IEhUTUxJbWFnZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICBy
ZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCitzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRlbnRpZmllcigiaW1h
Z2Utb3ZlcmxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gaWRlbnRpZmllcjsKK30KKworYm9vbCBIVE1MSW1hZ2VFbGVtZW50OjpoYXNPdmVybGF5KCkg
Y29uc3QKK3sKKyAgICBhdXRvIHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7Cisg
ICAgaWYgKExJS0VMWSghc2hhZG93Um9vdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGZvciAoYXV0byBjaGlsZCA9IG1ha2VSZWZQdHIoc2hhZG93Um9vdC0+Zmlyc3RDaGlsZCgpKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpczxF
bGVtZW50PihjaGlsZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZG93
bmNhc3Q8RWxlbWVudD4oKmNoaWxkKS5nZXRJZEF0dHJpYnV0ZSgpID09IGltYWdlT3ZlcmxheUVs
ZW1lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290JiByb290KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHNoYWRvd1N0eWxlKGltYWdlT3ZlcmxheVVzZXJBZ2VudFN0eWxlU2hlZXQs
IFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgYXV0byBzdHlsZSA9IEhUTUxT
dHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkb2N1bWVudCgpLCBmYWxz
ZSk7CisgICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKyAgICByb290LmFw
cGVuZENoaWxkKFdURk1vdmUoc3R5bGUpKTsKK30KKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQorCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25S
ZXN1bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYgcmVzdWx0KQoreworICAgIGlmIChyZXN1bHQu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVy
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkb3duY2FzdDxSZW5kZXJJbWFnZT4o
KnJlbmRlcmVyKS5zZXRIYXNJbWFnZU92ZXJsYXkoKTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnRh
aW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgY29udGFpbmVy
LT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsKKyAgICBl
bnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW1hZ2VP
dmVybGF5VGV4dENsYXNzKCJpbWFnZS1vdmVybGF5LXRleHQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgeyBvZmZzZXRXaWR0
aCgpLCBvZmZzZXRIZWlnaHQoKSB9OworICAgIGZvciAoYXV0byYgZGF0YSA6IHJlc3VsdC50ZXh0
RGF0YSkgeworICAgICAgICBhdXRvIGNoaWxkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKKyAgICAgICAgY2hpbGQtPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlUZXh0
Q2xhc3MpOworICAgICAgICBjaGlsZC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIGRhdGEudGV4dCkpOworICAgICAgICBjaGlsZC0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKKyAgICAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChj
aGlsZCk7CisKKyAgICAgICAgSW50U2l6ZSBvcmlnaW5hbFNpemUgeyBjaGlsZC0+b2Zmc2V0V2lk
dGgoKSwgY2hpbGQtPm9mZnNldEhlaWdodCgpIH07CisgICAgICAgIGlmIChvcmlnaW5hbFNpemUu
aXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0YXJnZXRS
ZWN0ID0gZGF0YS5ub3JtYWxpemVkUXVhZC5ib3VuZGluZ0JveCgpOworICAgICAgICB0YXJnZXRS
ZWN0LnNjYWxlKGNvbnRhaW5lclNpemUpOworCisgICAgICAgIEludFBvaW50IHRyYW5zbGF0aW9u
T2Zmc2V0IHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4odGFyZ2V0UmVjdC54KCkgKyAo
dGFyZ2V0UmVjdC53aWR0aCgpIC0gb3JpZ2luYWxTaXplLndpZHRoKCkpIC8gMiksCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldFJlY3QueSgpICsgKHRhcmdldFJlY3QuaGVpZ2h0
KCkgLSBvcmlnaW5hbFNpemUuaGVpZ2h0KCkpIC8gMikKKyAgICAgICAgfTsKKworICAgICAgICBj
aGlsZC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgbWFrZVN0
cmluZygKKyAgICAgICAgICAgICJ0cmFuc2xhdGUoIl9zLCB0cmFuc2xhdGlvbk9mZnNldC54KCks
ICJweCwgIl9zLCB0cmFuc2xhdGlvbk9mZnNldC55KCksICJweCkgIl9zCisgICAgICAgICAgICAi
c2NhbGUoIl9zLCB0YXJnZXRSZWN0LndpZHRoKCkgLyBvcmlnaW5hbFNpemUud2lkdGgoKSwgIiwg
Il9zLCB0YXJnZXRSZWN0LmhlaWdodCgpIC8gb3JpZ2luYWxTaXplLmhlaWdodCgpLCAiKSJfcwor
ICAgICAgICApKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudCgpLmZy
YW1lKCkpCisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0
ZSgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggODNmNmNlY2U3MjYzNzcxMjgxMzI1
ZDAxODY2YjY5YTZjNWU5Mjg1MS4uN2ZkOTgwMWUxN2M0OTc2ZGMxZmVlNjc3YmVkNWYxNTg5MTEx
YTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM5LDkgKzM5
LDE0IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVu
dDsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OworY2xhc3Mg
U2hhZG93Um9vdDsKIAogc3RydWN0IEltYWdlQ2FuZGlkYXRlOwogCisjaWYgRU5BQkxFKElNQUdF
X0VYVFJBQ1RJT04pCitzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OworI2VuZGlmCisKIGVu
dW0gY2xhc3MgUmVsZXZhbnRNdXRhdGlvbiA6IGJvb2w7CiAKIGNsYXNzIEhUTUxJbWFnZUVsZW1l
bnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBGb3JtTmFtZWRJdGVtIHsKQEAgLTEzOSw2
ICsxNDQsMTMgQEAgcHVibGljOgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkg
Y29uc3Q7CiAKICAgICBib29sIGFsbG93c09yaWVudGF0aW9uT3ZlcnJpZGUoKSBjb25zdDsKKyAg
ICBib29sIGhhc092ZXJsYXkoKSBjb25zdDsKKworICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290JikgZmluYWw7CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElP
TikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhJbWFnZUV4dHJhY3Rpb25SZXN1
bHQoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0JiYpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBI
VE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3Jt
RWxlbWVudCogPSBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L2ltYWdlT3ZlcmxheS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92
ZXJsYXkuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0ZGRiZjk2NjljNGNkNjkwNTA3MjA4ZWY0NzY3M2RmZGE3
NTRlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFn
ZU92ZXJsYXkuY3NzCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK2RpdiNpbWFnZS1vdmVybGF5IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
b3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgdGV4dC1hbGln
bjogY2VudGVyOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgbGluZS1oZWlnaHQ6IDEw
MCU7Cit9CisKK2Rpdi5pbWFnZS1vdmVybGF5LXRleHQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKaW5kZXggMjk5M2RlOTA1MDY3YjJhNDE5MTYzYmU4M2I4MTBhOGUwZDJlMzM5
Zi4uMjkyYmQ5MGRjMmIyYjQ2NDI0ZjhkMjhjNjAwMmIyYTUwYmNlZmE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25z
dCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0
eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5
bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2hh
c0ltYWdlT3ZlcmxheShpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxI
VE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNPdmVybGF5KCkpCiAgICAgLCBtX2ltYWdlRGV2
aWNlUGl4ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4
dCgpOwpAQCAtNzg4LDE3ICs3ODksMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlQWx0VGV4
dCgpCiAKIGJvb2wgUmVuZGVySW1hZ2U6OmNhbkhhdmVDaGlsZHJlbigpIGNvbnN0CiB7Ci0jaWYg
IUVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAg
cmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHM7Ci0jZW5kaWYKKyAgICByZXR1cm4gaGFzU2hhZG93
Q29udGVudCgpOwogfQogCiB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogewotICAgIC8vIFJl
Y29tcHV0aW5nIG92ZXJmbG93IGlzIHJlcXVpcmVkIG9ubHkgd2hlbiBjaGlsZCBjb250ZW50IGlz
IHByZXNlbnQuIAotICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgp
ICYmICFtX2hhc1NoYWRvd0NvbnRyb2xzKSB7CisgICAgLy8gUmVjb21wdXRpbmcgb3ZlcmZsb3cg
aXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNvbnRlbnQgaXMgcHJlc2VudC4KKyAgICBpZiAo
bmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHkoKSAmJiAhaGFzU2hhZG93Q29udGVu
dCgpKSB7CiAgICAgICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTgxMCw0NSArODA3LDQxIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAKICAg
ICB1cGRhdGVJbm5lckNvbnRlbnRSZWN0KCk7CiAKLSAgICBpZiAobV9oYXNTaGFkb3dDb250cm9s
cykKLSAgICAgICAgbGF5b3V0U2hhZG93Q29udHJvbHMob2xkU2l6ZSk7CisgICAgaWYgKGhhc1No
YWRvd0NvbnRlbnQoKSkKKyAgICAgICAgbGF5b3V0U2hhZG93Q29udGVudChvbGRTaXplKTsKIH0K
IAotdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMoY29uc3QgTGF5b3V0U2l6
ZSYgb2xkU2l6ZSkKK3ZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQoY29uc3Qg
TGF5b3V0U2l6ZSYgb2xkU2l6ZSkKIHsKLSAgICAvLyBXZSBleHBlY3QgYSBzaW5nbGUgY29udGFp
bmluZyBib3ggdW5kZXIgdGhlIFVBIHNoYWRvdyByb290LgotICAgIEFTU0VSVChmaXJzdENoaWxk
KCkgPT0gbGFzdENoaWxkKCkpOworICAgIGZvciAoYXV0byogcmVuZGVyZXIgPSBmaXJzdENoaWxk
KCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcikpCisgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgIGF1dG8qIGNvbnRyb2xzUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3g+KGZpcnN0
Q2hpbGQoKSk7Ci0gICAgaWYgKCFjb250cm9sc1JlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYm9vbCBjb250cm9sc05lZWRMYXlvdXQgPSBjb250cm9sc1JlbmRlcmVyLT5uZWVk
c0xheW91dCgpOwotICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4gaGFzIGNoYW5nZWQgd2UgYWxz
byBuZWVkIHRvIHJlbGF5b3V0IHRoZSBjb250cm9scyB0byB1cGRhdGUgdGhlIHJlZ2lvbiBib3gg
aW5mby4KLSAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciBvbmNlIHdlIGNvbXB1dGUgcmVn
aW9uIGJveCBpbmZvIGZvciBSZW5kZXJSZXBsYWNlZCwgbm90IG9ubHkgZm9yIFJlbmRlckJsb2Nr
LgotICAgIGNvbnN0IFJlbmRlckZyYWdtZW50ZWRGbG93KiBmcmFnbWVudGVkRmxvdyA9IGVuY2xv
c2luZ0ZyYWdtZW50ZWRGbG93KCk7Ci0gICAgaWYgKGZyYWdtZW50ZWRGbG93ICYmICFjb250cm9s
c05lZWRMYXlvdXQpIHsKLSAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93LT5wYWdlTG9naWNhbFNp
emVDaGFuZ2VkKCkpCi0gICAgICAgICAgICBjb250cm9sc05lZWRMYXlvdXQgPSB0cnVlOwotICAg
IH0KLQotICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgpOwot
ICAgIGlmIChuZXdTaXplID09IG9sZFNpemUgJiYgIWNvbnRyb2xzTmVlZExheW91dCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gV2hlbiBjYWxsaW5nIGxheW91dCgpIG9uIGEgY2hpbGQgbm9k
ZSwgYSBwYXJlbnQgbXVzdCBlaXRoZXIgcHVzaCBhIExheW91dFN0YXRlTWFpbnRhaW50ZXIsIG9y
IAotICAgIC8vIGluc3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEg
TGF5b3V0U3RhdGVNYWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LAotICAgIC8v
IGFuZCB0aGlzIG1ldGhvZCBtaWdodCBiZSBjYWxsZWQgbWFueSB0aW1lcyBwZXIgc2Vjb25kIGR1
cmluZyB2aWRlbyBwbGF5YmFjaywgdXNlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyOgotICAgIExh
eW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwg
aGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSk7CisgICAgICAgIGF1dG8qIHJlbmRlckJveCA9IGRvd25jYXN0PFJl
bmRlckJveD4ocmVuZGVyZXIpOworICAgICAgICBib29sIGNoaWxkTmVlZHNMYXlvdXQgPSByZW5k
ZXJCb3gtPm5lZWRzTGF5b3V0KCk7CisgICAgICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4gaGFz
IGNoYW5nZWQgd2UgYWxzbyBuZWVkIHRvIHJlbGF5b3V0IHRoZSBjaGlsZHJlbiB0byB1cGRhdGUg
dGhlIHJlZ2lvbiBib3ggaW5mby4KKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIg
b25jZSB3ZSBjb21wdXRlIHJlZ2lvbiBib3ggaW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQsIG5vdCBv
bmx5IGZvciBSZW5kZXJCbG9jay4KKyAgICAgICAgYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpOworICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgIWNo
aWxkTmVlZHNMYXlvdXQpIHsKKyAgICAgICAgICAgIGlmIChmcmFnbWVudGVkRmxvdy0+cGFnZUxv
Z2ljYWxTaXplQ2hhbmdlZCgpKQorICAgICAgICAgICAgICAgIGNoaWxkTmVlZHNMYXlvdXQgPSB0
cnVlOworICAgICAgICB9CiAKLSAgICBpZiAoc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0
TWV0cmljcygpKSB7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldExvY2F0aW9uKExheW91
dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVm
dCgpLCBwYWRkaW5nVG9wKCkpKTsKLSAgICAgICAgY29udHJvbHNSZW5kZXJlci0+bXV0YWJsZVN0
eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAg
ICBjb250cm9sc1JlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRXaWR0aChMZW5ndGgobmV3U2l6
ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAgICBhdXRvIG5ld1NpemUgPSBjb250ZW50Qm94UmVj
dCgpLnNpemUoKTsKKyAgICAgICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6ZSAmJiAhY2hpbGROZWVk
c0xheW91dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFdoZW4gY2FsbGlu
ZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11c3QgZWl0aGVyIHB1c2ggYSBM
YXlvdXRTdGF0ZU1haW50YWluZXIsIG9yCisgICAgICAgIC8vIGluc3RhbnRpYXRlIExheW91dFN0
YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyIGlzIHNsaWdo
dGx5IG1vcmUgZWZmaWNpZW50LAorICAgICAgICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQgYmUg
Y2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVzZSBh
IExheW91dFN0YXRlTWFpbnRhaW5lcjoKKyAgICAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAg
ICAgICAgcmVuZGVyQm94LT5zZXRMb2NhdGlvbihMYXlvdXRQb2ludChib3JkZXJMZWZ0KCksIGJv
cmRlclRvcCgpKSArIExheW91dFNpemUocGFkZGluZ0xlZnQoKSwgcGFkZGluZ1RvcCgpKSk7Cisg
ICAgICAgIHJlbmRlckJveC0+bXV0YWJsZVN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdTaXpl
LmhlaWdodCgpLCBGaXhlZCkpOworICAgICAgICByZW5kZXJCb3gtPm11dGFibGVTdHlsZSgpLnNl
dFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJv
eC0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAgICAgcmVuZGVyQm94LT5sYXlv
dXQoKTsKICAgICB9CiAKLSAgICBjb250cm9sc1JlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwotICAgIGNvbnRyb2xzUmVuZGVyZXItPmxheW91dCgpOwogICAgIGNsZWFyQ2hp
bGROZWVkc0xheW91dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5o
CmluZGV4IDlkMjc5YTU3MGQxZjQ4ZDcyNThlZDk0MzkwMmJlMjkxMTg4NzYzMTMuLmVmYWJkMmFh
ZTQ4MmRiODAxYmM3OTNiMTkzNzIzNTU2MzBjNWZkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBpbWFn
ZURldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRp
bzsgfQogCiAgICAgdm9pZCBzZXRIYXNTaGFkb3dDb250cm9scyhib29sIGhhc1NoYWRvd0NvbnRy
b2xzKSB7IG1faGFzU2hhZG93Q29udHJvbHMgPSBoYXNTaGFkb3dDb250cm9sczsgfQorICAgIHZv
aWQgc2V0SGFzSW1hZ2VPdmVybGF5KCkgeyBtX2hhc0ltYWdlT3ZlcmxheSA9IHRydWU7IH0KICAg
ICAKICAgICBib29sIGlzU2hvd2luZ01pc3NpbmdPckltYWdlRXJyb3IoKSBjb25zdDsKICAgICBi
b29sIGlzU2hvd2luZ0FsdFRleHQoKSBjb25zdDsKQEAgLTEyMCw4ICsxMjEsNiBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGlu
ZUZsb3dCb3gqKSBjb25zdCBmaW5hbDsKIAotICAgIHZpcnR1YWwgYm9vbCBzaGFkb3dDb250cm9s
c05lZWRDdXN0b21MYXlvdXRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogICAg
IEludFNpemUgaW1hZ2VTaXplRm9yRXJyb3IoQ2FjaGVkSW1hZ2UqKSBjb25zdDsKICAgICB2b2lk
IHJlcGFpbnRPck1hcmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdlVHlwZSwgY29uc3QgSW50UmVj
dCogPSBudWxscHRyKTsKICAgICB2b2lkIHVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25z
dCBMYXlvdXRTaXplJik7CkBAIC0xMzAsNyArMTI5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpOwogICAgIAotICAgIHZvaWQgbGF5b3V0U2hhZG93Q29udHJvbHMoY29uc3Qg
TGF5b3V0U2l6ZSYgb2xkU2l6ZSk7CisgICAgdm9pZCBsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0
IExheW91dFNpemUmIG9sZFNpemUpOworCisgICAgYm9vbCBoYXNTaGFkb3dDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9scyB8fCBtX2hhc0ltYWdlT3ZlcmxheTsgfQog
CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0
ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVu
aXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3Rp
bWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQzLDYg
KzE0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25lZWRzVG9TZXRTaXplRm9yQWx0VGV4dCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzR2VuZXJhdGVkQ29udGVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1NoYWRvd0NvbnRyb2xzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzSW1hZ2VP
dmVybGF5IHsgZmFsc2UgfTsKICAgICBmbG9hdCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyB7IDEg
fTsKIAogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJJbWFnZVNjYWxlT2JzZXJ2ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IDY2ZTA2NDI3YzE1ODAzM2JhZTRlNzZh
MTY5MjgxYzBjNDNlNDRiYzEuLjEwMWRkMDQ3MDI3ZTI3NzE5OWU1YzMyNmY0YzcyMGQ3ODdiNmYw
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBAIC01Niw3ICs1Niw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0
TWV0cmljcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBm
aW5hbDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419514</attachid>
            <date>2021-02-06 13:16:43 -0800</date>
            <delta_ts>2021-02-06 15:53:03 -0800</delta_ts>
            <desc>Move code out of HTMLImageElement</desc>
            <filename>bug-221236-20210206131642.patch</filename>
            <type>text/plain</type>
            <size>24520</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkN2VjODZiMmU4Yjkw
ZjkyNDg2NWIzOWI1ZDc1ODFmNzUxNmNkZC4uZDk0NDZlM2MwYjJhZjU5MzNmMzgwYmVhMzdiMzc3
ODE5OGIxMDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTAyLTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBp
bWFnZSBvdmVybGF5cyBhbmQgYWRkIFVBIHNoYWRvdyByb290IHN1cHBvcnQgZm9yIGltYWdlIGV4
dHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBU
aGlzIHBhdGNoIHJlc3RvcmVzIHNvbWUgb2YgdGhlIGxvZ2ljIHByZXZpb3VzbHkgaW50cm9kdWNl
ZCBpbiByMTY0NDU3IChhbmQgcmVtb3ZlZCB3aXRoIHIyNzIxMTcpIHRvIHJlbmRlcgorICAgICAg
ICBzZXJ2aWNlIGJ1dHRvbiBjZWxscyBvdmVyIGltYWdlcywgYW5kIGFkZGl0aW9uYWxseSByZW5h
bWVzIGFuZCByZXB1cnBvc2VzIGl0IGZvciBpbWFnZSBleHRyYWN0aW9uLCBhIG5ldworICAgICAg
ICBhY2Nlc3NpYmlsaXR5IGZlYXR1cmUuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlT3ZlcmxheUVsZW1lbnRJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpoYXNJbWFnZU92ZXJs
YXkgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciB0byBkZXRlcm1pbmUgd2hldGhlciBv
ciBub3QgYW4gZWxlbWVudCdzIFVBIHNoYWRvdyByb290IGhhcyBhbiBpbWFnZSBvdmVybGF5IGVs
ZW1lbnQuIFRoaXMgaXMKKyAgICAgICAgY29uc3VsdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBg
UmVuZGVySW1hZ2VgLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0
aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0
byBpbnN0YWxsIGltYWdlIGV4dHJhY3Rpb24gY29udGVudCBpbiB0aGUgc2hhZG93IHJvb3Qgb2Yg
YW4gZWxlbWVudCwgZ2l2ZW4gYW4KKyAgICAgICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGAuIFRo
aXMgY29uc2lzdHMgb2YgYW4gaW1hZ2Ugb3ZlcmxheSBjb250YWluZXIgKGEgcmVsYXRpdmVseSBw
b3NpdGlvbmVkIGBkaXZgKSwgd2hpY2ggdGhlbgorICAgICAgICBjb250YWlucyBzb21lIG51bWJl
ciBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgY2hpbGQgYGRpdmAgZWxlbWVudHMuIEFkZGl0aW9u
YWxseSBsb2FkIHRoZSBpbWFnZSBvdmVybGF5CisgICAgICAgIHN0eWxlc2hlZXQgYXMgdGV4dCB3
aXRoaW4gYSBzdHlsZSBlbGVtZW50IHdoZW4gY3JlYXRpbmcgdGhlIFVBIHNoYWRvdyByb290Lgor
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2lt
YWdlT3ZlcmxheS5jc3M6IEFkZGVkLgorICAgICAgICAoZGl2I2ltYWdlLW92ZXJsYXkpOgorICAg
ICAgICAoZGl2LmltYWdlLW92ZXJsYXktdGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IFVBIHN0
eWxlc2hlZXQgZm9yIHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyBET00gc3VidHJlZS4gVGhlIG92
ZXJsYXkgY29udGFpbnMgYSBudW1iZXIgb2YgYWJzb2x1dGVseQorICAgICAgICBwb3NpdG9uZWQg
YGRpdmAgZWxlbWVudHMsIHdoaWNoIGFyZSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgb3ZlcmxheSBl
bGVtZW50IHVzaW5nIHVzaW5nIENTUyB0cmFuc2Zvcm1zLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuIGNv
bnN0KToKKworICAgICAgICBSZXR1cm4gYHRydWVgIGlmIHdlIHJlcXVpcmUgY2hpbGRyZW4gaW4g
dGhlIHNoYWRvdyByb290IChmb3IgZWl0aGVyIG1lZGlhIGNvbnRyb2xzLCBvciB0aGlzIG5ldyBp
bWFnZSBvdmVybGF5KS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMpOiBEZWxl
dGVkLgorCisgICAgICAgIFJlbmFtZSBgbGF5b3V0U2hhZG93Q29udHJvbHNgIHRvIGBsYXlvdXRT
aGFkb3dDb250ZW50YCwgYW5kIGFsbG93IGl0IHRvIHN1cHBvcnQgYm90aCB0aGUgInNoYWRvdyBj
b250cm9scyIgY2FzZQorICAgICAgICAoaS5lLiBgUmVuZGVyTWVkaWFgKSBhbmQgdGhlICJpbWFn
ZSBleHRyYWN0aW9uIGNvbnRlbnQiIGNhc2UuIEFkZGl0b25hbGx5LCByZW1vdmUgdGhlIGNoZWNr
IGZvcgorICAgICAgICBgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpYCB3
aGVuIHNldHRpbmcgY2hpbGQgcmVuZGVyZXIgd2lkdGgvaGVpZ2h0LiBUaGlzIGlzIGN1cnJlbnRs
eSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGxheWluZyBvdXQgbWVkaWEgY29udHJvbHMgaW4gYFJl
bmRlck1lZGlhYCwgYnV0IHdlJ2xsIG5lZWQgaXQgbm93IGZvciBhbGwgYFJlbmRlckltYWdlYHMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpzZXRIYXNJbWFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6Omhhc1NoYWRvd0NvbnRlbnQgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBtZXRob2QgdG8gcmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBgUmVuZGVySW1hZ2VgIHNob3Vs
ZCBleHBlY3Qgc2hhZG93IHJvb3QgY29udGVudC4gVGhpcyBpcyB0cnVlCisgICAgICAgIGZvciBi
b3RoIG1lZGlhIGNvbnRyb2xzIChgbV9oYXNTaGFkb3dDb250cm9sc2ApIGFuZCBmb3IgdGhlIG5l
dyBpbWFnZSBvdmVybGF5IGNvbnRlbnQgKGBtX2hhc0ltYWdlT3ZlcmxheWApLgorCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6
CisKKyAgICAgICAgU2VlIGBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHNgIGFib3Zl
LgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBib3hl
cyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBvZiB0
aGUgb3JpZ2luYWwgaW5saW5lIGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiYWE0NTNkNmNm
MWMyMmU2NTkzMTE1NDRiMDI2Yjc4YWQ0YjU4ZDY0Li5kZDA1OTkyYmFjNmRiMmE5OTllOWVlNzJm
MTMxZDIyY2M2NWM3Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQzNSw2ICsxNDM1LDcg
QEAgc2V0KFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMKICAgICAke1dFQkNPUkVfRElS
fS9jc3MvcGx1Z0lucy5jc3MKICAgICAke1dFQkNPUkVfRElSfS9jc3MvcXVpcmtzLmNzcwogICAg
ICR7V0VCQ09SRV9ESVJ9L2Nzcy9zdmcuY3NzCisgICAgJHtXRUJDT1JFX0RJUn0vaHRtbC9zaGFk
b3cvaW1hZ2VPdmVybGF5LmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2h0bWwvc2hhZG93L21ldGVy
RWxlbWVudFNoYWRvdy5jc3MKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNjZjYTZhNDQ1NDVlNDliYTI3ZTJjZWVhOWE5OWU2MjE4
ODE2N2YwNi4uNjhjZmQ0YTA3MjYyNTM0OGFjZTU3YjkzZmRhNzczZWNiMmM2ODE3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDM4
LDYgKzEwMzgsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0LmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlOYW1lcy5p
bgogJChQUk9KRUNUX0RJUikvaHRtbC9wYXJzZXIvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisk
KFBST0pFQ1RfRElSKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCiAkKFBST0pFQ1RfRElS
KS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzCiAkKFBST0pFQ1RfRElSKS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2tMaXN0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMDQ1NmFlNjcwOTFm
MDIyOWY3NWYyMTg1Mzk3MGI4ODUxMThiMjFhZi4uZmJhOWVlNWEwMTM0OWZiNjFhYmNiYWEyZDVi
MjQ0M2UwMjBjZTliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTI2LDYg
KzE1MjYsNyBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9wbHVnSW5zLmNzcyBcCiAgICAgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyBcCiAgICAgJChX
ZWJDb3JlKS9jc3Mvc3ZnLmNzcyBcCisgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9pbWFnZU92
ZXJsYXkuY3NzIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRv
dy5jc3MgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNzcyBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmQzYmMxNjBkOGJhZjQ3YjQxNjIyODgwNzc2NTYwMmI1
ZDJiNDQ5Mi4uYzA3YzJhODExZmQ2M2JiYWUxZmJmMmU5YzJlZWExOWExODVkZDZkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTI4OSw2ICs1Mjg5LDcgQEAKIAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0
ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEz
NDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRE
NDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0REQ4NjY1MjVD
QzYwQTMwMDU5QkZEQSAvKiBpbWFnZU92ZXJsYXkuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1h
Z2VPdmVybGF5LmNzcyAqLzsgfTsKIAkJRjRFNTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1
N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQz
NEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RkIzNEZDMjM1MEM4NUQwMEYw
MDk0QSAvKiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjM0RkEyMzUwQzg1RDAwRjAwOTRBIC8qIFBhc3RlYm9h
cmRDdXN0b21EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE2NjI0LDYgKzE2NjI1LDcgQEAKIAkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0Qy
MTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjREOTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VPdmVybGF5
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuY3NzOyBwYXRoID0gaW1hZ2VPdmVybGF5LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRFMTk2NUEyMUYyMzk1MDAwMjg1MDc4IC8qIEpTVW5kb0l0ZW1DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvSXRlbUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjVGMjFGMjZFNEUwMDI4NTA3OCAv
KiBVbmRvSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvSXRlbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjYxMjFGMjdEM0MwMDI4NTA3OCAvKiBDdXN0b21V
bmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21VbmRvU3Rl
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNDIsNiArMTkzNDQsNyBAQAog
CQkJCUU1RjA2QUVEMjRENEE2MzcwMEJCQzRGOCAvKiBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVt
ZW50LmggKi8sCiAJCQkJQTdDOUFCRjYxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJD
b250cm9sLmNwcCAqLywKIAkJCQlBN0M5QUJGNzEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01h
cmtlckNvbnRyb2wuaCAqLywKKwkJCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VP
dmVybGF5LmNzcyAqLywKIAkJCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE3MjUzQTkxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuaCAqLywK
IAkJCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAq
LywKQEAgLTM1NzA5LDYgKzM1NzEyLDcgQEAKIAkJCQkyRDUwQTRCODFDRTEwRTAwMDAxOTgwNDkg
LyogQXR0YWNobWVudFBsYWNlaG9sZGVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTFB
QTlBQjkxRDIzOTExNTAwRkVBREIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sIGlu
IFJlc291cmNlcyAqLywKIAkJCQlBMTFFOEMwNTFCMUUyOEY0MDAwM0E3QzcgLyogY29weUN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUY0REQ4NjY1MjVDQzYwQTMwMDU5QkZEQSAvKiBp
bWFnZU92ZXJsYXkuY3NzIGluIFJlc291cmNlcyAqLywKIAkJCQkyRDlGMEUxMzE0RkYxQ0JGMDBC
QTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovLAogCQkJCUU1OURENEI4MjEw
OTgyODcwMDNDOEI0NyAvKiBMaXN0QnV0dG9uQXJyb3cucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFNTE2Njk5MTIwRkY5OTE4MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGFmMmZlNGZi
ZjNkZDdhNjQ1ZDU3NTE4OGUzZjFjZjIwOWZhYzVlOGUuLmI4OTVhNmM1ZGUwODA5N2YxODhmYjU4
MmE0OGNiZmNmY2QwZmRiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTEJESUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
QlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAg
LTU1LDE2ICs1NiwxOSBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUg
Ik5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCisjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVk
ZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgpAQCAtNzMsNiArNzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSFRNTEVsZW1lbnQpOwpAQCAtMTE4Niw2ICsxMTk0LDg2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6
OnNldEVudGVyS2V5SGludChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZW50ZXJrZXloaW50QXR0ciwgdmFsdWUpOwogfQogCitzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRl
bnRpZmllcigiaW1hZ2Utb3ZlcmxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKworYm9vbCBIVE1MRWxlbWVudDo6aGFzSW1h
Z2VPdmVybGF5KCkgY29uc3QKK3sKKyAgICBhdXRvIHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRTaGFk
b3dSb290KCk7CisgICAgaWYgKExJS0VMWSghc2hhZG93Um9vdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pigq
c2hhZG93Um9vdCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLmdldElkQXR0cmlidXRlKCkgPT0gaW1h
Z2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQorCit2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihyZW5kZXJlcikpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5k
ZXJlcikuc2V0SGFzSW1hZ2VPdmVybGF5KCk7CisgICAgfQorCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IFN0cmluZz4gc2hhZG93U3R5bGUoaW1hZ2VPdmVybGF5VXNlckFnZW50U3R5
bGVTaGVldCwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgYXV0byBzdHlsZSA9
IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBkb2N1bWVudCgp
LCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFRleHRDb250ZW50KHNoYWRvd1N0eWxlKTsKKworICAg
IGF1dG8gc2hhZG93Um9vdCA9IG1ha2VSZWYoZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpKTsK
KyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHN0eWxlKSk7CisKKyAgICBhdXRv
IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgY29u
dGFpbmVyLT5zZXRJZEF0dHJpYnV0ZShpbWFnZU92ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpKTsK
KyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChjb250YWluZXIpOworCisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBpbWFnZU92ZXJsYXlUZXh0
Q2xhc3MoImltYWdlLW92ZXJsYXktdGV4dCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKKworICAgIEludFNpemUgY29udGFpbmVyU2l6ZSB7IG9mZnNldFdpZHRoKCksIG9mZnNl
dEhlaWdodCgpIH07CisgICAgZm9yIChhdXRvJiBkYXRhIDogcmVzdWx0LnRleHREYXRhKSB7Cisg
ICAgICAgIGF1dG8gY2hpbGQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwor
ICAgICAgICBjaGlsZC0+Y2xhc3NMaXN0KCkuYWRkKGltYWdlT3ZlcmxheVRleHRDbGFzcyk7CisK
KyAgICAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAgICAgIGNoaWxkLT5h
cHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgZGF0YS50ZXh0KSk7CisgICAgICAg
IGNoaWxkLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkpOwor
CisgICAgICAgIEludFNpemUgb3JpZ2luYWxTaXplIHsgY2hpbGQtPm9mZnNldFdpZHRoKCksIGNo
aWxkLT5vZmZzZXRIZWlnaHQoKSB9OworICAgICAgICBpZiAob3JpZ2luYWxTaXplLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdGFyZ2V0UmVjdCA9IGRh
dGEubm9ybWFsaXplZFF1YWQuYm91bmRpbmdCb3goKTsKKyAgICAgICAgdGFyZ2V0UmVjdC5zY2Fs
ZShjb250YWluZXJTaXplKTsKKworICAgICAgICBJbnRQb2ludCB0cmFuc2xhdGlvbk9mZnNldCB7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldFJlY3QueCgpICsgKHRhcmdldFJl
Y3Qud2lkdGgoKSAtIG9yaWdpbmFsU2l6ZS53aWR0aCgpKSAvIDIpLAorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0LnkoKSArICh0YXJnZXRSZWN0LmhlaWdodCgpIC0gb3Jp
Z2luYWxTaXplLmhlaWdodCgpKSAvIDIpCisgICAgICAgIH07CisKKyAgICAgICAgY2hpbGQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIG1ha2VTdHJpbmcoCisg
ICAgICAgICAgICAidHJhbnNsYXRlKCJfcywgdHJhbnNsYXRpb25PZmZzZXQueCgpLCAicHgsICJf
cywgdHJhbnNsYXRpb25PZmZzZXQueSgpLCAicHgpICJfcworICAgICAgICAgICAgInNjYWxlKCJf
cywgdGFyZ2V0UmVjdC53aWR0aCgpIC8gb3JpZ2luYWxTaXplLndpZHRoKCksICIsICJfcywgdGFy
Z2V0UmVjdC5oZWlnaHQoKSAvIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSwgIikiX3MKKyAgICAgICAg
KSk7CisgICAgfQorCisgICAgaWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCku
ZnJhbWUoKSkpCisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVw
ZGF0ZSgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaAppbmRleCA3NmFjMDc0Njc5NGU3MWQwNTA3ZTYxYTBhZGE4MDQzZmY3NmEyODk4Li40ZjY0
MjJjNTg1MWVkZmExY2M0MzIxZDc0NGJjZWEzNDk5NTQxMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oCkBAIC0zNSw2ICszNSwxMCBAQCBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7
CiBjbGFzcyBGb3JtTmFtZWRJdGVtOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OwogCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCitzdHJ1Y3QgSW1hZ2VFeHRyYWN0aW9uUmVzdWx0OworI2Vu
ZGlmCisKIGVudW0gY2xhc3MgRW50ZXJLZXlIaW50IDogdWludDhfdDsKIAogY2xhc3MgSFRNTEVs
ZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CkBAIC0xMjIsNiArMTI2LDEyIEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZW50ZXJLZXlIaW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRFbnRlcktl
eUhpbnQoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKKyAgICBib29sIGhhc0ltYWdlT3ZlcmxheSgp
IGNvbnN0OworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJl
c3VsdCYmKTsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvaW1hZ2VPdmVybGF5LmNzcyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1
ZWRlNmZkZTYxY2FhYjgxODIxYjFlODUxZmQzZDY2YTc0MjQ1MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5jc3MKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZGl2I2ltYWdlLW92ZXJsYXkg
eworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgdGV4dC1h
bGlnbjogY2VudGVyOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgbGluZS1oZWlnaHQ6
IDEwMCU7Cit9CisKK2Rpdi5pbWFnZS1vdmVybGF5LXRleHQgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk5M2RlOTA1MDY3YjJhNDE5MTYzYmU4M2I4MTBhOGUwZDJl
MzM5Zi4uNjgzNjZmN2NjYjkwODFjMDRhNzBhZjJlNTlkMjczMjVhOWU0ZmI3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBj
b25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNl
KHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigq
c3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBt
X2hhc0ltYWdlT3ZlcmxheShpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KGVsZW1lbnQpLmhhc0ltYWdlT3ZlcmxheSgpKQogICAgICwgbV9pbWFnZURldmlj
ZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQo
KTsKQEAgLTc4OCwxNyArNzg5LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnVwZGF0ZUFsdFRleHQo
KQogCiBib29sIFJlbmRlckltYWdlOjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAogewotI2lmICFF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIHJl
dHVybiBtX2hhc1NoYWRvd0NvbnRyb2xzOwotI2VuZGlmCisgICAgcmV0dXJuIGhhc1NoYWRvd0Nv
bnRlbnQoKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkKIHsKLSAgICAvLyBSZWNv
bXB1dGluZyBvdmVyZmxvdyBpcyByZXF1aXJlZCBvbmx5IHdoZW4gY2hpbGQgY29udGVudCBpcyBw
cmVzZW50LiAKLSAgICBpZiAobmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dE9ubHkoKSAm
JiAhbV9oYXNTaGFkb3dDb250cm9scykgeworICAgIC8vIFJlY29tcHV0aW5nIG92ZXJmbG93IGlz
IHJlcXVpcmVkIG9ubHkgd2hlbiBjaGlsZCBjb250ZW50IGlzIHByZXNlbnQuCisgICAgaWYgKG5l
ZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXRPbmx5KCkgJiYgIWhhc1NoYWRvd0NvbnRlbnQo
KSkgewogICAgICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC04MTAsNDUgKzgwNyw0MSBAQCB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogCiAgICAg
dXBkYXRlSW5uZXJDb250ZW50UmVjdCgpOwogCi0gICAgaWYgKG1faGFzU2hhZG93Q29udHJvbHMp
Ci0gICAgICAgIGxheW91dFNoYWRvd0NvbnRyb2xzKG9sZFNpemUpOworICAgIGlmIChoYXNTaGFk
b3dDb250ZW50KCkpCisgICAgICAgIGxheW91dFNoYWRvd0NvbnRlbnQob2xkU2l6ZSk7CiB9CiAK
LXZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRyb2xzKGNvbnN0IExheW91dFNpemUm
IG9sZFNpemUpCit2b2lkIFJlbmRlckltYWdlOjpsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0IExh
eW91dFNpemUmIG9sZFNpemUpCiB7Ci0gICAgLy8gV2UgZXhwZWN0IGEgc2luZ2xlIGNvbnRhaW5p
bmcgYm94IHVuZGVyIHRoZSBVQSBzaGFkb3cgcm9vdC4KLSAgICBBU1NFUlQoZmlyc3RDaGlsZCgp
ID09IGxhc3RDaGlsZCgpKTsKKyAgICBmb3IgKGF1dG8qIHJlbmRlcmVyID0gZmlyc3RDaGlsZCgp
OyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+bmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQorICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICBhdXRvKiBjb250cm9sc1JlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94PihmaXJzdENo
aWxkKCkpOwotICAgIGlmICghY29udHJvbHNSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGJvb2wgY29udHJvbHNOZWVkTGF5b3V0ID0gY29udHJvbHNSZW5kZXJlci0+bmVlZHNM
YXlvdXQoKTsKLSAgICAvLyBJZiB0aGUgcmVnaW9uIGNoYWluIGhhcyBjaGFuZ2VkIHdlIGFsc28g
bmVlZCB0byByZWxheW91dCB0aGUgY29udHJvbHMgdG8gdXBkYXRlIHRoZSByZWdpb24gYm94IGlu
Zm8uCi0gICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgb25jZSB3ZSBjb21wdXRlIHJlZ2lv
biBib3ggaW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQsIG5vdCBvbmx5IGZvciBSZW5kZXJCbG9jay4K
LSAgICBjb25zdCBSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3Np
bmdGcmFnbWVudGVkRmxvdygpOwotICAgIGlmIChmcmFnbWVudGVkRmxvdyAmJiAhY29udHJvbHNO
ZWVkTGF5b3V0KSB7Ci0gICAgICAgIGlmIChmcmFnbWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxTaXpl
Q2hhbmdlZCgpKQotICAgICAgICAgICAgY29udHJvbHNOZWVkTGF5b3V0ID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBMYXlvdXRTaXplIG5ld1NpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKLSAg
ICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFjb250cm9sc05lZWRMYXlvdXQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIFdoZW4gY2FsbGluZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUs
IGEgcGFyZW50IG11c3QgZWl0aGVyIHB1c2ggYSBMYXlvdXRTdGF0ZU1haW50YWludGVyLCBvciAK
LSAgICAvLyBpbnN0YW50aWF0ZSBMYXlvdXRTdGF0ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExh
eW91dFN0YXRlTWFpbnRhaW5lciBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudCwKLSAgICAvLyBh
bmQgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJp
bmcgdmlkZW8gcGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKLSAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhh
c1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOworICAgICAgICBhdXRvKiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKTsKKyAgICAgICAgYm9vbCBjaGlsZE5lZWRzTGF5b3V0ID0gcmVuZGVy
Qm94LT5uZWVkc0xheW91dCgpOworICAgICAgICAvLyBJZiB0aGUgcmVnaW9uIGNoYWluIGhhcyBj
aGFuZ2VkIHdlIGFsc28gbmVlZCB0byByZWxheW91dCB0aGUgY2hpbGRyZW4gdG8gdXBkYXRlIHRo
ZSByZWdpb24gYm94IGluZm8uCisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIG9u
Y2Ugd2UgY29tcHV0ZSByZWdpb24gYm94IGluZm8gZm9yIFJlbmRlclJlcGxhY2VkLCBub3Qgb25s
eSBmb3IgUmVuZGVyQmxvY2suCisgICAgICAgIGF1dG8qIGZyYWdtZW50ZWRGbG93ID0gZW5jbG9z
aW5nRnJhZ21lbnRlZEZsb3coKTsKKyAgICAgICAgaWYgKGZyYWdtZW50ZWRGbG93ICYmICFjaGls
ZE5lZWRzTGF5b3V0KSB7CisgICAgICAgICAgICBpZiAoZnJhZ21lbnRlZEZsb3ctPnBhZ2VMb2dp
Y2FsU2l6ZUNoYW5nZWQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZE5lZWRzTGF5b3V0ID0gdHJ1
ZTsKKyAgICAgICAgfQogCi0gICAgaWYgKHNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1l
dHJpY3MoKSkgewotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5zZXRMb2NhdGlvbihMYXlvdXRQ
b2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIExheW91dFNpemUocGFkZGluZ0xlZnQo
KSwgcGFkZGluZ1RvcCgpKSk7Ci0gICAgICAgIGNvbnRyb2xzUmVuZGVyZXItPm11dGFibGVTdHls
ZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKLSAgICAgICAg
Y29udHJvbHNSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKG5ld1NpemUu
d2lkdGgoKSwgRml4ZWQpKTsKKyAgICAgICAgYXV0byBuZXdTaXplID0gY29udGVudEJveFJlY3Qo
KS5zaXplKCk7CisgICAgICAgIGlmIChuZXdTaXplID09IG9sZFNpemUgJiYgIWNoaWxkTmVlZHNM
YXlvdXQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBXaGVuIGNhbGxpbmcg
bGF5b3V0KCkgb24gYSBjaGlsZCBub2RlLCBhIHBhcmVudCBtdXN0IGVpdGhlciBwdXNoIGEgTGF5
b3V0U3RhdGVNYWludGFpbmVyLCBvcgorICAgICAgICAvLyBpbnN0YW50aWF0ZSBMYXlvdXRTdGF0
ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExheW91dFN0YXRlTWFpbnRhaW5lciBpcyBzbGlnaHRs
eSBtb3JlIGVmZmljaWVudCwKKyAgICAgICAgLy8gYW5kIHRoaXMgbWV0aG9kIG1pZ2h0IGJlIGNh
bGxlZCBtYW55IHRpbWVzIHBlciBzZWNvbmQgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCB1c2UgYSBM
YXlvdXRTdGF0ZU1haW50YWluZXI6CisgICAgICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0
ZVB1c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVm
bGVjdGlvbigpIHx8IHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CisgICAg
ICAgIHJlbmRlckJveC0+c2V0TG9jYXRpb24oTGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpLCBib3Jk
ZXJUb3AoKSkgKyBMYXlvdXRTaXplKHBhZGRpbmdMZWZ0KCksIHBhZGRpbmdUb3AoKSkpOworICAg
ICAgICByZW5kZXJCb3gtPm11dGFibGVTdHlsZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5o
ZWlnaHQoKSwgRml4ZWQpKTsKKyAgICAgICAgcmVuZGVyQm94LT5tdXRhYmxlU3R5bGUoKS5zZXRX
aWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAgICByZW5kZXJCb3gt
PnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgIHJlbmRlckJveC0+bGF5b3V0
KCk7CiAgICAgfQogCi0gICAgY29udHJvbHNSZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFya09u
bHlUaGlzKTsKLSAgICBjb250cm9sc1JlbmRlcmVyLT5sYXlvdXQoKTsKICAgICBjbGVhckNoaWxk
TmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApp
bmRleCA5ZDI3OWE1NzBkMWY0OGQ3MjU4ZWQ5NDM5MDJiZTI5MTE4ODc2MzEzLi5lZmFiZDJhYWU0
ODJkYjgwMWJjNzkzYjE5MzcyMzU1NjMwYzVmZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgaW1hZ2VE
ZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURldmljZVBpeGVsUmF0aW87
IH0KIAogICAgIHZvaWQgc2V0SGFzU2hhZG93Q29udHJvbHMoYm9vbCBoYXNTaGFkb3dDb250cm9s
cykgeyBtX2hhc1NoYWRvd0NvbnRyb2xzID0gaGFzU2hhZG93Q29udHJvbHM7IH0KKyAgICB2b2lk
IHNldEhhc0ltYWdlT3ZlcmxheSgpIHsgbV9oYXNJbWFnZU92ZXJsYXkgPSB0cnVlOyB9CiAgICAg
CiAgICAgYm9vbCBpc1Nob3dpbmdNaXNzaW5nT3JJbWFnZUVycm9yKCkgY29uc3Q7CiAgICAgYm9v
bCBpc1Nob3dpbmdBbHRUZXh0KCkgY29uc3Q7CkBAIC0xMjAsOCArMTIxLDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVG
bG93Qm94KikgY29uc3QgZmluYWw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hhZG93Q29udHJvbHNO
ZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBJ
bnRTaXplIGltYWdlU2l6ZUZvckVycm9yKENhY2hlZEltYWdlKikgY29uc3Q7CiAgICAgdm9pZCBy
ZXBhaW50T3JNYXJrRm9yTGF5b3V0KEltYWdlU2l6ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3Qq
ID0gbnVsbHB0cik7CiAgICAgdm9pZCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3Qg
TGF5b3V0U2l6ZSYpOwpAQCAtMTMwLDcgKzEyOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBh
aW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KTsKICAgICAKLSAgICB2b2lkIGxheW91dFNoYWRvd0NvbnRyb2xzKGNvbnN0IExh
eW91dFNpemUmIG9sZFNpemUpOworICAgIHZvaWQgbGF5b3V0U2hhZG93Q29udGVudChjb25zdCBM
YXlvdXRTaXplJiBvbGRTaXplKTsKKworICAgIGJvb2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHMgfHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAog
ICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQ
cmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1h
dGVkVXNlZFdpZHRoID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKQEAgLTE0Myw2ICsx
NDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9uZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc0dlbmVyYXRlZENvbnRlbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNTaGFkb3dDb250cm9scyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0ltYWdlT3Zl
cmxheSB7IGZhbHNlIH07CiAgICAgZmxvYXQgbV9pbWFnZURldmljZVBpeGVsUmF0aW8geyAxIH07
CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVySW1hZ2VTY2FsZU9ic2VydmVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAppbmRleCA2NmUwNjQyN2MxNTgwMzNiYWU0ZTc2YTE2
OTI4MWMwYzQzZTQ0YmMxLi4xMDFkZDA0NzAyN2UyNzcxOTllNWMzMjZmNGM3MjBkNzg3YjZmMDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaApAQCAtNTYsNyArNTYsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNoYWRvd0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1l
dHJpY3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmlu
YWw7CiB9OwogCg==
</data>
<flag name="review"
          id="437752"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419516</attachid>
            <date>2021-02-06 17:14:18 -0800</date>
            <delta_ts>2021-02-06 19:29:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221236-20210206171417.patch</filename>
            <type>text/plain</type>
            <size>24262</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNkN2VjODZiMmU4Yjkw
ZjkyNDg2NWIzOWI1ZDc1ODFmNzUxNmNkZC4uZDk0NDZlM2MwYjJhZjU5MzNmMzgwYmVhMzdiMzc3
ODE5OGIxMDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTAyLTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBp
bWFnZSBvdmVybGF5cyBhbmQgYWRkIFVBIHNoYWRvdyByb290IHN1cHBvcnQgZm9yIGltYWdlIGV4
dHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBU
aGlzIHBhdGNoIHJlc3RvcmVzIHNvbWUgb2YgdGhlIGxvZ2ljIHByZXZpb3VzbHkgaW50cm9kdWNl
ZCBpbiByMTY0NDU3IChhbmQgcmVtb3ZlZCB3aXRoIHIyNzIxMTcpIHRvIHJlbmRlcgorICAgICAg
ICBzZXJ2aWNlIGJ1dHRvbiBjZWxscyBvdmVyIGltYWdlcywgYW5kIGFkZGl0aW9uYWxseSByZW5h
bWVzIGFuZCByZXB1cnBvc2VzIGl0IGZvciBpbWFnZSBleHRyYWN0aW9uLCBhIG5ldworICAgICAg
ICBhY2Nlc3NpYmlsaXR5IGZlYXR1cmUuIFNlZSBjb21tZW50cyBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlT3ZlcmxheUVsZW1lbnRJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpoYXNJbWFnZU92ZXJs
YXkgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciB0byBkZXRlcm1pbmUgd2hldGhlciBv
ciBub3QgYW4gZWxlbWVudCdzIFVBIHNoYWRvdyByb290IGhhcyBhbiBpbWFnZSBvdmVybGF5IGVs
ZW1lbnQuIFRoaXMgaXMKKyAgICAgICAgY29uc3VsdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBg
UmVuZGVySW1hZ2VgLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0
aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0
byBpbnN0YWxsIGltYWdlIGV4dHJhY3Rpb24gY29udGVudCBpbiB0aGUgc2hhZG93IHJvb3Qgb2Yg
YW4gZWxlbWVudCwgZ2l2ZW4gYW4KKyAgICAgICAgYEltYWdlRXh0cmFjdGlvblJlc3VsdGAuIFRo
aXMgY29uc2lzdHMgb2YgYW4gaW1hZ2Ugb3ZlcmxheSBjb250YWluZXIgKGEgcmVsYXRpdmVseSBw
b3NpdGlvbmVkIGBkaXZgKSwgd2hpY2ggdGhlbgorICAgICAgICBjb250YWlucyBzb21lIG51bWJl
ciBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgY2hpbGQgYGRpdmAgZWxlbWVudHMuIEFkZGl0aW9u
YWxseSBsb2FkIHRoZSBpbWFnZSBvdmVybGF5CisgICAgICAgIHN0eWxlc2hlZXQgYXMgdGV4dCB3
aXRoaW4gYSBzdHlsZSBlbGVtZW50IHdoZW4gY3JlYXRpbmcgdGhlIFVBIHNoYWRvdyByb290Lgor
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L2lt
YWdlT3ZlcmxheS5jc3M6IEFkZGVkLgorICAgICAgICAoZGl2I2ltYWdlLW92ZXJsYXkpOgorICAg
ICAgICAoZGl2LmltYWdlLW92ZXJsYXktdGV4dCk6CisKKyAgICAgICAgQWRkIGEgbmV3IFVBIHN0
eWxlc2hlZXQgZm9yIHRoZSBpbWFnZSBvdmVybGF5IHNoYWRvdyBET00gc3VidHJlZS4gVGhlIG92
ZXJsYXkgY29udGFpbnMgYSBudW1iZXIgb2YgYWJzb2x1dGVseQorICAgICAgICBwb3NpdG9uZWQg
YGRpdmAgZWxlbWVudHMsIHdoaWNoIGFyZSBwb3NpdGlvbmVkIGluc2lkZSB0aGUgb3ZlcmxheSBl
bGVtZW50IHVzaW5nIHVzaW5nIENTUyB0cmFuc2Zvcm1zLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuIGNv
bnN0KToKKworICAgICAgICBSZXR1cm4gYHRydWVgIGlmIHdlIHJlcXVpcmUgY2hpbGRyZW4gaW4g
dGhlIHNoYWRvdyByb290IChmb3IgZWl0aGVyIG1lZGlhIGNvbnRyb2xzLCBvciB0aGlzIG5ldyBp
bWFnZSBvdmVybGF5KS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmxheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHMpOiBEZWxl
dGVkLgorCisgICAgICAgIFJlbmFtZSBgbGF5b3V0U2hhZG93Q29udHJvbHNgIHRvIGBsYXlvdXRT
aGFkb3dDb250ZW50YCwgYW5kIGFsbG93IGl0IHRvIHN1cHBvcnQgYm90aCB0aGUgInNoYWRvdyBj
b250cm9scyIgY2FzZQorICAgICAgICAoaS5lLiBgUmVuZGVyTWVkaWFgKSBhbmQgdGhlICJpbWFn
ZSBleHRyYWN0aW9uIGNvbnRlbnQiIGNhc2UuIEFkZGl0b25hbGx5LCByZW1vdmUgdGhlIGNoZWNr
IGZvcgorICAgICAgICBgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpYCB3
aGVuIHNldHRpbmcgY2hpbGQgcmVuZGVyZXIgd2lkdGgvaGVpZ2h0LiBUaGlzIGlzIGN1cnJlbnRs
eSBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGxheWluZyBvdXQgbWVkaWEgY29udHJvbHMgaW4gYFJl
bmRlck1lZGlhYCwgYnV0IHdlJ2xsIG5lZWQgaXQgbm93IGZvciBhbGwgYFJlbmRlckltYWdlYHMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpzZXRIYXNJbWFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6Omhhc1NoYWRvd0NvbnRlbnQgY29uc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBtZXRob2QgdG8gcmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBgUmVuZGVySW1hZ2VgIHNob3Vs
ZCBleHBlY3Qgc2hhZG93IHJvb3QgY29udGVudC4gVGhpcyBpcyB0cnVlCisgICAgICAgIGZvciBi
b3RoIG1lZGlhIGNvbnRyb2xzIChgbV9oYXNTaGFkb3dDb250cm9sc2ApIGFuZCBmb3IgdGhlIG5l
dyBpbWFnZSBvdmVybGF5IGNvbnRlbnQgKGBtX2hhc0ltYWdlT3ZlcmxheWApLgorCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0
cmljcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhLmg6
CisKKyAgICAgICAgU2VlIGBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udHJvbHNgIGFib3Zl
LgorCiAyMDIxLTAyLTA2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXSBDb250aW51YXRpb24gcHJlIGFuZCBwb3N0IGJsb2NrIGlubGluZSBib3hl
cyBzaG91bGQgbm90IGhhdmUgYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBkZWNvcmF0aW9ucyBvZiB0
aGUgb3JpZ2luYWwgaW5saW5lIGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiYWE0NTNkNmNm
MWMyMmU2NTkzMTE1NDRiMDI2Yjc4YWQ0YjU4ZDY0Li5kZDA1OTkyYmFjNmRiMmE5OTllOWVlNzJm
MTMxZDIyY2M2NWM3Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQzNSw2ICsxNDM1LDcg
QEAgc2V0KFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMKICAgICAke1dFQkNPUkVfRElS
fS9jc3MvcGx1Z0lucy5jc3MKICAgICAke1dFQkNPUkVfRElSfS9jc3MvcXVpcmtzLmNzcwogICAg
ICR7V0VCQ09SRV9ESVJ9L2Nzcy9zdmcuY3NzCisgICAgJHtXRUJDT1JFX0RJUn0vaHRtbC9zaGFk
b3cvaW1hZ2VPdmVybGF5LmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2h0bWwvc2hhZG93L21ldGVy
RWxlbWVudFNoYWRvdy5jc3MKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNjZjYTZhNDQ1NDVlNDliYTI3ZTJjZWVhOWE5OWU2MjE4
ODE2N2YwNi4uNjhjZmQ0YTA3MjYyNTM0OGFjZTU3YjkzZmRhNzczZWNiMmM2ODE3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDM4
LDYgKzEwMzgsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0LmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlOYW1lcy5p
bgogJChQUk9KRUNUX0RJUikvaHRtbC9wYXJzZXIvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisk
KFBST0pFQ1RfRElSKS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCiAkKFBST0pFQ1RfRElS
KS9odG1sL3NoYWRvdy9tZXRlckVsZW1lbnRTaGFkb3cuY3NzCiAkKFBST0pFQ1RfRElSKS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2tMaXN0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMDQ1NmFlNjcwOTFm
MDIyOWY3NWYyMTg1Mzk3MGI4ODUxMThiMjFhZi4uZmJhOWVlNWEwMTM0OWZiNjFhYmNiYWEyZDVi
MjQ0M2UwMjBjZTliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNTI2LDYg
KzE1MjYsNyBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKICAgICAkKFdlYkNvcmUpL2Nz
cy9wbHVnSW5zLmNzcyBcCiAgICAgJChXZWJDb3JlKS9jc3MvcXVpcmtzLmNzcyBcCiAgICAgJChX
ZWJDb3JlKS9jc3Mvc3ZnLmNzcyBcCisgICAgJChXZWJDb3JlKS9odG1sL3NoYWRvdy9pbWFnZU92
ZXJsYXkuY3NzIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvc2hhZG93L21ldGVyRWxlbWVudFNoYWRv
dy5jc3MgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNzcyBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmQzYmMxNjBkOGJhZjQ3YjQxNjIyODgwNzc2NTYwMmI1
ZDJiNDQ5Mi4uYzA3YzJhODExZmQ2M2JiYWUxZmJmMmU5YzJlZWExOWExODVkZDZkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTI4OSw2ICs1Mjg5LDcgQEAKIAkJRjREMDc1NTkyMzREODIzMzAwODgxRTczIC8qIENsaXBib2Fy
ZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0ODAyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0
ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNEQ0MEJDOTI1NTQ2M0JGMDA3MjEz
NDkgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDIyQjhCNTI1M0Y3MDY1MDA0RTc3RTggLyogRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRE
NDNENjQyMTg4MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0REQ4NjY1MjVD
QzYwQTMwMDU5QkZEQSAvKiBpbWFnZU92ZXJsYXkuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1h
Z2VPdmVybGF5LmNzcyAqLzsgfTsKIAkJRjRFNTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1
N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQz
NEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RkIzNEZDMjM1MEM4NUQwMEYw
MDk0QSAvKiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjM0RkEyMzUwQzg1RDAwRjAwOTRBIC8qIFBhc3RlYm9h
cmRDdXN0b21EYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE2NjI0LDYgKzE2NjI1LDcgQEAKIAkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREOTgxN0Qy
MTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjREOTgxN0UyMTk1RkJGNjAwODIzMEZDIC8qIENoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VPdmVybGF5
LmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuY3NzOyBwYXRoID0gaW1hZ2VPdmVybGF5LmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRFMTk2NUEyMUYyMzk1MDAwMjg1MDc4IC8qIEpTVW5kb0l0ZW1DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvSXRlbUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjVGMjFGMjZFNEUwMDI4NTA3OCAv
KiBVbmRvSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvSXRlbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTE5NjYxMjFGMjdEM0MwMDI4NTA3OCAvKiBDdXN0b21V
bmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21VbmRvU3Rl
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNDIsNiArMTkzNDQsNyBAQAog
CQkJCUU1RjA2QUVEMjRENEE2MzcwMEJCQzRGOCAvKiBEYXRlVGltZVN5bWJvbGljRmllbGRFbGVt
ZW50LmggKi8sCiAJCQkJQTdDOUFCRjYxMzU3QTNCRjAwRjU1MDNGIC8qIERldGFpbHNNYXJrZXJD
b250cm9sLmNwcCAqLywKIAkJCQlBN0M5QUJGNzEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01h
cmtlckNvbnRyb2wuaCAqLywKKwkJCQlGNEREODY2MjI1Q0M2MDg0MDA1OUJGREEgLyogaW1hZ2VP
dmVybGF5LmNzcyAqLywKIAkJCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgKi8sCiAJCQkJNDE3MjUzQTkxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuaCAqLywK
IAkJCQlFNEUyNDM4MjFEQUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAq
LywKQEAgLTM1NzA5LDYgKzM1NzEyLDcgQEAKIAkJCQkyRDUwQTRCODFDRTEwRTAwMDAxOTgwNDkg
LyogQXR0YWNobWVudFBsYWNlaG9sZGVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQTFB
QTlBQjkxRDIzOTExNTAwRkVBREIzIC8qIENvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZS5odG1sIGlu
IFJlc291cmNlcyAqLywKIAkJCQlBMTFFOEMwNTFCMUUyOEY0MDAwM0E3QzcgLyogY29weUN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUY0REQ4NjY1MjVDQzYwQTMwMDU5QkZEQSAvKiBp
bWFnZU92ZXJsYXkuY3NzIGluIFJlc291cmNlcyAqLywKIAkJCQkyRDlGMEUxMzE0RkYxQ0JGMDBC
QTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovLAogCQkJCUU1OURENEI4MjEw
OTgyODcwMDNDOEI0NyAvKiBMaXN0QnV0dG9uQXJyb3cucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQlFNTE2Njk5MTIwRkY5OTE4MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGFmMmZlNGZi
ZjNkZDdhNjQ1ZDU3NTE4OGUzZjFjZjIwOWZhYzVlOGUuLmIwZDY3YTQ5NTgzMDQyZTAyZDIxYTkx
OTM3MjM5MGQyOTQ3ZmI3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTEJESUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
QlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAg
LTU1LDE2ICs1NiwxOSBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUg
Ik5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCisjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgIlNpbXVsYXRlZENsaWNrLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVk
ZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgpAQCAtNzMsNiArNzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCisjaW5jbHVkZSAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSFRNTEVsZW1lbnQpOwpAQCAtMTE4Niw2ICsxMTk0LDgxIEBAIHZvaWQgSFRNTEVsZW1lbnQ6
OnNldEVudGVyS2V5SGludChjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZW50ZXJrZXloaW50QXR0ciwgdmFsdWUpOwogfQogCitzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaWRl
bnRpZmllcigiaW1hZ2Utb3ZlcmxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gaWRlbnRpZmllcjsKK30KKworYm9vbCBIVE1MRWxlbWVudDo6aGFzSW1h
Z2VPdmVybGF5KCkgY29uc3QKK3sKKyAgICBhdXRvIHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRTaGFk
b3dSb290KCk7CisgICAgaWYgKExJS0VMWSghc2hhZG93Um9vdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBzaGFkb3dSb290LT5oYXNFbGVtZW50V2l0aElkKCppbWFnZU92
ZXJsYXlFbGVtZW50SWRlbnRpZmllcigpLmltcGwoKSk7Cit9CisKKyNpZiBFTkFCTEUoSU1BR0Vf
RVhUUkFDVElPTikKKwordm9pZCBIVE1MRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlv
blJlc3VsdChJbWFnZUV4dHJhY3Rpb25SZXN1bHQmJiByZXN1bHQpCit7CisgICAgaWYgKHJlc3Vs
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4ocmVuZGVy
ZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdl
PigqcmVuZGVyZXIpLnNldEhhc0ltYWdlT3ZlcmxheSgpOworICAgIH0KKworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHNoYWRvd1N0eWxlKGltYWdlT3ZlcmxheVVzZXJB
Z2VudFN0eWxlU2hlZXQsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGF1dG8g
c3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgZG9j
dW1lbnQoKSwgZmFsc2UpOworICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChzaGFkb3dTdHlsZSk7
CisKKyAgICBhdXRvIHNoYWRvd1Jvb3QgPSBtYWtlUmVmKGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSk7CisgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdHlsZSkpOworCisg
ICAgYXV0byBjb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwor
ICAgIGNvbnRhaW5lci0+c2V0SWRBdHRyaWJ1dGUoaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZp
ZXIoKSk7CisgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW1hZ2VPdmVy
bGF5VGV4dENsYXNzKCJpbWFnZS1vdmVybGF5LXRleHQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CisKKyAgICBJbnRTaXplIGNvbnRhaW5lclNpemUgeyBvZmZzZXRXaWR0aCgp
LCBvZmZzZXRIZWlnaHQoKSB9OworICAgIGZvciAoYXV0byYgZGF0YSA6IHJlc3VsdC50ZXh0RGF0
YSkgeworICAgICAgICBhdXRvIGNoaWxkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKKyAgICAgICAgY2hpbGQtPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlUZXh0Q2xh
c3MpOworCisgICAgICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY2hpbGQpOworICAgICAgICBj
aGlsZC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRhdGEudGV4dCkpOwor
ICAgICAgICBjaGlsZC0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KCkpKTsKKworICAgICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZSB7IGNoaWxkLT5vZmZzZXRXaWR0
aCgpLCBjaGlsZC0+b2Zmc2V0SGVpZ2h0KCkgfTsKKyAgICAgICAgaWYgKG9yaWdpbmFsU2l6ZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHRhcmdldFJl
Y3QgPSBkYXRhLm5vcm1hbGl6ZWRRdWFkLmJvdW5kaW5nQm94KCk7CisgICAgICAgIHRhcmdldFJl
Y3Quc2NhbGUoY29udGFpbmVyU2l6ZSk7CisKKyAgICAgICAgSW50UG9pbnQgdHJhbnNsYXRpb25P
ZmZzZXQgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0LngoKSArICh0
YXJnZXRSZWN0LndpZHRoKCkgLSBvcmlnaW5hbFNpemUud2lkdGgoKSkgLyAyKSwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4odGFyZ2V0UmVjdC55KCkgKyAodGFyZ2V0UmVjdC5oZWlnaHQo
KSAtIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSkgLyAyKQorICAgICAgICB9OworCisgICAgICAgIGNo
aWxkLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3Ry
aW5nKAorICAgICAgICAgICAgInRyYW5zbGF0ZSgiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0LngoKSwg
InB4LCAiX3MsIHRyYW5zbGF0aW9uT2Zmc2V0LnkoKSwgInB4KSAiX3MKKyAgICAgICAgICAgICJz
Y2FsZSgiX3MsIHRhcmdldFJlY3Qud2lkdGgoKSAvIG9yaWdpbmFsU2l6ZS53aWR0aCgpLCAiLCAi
X3MsIHRhcmdldFJlY3QuaGVpZ2h0KCkgLyBvcmlnaW5hbFNpemUuaGVpZ2h0KCksICIpIl9zCisg
ICAgICAgICkpOworICAgIH0KKworICAgIGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1
bWVudCgpLmZyYW1lKCkpKQorICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2NoZWR1bGVD
dXJzb3JVcGRhdGUoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKaW5kZXggNzZhYzA3NDY3OTRlNzFkMDUwN2U2MWEwYWRhODA0M2ZmNzZhMjg5
OC4uNGY2NDIyYzU4NTFlZGZhMWNjNDMyMWQ3NDRiY2VhMzQ5OTU0MTAzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaApAQCAtMzUsNiArMzUsMTAgQEAgY2xhc3MgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OwogY2xhc3MgRm9ybU5hbWVkSXRlbTsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKIAor
I2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorc3RydWN0IEltYWdlRXh0cmFjdGlvblJlc3Vs
dDsKKyNlbmRpZgorCiBlbnVtIGNsYXNzIEVudGVyS2V5SGludCA6IHVpbnQ4X3Q7CiAKIGNsYXNz
IEhUTUxFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewpAQCAtMTIyLDYgKzEyNiwxMiBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGVudGVyS2V5SGludCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
RW50ZXJLZXlIaW50KGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCisgICAgYm9vbCBoYXNJbWFnZU92
ZXJsYXkoKSBjb25zdDsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChJbWFnZUV4dHJh
Y3Rpb25SZXN1bHQmJik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEhUTUxFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L2ltYWdlT3ZlcmxheS5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIxNWVkZTZmZGU2MWNhYWI4MTgyMWIxZTg1MWZkM2Q2NmE3NDI0NTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9pbWFnZU92ZXJsYXkuY3NzCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2RpdiNpbWFnZS1v
dmVybGF5IHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgY29sb3I6IHRyYW5zcGFyZW50OworICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIGxpbmUt
aGVpZ2h0OiAxMDAlOworfQorCitkaXYuaW1hZ2Utb3ZlcmxheS10ZXh0IHsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDI5OTNkZTkwNTA2N2IyYTQxOTE2M2JlODNiODEw
YThlMGQyZTMzOWYuLjRiODc5ZDhjYzdiZDhkNmI5YzdmZjlkNjk2M2FmYmNhNmVmZTE5YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTM4LDYgKzEzOCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJ
bWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVw
bGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKICAgICAsIG1faW1hZ2VS
ZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQor
ICAgICwgbV9oYXNJbWFnZU92ZXJsYXkoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25j
YXN0PEhUTUxFbGVtZW50PihlbGVtZW50KS5oYXNJbWFnZU92ZXJsYXkoKSkKICAgICAsIG1faW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICB1cGRhdGVB
bHRUZXh0KCk7CkBAIC03ODgsMTcgKzc4OSwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVB
bHRUZXh0KCkKIAogYm9vbCBSZW5kZXJJbWFnZTo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKIHsK
LSNpZiAhRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UK
LSAgICByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9sczsKLSNlbmRpZgorICAgIHJldHVybiBoYXNT
aGFkb3dDb250ZW50KCk7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiB7Ci0gICAg
Ly8gUmVjb21wdXRpbmcgb3ZlcmZsb3cgaXMgcmVxdWlyZWQgb25seSB3aGVuIGNoaWxkIGNvbnRl
bnQgaXMgcHJlc2VudC4gCi0gICAgaWYgKG5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXRP
bmx5KCkgJiYgIW1faGFzU2hhZG93Q29udHJvbHMpIHsKKyAgICAvLyBSZWNvbXB1dGluZyBvdmVy
ZmxvdyBpcyByZXF1aXJlZCBvbmx5IHdoZW4gY2hpbGQgY29udGVudCBpcyBwcmVzZW50LgorICAg
IGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0T25seSgpICYmICFoYXNTaGFkb3dD
b250ZW50KCkpIHsKICAgICAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtODEwLDQ1ICs4MDcsMzcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkK
IAogICAgIHVwZGF0ZUlubmVyQ29udGVudFJlY3QoKTsKIAotICAgIGlmIChtX2hhc1NoYWRvd0Nv
bnRyb2xzKQotICAgICAgICBsYXlvdXRTaGFkb3dDb250cm9scyhvbGRTaXplKTsKKyAgICBpZiAo
aGFzU2hhZG93Q29udGVudCgpKQorICAgICAgICBsYXlvdXRTaGFkb3dDb250ZW50KG9sZFNpemUp
OwogfQogCi12b2lkIFJlbmRlckltYWdlOjpsYXlvdXRTaGFkb3dDb250cm9scyhjb25zdCBMYXlv
dXRTaXplJiBvbGRTaXplKQordm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0U2hhZG93Q29udGVudChj
b25zdCBMYXlvdXRTaXplJiBvbGRTaXplKQogewotICAgIC8vIFdlIGV4cGVjdCBhIHNpbmdsZSBj
b250YWluaW5nIGJveCB1bmRlciB0aGUgVUEgc2hhZG93IHJvb3QuCi0gICAgQVNTRVJUKGZpcnN0
Q2hpbGQoKSA9PSBsYXN0Q2hpbGQoKSk7Ci0KLSAgICBhdXRvKiBjb250cm9sc1JlbmRlcmVyID0g
ZG93bmNhc3Q8UmVuZGVyQm94PihmaXJzdENoaWxkKCkpOwotICAgIGlmICghY29udHJvbHNSZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJvb2wgY29udHJvbHNOZWVkTGF5b3V0
ID0gY29udHJvbHNSZW5kZXJlci0+bmVlZHNMYXlvdXQoKTsKLSAgICAvLyBJZiB0aGUgcmVnaW9u
IGNoYWluIGhhcyBjaGFuZ2VkIHdlIGFsc28gbmVlZCB0byByZWxheW91dCB0aGUgY29udHJvbHMg
dG8gdXBkYXRlIHRoZSByZWdpb24gYm94IGluZm8uCi0gICAgLy8gRklYTUU6IFdlIGNhbiBkbyBi
ZXR0ZXIgb25jZSB3ZSBjb21wdXRlIHJlZ2lvbiBib3ggaW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQs
IG5vdCBvbmx5IGZvciBSZW5kZXJCbG9jay4KLSAgICBjb25zdCBSZW5kZXJGcmFnbWVudGVkRmxv
dyogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOwotICAgIGlmIChm
cmFnbWVudGVkRmxvdyAmJiAhY29udHJvbHNOZWVkTGF5b3V0KSB7Ci0gICAgICAgIGlmIChmcmFn
bWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxTaXplQ2hhbmdlZCgpKQotICAgICAgICAgICAgY29udHJv
bHNOZWVkTGF5b3V0ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBMYXlvdXRTaXplIG5ld1NpemUgPSBj
b250ZW50Qm94UmVjdCgpLnNpemUoKTsKLSAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplICYmICFj
b250cm9sc05lZWRMYXlvdXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdoZW4gY2FsbGlu
ZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUsIGEgcGFyZW50IG11c3QgZWl0aGVyIHB1c2ggYSBM
YXlvdXRTdGF0ZU1haW50YWludGVyLCBvciAKLSAgICAvLyBpbnN0YW50aWF0ZSBMYXlvdXRTdGF0
ZURpc2FibGVyLiBTaW5jZSB1c2luZyBhIExheW91dFN0YXRlTWFpbnRhaW5lciBpcyBzbGlnaHRs
eSBtb3JlIGVmZmljaWVudCwKLSAgICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVk
IG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVzZSBhIExheW91
dFN0YXRlTWFpbnRhaW5lcjoKLSAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIo
KnRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24o
KSB8fCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworICAgIGZvciAoYXV0
byYgcmVuZGVyQm94IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyQm94PigqdGhpcykpIHsKKyAgICAg
ICAgYm9vbCBjaGlsZE5lZWRzTGF5b3V0ID0gcmVuZGVyQm94Lm5lZWRzTGF5b3V0KCk7CisgICAg
ICAgIC8vIElmIHRoZSByZWdpb24gY2hhaW4gaGFzIGNoYW5nZWQgd2UgYWxzbyBuZWVkIHRvIHJl
bGF5b3V0IHRoZSBjaGlsZHJlbiB0byB1cGRhdGUgdGhlIHJlZ2lvbiBib3ggaW5mby4KKyAgICAg
ICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgb25jZSB3ZSBjb21wdXRlIHJlZ2lvbiBib3gg
aW5mbyBmb3IgUmVuZGVyUmVwbGFjZWQsIG5vdCBvbmx5IGZvciBSZW5kZXJCbG9jay4KKyAgICAg
ICAgYXV0byogZnJhZ21lbnRlZEZsb3cgPSBlbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpOworICAg
ICAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgIWNoaWxkTmVlZHNMYXlvdXQpIHsKKyAgICAgICAg
ICAgIGlmIChmcmFnbWVudGVkRmxvdy0+cGFnZUxvZ2ljYWxTaXplQ2hhbmdlZCgpKQorICAgICAg
ICAgICAgICAgIGNoaWxkTmVlZHNMYXlvdXQgPSB0cnVlOworICAgICAgICB9CiAKLSAgICBpZiAo
c2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpKSB7Ci0gICAgICAgIGNvbnRy
b2xzUmVuZGVyZXItPnNldExvY2F0aW9uKExheW91dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVy
VG9wKCkpICsgTGF5b3V0U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKLSAgICAg
ICAgY29udHJvbHNSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aChuZXdT
aXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgICAgICBjb250cm9sc1JlbmRlcmVyLT5tdXRhYmxl
U3R5bGUoKS5zZXRXaWR0aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgICAg
ICBhdXRvIG5ld1NpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKKyAgICAgICAgaWYgKG5l
d1NpemUgPT0gb2xkU2l6ZSAmJiAhY2hpbGROZWVkc0xheW91dCkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIC8vIFdoZW4gY2FsbGluZyBsYXlvdXQoKSBvbiBhIGNoaWxkIG5vZGUs
IGEgcGFyZW50IG11c3QgZWl0aGVyIHB1c2ggYSBMYXlvdXRTdGF0ZU1haW50YWluZXIsIG9yCisg
ICAgICAgIC8vIGluc3RhbnRpYXRlIExheW91dFN0YXRlRGlzYWJsZXIuIFNpbmNlIHVzaW5nIGEg
TGF5b3V0U3RhdGVNYWludGFpbmVyIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LAorICAgICAg
ICAvLyBhbmQgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29u
ZCBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKKyAg
ICAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9m
ZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgcmVuZGVyQm94LnNldExvY2F0aW9u
KExheW91dFBvaW50KGJvcmRlckxlZnQoKSwgYm9yZGVyVG9wKCkpICsgTGF5b3V0U2l6ZShwYWRk
aW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKKyAgICAgICAgcmVuZGVyQm94Lm11dGFibGVTdHls
ZSgpLnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKKyAgICAgICAg
cmVuZGVyQm94Lm11dGFibGVTdHlsZSgpLnNldFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCks
IEZpeGVkKSk7CisgICAgICAgIHJlbmRlckJveC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMp
OworICAgICAgICByZW5kZXJCb3gubGF5b3V0KCk7CiAgICAgfQogCi0gICAgY29udHJvbHNSZW5k
ZXJlci0+c2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKLSAgICBjb250cm9sc1JlbmRlcmVy
LT5sYXlvdXQoKTsKICAgICBjbGVhckNoaWxkTmVlZHNMYXlvdXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCA5ZDI3OWE1NzBkMWY0OGQ3MjU4ZWQ5NDM5
MDJiZTI5MTE4ODc2MzEzLi5lZmFiZDJhYWU0ODJkYjgwMWJjNzkzYjE5MzcyMzU1NjMwYzVmZDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtNzAsNiArNzAsNyBA
QCBwdWJsaWM6CiAgICAgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZURldmljZVBpeGVsUmF0aW87IH0KIAogICAgIHZvaWQgc2V0SGFzU2hhZG93Q29u
dHJvbHMoYm9vbCBoYXNTaGFkb3dDb250cm9scykgeyBtX2hhc1NoYWRvd0NvbnRyb2xzID0gaGFz
U2hhZG93Q29udHJvbHM7IH0KKyAgICB2b2lkIHNldEhhc0ltYWdlT3ZlcmxheSgpIHsgbV9oYXNJ
bWFnZU92ZXJsYXkgPSB0cnVlOyB9CiAgICAgCiAgICAgYm9vbCBpc1Nob3dpbmdNaXNzaW5nT3JJ
bWFnZUVycm9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nob3dpbmdBbHRUZXh0KCkgY29uc3Q7CkBA
IC0xMjAsOCArMTIxLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBJbnRTaXplIGltYWdlU2l6ZUZvckVycm9yKENhY2hl
ZEltYWdlKikgY29uc3Q7CiAgICAgdm9pZCByZXBhaW50T3JNYXJrRm9yTGF5b3V0KEltYWdlU2l6
ZUNoYW5nZVR5cGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cik7CiAgICAgdm9pZCB1cGRhdGVJ
bnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYpOwpAQCAtMTMwLDcgKzEyOSw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKICAgICAKLSAgICB2b2lkIGxh
eW91dFNoYWRvd0NvbnRyb2xzKGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpOworICAgIHZvaWQg
bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBvbGRTaXplKTsKKworICAgIGJv
b2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2hhZG93Q29udHJvbHMg
fHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25z
dCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gV1RGOjpudWxsb3B0KSBj
b25zdCBvdmVycmlkZTsKQEAgLTE0Myw2ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9u
ZWVkc1RvU2V0U2l6ZUZvckFsdFRleHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0dlbmVyYXRl
ZENvbnRlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNTaGFkb3dDb250cm9scyB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2hhc0ltYWdlT3ZlcmxheSB7IGZhbHNlIH07CiAgICAgZmxvYXQgbV9p
bWFnZURldmljZVBpeGVsUmF0aW8geyAxIH07CiAKICAgICBmcmllbmQgY2xhc3MgUmVuZGVySW1h
Z2VTY2FsZU9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAppbmRl
eCA2NmUwNjQyN2MxNTgwMzNiYWU0ZTc2YTE2OTI4MWMwYzQzZTQ0YmMxLi4xMDFkZDA0NzAyN2Uy
NzcxOTllNWMzMjZmNGM3MjBkNzg3YjZmMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVkaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVkaWEuaApAQCAtNTYsNyArNTYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFnZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNoYWRv
d0NvbnRyb2xzTmVlZEN1c3RvbUxheW91dE1ldHJpY3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>