<?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>216208</bug_id>
          
          <creation_ts>2020-09-04 17:49:11 -0700</creation_ts>
          <short_desc>Move all remaining flags from ElementRareData to Node to reduce the frequency</short_desc>
          <delta_ts>2020-09-08 00:22:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          <blocked>216264</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685960</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-04 17:49:11 -0700</bug_when>
    <thetext>Move the remaining bit flags from ElementRareData to Node::m_nodeFlags to avoid the creation of ElementRareData in more cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685961</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-04 17:50:03 -0700</bug_when>
    <thetext>We can also dramatically reduce the frequency of the creation of ElementRareData when tabIndex is set if we just special case 0 and -1. I&apos;ve done some study on various poplar websites, and they also almost use 0 and -1 as follows:

d = {}; document.querySelectorAll(&apos;[tabindex]&apos;).forEach((e) =&gt; { if (e.tabIndex in d) d[e.tabIndex]++; else d[e.tabIndex]=0; });

Gmail
    {0: 176, -1: 1300} = $5

Slack
    {0: 4, 1: 0, -1: 130} = 

Facebook
    {0: 151, -1: 12}

Twitter
    {0: 31}

Quip
    {0: 53}

CNN
    {0: 7, -1: 10}

NYTimes
    {0: 1, 99: 0, 100: 0, -1: 0} 

YouTube
    {0: 59, -1: 186}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685975</commentid>
    <comment_count>2</comment_count>
      <attachid>408061</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-04 18:41:34 -0700</bug_when>
    <thetext>Created attachment 408061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685978</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 19:03:34 -0700</bug_when>
    <thetext>Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685993</commentid>
    <comment_count>4</comment_count>
      <attachid>408063</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-04 19:59:27 -0700</bug_when>
    <thetext>Created attachment 408063
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685998</commentid>
    <comment_count>5</comment_count>
      <attachid>408063</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-04 21:21:03 -0700</bug_when>
    <thetext>Comment on attachment 408063
Fixed builds

ElementRareData size assertion is failing on Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686028</commentid>
    <comment_count>6</comment_count>
      <attachid>408069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-05 00:43:19 -0700</bug_when>
    <thetext>Created attachment 408069
Fixed builds 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686067</commentid>
    <comment_count>7</comment_count>
      <attachid>408069</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-05 08:33:39 -0700</bug_when>
    <thetext>Comment on attachment 408069
Fixed builds 2

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

Great!

&gt; Source/WebCore/dom/Element.cpp:247
&gt; +        clearFlag(TabIndexIsZeroOrInRareDataFlag);

I think it would be easier to reason about this if it was treated as a 4-value enumeration rather than two flags. The technique is great but the logic is confusing this way.

&gt; Source/WebCore/dom/Element.cpp:269
&gt; +    bool isOne = getFlag(TabIndexIsZeroOrInRareDataFlag);

Did you mean to name this “isZero”?

&gt; Source/WebCore/dom/ElementRareData.h:60
&gt; +    int tabIndex() const { return m_tabIndex; }

The name here isn’t great because this is not the tab index in the 0, -1, or “no tab index” cases. And also 0 is a special value meaning “not stored here”, not a tab index of 0. I think a different name could make some of that clearer. Like maybe “unusual tab index”. And a comment somewhere explaining the special meaning of 0? Maybe an assertion that the getter isn’t called when m_tabIndex is 0?

&gt; Source/WebCore/dom/ElementRareData.h:61
&gt; +    void setTabIndex(int);

Ditto on the name.

&gt; Source/WebCore/dom/ElementRareData.h:161
&gt; +    int m_tabIndex { 0 };

Ditto.

&gt; Source/WebCore/dom/Node.cpp:137
&gt; +    case NodeRareData::UseType::PseudoElements:

Sorting the cases makes sense when an enumeration gets long like this.

&gt; Source/WebCore/dom/Node.h:548
&gt; +#if ENABLE(FULLSCREEN_API)

Would it be better to not put this inside an #if? I can never tell; certainly more conditionals make the code messier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686131</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-05 15:03:54 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 408069 [details]
&gt; Fixed builds 2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408069&amp;action=review
&gt; 
&gt; Great!
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:247
&gt; &gt; +        clearFlag(TabIndexIsZeroOrInRareDataFlag);
&gt; 
&gt; I think it would be easier to reason about this if it was treated as a
&gt; 4-value enumeration rather than two flags. The technique is great but the
&gt; logic is confusing this way.

Okay, I was debating between those two options myself. Let&apos;s add an enum class like this:

    static constexpr unsigned s_tabIndexStateBitOffset = 30;

...

        TabIndexStateFirstBit = 1 &lt;&lt; s_tabIndexStateBitOffset,

        DefaultNodeFlags = IsParsingChildrenFinishedFlag
    };

    enum class TabIndexState : uint8_t {
        NotSet = 0,
        Zero = 1,
        NegativeOne = 2,
        SetInRareData = 3,
    };

...

    TabIndexState tabIndexState() { return static_cast&lt;TabIndexState&gt;(m_nodeFlags &gt;&gt; s_tabIndexStateBitOffset); }
    void setTabIndexState(TabIndexState state) { return m_nodeFlags = static_cast&lt;uint32_t&gt;(state) &lt;&lt; s_tabIndexStateBitOffset; }

&gt; &gt; Source/WebCore/dom/Element.cpp:269
&gt; &gt; +    bool isOne = getFlag(TabIndexIsZeroOrInRareDataFlag);
&gt; 
&gt; Did you mean to name this “isZero”?

Oops, yeah, but this code is rewritten now.

&gt; &gt; Source/WebCore/dom/ElementRareData.h:60
&gt; &gt; +    int tabIndex() const { return m_tabIndex; }
&gt; 
&gt; The name here isn’t great because this is not the tab index in the 0, -1, or
&gt; “no tab index” cases. And also 0 is a special value meaning “not stored
&gt; here”, not a tab index of 0. I think a different name could make some of
&gt; that clearer. Like maybe “unusual tab index”. And a comment somewhere
&gt; explaining the special meaning of 0? Maybe an assertion that the getter
&gt; isn’t called when m_tabIndex is 0?

Sure. This was another thing I was thinking of doing anyway.
I was thinking of &quot;uncommon&quot; but &quot;unusual&quot; works too.
And let&apos;s add an assertion as you say in the getter
since I already have an assertion &amp; comment in the setter.

&gt; &gt; Source/WebCore/dom/Node.h:548
&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; 
&gt; Would it be better to not put this inside an #if? I can never tell;
&gt; certainly more conditionals make the code messier.

I&apos;d leave this for now but I agree with this. There is no point in build-guarding every code like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686134</commentid>
    <comment_count>9</comment_count>
      <attachid>408069</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-05 15:20:58 -0700</bug_when>
    <thetext>Comment on attachment 408069
Fixed builds 2

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

&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:247
&gt;&gt;&gt; +        clearFlag(TabIndexIsZeroOrInRareDataFlag);
&gt;&gt; 
&gt;&gt; I think it would be easier to reason about this if it was treated as a 4-value enumeration rather than two flags. The technique is great but the logic is confusing this way.
&gt; 
&gt; Okay, I was debating between those two options myself. Let&apos;s add an enum class like this:
&gt; 
&gt;     static constexpr unsigned s_tabIndexStateBitOffset = 30;
&gt; 
&gt; ...
&gt; 
&gt;         TabIndexStateFirstBit = 1 &lt;&lt; s_tabIndexStateBitOffset,
&gt; 
&gt;         DefaultNodeFlags = IsParsingChildrenFinishedFlag
&gt;     };
&gt; 
&gt;     enum class TabIndexState : uint8_t {
&gt;         NotSet = 0,
&gt;         Zero = 1,
&gt;         NegativeOne = 2,
&gt;         SetInRareData = 3,
&gt;     };
&gt; 
&gt; ...
&gt; 
&gt;     TabIndexState tabIndexState() { return static_cast&lt;TabIndexState&gt;(m_nodeFlags &gt;&gt; s_tabIndexStateBitOffset); }
&gt;     void setTabIndexState(TabIndexState state) { return m_nodeFlags = static_cast&lt;uint32_t&gt;(state) &lt;&lt; s_tabIndexStateBitOffset; }

Looks like there is some masking missing from the code you wrote there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686140</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-05 16:31:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 408069 [details]
&gt; Fixed builds 2
&gt;
&gt; &gt;     TabIndexState tabIndexState() { return static_cast&lt;TabIndexState&gt;(m_nodeFlags &gt;&gt; s_tabIndexStateBitOffset); }
&gt; &gt;     void setTabIndexState(TabIndexState state) { return m_nodeFlags = static_cast&lt;uint32_t&gt;(state) &lt;&lt; s_tabIndexStateBitOffset; }
&gt; 
&gt; Looks like there is some masking missing from the code you wrote there.

Indeed. This will obviously not work LOL. I&apos;m uploading a new patch for another round of review since I&apos;ve changed a lot of things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686141</commentid>
    <comment_count>11</comment_count>
      <attachid>408104</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-05 16:31:21 -0700</bug_when>
    <thetext>Created attachment 408104
Updated per Darin&apos;s review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686155</commentid>
    <comment_count>12</comment_count>
      <attachid>408104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-05 18:28:18 -0700</bug_when>
    <thetext>Comment on attachment 408104
Updated per Darin&apos;s review comments

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

&gt; Source/WebCore/dom/Element.cpp:244
&gt; +void Element::setTabIndexExplicitly(Optional&lt;int&gt; tabIndex)

This function can leave behind a stale leftover unusual tab index stored in the rare data that should never be looked at. I suppose that’s OK.

&gt; Source/WebCore/dom/Element.cpp:274
&gt; +        RELEASE_ASSERT(hasRareData());
&gt; +        return elementRareData()-&gt;unusualTabIndex();

Why is this RELEASE_ASSERT needed? Doesn’t seem valuable to me.

&gt; Source/WebCore/dom/ElementRareData.h:233
&gt; +    ASSERT(m_unusualTabIndex &amp;&amp; m_unusualTabIndex != -1); // Common values of 0 and -1 are stored as TabIndexState in Node.

The main purpose of this assertion is to catch cases where we are getting the index before it was set. Otherwise, it’s a waste to assert the same thing in both the setter and getter.

So it could assert only the 0 case; it’s not so much checking for an invalid index as checking that we don’t ask for an index when one is not there.

&gt; Source/WebCore/dom/Node.h:557
&gt; +    static constexpr uint32_t s_tabIndexStateBitMask = 3 &lt;&lt; s_tabIndexStateBitOffset;

I think this needs to be 3U to get rid of the warning (treated as an error) that is causing the build failure on Windows. Hope that works!

&gt; Source/WebCore/dom/Node.h:563
&gt; +    enum class TabIndexState : uint8_t {
&gt; +        NotSet = 0,
&gt; +        Zero = 1,
&gt; +        NegativeOne = 2,
&gt; +        InRareData = 3,
&gt; +    };

I don’t think you need the four explicit numeric values here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686462</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 20:02:28 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 408104 [details]
&gt; Updated per Darin&apos;s review comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408104&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:244
&gt; &gt; +void Element::setTabIndexExplicitly(Optional&lt;int&gt; tabIndex)
&gt; 
&gt; This function can leave behind a stale leftover unusual tab index stored in
&gt; the rare data that should never be looked at. I suppose that’s OK.

Yeah, TabIndexState will tell us whether to look into NodeRareData or not.

&gt; &gt; Source/WebCore/dom/Element.cpp:274
&gt; &gt; +        RELEASE_ASSERT(hasRareData());
&gt; &gt; +        return elementRareData()-&gt;unusualTabIndex();
&gt; 
&gt; Why is this RELEASE_ASSERT needed? Doesn’t seem valuable to me.

Oh, right. This used to be a security bug but I&apos;ve made NodeRareData &amp; RenderObject no longer share the same pointer so this would be a safe nullptr crash now. Converted to ASSERT now.

&gt; &gt; Source/WebCore/dom/ElementRareData.h:233
&gt; &gt; +    ASSERT(m_unusualTabIndex &amp;&amp; m_unusualTabIndex != -1); // Common values of 0 and -1 are stored as TabIndexState in Node.
&gt; 
&gt; The main purpose of this assertion is to catch cases where we are getting
&gt; the index before it was set. Otherwise, it’s a waste to assert the same
&gt; thing in both the setter and getter.
&gt; 
&gt; So it could assert only the 0 case; it’s not so much checking for an invalid
&gt; index as checking that we don’t ask for an index when one is not there.

Let&apos;s a good point. Let&apos;s just assert for 0.

&gt; &gt; Source/WebCore/dom/Node.h:557
&gt; &gt; +    static constexpr uint32_t s_tabIndexStateBitMask = 3 &lt;&lt; s_tabIndexStateBitOffset;
&gt; 
&gt; I think this needs to be 3U to get rid of the warning (treated as an error)
&gt; that is causing the build failure on Windows. Hope that works!

Yup. I have that local change but I guess I forgot to re-upload the patch.

&gt; &gt; Source/WebCore/dom/Node.h:563
&gt; &gt; +    enum class TabIndexState : uint8_t {
&gt; &gt; +        NotSet = 0,
&gt; &gt; +        Zero = 1,
&gt; &gt; +        NegativeOne = 2,
&gt; &gt; +        InRareData = 3,
&gt; &gt; +    };
&gt; 
&gt; I don’t think you need the four explicit numeric values here.

It&apos;s true but I think it would make it clear how many bits are needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686463</commentid>
    <comment_count>14</comment_count>
      <attachid>408206</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 20:02:58 -0700</bug_when>
    <thetext>Created attachment 408206
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686464</commentid>
    <comment_count>15</comment_count>
      <attachid>408206</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 20:03:19 -0700</bug_when>
    <thetext>Comment on attachment 408206
Patch for landing

Wait for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686476</commentid>
    <comment_count>16</comment_count>
      <attachid>408206</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 21:30:16 -0700</bug_when>
    <thetext>Comment on attachment 408206
Patch for landing

Clearing flags on attachment: 408206

Committed r266714: &lt;https://trac.webkit.org/changeset/266714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686477</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 21:30:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686478</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-07 21:31:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/68485722&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408061</attachid>
            <date>2020-09-04 18:41:34 -0700</date>
            <delta_ts>2020-09-04 19:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216208-20200904184133.patch</filename>
            <type>text/plain</type>
            <size>20263</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkZDVkZDIxNjU4OTNh
MTAwNTBkYWMwZjIwZGVlZjcxZjljYTM5Yy4uNzNlYjk5ODFkZTg1MWZiMTIzZjFjMTZjMDdhYTRk
ZDI4ZGQwYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA5LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYWxsIHJlbWFpbmlu
ZyBmbGFncyBmcm9tIEVsZW1lbnRSYXJlRGF0YSB0byBOb2RlIHRvIHJlZHVjZSB0aGUgZnJlcXVl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCByZW1haW5pbmcgYml0IGZsYWdzIGZyb20gRWxlbWVudFJhcmVEYXRh
IHRvIE5vZGU6Om1fbm9kZUZsYWdzLiBJdCBhbHNvIHN0b3JlcworICAgICAgICB0YWJJbmRleCBv
ZiAwIGFuZCAtMSBpbiBOb2RlOjptX25vZGVGbGFncyB0byBhdm9pZCBjcmVhdGluZyBFbGVtZW50
UmFyZURhdGEgZm9yIHRoZXNlIGNvbW1vbiB2YWx1ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFyVGFiSW5k
ZXhFeHBsaWNpdGx5SWZOZWVkZWQpOiBEZWxldGVkLiBNZXJnZWQgaW50byBzZXRUYWJJbmRleEV4
cGxpY2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0
bHkpOiBOb3cgdGFrZXMgT3B0aW9uYWw8aW50Pi4gU3RvcmVzIDAgYW5kIC0xIGFzIG5vZGUgZmxh
Z3MuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkgY29u
c3QpOiBBZGRlZCB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIDAgYW5kIC0xLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNDU1NBbmltYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzQ1NT
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFz
Q1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IE1vdmVkIGhlcmUg
ZnJvbSBFbGVtZW50LmNwcAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzUGVuZGlu
Z1Jlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xlYXJIYXNQ
ZW5kaW5nUmVzb3VyY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXND
U1NBbmltYXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEhhc0NTU0FuaW1hdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xl
YXJIYXNDU1NBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnRhYklu
ZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6dGFiSW5kZXhTZXRFeHBsaWNpdGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6Omhhc1BlbmRpbmdSZXNvdXJjZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aGFzQ1NTQW5pbWF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0
SGFzQ1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6aGFzRWxlbWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNFbGVtZW50SWRlbnRpZmllcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KTogQWRk
ZWQgdGhlIHVzZSB0eXBlcyBmb3IgbWlzc2luZyBwYXJ0IGxpc3QgYW5kIHBhcnQgbmFtZXMuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFRhYkluZGV4KToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Tm9kZUZsYWdzKTogQWRkZWQgYml0IGZsYWdzIG1vdmVkIGZyb20gRWxlbWVudFJhcmVEYXRhLgor
ICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKwogMjAy
MC0wOS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9y
ZSBhbGwgc3R5bGluZyBmbGFncyBpbiBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCA5YjBkZmUwZTIwZjQ3NmQ2Y2FkZjY1ZWIxMGRlZTAxYWI1ZDRiODNm
Li42ODIyMTliM2RmZWZmMTEyNmI4MjdlNWJjZDAzYTk5N2QzMDI5YjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yNDEsMjIgKzI0MSw0MiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhJiBF
bGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50UmFyZURhdGEmPihlbnN1cmVSYXJlRGF0YSgpKTsKIH0KIAotdm9pZCBFbGVtZW50Ojpj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCkKK3ZvaWQgRWxlbWVudDo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5kZXgpCiB7Ci0gICAgaWYgKGhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5jbGVhclRhYkluZGV4RXhwbGljaXRs
eSgpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShpbnQgdGFiSW5k
ZXgpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KHRhYkluZGV4KTsKKyAgICBpZiAoIXRhYkluZGV4KSB7CisgICAgICAgIGNsZWFyRmxhZyhUYWJJ
bmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJ
c05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB0YWJJbmRleFZhbHVlID0gdGFiSW5kZXgudmFsdWUoKTsKKyAgICBpZiAoIXRhYklu
ZGV4VmFsdWUpIHsKKyAgICAgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZs
YWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRh
RmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHRhYkluZGV4VmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgY2xlYXJGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5S
YXJlRGF0YUZsYWcpOworICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVE
YXRhRmxhZyk7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXgodGFiSW5k
ZXhWYWx1ZSk7CiB9CiAKIE9wdGlvbmFsPGludD4gRWxlbWVudDo6dGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT50YWJJbmRleCgpOwor
ICAgIGJvb2wgaXNPbmUgPSBnZXRGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgYm9vbCBpc05lZ2F0aXZlT25lID0gZ2V0RmxhZyhUYWJJbmRleElzTmVnYXRpdmVPbmVP
ckluUmFyZURhdGFGbGFnKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNPbmUgJiYgaXNOZWdhdGl2ZU9u
ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgICAgIHJl
dHVybiBlbGVtZW50UmFyZURhdGEoKS0+dGFiSW5kZXgoKTsKKyAgICB9CisgICAgaWYgKGlzT25l
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoaXNOZWdhdGl2ZU9uZSkKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGludCBFbGVtZW50OjpkZWZh
dWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMjI2Niw5ICsyMjg2LDkgQEAgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7CisgICAgaWYgKGdldEZsYWco
SGFzRWxlbWVudElkZW50aWZpZXJGbGFnKSkgewogICAgICAgICBkb2N1bWVudCgpLmlkZW50aWZp
ZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7Ci0gICAgICAgIGVsZW1lbnRS
YXJlRGF0YSgpLT5zZXRIYXNFbGVtZW50SWRlbnRpZmllcihmYWxzZSk7CisgICAgICAgIGNsZWFy
RmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcpOwogICAgIH0KIH0KIApAQCAtMzcxNiwxNCAr
MzczNiwxMiBAQCB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKICAgICBk
b2N1bWVudCgpLmZ1bGxzY3JlZW5NYW5hZ2VyKCkucmVxdWVzdEZ1bGxzY3JlZW5Gb3JFbGVtZW50
KHRoaXMsIEZ1bGxzY3JlZW5NYW5hZ2VyOjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxsc2NyZWVuUmVx
dWlyZW1lbnQpOwogfQogCi1ib29sIEVsZW1lbnQ6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgp
LT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIGZsYWcpCiB7Ci0gICAgZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCkuc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmbGFnKTsKKyAgICBpZiAoZmxh
ZykKKyAgICAgICAgc2V0RmxhZyhDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50RmxhZyk7CisgICAg
ZWxzZQorICAgICAgICBjbGVhckZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcpOwog
ICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKIH0KIApAQCAtNDM2Niw0
MCArNDM4NCw2IEBAIHZvaWQgRWxlbWVudDo6Y3JlYXRlVW5pcXVlRWxlbWVudERhdGEoKQogICAg
ICAgICBtX2VsZW1lbnREYXRhID0gZG93bmNhc3Q8U2hhcmVhYmxlRWxlbWVudERhdGE+KCptX2Vs
ZW1lbnREYXRhKS5tYWtlVW5pcXVlQ29weSgpOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNQZW5kaW5nUmVzb3VyY2VzKCk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6
c2V0SGFzUGVuZGluZ1Jlc291cmNlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCku
c2V0SGFzUGVuZGluZ1Jlc291cmNlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpjbGVhckhh
c1BlbmRpbmdSZXNvdXJjZXMoKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGZh
bHNlKTsKLX0KLQotYm9vbCBFbGVtZW50OjpoYXNDU1NBbmltYXRpb24oKSBjb25zdAotewotICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNDU1NBbmltYXRp
b24oKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRIYXNDU1NBbmltYXRpb24oKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEhhc0NTU0FuaW1hdGlvbih0cnVlKTsKLX0KLQotdm9p
ZCBFbGVtZW50OjpjbGVhckhhc0NTU0FuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFoYXNSYXJlRGF0
YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0NTU0Fu
aW1hdGlvbihmYWxzZSk7Ci19Ci0KIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdAogewogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKQEAgLTQ2
MTEsMTAgKzQ1OTUsOCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6Omdl
dEFuaW1hdGlvbnMoT3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbgogCiBFbGVtZW50SWRlbnRp
ZmllciBFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgYXV0byYgcmFy
ZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBBU1NFUlQoIXJhcmVEYXRhLmhh
c0VsZW1lbnRJZGVudGlmaWVyKCkpOwotCi0gICAgcmFyZURhdGEuc2V0SGFzRWxlbWVudElkZW50
aWZpZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFnZXRGbGFnKEhhc0VsZW1lbnRJZGVudGlmaWVyRmxh
ZykpOworICAgIHNldEZsYWcoSGFzRWxlbWVudElkZW50aWZpZXJGbGFnKTsKICAgICByZXR1cm4g
RWxlbWVudElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDM5ZWUwYjliYzExMzhhMDA4NWRiMjMxNjkzNzc1MGY4M2FmZTZmNWYuLjM0ZmU1ZTA4M2JmMDcw
OGIzNDJkMTRhZjIwZGJjNTNiNGFiMTZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzUsNiAr
MzUsOCBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CiAKKyNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMAorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOwpA
QCAtNDc5LDE0ICs0ODEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZW5k
aW5nUmVzb3VyY2VzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7
Ci0gICAgdm9pZCBjbGVhckhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKKyAgICBib29sIGhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNG
bGFnKTsgfQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpIHsgc2V0RmxhZyhIYXNQ
ZW5kaW5nUmVzb3VyY2VzRmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNl
cygpIHsgY2xlYXJGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKIAotICAgIGJvb2wgaGFzQ1NTQW5pbWF0
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oKTsKLSAgICB2b2lkIGNs
ZWFySGFzQ1NTQW5pbWF0aW9uKCk7CisgICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKEhhc0NTU0FuaW1hdGlvbkZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXND
U1NBbmltYXRpb24oKSB7IHNldEZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7IH0KKyAgICB2b2lk
IGNsZWFySGFzQ1NTQW5pbWF0aW9uKCkgeyBjbGVhckZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7
IH0KIAogICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25z
dDsKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CkBAIC01MTEsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdl
RXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZs
YWcpOyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwogICAg
IHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFt
ZUJvdW5kYXJpZXMoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCk7CkBAIC02MzUsOCArNjM3LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGlj
aXRseUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoaW50KTsKKyAg
ICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQg
Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsK
ICAgICB2b2lkIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmY2NhYjUxMTczNDgyMWE0
YmQ2ZWNjMGEwNjM4M2FmZTIwNGQ5ODRjLi44OTdjN2NkNzhhNjg0ZmRmMzFjNjMxOTY3YTQ3YmE3
OWI3ZDZmNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01NiwxNiAr
NTYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZv
aWQgcmVzZXRTdHlsZVJlbGF0aW9ucygpOwotICAgIAotICAgIE9wdGlvbmFsPGludD4gdGFiSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA/IE9wdGlvbmFs
PGludD4geyBtX3RhYkluZGV4IH0gOiBXVEY6Om51bGxvcHQ7IH0KLSAgICB2b2lkIHNldFRhYklu
ZGV4RXhwbGljaXRseShpbnQgaW5kZXgpIHsgbV90YWJJbmRleCA9IGluZGV4OyBtX3RhYkluZGV4
V2FzU2V0RXhwbGljaXRseSA9IHRydWU7IH0KLSAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRs
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5OyB9Ci0gICAgdm9p
ZCBjbGVhclRhYkluZGV4RXhwbGljaXRseSgpIHsgbV90YWJJbmRleCA9IDA7IG1fdGFiSW5kZXhX
YXNTZXRFeHBsaWNpdGx5ID0gZmFsc2U7IH0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQot
I2VuZGlmCisKKyAgICBpbnQgdGFiSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4OyB9
CisgICAgdm9pZCBzZXRUYWJJbmRleChpbnQpOwogCiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1
bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQpAQCAtOTYsMTggKzg5LDkg
QEAgcHVibGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZl
ZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Ny
b2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nUmVzb3VyY2VzOyB9Ci0gICAgdm9pZCBzZXRI
YXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wgaGFzKSB7IG1faGFzUGVuZGluZ1Jlc291cmNlcyA9IGhh
czsgfQotCi0gICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NT
U0FuaW1hdGlvbjsgfQotICAgIHZvaWQgc2V0SGFzQ1NTQW5pbWF0aW9uKGJvb2wgdmFsdWUpIHsg
bV9oYXNDU1NBbmltYXRpb24gPSB2YWx1ZTsgfQotCiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVE
YXRhLmdldCgpOyB9CiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRp
b25SYXJlRGF0YSgpOwogCi0gICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRWxlbWVudElkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldEhhc0VsZW1lbnRJ
ZGVudGlmaWVyKGJvb2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmllciA9IHZhbHVlOyB9
Ci0KICAgICBET01Ub2tlbkxpc3QqIHBhcnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0TGlz
dC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UGFydExpc3Qoc3RkOjp1bmlxdWVfcHRyPERPTVRva2Vu
TGlzdD4gcGFydExpc3QpIHsgbV9wYXJ0TGlzdCA9IFdURk1vdmUocGFydExpc3QpOyB9CiAKQEAg
LTEzMyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFVzZVR5cGU+IHVzZVR5cGVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gTm9kZVJhcmVEYXRhOjp1c2VU
eXBlcygpOwotICAgICAgICBpZiAobV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkpCisgICAgICAg
IGlmIChtX3RhYkluZGV4KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpUYWJJbmRl
eCk7CiAgICAgICAgIGlmIChtX21pbmltdW1TaXplRm9yUmVzaXppbmcgIT0gZGVmYXVsdE1pbmlt
dW1TaXplRm9yUmVzaXppbmcoKSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6TWlu
aW11bVNpemUpOwpAQCAtMTU3LDI0ICsxNDEsMjUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9y
ZXNpemVPYnNlcnZlckRhdGEpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlJlc2l6
ZU9ic2VydmVyKTsKICNlbmRpZgotICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8
IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQotICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQ
c2V1ZG9FbGVtZW50cyk7CiAgICAgICAgIGlmIChtX2FuaW1hdGlvblJhcmVEYXRhKQogICAgICAg
ICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpBbmltYXRpb25zKTsKKyAgICAgICAgaWYgKG1fYmVm
b3JlUHNldWRvRWxlbWVudCB8fCBtX2FmdGVyUHNldWRvRWxlbWVudCkKKyAgICAgICAgICAgIHJl
c3VsdC5hZGQoVXNlVHlwZTo6UHNldWRvRWxlbWVudHMpOworI2lmIEVOQUJMRShDU1NfVFlQRURf
T00pCisgICAgICAgIGlmIChtX2F0dHJpYnV0ZVN0eWxlTWFwKQorICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpTdHlsZU1hcCk7CisjZW5kaWYKKyAgICAgICAgaWYgKG1fcGFydExpc3Qp
CisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBhcnRMaXN0KTsKKyAgICAgICAgaWYg
KCFtX3BhcnROYW1lcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6
OlBhcnROYW1lcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgaW50IG1fdGFiSW5kZXg7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZElu
ZGV4OwotICAgIHVuc2lnbmVkIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5IDogMTsKLSNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdW5zaWduZWQgbV9jb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50IDogMTsKLSNlbmRpZgotICAgIHVuc2lnbmVkIG1faGFzUGVuZGluZ1Jlc291cmNlcyA6
IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNDU1NBbmltYXRpb24gOiAxOwotICAgIHVuc2lnbmVkIG1f
aGFzRWxlbWVudElkZW50aWZpZXIgOiAxOworICAgIGludCBtX3RhYkluZGV4IHsgMCB9OworICAg
IHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7IDAgfTsKIAogICAgIExheW91dFNpemUgbV9t
aW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBv
c2l0aW9uOwpAQCAtMjEwLDE1ICsxOTUsNiBAQCBwcml2YXRlOgogCiBpbmxpbmUgRWxlbWVudFJh
cmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQogICAgIDogTm9kZVJhcmVEYXRhKFR5cGU6OkVsZW1l
bnQpCi0gICAgLCBtX3RhYkluZGV4KDApCi0gICAgLCBtX2NoaWxkSW5kZXgoMCkKLSAgICAsIG1f
dGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKLSNlbmRpZgotICAg
ICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQotICAgICwgbV9oYXNDU1NBbmltYXRpb24o
ZmFsc2UpCi0gICAgLCBtX2hhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9taW5p
bXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7CiB9
CkBAIC0yNTIsNiArMjI4LDEyIEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRT
dHlsZVJlbGF0aW9ucygpCiAgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KIAoraW5saW5lIHZvaWQg
RWxlbWVudFJhcmVEYXRhOjpzZXRUYWJJbmRleChpbnQgdGFiSW5kZXgpCit7CisgICAgQVNTRVJU
KHRhYkluZGV4ICYmIHRhYkluZGV4ICE9IC0xKTsgLy8gQ29tbW9uIHZhbHVlcyBvZiAwIGFuZCAt
MSBhcmUgc3RvcmVkIGFzIGZsYWdzIGluIE5vZGUuCisgICAgbV90YWJJbmRleCA9IHRhYkluZGV4
OworfQorCiBpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6
OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uUmFyZURh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMjZhMzQ0YTZjMTIxNGFlMDk3NWI3MTA2Njk5MDI0YTM1
Yjk2NGQ2Mi4uZDUzMDQwOTc1YmFiYmFhNmZhMDQ5OWU5ZWFiYWQ5NDU5ZDQ0NjZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTMwLDEwICsxMzAsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvclJhcmVEYXRhVXNlVHlwZShOb2RlUmFyZURhdGE6OlVzZVR5cGUgdXNlVHlwZSkKICAgICAg
ICAgcmV0dXJuICJBdHRyaWJ1dGVNYXAiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBl
OjpJbnRlcmFjdGlvbk9ic2VydmVyOgogICAgICAgICByZXR1cm4gIkludGVyYWN0aW9uT2JzZXJ2
ZXIiOwotICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQc2V1ZG9FbGVtZW50czoKLSAg
ICAgICAgcmV0dXJuICJQc2V1ZG9FbGVtZW50cyI7CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVz
ZVR5cGU6OlJlc2l6ZU9ic2VydmVyOgorICAgICAgICByZXR1cm4gIlJlc2l6ZU9ic2VydmVyIjsK
ICAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6QW5pbWF0aW9uczoKICAgICAgICAgcmV0
dXJuICJBbmltYXRpb25zIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UHNldWRv
RWxlbWVudHM6CisgICAgICAgIHJldHVybiAiUHNldWRvRWxlbWVudHMiOworICAgIGNhc2UgTm9k
ZVJhcmVEYXRhOjpVc2VUeXBlOjpTdHlsZU1hcDoKKyAgICAgICAgcmV0dXJuICJTdHlsZU1hcCI7
CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OlBhcnRMaXN0OgorICAgICAgICByZXR1
cm4gIlBhcnRMaXN0IjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UGFydE5hbWVz
OgorICAgICAgICByZXR1cm4gIlBhcnROYW1lcyI7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggYzA0NmIzNjNmNTA5MGQ3Njc0OGU2ZWZlOTdkNDRkZjI4Yzdl
M2U5Mi4uYWJjM2MyMmQ5Y2U5MDU3MGY4MmY1OTUxZGMzYzQ5Njc5NTFhNjg4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC00MCw5ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCi0vLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBEb2N1
bWVudC5oIGFsc28gZGVwZW5kcyBvbiBpdC4KLSNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1Mg
MAotCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9CkBAIC01NDMsNyArNTQw
LDE2IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFj
a3NGbGFnID0gMSA8PCAyMiwKIAotICAgICAgICAvLyBCaXRzIDIzLTMxIGFyZSBmcmVlLgorICAg
ICAgICBUYWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcgPSAxIDw8IDIzLAorICAgICAgICBU
YWJJbmRleElzTmVnYXRpdmVPbmVPckluUmFyZURhdGFGbGFnID0gMSA8PCAyNCwKKyAgICAgICAg
SGFzUGVuZGluZ1Jlc291cmNlc0ZsYWcgPSAxIDw8IDI1LAorICAgICAgICBIYXNDU1NBbmltYXRp
b25GbGFnID0gMSA8PCAyNiwKKyAgICAgICAgSGFzRWxlbWVudElkZW50aWZpZXJGbGFnID0gMSA8
PCAyNywKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnRGbGFnID0gMSA8PCAyOCwKKyNlbmRpZgorCisgICAgICAgIC8vIEJpdHMgMjkt
MzEgYXJlIGZyZWUuCiAKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxk
cmVuRmluaXNoZWRGbGFnCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2
MWY2ZjFiMjJiOTYxZDc1MzI4N2IxMzkyN2E3ZjY2YTlkMWQwZTNiLi5jYTRkOTExYjI1NTEyZTI4
ZWQ2YjM0MTQzMzIyNTkzOWEwODI3ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBA
IC0yNDQsNyArMjQ0LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoTm9kZVJhcmVEYXRhKTsKIHB1
YmxpYzoKICNpZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RB
VElTVElDUwotICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQxNl90IHsKKyAgICBlbnVtIGNs
YXNzIFVzZVR5cGUgOiB1aW50MzJfdCB7CiAgICAgICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAx
IDw8IDAsCiAgICAgICAgIE5vZGVMaXN0ID0gMSA8PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2Vy
dmVyID0gMSA8PCAyLApAQCAtMjU4LDggKzI1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3Rv
bUVsZW1lbnRRdWV1ZSA9IDEgPDwgMTAsCiAgICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTEs
CiAgICAgICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEyLAotICAgICAgICBQc2V1ZG9F
bGVtZW50cyA9IDEgPDwgMTMsCisgICAgICAgIFJlc2l6ZU9ic2VydmVyID0gMSA8PCAxMywKICAg
ICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCisgICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8
PCAxNSwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAorICAgICAgICBQYXJ0TGlzdCA9IDEg
PDwgMTcsCisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCiAgICAgfTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDkzOTg0ZjM4MmNkNGVmMWRmNmNjMTdj
MDMzZjU1ZmRiZjE3NmI0ZjYuLjc0OGYyOTdiOWI4ZTA0M2NlYTIxOWRmMGViYWNjODk0MjRjZGI3
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAg
dm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmEKIAogICAgIGlmIChuYW1lID09IHRhYmluZGV4QXR0cikg
ewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xlYXJUYWJJbmRl
eEV4cGxpY2l0bHlJZk5lZWRlZCgpOworICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9
IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNp
dGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCAxOWNjMGU3MzBlZDhlNzJhNTE0ZjUx
NTgxOWVjYjNjNDU4NzE2YTE3Li44NWQxNTVkMTRkMTk1M2UxMDdkY2E2NDM5MWEyNjRhNDc2YjQ3
MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
clRhYmxlQ2VsbD4ocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAg
fSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGVhclRhYkluZGV4RXhwbGljaXRseUlm
TmVlZGVkKCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0
KTsKICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50
ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxU
YWJJbmRleC52YWx1ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CmluZGV4IGE3YjQwZjk5MDBkZTlhYTlkNzVmMWY2NzFkOGE4ZGM2MGYyYzRlYmUuLjUwZmYxZjY0
MDg4MzNjMTgwMjU3ZTVmYjA4OGE5MGRkMGQ2MTUzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbAogCiAgICAg
aWYgKG5hbWUgPT0gSFRNTE5hbWVzOjp0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQo
KTsKKyAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShXVEY6Om51bGxvcHQpOwogICAg
ICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZh
bHVlKSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4
LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408063</attachid>
            <date>2020-09-04 19:59:27 -0700</date>
            <delta_ts>2020-09-05 00:43:17 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-216208-20200904195926.patch</filename>
            <type>text/plain</type>
            <size>20263</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkZDVkZDIxNjU4OTNh
MTAwNTBkYWMwZjIwZGVlZjcxZjljYTM5Yy4uNzNlYjk5ODFkZTg1MWZiMTIzZjFjMTZjMDdhYTRk
ZDI4ZGQwYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA5LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYWxsIHJlbWFpbmlu
ZyBmbGFncyBmcm9tIEVsZW1lbnRSYXJlRGF0YSB0byBOb2RlIHRvIHJlZHVjZSB0aGUgZnJlcXVl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCByZW1haW5pbmcgYml0IGZsYWdzIGZyb20gRWxlbWVudFJhcmVEYXRh
IHRvIE5vZGU6Om1fbm9kZUZsYWdzLiBJdCBhbHNvIHN0b3JlcworICAgICAgICB0YWJJbmRleCBv
ZiAwIGFuZCAtMSBpbiBOb2RlOjptX25vZGVGbGFncyB0byBhdm9pZCBjcmVhdGluZyBFbGVtZW50
UmFyZURhdGEgZm9yIHRoZXNlIGNvbW1vbiB2YWx1ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFyVGFiSW5k
ZXhFeHBsaWNpdGx5SWZOZWVkZWQpOiBEZWxldGVkLiBNZXJnZWQgaW50byBzZXRUYWJJbmRleEV4
cGxpY2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0
bHkpOiBOb3cgdGFrZXMgT3B0aW9uYWw8aW50Pi4gU3RvcmVzIDAgYW5kIC0xIGFzIG5vZGUgZmxh
Z3MuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkgY29u
c3QpOiBBZGRlZCB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIDAgYW5kIC0xLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNDU1NBbmltYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzQ1NT
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFz
Q1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IE1vdmVkIGhlcmUg
ZnJvbSBFbGVtZW50LmNwcAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzUGVuZGlu
Z1Jlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xlYXJIYXNQ
ZW5kaW5nUmVzb3VyY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXND
U1NBbmltYXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEhhc0NTU0FuaW1hdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xl
YXJIYXNDU1NBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnRhYklu
ZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6dGFiSW5kZXhTZXRFeHBsaWNpdGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6Omhhc1BlbmRpbmdSZXNvdXJjZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aGFzQ1NTQW5pbWF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0
SGFzQ1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6aGFzRWxlbWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNFbGVtZW50SWRlbnRpZmllcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KTogQWRk
ZWQgdGhlIHVzZSB0eXBlcyBmb3IgbWlzc2luZyBwYXJ0IGxpc3QgYW5kIHBhcnQgbmFtZXMuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFRhYkluZGV4KToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Tm9kZUZsYWdzKTogQWRkZWQgYml0IGZsYWdzIG1vdmVkIGZyb20gRWxlbWVudFJhcmVEYXRhLgor
ICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKwogMjAy
MC0wOS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9y
ZSBhbGwgc3R5bGluZyBmbGFncyBpbiBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCA5YjBkZmUwZTIwZjQ3NmQ2Y2FkZjY1ZWIxMGRlZTAxYWI1ZDRiODNm
Li42ODIyMTliM2RmZWZmMTEyNmI4MjdlNWJjZDAzYTk5N2QzMDI5YjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yNDEsMjIgKzI0MSw0MiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhJiBF
bGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50UmFyZURhdGEmPihlbnN1cmVSYXJlRGF0YSgpKTsKIH0KIAotdm9pZCBFbGVtZW50Ojpj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCkKK3ZvaWQgRWxlbWVudDo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5kZXgpCiB7Ci0gICAgaWYgKGhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5jbGVhclRhYkluZGV4RXhwbGljaXRs
eSgpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShpbnQgdGFiSW5k
ZXgpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KHRhYkluZGV4KTsKKyAgICBpZiAoIXRhYkluZGV4KSB7CisgICAgICAgIGNsZWFyRmxhZyhUYWJJ
bmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJ
c05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB0YWJJbmRleFZhbHVlID0gdGFiSW5kZXgudmFsdWUoKTsKKyAgICBpZiAoIXRhYklu
ZGV4VmFsdWUpIHsKKyAgICAgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZs
YWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRh
RmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHRhYkluZGV4VmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgY2xlYXJGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5S
YXJlRGF0YUZsYWcpOworICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVE
YXRhRmxhZyk7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXgodGFiSW5k
ZXhWYWx1ZSk7CiB9CiAKIE9wdGlvbmFsPGludD4gRWxlbWVudDo6dGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT50YWJJbmRleCgpOwor
ICAgIGJvb2wgaXNPbmUgPSBnZXRGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgYm9vbCBpc05lZ2F0aXZlT25lID0gZ2V0RmxhZyhUYWJJbmRleElzTmVnYXRpdmVPbmVP
ckluUmFyZURhdGFGbGFnKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNPbmUgJiYgaXNOZWdhdGl2ZU9u
ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgICAgIHJl
dHVybiBlbGVtZW50UmFyZURhdGEoKS0+dGFiSW5kZXgoKTsKKyAgICB9CisgICAgaWYgKGlzT25l
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoaXNOZWdhdGl2ZU9uZSkKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGludCBFbGVtZW50OjpkZWZh
dWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMjI2Niw5ICsyMjg2LDkgQEAgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7CisgICAgaWYgKGdldEZsYWco
SGFzRWxlbWVudElkZW50aWZpZXJGbGFnKSkgewogICAgICAgICBkb2N1bWVudCgpLmlkZW50aWZp
ZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7Ci0gICAgICAgIGVsZW1lbnRS
YXJlRGF0YSgpLT5zZXRIYXNFbGVtZW50SWRlbnRpZmllcihmYWxzZSk7CisgICAgICAgIGNsZWFy
RmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcpOwogICAgIH0KIH0KIApAQCAtMzcxNiwxNCAr
MzczNiwxMiBAQCB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKICAgICBk
b2N1bWVudCgpLmZ1bGxzY3JlZW5NYW5hZ2VyKCkucmVxdWVzdEZ1bGxzY3JlZW5Gb3JFbGVtZW50
KHRoaXMsIEZ1bGxzY3JlZW5NYW5hZ2VyOjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxsc2NyZWVuUmVx
dWlyZW1lbnQpOwogfQogCi1ib29sIEVsZW1lbnQ6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgp
LT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIGZsYWcpCiB7Ci0gICAgZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCkuc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmbGFnKTsKKyAgICBpZiAoZmxh
ZykKKyAgICAgICAgc2V0RmxhZyhDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50RmxhZyk7CisgICAg
ZWxzZQorICAgICAgICBjbGVhckZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcpOwog
ICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKIH0KIApAQCAtNDM2Niw0
MCArNDM4NCw2IEBAIHZvaWQgRWxlbWVudDo6Y3JlYXRlVW5pcXVlRWxlbWVudERhdGEoKQogICAg
ICAgICBtX2VsZW1lbnREYXRhID0gZG93bmNhc3Q8U2hhcmVhYmxlRWxlbWVudERhdGE+KCptX2Vs
ZW1lbnREYXRhKS5tYWtlVW5pcXVlQ29weSgpOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNQZW5kaW5nUmVzb3VyY2VzKCk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6
c2V0SGFzUGVuZGluZ1Jlc291cmNlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCku
c2V0SGFzUGVuZGluZ1Jlc291cmNlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpjbGVhckhh
c1BlbmRpbmdSZXNvdXJjZXMoKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGZh
bHNlKTsKLX0KLQotYm9vbCBFbGVtZW50OjpoYXNDU1NBbmltYXRpb24oKSBjb25zdAotewotICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNDU1NBbmltYXRp
b24oKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRIYXNDU1NBbmltYXRpb24oKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEhhc0NTU0FuaW1hdGlvbih0cnVlKTsKLX0KLQotdm9p
ZCBFbGVtZW50OjpjbGVhckhhc0NTU0FuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFoYXNSYXJlRGF0
YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0NTU0Fu
aW1hdGlvbihmYWxzZSk7Ci19Ci0KIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdAogewogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKQEAgLTQ2
MTEsMTAgKzQ1OTUsOCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6Omdl
dEFuaW1hdGlvbnMoT3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbgogCiBFbGVtZW50SWRlbnRp
ZmllciBFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgYXV0byYgcmFy
ZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBBU1NFUlQoIXJhcmVEYXRhLmhh
c0VsZW1lbnRJZGVudGlmaWVyKCkpOwotCi0gICAgcmFyZURhdGEuc2V0SGFzRWxlbWVudElkZW50
aWZpZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFnZXRGbGFnKEhhc0VsZW1lbnRJZGVudGlmaWVyRmxh
ZykpOworICAgIHNldEZsYWcoSGFzRWxlbWVudElkZW50aWZpZXJGbGFnKTsKICAgICByZXR1cm4g
RWxlbWVudElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDM5ZWUwYjliYzExMzhhMDA4NWRiMjMxNjkzNzc1MGY4M2FmZTZmNWYuLjM0ZmU1ZTA4M2JmMDcw
OGIzNDJkMTRhZjIwZGJjNTNiNGFiMTZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzUsNiAr
MzUsOCBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CiAKKyNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMAorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOwpA
QCAtNDc5LDE0ICs0ODEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZW5k
aW5nUmVzb3VyY2VzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7
Ci0gICAgdm9pZCBjbGVhckhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKKyAgICBib29sIGhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNG
bGFnKTsgfQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpIHsgc2V0RmxhZyhIYXNQ
ZW5kaW5nUmVzb3VyY2VzRmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNl
cygpIHsgY2xlYXJGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKIAotICAgIGJvb2wgaGFzQ1NTQW5pbWF0
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oKTsKLSAgICB2b2lkIGNs
ZWFySGFzQ1NTQW5pbWF0aW9uKCk7CisgICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKEhhc0NTU0FuaW1hdGlvbkZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXND
U1NBbmltYXRpb24oKSB7IHNldEZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7IH0KKyAgICB2b2lk
IGNsZWFySGFzQ1NTQW5pbWF0aW9uKCkgeyBjbGVhckZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7
IH0KIAogICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25z
dDsKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CkBAIC01MTEsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdl
RXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZs
YWcpOyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwogICAg
IHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFt
ZUJvdW5kYXJpZXMoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCk7CkBAIC02MzUsOCArNjM3LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGlj
aXRseUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoaW50KTsKKyAg
ICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQg
Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsK
ICAgICB2b2lkIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmY2NhYjUxMTczNDgyMWE0
YmQ2ZWNjMGEwNjM4M2FmZTIwNGQ5ODRjLi44OTdjN2NkNzhhNjg0ZmRmMzFjNjMxOTY3YTQ3YmE3
OWI3ZDZmNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01NiwxNiAr
NTYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZv
aWQgcmVzZXRTdHlsZVJlbGF0aW9ucygpOwotICAgIAotICAgIE9wdGlvbmFsPGludD4gdGFiSW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA/IE9wdGlvbmFs
PGludD4geyBtX3RhYkluZGV4IH0gOiBXVEY6Om51bGxvcHQ7IH0KLSAgICB2b2lkIHNldFRhYklu
ZGV4RXhwbGljaXRseShpbnQgaW5kZXgpIHsgbV90YWJJbmRleCA9IGluZGV4OyBtX3RhYkluZGV4
V2FzU2V0RXhwbGljaXRseSA9IHRydWU7IH0KLSAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRs
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5OyB9Ci0gICAgdm9p
ZCBjbGVhclRhYkluZGV4RXhwbGljaXRseSgpIHsgbV90YWJJbmRleCA9IDA7IG1fdGFiSW5kZXhX
YXNTZXRFeHBsaWNpdGx5ID0gZmFsc2U7IH0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQot
I2VuZGlmCisKKyAgICBpbnQgdGFiSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4OyB9
CisgICAgdm9pZCBzZXRUYWJJbmRleChpbnQpOwogCiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1
bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQpAQCAtOTYsMTggKzg5LDkg
QEAgcHVibGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZl
ZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Ny
b2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nUmVzb3VyY2VzOyB9Ci0gICAgdm9pZCBzZXRI
YXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wgaGFzKSB7IG1faGFzUGVuZGluZ1Jlc291cmNlcyA9IGhh
czsgfQotCi0gICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NT
U0FuaW1hdGlvbjsgfQotICAgIHZvaWQgc2V0SGFzQ1NTQW5pbWF0aW9uKGJvb2wgdmFsdWUpIHsg
bV9oYXNDU1NBbmltYXRpb24gPSB2YWx1ZTsgfQotCiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVE
YXRhLmdldCgpOyB9CiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRp
b25SYXJlRGF0YSgpOwogCi0gICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRWxlbWVudElkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldEhhc0VsZW1lbnRJ
ZGVudGlmaWVyKGJvb2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmllciA9IHZhbHVlOyB9
Ci0KICAgICBET01Ub2tlbkxpc3QqIHBhcnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0TGlz
dC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UGFydExpc3Qoc3RkOjp1bmlxdWVfcHRyPERPTVRva2Vu
TGlzdD4gcGFydExpc3QpIHsgbV9wYXJ0TGlzdCA9IFdURk1vdmUocGFydExpc3QpOyB9CiAKQEAg
LTEzMyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFVzZVR5cGU+IHVzZVR5cGVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gTm9kZVJhcmVEYXRhOjp1c2VU
eXBlcygpOwotICAgICAgICBpZiAobV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkpCisgICAgICAg
IGlmIChtX3RhYkluZGV4KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpUYWJJbmRl
eCk7CiAgICAgICAgIGlmIChtX21pbmltdW1TaXplRm9yUmVzaXppbmcgIT0gZGVmYXVsdE1pbmlt
dW1TaXplRm9yUmVzaXppbmcoKSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6TWlu
aW11bVNpemUpOwpAQCAtMTU3LDI0ICsxNDEsMjUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9y
ZXNpemVPYnNlcnZlckRhdGEpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlJlc2l6
ZU9ic2VydmVyKTsKICNlbmRpZgotICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8
IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQotICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQ
c2V1ZG9FbGVtZW50cyk7CiAgICAgICAgIGlmIChtX2FuaW1hdGlvblJhcmVEYXRhKQogICAgICAg
ICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpBbmltYXRpb25zKTsKKyAgICAgICAgaWYgKG1fYmVm
b3JlUHNldWRvRWxlbWVudCB8fCBtX2FmdGVyUHNldWRvRWxlbWVudCkKKyAgICAgICAgICAgIHJl
c3VsdC5hZGQoVXNlVHlwZTo6UHNldWRvRWxlbWVudHMpOworI2lmIEVOQUJMRShDU1NfVFlQRURf
T00pCisgICAgICAgIGlmIChtX2F0dHJpYnV0ZVN0eWxlTWFwKQorICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpTdHlsZU1hcCk7CisjZW5kaWYKKyAgICAgICAgaWYgKG1fcGFydExpc3Qp
CisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBhcnRMaXN0KTsKKyAgICAgICAgaWYg
KCFtX3BhcnROYW1lcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6
OlBhcnROYW1lcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgaW50IG1fdGFiSW5kZXg7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZElu
ZGV4OwotICAgIHVuc2lnbmVkIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5IDogMTsKLSNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdW5zaWduZWQgbV9jb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50IDogMTsKLSNlbmRpZgotICAgIHVuc2lnbmVkIG1faGFzUGVuZGluZ1Jlc291cmNlcyA6
IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNDU1NBbmltYXRpb24gOiAxOwotICAgIHVuc2lnbmVkIG1f
aGFzRWxlbWVudElkZW50aWZpZXIgOiAxOworICAgIGludCBtX3RhYkluZGV4IHsgMCB9OworICAg
IHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7IDAgfTsKIAogICAgIExheW91dFNpemUgbV9t
aW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBv
c2l0aW9uOwpAQCAtMjEwLDE1ICsxOTUsNiBAQCBwcml2YXRlOgogCiBpbmxpbmUgRWxlbWVudFJh
cmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQogICAgIDogTm9kZVJhcmVEYXRhKFR5cGU6OkVsZW1l
bnQpCi0gICAgLCBtX3RhYkluZGV4KDApCi0gICAgLCBtX2NoaWxkSW5kZXgoMCkKLSAgICAsIG1f
dGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKLSNlbmRpZgotICAg
ICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQotICAgICwgbV9oYXNDU1NBbmltYXRpb24o
ZmFsc2UpCi0gICAgLCBtX2hhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9taW5p
bXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7CiB9
CkBAIC0yNTIsNiArMjI4LDEyIEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRT
dHlsZVJlbGF0aW9ucygpCiAgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KIAoraW5saW5lIHZvaWQg
RWxlbWVudFJhcmVEYXRhOjpzZXRUYWJJbmRleChpbnQgdGFiSW5kZXgpCit7CisgICAgQVNTRVJU
KHRhYkluZGV4ICYmIHRhYkluZGV4ICE9IC0xKTsgLy8gQ29tbW9uIHZhbHVlcyBvZiAwIGFuZCAt
MSBhcmUgc3RvcmVkIGFzIGZsYWdzIGluIE5vZGUuCisgICAgbV90YWJJbmRleCA9IHRhYkluZGV4
OworfQorCiBpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6
OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uUmFyZURh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMjZhMzQ0YTZjMTIxNGFlMDk3NWI3MTA2Njk5MDI0YTM1
Yjk2NGQ2Mi4uZDUzMDQwOTc1YmFiYmFhNmZhMDQ5OWU5ZWFiYWQ5NDU5ZDQ0NjZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTMwLDEwICsxMzAsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlu
Z0ZvclJhcmVEYXRhVXNlVHlwZShOb2RlUmFyZURhdGE6OlVzZVR5cGUgdXNlVHlwZSkKICAgICAg
ICAgcmV0dXJuICJBdHRyaWJ1dGVNYXAiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBl
OjpJbnRlcmFjdGlvbk9ic2VydmVyOgogICAgICAgICByZXR1cm4gIkludGVyYWN0aW9uT2JzZXJ2
ZXIiOwotICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQc2V1ZG9FbGVtZW50czoKLSAg
ICAgICAgcmV0dXJuICJQc2V1ZG9FbGVtZW50cyI7CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVz
ZVR5cGU6OlJlc2l6ZU9ic2VydmVyOgorICAgICAgICByZXR1cm4gIlJlc2l6ZU9ic2VydmVyIjsK
ICAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6QW5pbWF0aW9uczoKICAgICAgICAgcmV0
dXJuICJBbmltYXRpb25zIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UHNldWRv
RWxlbWVudHM6CisgICAgICAgIHJldHVybiAiUHNldWRvRWxlbWVudHMiOworICAgIGNhc2UgTm9k
ZVJhcmVEYXRhOjpVc2VUeXBlOjpTdHlsZU1hcDoKKyAgICAgICAgcmV0dXJuICJTdHlsZU1hcCI7
CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OlBhcnRMaXN0OgorICAgICAgICByZXR1
cm4gIlBhcnRMaXN0IjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UGFydE5hbWVz
OgorICAgICAgICByZXR1cm4gIlBhcnROYW1lcyI7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggYzA0NmIzNjNmNTA5MGQ3Njc0OGU2ZWZlOTdkNDRkZjI4Yzdl
M2U5Mi4uYWJjM2MyMmQ5Y2U5MDU3MGY4MmY1OTUxZGMzYzQ5Njc5NTFhNjg4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC00MCw5ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCi0vLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBEb2N1
bWVudC5oIGFsc28gZGVwZW5kcyBvbiBpdC4KLSNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1Mg
MAotCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9CkBAIC01NDMsNyArNTQw
LDE2IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFj
a3NGbGFnID0gMSA8PCAyMiwKIAotICAgICAgICAvLyBCaXRzIDIzLTMxIGFyZSBmcmVlLgorICAg
ICAgICBUYWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcgPSAxIDw8IDIzLAorICAgICAgICBU
YWJJbmRleElzTmVnYXRpdmVPbmVPckluUmFyZURhdGFGbGFnID0gMSA8PCAyNCwKKyAgICAgICAg
SGFzUGVuZGluZ1Jlc291cmNlc0ZsYWcgPSAxIDw8IDI1LAorICAgICAgICBIYXNDU1NBbmltYXRp
b25GbGFnID0gMSA8PCAyNiwKKyAgICAgICAgSGFzRWxlbWVudElkZW50aWZpZXJGbGFnID0gMSA8
PCAyNywKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnRGbGFnID0gMSA8PCAyOCwKKyNlbmRpZgorCisgICAgICAgIC8vIEJpdHMgMjkt
MzEgYXJlIGZyZWUuCiAKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxk
cmVuRmluaXNoZWRGbGFnCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2
MWY2ZjFiMjJiOTYxZDc1MzI4N2IxMzkyN2E3ZjY2YTlkMWQwZTNiLi5jYTRkOTExYjI1NTEyZTI4
ZWQ2YjM0MTQzMzIyNTkzOWEwODI3ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBA
IC0yNDQsNyArMjQ0LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoTm9kZVJhcmVEYXRhKTsKIHB1
YmxpYzoKICNpZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RB
VElTVElDUwotICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQxNl90IHsKKyAgICBlbnVtIGNs
YXNzIFVzZVR5cGUgOiB1aW50MzJfdCB7CiAgICAgICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAx
IDw8IDAsCiAgICAgICAgIE5vZGVMaXN0ID0gMSA8PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2Vy
dmVyID0gMSA8PCAyLApAQCAtMjU4LDggKzI1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3Rv
bUVsZW1lbnRRdWV1ZSA9IDEgPDwgMTAsCiAgICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTEs
CiAgICAgICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEyLAotICAgICAgICBQc2V1ZG9F
bGVtZW50cyA9IDEgPDwgMTMsCisgICAgICAgIFJlc2l6ZU9ic2VydmVyID0gMSA8PCAxMywKICAg
ICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCisgICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8
PCAxNSwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAorICAgICAgICBQYXJ0TGlzdCA9IDEg
PDwgMTcsCisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCiAgICAgfTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDkzOTg0ZjM4MmNkNGVmMWRmNmNjMTdj
MDMzZjU1ZmRiZjE3NmI0ZjYuLjc0OGYyOTdiOWI4ZTA0M2NlYTIxOWRmMGViYWNjODk0MjRjZGI3
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAg
dm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmluZyYgdmEKIAogICAgIGlmIChuYW1lID09IHRhYmluZGV4QXR0cikg
ewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xlYXJUYWJJbmRl
eEV4cGxpY2l0bHlJZk5lZWRlZCgpOworICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9
IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNp
dGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCAxOWNjMGU3MzBlZDhlNzJhNTE0ZjUx
NTgxOWVjYjNjNDU4NzE2YTE3Li44NWQxNTVkMTRkMTk1M2UxMDdkY2E2NDM5MWEyNjRhNDc2YjQ3
MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
clRhYmxlQ2VsbD4ocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAg
fSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGVhclRhYkluZGV4RXhwbGljaXRseUlm
TmVlZGVkKCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0
KTsKICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50
ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxU
YWJJbmRleC52YWx1ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CmluZGV4IGE3YjQwZjk5MDBkZTlhYTlkNzVmMWY2NzFkOGE4ZGM2MGYyYzRlYmUuLjUwZmYxZjY0
MDg4MzNjMTgwMjU3ZTVmYjA4OGE5MGRkMGQ2MTUzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbAogCiAgICAg
aWYgKG5hbWUgPT0gSFRNTE5hbWVzOjp0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQo
KTsKKyAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShXVEY6Om51bGxvcHQpOwogICAg
ICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZh
bHVlKSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4
LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408069</attachid>
            <date>2020-09-05 00:43:19 -0700</date>
            <delta_ts>2020-09-05 16:31:19 -0700</delta_ts>
            <desc>Fixed builds 2</desc>
            <filename>bug-216208-20200905004317.patch</filename>
            <type>text/plain</type>
            <size>20884</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkZDVkZDIxNjU4OTNh
MTAwNTBkYWMwZjIwZGVlZjcxZjljYTM5Yy4uNzNlYjk5ODFkZTg1MWZiMTIzZjFjMTZjMDdhYTRk
ZDI4ZGQwYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA5LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYWxsIHJlbWFpbmlu
ZyBmbGFncyBmcm9tIEVsZW1lbnRSYXJlRGF0YSB0byBOb2RlIHRvIHJlZHVjZSB0aGUgZnJlcXVl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCByZW1haW5pbmcgYml0IGZsYWdzIGZyb20gRWxlbWVudFJhcmVEYXRh
IHRvIE5vZGU6Om1fbm9kZUZsYWdzLiBJdCBhbHNvIHN0b3JlcworICAgICAgICB0YWJJbmRleCBv
ZiAwIGFuZCAtMSBpbiBOb2RlOjptX25vZGVGbGFncyB0byBhdm9pZCBjcmVhdGluZyBFbGVtZW50
UmFyZURhdGEgZm9yIHRoZXNlIGNvbW1vbiB2YWx1ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFyVGFiSW5k
ZXhFeHBsaWNpdGx5SWZOZWVkZWQpOiBEZWxldGVkLiBNZXJnZWQgaW50byBzZXRUYWJJbmRleEV4
cGxpY2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0
bHkpOiBOb3cgdGFrZXMgT3B0aW9uYWw8aW50Pi4gU3RvcmVzIDAgYW5kIC0xIGFzIG5vZGUgZmxh
Z3MuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkgY29u
c3QpOiBBZGRlZCB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIDAgYW5kIC0xLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNDU1NBbmltYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzQ1NT
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFz
Q1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IE1vdmVkIGhlcmUg
ZnJvbSBFbGVtZW50LmNwcAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzUGVuZGlu
Z1Jlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xlYXJIYXNQ
ZW5kaW5nUmVzb3VyY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXND
U1NBbmltYXRpb24gY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEhhc0NTU0FuaW1hdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xl
YXJIYXNDU1NBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRWxl
bWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnRhYklu
ZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6dGFiSW5kZXhTZXRFeHBsaWNpdGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6Omhhc1BlbmRpbmdSZXNvdXJjZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aGFzQ1NTQW5pbWF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0
SGFzQ1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6aGFzRWxlbWVudElkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRIYXNFbGVtZW50SWRlbnRpZmllcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KTogQWRk
ZWQgdGhlIHVzZSB0eXBlcyBmb3IgbWlzc2luZyBwYXJ0IGxpc3QgYW5kIHBhcnQgbmFtZXMuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFRhYkluZGV4KToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Tm9kZUZsYWdzKTogQWRkZWQgYml0IGZsYWdzIG1vdmVkIGZyb20gRWxlbWVudFJhcmVEYXRhLgor
ICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKwogMjAy
MC0wOS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9y
ZSBhbGwgc3R5bGluZyBmbGFncyBpbiBtX3JlbmRlcmVyV2l0aFN0eWxlRmxhZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCA5YjBkZmUwZTIwZjQ3NmQ2Y2FkZjY1ZWIxMGRlZTAxYWI1ZDRiODNm
Li42ODIyMTliM2RmZWZmMTEyNmI4MjdlNWJjZDAzYTk5N2QzMDI5YjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0yNDEsMjIgKzI0MSw0MiBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhJiBF
bGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50UmFyZURhdGEmPihlbnN1cmVSYXJlRGF0YSgpKTsKIH0KIAotdm9pZCBFbGVtZW50Ojpj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCkKK3ZvaWQgRWxlbWVudDo6c2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4gdGFiSW5kZXgpCiB7Ci0gICAgaWYgKGhhc1JhcmVE
YXRhKCkpCi0gICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5jbGVhclRhYkluZGV4RXhwbGljaXRs
eSgpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShpbnQgdGFiSW5k
ZXgpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KHRhYkluZGV4KTsKKyAgICBpZiAoIXRhYkluZGV4KSB7CisgICAgICAgIGNsZWFyRmxhZyhUYWJJ
bmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJ
c05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgYXV0byB0YWJJbmRleFZhbHVlID0gdGFiSW5kZXgudmFsdWUoKTsKKyAgICBpZiAoIXRhYklu
ZGV4VmFsdWUpIHsKKyAgICAgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZs
YWcpOworICAgICAgICBjbGVhckZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRh
RmxhZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHRhYkluZGV4VmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgY2xlYXJGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0RmxhZyhUYWJJbmRleElzWmVyb09ySW5S
YXJlRGF0YUZsYWcpOworICAgIHNldEZsYWcoVGFiSW5kZXhJc05lZ2F0aXZlT25lT3JJblJhcmVE
YXRhRmxhZyk7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0VGFiSW5kZXgodGFiSW5k
ZXhWYWx1ZSk7CiB9CiAKIE9wdGlvbmFsPGludD4gRWxlbWVudDo6dGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT50YWJJbmRleCgpOwor
ICAgIGJvb2wgaXNPbmUgPSBnZXRGbGFnKFRhYkluZGV4SXNaZXJvT3JJblJhcmVEYXRhRmxhZyk7
CisgICAgYm9vbCBpc05lZ2F0aXZlT25lID0gZ2V0RmxhZyhUYWJJbmRleElzTmVnYXRpdmVPbmVP
ckluUmFyZURhdGFGbGFnKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNPbmUgJiYgaXNOZWdhdGl2ZU9u
ZSkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgICAgIHJl
dHVybiBlbGVtZW50UmFyZURhdGEoKS0+dGFiSW5kZXgoKTsKKyAgICB9CisgICAgaWYgKGlzT25l
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoaXNOZWdhdGl2ZU9uZSkKKyAgICAgICAgcmV0
dXJuIC0xOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGludCBFbGVtZW50OjpkZWZh
dWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMjI2Niw5ICsyMjg2LDkgQEAgdm9pZCBFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2Rl
JiBvbGRQYXIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7CisgICAgaWYgKGdldEZsYWco
SGFzRWxlbWVudElkZW50aWZpZXJGbGFnKSkgewogICAgICAgICBkb2N1bWVudCgpLmlkZW50aWZp
ZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7Ci0gICAgICAgIGVsZW1lbnRS
YXJlRGF0YSgpLT5zZXRIYXNFbGVtZW50SWRlbnRpZmllcihmYWxzZSk7CisgICAgICAgIGNsZWFy
RmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcpOwogICAgIH0KIH0KIApAQCAtMzcxNiwxNCAr
MzczNiwxMiBAQCB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKICAgICBk
b2N1bWVudCgpLmZ1bGxzY3JlZW5NYW5hZ2VyKCkucmVxdWVzdEZ1bGxzY3JlZW5Gb3JFbGVtZW50
KHRoaXMsIEZ1bGxzY3JlZW5NYW5hZ2VyOjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxsc2NyZWVuUmVx
dWlyZW1lbnQpOwogfQogCi1ib29sIEVsZW1lbnQ6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgp
LT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6c2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIGZsYWcpCiB7Ci0gICAgZW5zdXJlRWxlbWVudFJh
cmVEYXRhKCkuc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmbGFnKTsKKyAgICBpZiAoZmxh
ZykKKyAgICAgICAgc2V0RmxhZyhDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50RmxhZyk7CisgICAg
ZWxzZQorICAgICAgICBjbGVhckZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcpOwog
ICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKIH0KIApAQCAtNDM2Niw0
MCArNDM4NCw2IEBAIHZvaWQgRWxlbWVudDo6Y3JlYXRlVW5pcXVlRWxlbWVudERhdGEoKQogICAg
ICAgICBtX2VsZW1lbnREYXRhID0gZG93bmNhc3Q8U2hhcmVhYmxlRWxlbWVudERhdGE+KCptX2Vs
ZW1lbnREYXRhKS5tYWtlVW5pcXVlQ29weSgpOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1l
bnRSYXJlRGF0YSgpLT5oYXNQZW5kaW5nUmVzb3VyY2VzKCk7Ci19Ci0KLXZvaWQgRWxlbWVudDo6
c2V0SGFzUGVuZGluZ1Jlc291cmNlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCku
c2V0SGFzUGVuZGluZ1Jlc291cmNlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpjbGVhckhh
c1BlbmRpbmdSZXNvdXJjZXMoKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKGZh
bHNlKTsKLX0KLQotYm9vbCBFbGVtZW50OjpoYXNDU1NBbmltYXRpb24oKSBjb25zdAotewotICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNDU1NBbmltYXRp
b24oKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRIYXNDU1NBbmltYXRpb24oKQotewotICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEhhc0NTU0FuaW1hdGlvbih0cnVlKTsKLX0KLQotdm9p
ZCBFbGVtZW50OjpjbGVhckhhc0NTU0FuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFoYXNSYXJlRGF0
YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0NTU0Fu
aW1hdGlvbihmYWxzZSk7Ci19Ci0KIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdAogewogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKQEAgLTQ2
MTEsMTAgKzQ1OTUsOCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6Omdl
dEFuaW1hdGlvbnMoT3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbgogCiBFbGVtZW50SWRlbnRp
ZmllciBFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgYXV0byYgcmFy
ZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBBU1NFUlQoIXJhcmVEYXRhLmhh
c0VsZW1lbnRJZGVudGlmaWVyKCkpOwotCi0gICAgcmFyZURhdGEuc2V0SGFzRWxlbWVudElkZW50
aWZpZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFnZXRGbGFnKEhhc0VsZW1lbnRJZGVudGlmaWVyRmxh
ZykpOworICAgIHNldEZsYWcoSGFzRWxlbWVudElkZW50aWZpZXJGbGFnKTsKICAgICByZXR1cm4g
RWxlbWVudElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDM5ZWUwYjliYzExMzhhMDA4NWRiMjMxNjkzNzc1MGY4M2FmZTZmNWYuLjM0ZmU1ZTA4M2JmMDcw
OGIzNDJkMTRhZjIwZGJjNTNiNGFiMTZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzUsNiAr
MzUsOCBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CiAKKyNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMAorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOwpA
QCAtNDc5LDE0ICs0ODEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZW5k
aW5nUmVzb3VyY2VzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7
Ci0gICAgdm9pZCBjbGVhckhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKKyAgICBib29sIGhhc1BlbmRp
bmdSZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNG
bGFnKTsgfQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpIHsgc2V0RmxhZyhIYXNQ
ZW5kaW5nUmVzb3VyY2VzRmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNl
cygpIHsgY2xlYXJGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKIAotICAgIGJvb2wgaGFzQ1NTQW5pbWF0
aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oKTsKLSAgICB2b2lkIGNs
ZWFySGFzQ1NTQW5pbWF0aW9uKCk7CisgICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKEhhc0NTU0FuaW1hdGlvbkZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXND
U1NBbmltYXRpb24oKSB7IHNldEZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7IH0KKyAgICB2b2lk
IGNsZWFySGFzQ1NTQW5pbWF0aW9uKCkgeyBjbGVhckZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7
IH0KIAogICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25z
dDsKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CkBAIC01MTEsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdl
RXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZs
YWcpOyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwogICAg
IHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFt
ZUJvdW5kYXJpZXMoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCk7CkBAIC02MzUsOCArNjM3LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGlj
aXRseUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoaW50KTsKKyAg
ICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQg
Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsK
ICAgICB2b2lkIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKaW5kZXggOGFhZWFlYzU2ZjAx
N2NiYTM3MjE5N2FjZDkzY2E4M2Y5NjcxMTNlNS4uZGI0ZWFlMWI1NzBhNzM0MzgzOTc2Yjc5MmEz
YTAwNGU4OTA1MzAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKQEAg
LTM2LDExICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTYW1lU2l6ZUFzRWxl
bWVudFJhcmVEYXRhIDogTm9kZVJhcmVEYXRhIHsKICAgICBpbnQgdGFiSW5kZXg7CiAgICAgdW5z
aWduZWQgc2hvcnQgY2hpbGRJbmRleDsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
dW5zaWduZWQgYml0ZmllbGRzIDogMTI7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGJpdGZpZWxkcyA6
IDExOwotI2VuZGlmCiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9p
bnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmY2NhYjUxMTczNDgyMWE0YmQ2ZWNj
MGEwNjM4M2FmZTIwNGQ5ODRjLi44OTdjN2NkNzhhNjg0ZmRmMzFjNjMxOTY3YTQ3YmE3OWI3ZDZm
NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01NiwxNiArNTYsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZvaWQgcmVz
ZXRTdHlsZVJlbGF0aW9ucygpOwotICAgIAotICAgIE9wdGlvbmFsPGludD4gdGFiSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA/IE9wdGlvbmFsPGludD4g
eyBtX3RhYkluZGV4IH0gOiBXVEY6Om51bGxvcHQ7IH0KLSAgICB2b2lkIHNldFRhYkluZGV4RXhw
bGljaXRseShpbnQgaW5kZXgpIHsgbV90YWJJbmRleCA9IGluZGV4OyBtX3RhYkluZGV4V2FzU2V0
RXhwbGljaXRseSA9IHRydWU7IH0KLSAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5OyB9Ci0gICAgdm9pZCBjbGVh
clRhYkluZGV4RXhwbGljaXRseSgpIHsgbV90YWJJbmRleCA9IDA7IG1fdGFiSW5kZXhXYXNTZXRF
eHBsaWNpdGx5ID0gZmFsc2U7IH0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBi
b29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9v
bCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQotI2VuZGlm
CisKKyAgICBpbnQgdGFiSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4OyB9CisgICAg
dm9pZCBzZXRUYWJJbmRleChpbnQpOwogCiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25l
ZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQpAQCAtOTYsMTggKzg5LDkgQEAgcHVi
bGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZlZExheWVy
U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Nyb2xsUG9z
aXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2VzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nUmVzb3VyY2VzOyB9Ci0gICAgdm9pZCBzZXRIYXNQZW5k
aW5nUmVzb3VyY2VzKGJvb2wgaGFzKSB7IG1faGFzUGVuZGluZ1Jlc291cmNlcyA9IGhhczsgfQot
Ci0gICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NTU0FuaW1h
dGlvbjsgfQotICAgIHZvaWQgc2V0SGFzQ1NTQW5pbWF0aW9uKGJvb2wgdmFsdWUpIHsgbV9oYXND
U1NBbmltYXRpb24gPSB2YWx1ZTsgfQotCiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBl
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVEYXRhLmdl
dCgpOyB9CiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJl
RGF0YSgpOwogCi0gICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRWxlbWVudElkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldEhhc0VsZW1lbnRJZGVudGlm
aWVyKGJvb2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmllciA9IHZhbHVlOyB9Ci0KICAg
ICBET01Ub2tlbkxpc3QqIHBhcnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0TGlzdC5nZXQo
KTsgfQogICAgIHZvaWQgc2V0UGFydExpc3Qoc3RkOjp1bmlxdWVfcHRyPERPTVRva2VuTGlzdD4g
cGFydExpc3QpIHsgbV9wYXJ0TGlzdCA9IFdURk1vdmUocGFydExpc3QpOyB9CiAKQEAgLTEzMyw3
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFVzZVR5cGU+IHVzZVR5cGVzKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gTm9kZVJhcmVEYXRhOjp1c2VUeXBlcygp
OwotICAgICAgICBpZiAobV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkpCisgICAgICAgIGlmICht
X3RhYkluZGV4KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpUYWJJbmRleCk7CiAg
ICAgICAgIGlmIChtX21pbmltdW1TaXplRm9yUmVzaXppbmcgIT0gZGVmYXVsdE1pbmltdW1TaXpl
Rm9yUmVzaXppbmcoKSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6TWluaW11bVNp
emUpOwpAQCAtMTU3LDI0ICsxNDEsMjUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9yZXNpemVP
YnNlcnZlckRhdGEpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlJlc2l6ZU9ic2Vy
dmVyKTsKICNlbmRpZgotICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8IG1fYWZ0
ZXJQc2V1ZG9FbGVtZW50KQotICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQc2V1ZG9F
bGVtZW50cyk7CiAgICAgICAgIGlmIChtX2FuaW1hdGlvblJhcmVEYXRhKQogICAgICAgICAgICAg
cmVzdWx0LmFkZChVc2VUeXBlOjpBbmltYXRpb25zKTsKKyAgICAgICAgaWYgKG1fYmVmb3JlUHNl
dWRvRWxlbWVudCB8fCBtX2FmdGVyUHNldWRvRWxlbWVudCkKKyAgICAgICAgICAgIHJlc3VsdC5h
ZGQoVXNlVHlwZTo6UHNldWRvRWxlbWVudHMpOworI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCisg
ICAgICAgIGlmIChtX2F0dHJpYnV0ZVN0eWxlTWFwKQorICAgICAgICAgICAgcmVzdWx0LmFkZChV
c2VUeXBlOjpTdHlsZU1hcCk7CisjZW5kaWYKKyAgICAgICAgaWYgKG1fcGFydExpc3QpCisgICAg
ICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBhcnRMaXN0KTsKKyAgICAgICAgaWYgKCFtX3Bh
cnROYW1lcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBhcnRO
YW1lcyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKIHByaXZhdGU6
Ci0gICAgaW50IG1fdGFiSW5kZXg7Ci0gICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZEluZGV4Owot
ICAgIHVuc2lnbmVkIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5IDogMTsKLSNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgdW5zaWduZWQgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
IDogMTsKLSNlbmRpZgotICAgIHVuc2lnbmVkIG1faGFzUGVuZGluZ1Jlc291cmNlcyA6IDE7Ci0g
ICAgdW5zaWduZWQgbV9oYXNDU1NBbmltYXRpb24gOiAxOwotICAgIHVuc2lnbmVkIG1faGFzRWxl
bWVudElkZW50aWZpZXIgOiAxOworICAgIGludCBtX3RhYkluZGV4IHsgMCB9OworICAgIHVuc2ln
bmVkIHNob3J0IG1fY2hpbGRJbmRleCB7IDAgfTsKIAogICAgIExheW91dFNpemUgbV9taW5pbXVt
U2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9u
OwpAQCAtMjEwLDE1ICsxOTUsNiBAQCBwcml2YXRlOgogCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRh
OjpFbGVtZW50UmFyZURhdGEoKQogICAgIDogTm9kZVJhcmVEYXRhKFR5cGU6OkVsZW1lbnQpCi0g
ICAgLCBtX3RhYkluZGV4KDApCi0gICAgLCBtX2NoaWxkSW5kZXgoMCkKLSAgICAsIG1fdGFiSW5k
ZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKLSNlbmRpZgotICAgICwgbV9o
YXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQotICAgICwgbV9oYXNDU1NBbmltYXRpb24oZmFsc2Up
Ci0gICAgLCBtX2hhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9taW5pbXVtU2l6
ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7CiB9CkBAIC0y
NTIsNiArMjI4LDEyIEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRTdHlsZVJl
bGF0aW9ucygpCiAgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KIAoraW5saW5lIHZvaWQgRWxlbWVu
dFJhcmVEYXRhOjpzZXRUYWJJbmRleChpbnQgdGFiSW5kZXgpCit7CisgICAgQVNTRVJUKHRhYklu
ZGV4ICYmIHRhYkluZGV4ICE9IC0xKTsgLy8gQ29tbW9uIHZhbHVlcyBvZiAwIGFuZCAtMSBhcmUg
c3RvcmVkIGFzIGZsYWdzIGluIE5vZGUuCisgICAgbV90YWJJbmRleCA9IHRhYkluZGV4OworfQor
CiBpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uUmFyZURhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggMjZhMzQ0YTZjMTIxNGFlMDk3NWI3MTA2Njk5MDI0YTM1Yjk2NGQ2
Mi4uZDUzMDQwOTc1YmFiYmFhNmZhMDQ5OWU5ZWFiYWQ5NDU5ZDQ0NjZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtMTMwLDEwICsxMzAsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvclJh
cmVEYXRhVXNlVHlwZShOb2RlUmFyZURhdGE6OlVzZVR5cGUgdXNlVHlwZSkKICAgICAgICAgcmV0
dXJuICJBdHRyaWJ1dGVNYXAiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpJbnRl
cmFjdGlvbk9ic2VydmVyOgogICAgICAgICByZXR1cm4gIkludGVyYWN0aW9uT2JzZXJ2ZXIiOwot
ICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQc2V1ZG9FbGVtZW50czoKLSAgICAgICAg
cmV0dXJuICJQc2V1ZG9FbGVtZW50cyI7CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6
OlJlc2l6ZU9ic2VydmVyOgorICAgICAgICByZXR1cm4gIlJlc2l6ZU9ic2VydmVyIjsKICAgICBj
YXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6QW5pbWF0aW9uczoKICAgICAgICAgcmV0dXJuICJB
bmltYXRpb25zIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UHNldWRvRWxlbWVu
dHM6CisgICAgICAgIHJldHVybiAiUHNldWRvRWxlbWVudHMiOworICAgIGNhc2UgTm9kZVJhcmVE
YXRhOjpVc2VUeXBlOjpTdHlsZU1hcDoKKyAgICAgICAgcmV0dXJuICJTdHlsZU1hcCI7CisgICAg
Y2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OlBhcnRMaXN0OgorICAgICAgICByZXR1cm4gIlBh
cnRMaXN0IjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UGFydE5hbWVzOgorICAg
ICAgICByZXR1cm4gIlBhcnROYW1lcyI7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggYzA0NmIzNjNmNTA5MGQ3Njc0OGU2ZWZlOTdkNDRkZjI4YzdlM2U5Mi4u
YWJjM2MyMmQ5Y2U5MDU3MGY4MmY1OTUxZGMzYzQ5Njc5NTFhNjg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC00MCw5ICs0MCw2IEBACiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCi0vLyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBEb2N1bWVudC5o
IGFsc28gZGVwZW5kcyBvbiBpdC4KLSNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMAotCiBu
YW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9CkBAIC01NDMsNyArNTQwLDE2IEBA
IHByb3RlY3RlZDoKIAogICAgICAgICBIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3NGbGFn
ID0gMSA8PCAyMiwKIAotICAgICAgICAvLyBCaXRzIDIzLTMxIGFyZSBmcmVlLgorICAgICAgICBU
YWJJbmRleElzWmVyb09ySW5SYXJlRGF0YUZsYWcgPSAxIDw8IDIzLAorICAgICAgICBUYWJJbmRl
eElzTmVnYXRpdmVPbmVPckluUmFyZURhdGFGbGFnID0gMSA8PCAyNCwKKyAgICAgICAgSGFzUGVu
ZGluZ1Jlc291cmNlc0ZsYWcgPSAxIDw8IDI1LAorICAgICAgICBIYXNDU1NBbmltYXRpb25GbGFn
ID0gMSA8PCAyNiwKKyAgICAgICAgSGFzRWxlbWVudElkZW50aWZpZXJGbGFnID0gMSA8PCAyNywK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIENvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnRGbGFnID0gMSA8PCAyOCwKKyNlbmRpZgorCisgICAgICAgIC8vIEJpdHMgMjktMzEgYXJl
IGZyZWUuCiAKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmlu
aXNoZWRGbGFnCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2MWY2ZjFi
MjJiOTYxZDc1MzI4N2IxMzkyN2E3ZjY2YTlkMWQwZTNiLi5jYTRkOTExYjI1NTEyZTI4ZWQ2YjM0
MTQzMzIyNTkzOWEwODI3ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNDQs
NyArMjQ0LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoTm9kZVJhcmVEYXRhKTsKIHB1YmxpYzoK
ICNpZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElD
UwotICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQxNl90IHsKKyAgICBlbnVtIGNsYXNzIFVz
ZVR5cGUgOiB1aW50MzJfdCB7CiAgICAgICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAxIDw8IDAs
CiAgICAgICAgIE5vZGVMaXN0ID0gMSA8PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0g
MSA8PCAyLApAQCAtMjU4LDggKzI1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3RvbUVsZW1l
bnRRdWV1ZSA9IDEgPDwgMTAsCiAgICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTEsCiAgICAg
ICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8IDEyLAotICAgICAgICBQc2V1ZG9FbGVtZW50
cyA9IDEgPDwgMTMsCisgICAgICAgIFJlc2l6ZU9ic2VydmVyID0gMSA8PCAxMywKICAgICAgICAg
QW5pbWF0aW9ucyA9IDEgPDwgMTQsCisgICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxNSwK
KyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAorICAgICAgICBQYXJ0TGlzdCA9IDEgPDwgMTcs
CisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCiAgICAgfTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDkzOTg0ZjM4MmNkNGVmMWRmNmNjMTdjMDMzZjU1
ZmRiZjE3NmI0ZjYuLjc0OGYyOTdiOWI4ZTA0M2NlYTIxOWRmMGViYWNjODk0MjRjZGI3MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmEKIAogICAgIGlmIChuYW1lID09IHRhYmluZGV4QXR0cikgewogICAg
ICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xlYXJUYWJJbmRleEV4cGxp
Y2l0bHlJZk5lZWRlZCgpOworICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6
bnVsbG9wdCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9IHBhcnNl
SFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG9w
dGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCAxOWNjMGU3MzBlZDhlNzJhNTE0ZjUxNTgxOWVj
YjNjNDU4NzE2YTE3Li44NWQxNTVkMTRkMTk1M2UxMDdkY2E2NDM5MWEyNjRhNDc2YjQ3MDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRhYmxl
Q2VsbD4ocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNl
IGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVk
KCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsKICAg
ICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2
YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRl
eC52YWx1ZSgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4
IGE3YjQwZjk5MDBkZTlhYTlkNzVmMWY2NzFkOGE4ZGM2MGYyYzRlYmUuLjUwZmYxZjY0MDg4MzNj
MTgwMjU3ZTVmYjA4OGE5MGRkMGQ2MTUzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
QEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbAogCiAgICAgaWYgKG5h
bWUgPT0gSFRNTE5hbWVzOjp0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKKyAg
ICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShXVEY6Om51bGxvcHQpOwogICAgICAgICBl
bHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkK
ICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVl
KCkpOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408104</attachid>
            <date>2020-09-05 16:31:21 -0700</date>
            <delta_ts>2020-09-07 20:02:56 -0700</delta_ts>
            <desc>Updated per Darin&apos;s review comments</desc>
            <filename>bug-216208-20200905163122.patch</filename>
            <type>text/plain</type>
            <size>22673</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkZDVkZDIxNjU4OTNh
MTAwNTBkYWMwZjIwZGVlZjcxZjljYTM5Yy4uMzVkODUyNjg5NWRjNDU5Zjg4MmZmODg1MGEwNTk3
MzJlYjU0YjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA5LTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYWxsIHJlbWFpbmlu
ZyBmbGFncyBmcm9tIEVsZW1lbnRSYXJlRGF0YSB0byBOb2RlIHRvIHJlZHVjZSB0aGUgZnJlcXVl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGFsbCByZW1haW5pbmcgYml0IGZsYWdzIGZyb20gRWxlbWVudFJhcmVEYXRh
IHRvIE5vZGU6Om1fbm9kZUZsYWdzLiBJdCBhbHNvIHN0b3JlcworICAgICAgICB0YWJJbmRleCBv
ZiAwIGFuZCAtMSBpbiBOb2RlOjptX25vZGVGbGFncyB0byBhdm9pZCBjcmVhdGluZyBFbGVtZW50
UmFyZURhdGEgZm9yIHRoZXNlIGNvbW1vbiB2YWx1ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFyVGFiSW5k
ZXhFeHBsaWNpdGx5SWZOZWVkZWQpOiBEZWxldGVkLiBNZXJnZWQgaW50byBzZXRUYWJJbmRleEV4
cGxpY2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0
bHkpOiBOb3cgdGFrZXMgT3B0aW9uYWw8aW50Pi4gU3RvcmVzIDAgYW5kIC0xIGFzIG5vZGUgZmxh
Z3MuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkgY29u
c3QpOiBBZGRlZCB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIDAgYW5kIC0xLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNDU1NBbmltYXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzQ1NT
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFz
Q1NTQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IE1vdmVkIGhlcmUg
ZnJvbSBFbGVtZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhhc1BlbmRp
bmdSZXNvdXJjZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFz
UGVuZGluZ1Jlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFz
Q1NTQW5pbWF0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
ZXRIYXNDU1NBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
ZWFySGFzQ1NTQW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
b250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp0YWJJbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFRhYkluZGV4RXhwbGljaXRs
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnRhYkluZGV4
U2V0RXhwbGljaXRseSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OmNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpoYXNQZW5kaW5nUmVzb3VyY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6c2V0SGFzUGVuZGluZ1Jlc291cmNlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc0NTU0FuaW1hdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldEhhc0NTU0FuaW1h
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc0Vs
ZW1lbnRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0SGFzRWxlbWVudElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp1c2VUeXBlcyBjb25zdCk6IEFkZGVkIHRoZSBtaXNz
aW5nIHVzZSB0eXBlcyBmb3Igc3R5bGUgbWFwcywgcGFydCBsaXN0LAorICAgICAgICBhbmQgcGFy
dCBuYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6dW51c3VhbFRhYkluZGV4
IGNvbnN0KTogUmVuYW1lZCBmcm9tIHRhYkluZGV4LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpzZXRVbnVzdWFsVGFiSW5kZXgpOiBEaXR0byBmcm9tIHNldFRhYkluZGV4RXhw
bGljaXRseS4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdGb3JSYXJlRGF0YVVzZVR5cGUpOiBBZGRlZCB0aGUgbWlzc2luZyBzdHJpbmdzLgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlRmxhZ3MpOiBNb3Zl
ZCBiaXQgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURhdGEgYW5kIHJlc2VydmVkIHRoZSB0d28gaGln
aGVzdCBiaXRzCisgICAgICAgIHRvIHN0b3JlIFRhYkluZGV4U3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnNfdGFiSW5kZXhTdGF0ZUJpdE1hc2spOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OlRhYkluZGV4U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnRhYkluZGV4U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnNldFRhYkluZGV4U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBBZGRlZCB0aGUgbWlz
c2luZyB1c2UgdHlwZXM6IHN0eWxlIG1hcHMsIHBhcnQgbGlzdCwgYW5kIHBhcnQgbmFtZXMuCisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisKIDIwMjAtMDktMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU3RvcmUgYWxsIHN0eWxpbmcgZmxhZ3MgaW4gbV9yZW5kZXJl
cldpdGhTdHlsZUZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOWIwZGZlMGUyMGY0NzZk
NmNhZGY2NWViMTBkZWUwMWFiNWQ0YjgzZi4uY2E5ZjQzMzk2ZTQzYzc3ODU1NjYyZDdiOGJlOWEz
YWZmOTIxM2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQxLDIyICsyNDEsNDAgQEAg
aW5saW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhJj4oZW5zdXJlUmFyZURhdGEo
KSk7CiB9CiAKLXZvaWQgRWxlbWVudDo6Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgp
Cit2b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+IHRhYklu
ZGV4KQogewotICAgIGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICBlbGVtZW50UmFyZURhdGEo
KS0+Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHkoKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRUYWJJ
bmRleEV4cGxpY2l0bHkoaW50IHRhYkluZGV4KQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpLnNldFRhYkluZGV4RXhwbGljaXRseSh0YWJJbmRleCk7CisgICAgaWYgKCF0YWJJbmRleCkg
eworICAgICAgICBzZXRUYWJJbmRleFN0YXRlKFRhYkluZGV4U3RhdGU6Ok5vdFNldCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgc2V0VGFiSW5kZXhTdGF0ZShbdGhpcywgdmFsdWUgPSB0
YWJJbmRleC52YWx1ZSgpXSgpIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZSkgeworICAgICAgICBj
YXNlIDA6CisgICAgICAgICAgICByZXR1cm4gVGFiSW5kZXhTdGF0ZTo6WmVybzsKKyAgICAgICAg
Y2FzZSAtMToKKyAgICAgICAgICAgIHJldHVybiBUYWJJbmRleFN0YXRlOjpOZWdhdGl2ZU9uZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNl
dFVudXN1YWxUYWJJbmRleCh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gVGFiSW5kZXhTdGF0
ZTo6SW5SYXJlRGF0YTsKKyAgICAgICAgfQorICAgIH0oKSk7CiB9CiAKIE9wdGlvbmFsPGludD4g
RWxlbWVudDo6dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCisgICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKKyAgICBjYXNlIFRhYklu
ZGV4U3RhdGU6Ok5vdFNldDoKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1
cm4gZWxlbWVudFJhcmVEYXRhKCktPnRhYkluZGV4KCk7CisgICAgY2FzZSBUYWJJbmRleFN0YXRl
OjpaZXJvOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5lZ2F0
aXZlT25lOgorICAgICAgICByZXR1cm4gLTE7CisgICAgY2FzZSBUYWJJbmRleFN0YXRlOjpJblJh
cmVEYXRhOgorICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNSYXJlRGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT51bnVzdWFsVGFiSW5kZXgoKTsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogaW50
IEVsZW1lbnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNvbnN0CkBAIC0yMjY2LDkgKzIyODQsOSBAQCB2
b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIG9sZFBhcgogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKGhhc1JhcmVE
YXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmhhc0VsZW1lbnRJZGVudGlmaWVyKCkpIHsKKyAg
ICBpZiAoZ2V0RmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcpKSB7CiAgICAgICAgIGRvY3Vt
ZW50KCkuaWRlbnRpZmllZEVsZW1lbnRXYXNSZW1vdmVkRnJvbURvY3VtZW50KCp0aGlzKTsKLSAg
ICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKTsK
KyAgICAgICAgY2xlYXJGbGFnKEhhc0VsZW1lbnRJZGVudGlmaWVyRmxhZyk7CiAgICAgfQogfQog
CkBAIC0zNzE2LDE0ICszNzM0LDEyIEBAIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxz
Y3JlZW4oKQogICAgIGRvY3VtZW50KCkuZnVsbHNjcmVlbk1hbmFnZXIoKS5yZXF1ZXN0RnVsbHNj
cmVlbkZvckVsZW1lbnQodGhpcywgRnVsbHNjcmVlbk1hbmFnZXI6OkVuZm9yY2VJRnJhbWVBbGxv
d0Z1bGxzY3JlZW5SZXF1aXJlbWVudCk7CiB9CiAKLWJvb2wgRWxlbWVudDo6Y29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxl
bWVudFJhcmVEYXRhKCktPmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKTsKLX0KLQogdm9pZCBF
bGVtZW50OjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgZmxhZykKIHsKLSAgICBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZsYWcp
OworICAgIGlmIChmbGFnKQorICAgICAgICBzZXRGbGFnKENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnRGbGFnKTsKKyAgICBlbHNlCisgICAgICAgIGNsZWFyRmxhZyhDb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50RmxhZyk7CiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOwog
fQogCkBAIC00MzY2LDQwICs0MzgyLDYgQEAgdm9pZCBFbGVtZW50OjpjcmVhdGVVbmlxdWVFbGVt
ZW50RGF0YSgpCiAgICAgICAgIG1fZWxlbWVudERhdGEgPSBkb3duY2FzdDxTaGFyZWFibGVFbGVt
ZW50RGF0YT4oKm1fZWxlbWVudERhdGEpLm1ha2VVbmlxdWVDb3B5KCk7CiB9CiAKLWJvb2wgRWxl
bWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVE
YXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKLX0KLQot
dm9pZCBFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCkKLXsKLSAgICBlbnN1cmVFbGVt
ZW50UmFyZURhdGEoKS5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKHRydWUpOwotfQotCi12b2lkIEVs
ZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291cmNlcygpCi17Ci0gICAgaWYgKCFoYXNSYXJlRGF0
YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc1BlbmRp
bmdSZXNvdXJjZXMoZmFsc2UpOwotfQotCi1ib29sIEVsZW1lbnQ6Omhhc0NTU0FuaW1hdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCkt
Pmhhc0NTU0FuaW1hdGlvbigpOwotfQotCi12b2lkIEVsZW1lbnQ6OnNldEhhc0NTU0FuaW1hdGlv
bigpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0SGFzQ1NTQW5pbWF0aW9uKHRy
dWUpOwotfQotCi12b2lkIEVsZW1lbnQ6OmNsZWFySGFzQ1NTQW5pbWF0aW9uKCkKLXsKLSAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50UmFyZURhdGEo
KS0+c2V0SGFzQ1NTQW5pbWF0aW9uKGZhbHNlKTsKLX0KLQogYm9vbCBFbGVtZW50OjpjYW5Db250
YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyKSwg
ImltZyIpOwpAQCAtNDYxMSwxMCArNDU5Myw4IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9u
Pj4gRWxlbWVudDo6Z2V0QW5pbWF0aW9ucyhPcHRpb25hbDxHZXRBbmltYXRpb25zT3B0aW9uCiAK
IEVsZW1lbnRJZGVudGlmaWVyIEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRJZGVudGlmaWVyKCkKIHsK
LSAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwotICAgIEFTU0VS
VCghcmFyZURhdGEuaGFzRWxlbWVudElkZW50aWZpZXIoKSk7Ci0KLSAgICByYXJlRGF0YS5zZXRI
YXNFbGVtZW50SWRlbnRpZmllcih0cnVlKTsKKyAgICBBU1NFUlQoIWdldEZsYWcoSGFzRWxlbWVu
dElkZW50aWZpZXJGbGFnKSk7CisgICAgc2V0RmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcp
OwogICAgIHJldHVybiBFbGVtZW50SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKaW5kZXggMzllZTBiOWJjMTEzOGEwMDg1ZGIyMzE2OTM3NzUwZjgzYWZlNmY1Zi4u
MzRmZTVlMDgzYmYwNzA4YjM0MmQxNGFmMjBkYmM1M2I0YWIxNmQyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KIAorI2RlZmluZSBEVU1QX05PREVfU1RB
VElTVElDUyAwCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWU7CkBAIC00NzksMTQgKzQ4MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Q7CiAKLSAg
ICBib29sIGhhc1BlbmRpbmdSZXNvdXJjZXMoKSBjb25zdDsKLSAgICB2b2lkIHNldEhhc1BlbmRp
bmdSZXNvdXJjZXMoKTsKLSAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291cmNlcygpOworICAg
IGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzUGVu
ZGluZ1Jlc291cmNlc0ZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCkg
eyBzZXRGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnKTsgfQorICAgIHZvaWQgY2xlYXJIYXNQ
ZW5kaW5nUmVzb3VyY2VzKCkgeyBjbGVhckZsYWcoSGFzUGVuZGluZ1Jlc291cmNlc0ZsYWcpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9OwogCi0gICAgYm9v
bCBoYXNDU1NBbmltYXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbigp
OwotICAgIHZvaWQgY2xlYXJIYXNDU1NBbmltYXRpb24oKTsKKyAgICBib29sIGhhc0NTU0FuaW1h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7IH0KKyAg
ICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbigpIHsgc2V0RmxhZyhIYXNDU1NBbmltYXRpb25GbGFn
KTsgfQorICAgIHZvaWQgY2xlYXJIYXNDU1NBbmltYXRpb24oKSB7IGNsZWFyRmxhZyhIYXNDU1NB
bmltYXRpb25GbGFnKTsgfQogCiAgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayoga2V5ZnJhbWVFZmZl
Y3RTdGFjaygpIGNvbnN0OwogICAgIEtleWZyYW1lRWZmZWN0U3RhY2smIGVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soKTsKQEAgLTUxMSw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRM
YXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHls
ZT4mJik7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBjb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhDb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50RmxhZyk7IH0KICAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoYm9vbCk7CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3Rv
cnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKQEAgLTYzNSw4ICs2MzcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCk7CiAKLSAgICB2b2lkIGNsZWFy
VGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKLSAgICB2b2lkIHNldFRhYkluZGV4RXhwbGlj
aXRseShpbnQpOworICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KE9wdGlvbmFsPGludD4p
OwogCiAgICAgdm9pZCBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbmV3
Q2xhc3NTdHJpbmcpOwogICAgIHZvaWQgcGFydEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbVN0
cmluZyYgbmV3VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAppbmRl
eCA4YWFlYWVjNTZmMDE3Y2JhMzcyMTk3YWNkOTNjYTgzZjk2NzExM2U1Li5kYjRlYWUxYjU3MGE3
MzQzODM5NzZiNzkyYTNhMDA0ZTg5MDUzMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IFNhbWVTaXplQXNFbGVtZW50UmFyZURhdGEgOiBOb2RlUmFyZURhdGEgewogICAgIGludCB0YWJJ
bmRleDsKICAgICB1bnNpZ25lZCBzaG9ydCBjaGlsZEluZGV4OwotI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiAxMjsKLSNlbHNlCi0gICAgdW5zaWdu
ZWQgYml0ZmllbGRzIDogMTE7Ci0jZW5kaWYKICAgICBMYXlvdXRTaXplIHNpemVGb3JSZXNpemlu
ZzsKICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb247CiAgICAgdm9pZCogcG9p
bnRlcnNbMTFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGZjY2FiNTEx
NzM0ODIxYTRiZDZlY2MwYTA2MzgzYWZlMjA0ZDk4NGMuLmFhZWEwYjVlNzg2MWQzNDdmNGY4NWQx
YTE2YTRhN2ZmODMzZDY0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAg
LTU2LDE2ICs1Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7
CiAgICAgdm9pZCByZXNldFN0eWxlUmVsYXRpb25zKCk7Ci0gICAgCi0gICAgT3B0aW9uYWw8aW50
PiB0YWJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5ID8g
T3B0aW9uYWw8aW50PiB7IG1fdGFiSW5kZXggfSA6IFdURjo6bnVsbG9wdDsgfQotICAgIHZvaWQg
c2V0VGFiSW5kZXhFeHBsaWNpdGx5KGludCBpbmRleCkgeyBtX3RhYkluZGV4ID0gaW5kZXg7IG1f
dGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5ID0gdHJ1ZTsgfQotICAgIGJvb2wgdGFiSW5kZXhTZXRF
eHBsaWNpdGx5KCkgY29uc3QgeyByZXR1cm4gbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHk7IH0K
LSAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5KCkgeyBtX3RhYkluZGV4ID0gMDsgbV90
YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgPSBmYWxzZTsgfQotCi0jaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIHsgcmV0dXJuIG1f
Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQotICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA9IHZh
bHVlOyB9Ci0jZW5kaWYKKworICAgIGludCB1bnVzdWFsVGFiSW5kZXgoKSBjb25zdDsKKyAgICB2
b2lkIHNldFVudXN1YWxUYWJJbmRleChpbnQpOwogCiAgICAgdW5zaWduZWQgY2hpbGRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQogICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1
bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQpAQCAtOTYsMTggKzg5LDkg
QEAgcHVibGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZl
ZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Ny
b2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgYm9vbCBoYXNQZW5kaW5nUmVzb3VyY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nUmVzb3VyY2VzOyB9Ci0gICAgdm9pZCBzZXRI
YXNQZW5kaW5nUmVzb3VyY2VzKGJvb2wgaGFzKSB7IG1faGFzUGVuZGluZ1Jlc291cmNlcyA9IGhh
czsgfQotCi0gICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NT
U0FuaW1hdGlvbjsgfQotICAgIHZvaWQgc2V0SGFzQ1NTQW5pbWF0aW9uKGJvb2wgdmFsdWUpIHsg
bV9oYXNDU1NBbmltYXRpb24gPSB2YWx1ZTsgfQotCiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVE
YXRhLmdldCgpOyB9CiAgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRp
b25SYXJlRGF0YSgpOwogCi0gICAgYm9vbCBoYXNFbGVtZW50SWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRWxlbWVudElkZW50aWZpZXI7IH0KLSAgICB2b2lkIHNldEhhc0VsZW1lbnRJ
ZGVudGlmaWVyKGJvb2wgdmFsdWUpIHsgbV9oYXNFbGVtZW50SWRlbnRpZmllciA9IHZhbHVlOyB9
Ci0KICAgICBET01Ub2tlbkxpc3QqIHBhcnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJ0TGlz
dC5nZXQoKTsgfQogICAgIHZvaWQgc2V0UGFydExpc3Qoc3RkOjp1bmlxdWVfcHRyPERPTVRva2Vu
TGlzdD4gcGFydExpc3QpIHsgbV9wYXJ0TGlzdCA9IFdURk1vdmUocGFydExpc3QpOyB9CiAKQEAg
LTEzMyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0PFVzZVR5cGU+IHVzZVR5cGVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gTm9kZVJhcmVEYXRhOjp1c2VU
eXBlcygpOwotICAgICAgICBpZiAobV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkpCisgICAgICAg
IGlmIChtX3VudXN1YWxUYWJJbmRleCkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6
VGFiSW5kZXgpOwogICAgICAgICBpZiAobV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nICE9IGRlZmF1
bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5
cGU6Ok1pbmltdW1TaXplKTsKQEAgLTE1NywyNCArMTQxLDI1IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKG1fcmVzaXplT2JzZXJ2ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBl
OjpSZXNpemVPYnNlcnZlcik7CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYmVmb3JlUHNldWRvRWxl
bWVudCB8fCBtX2FmdGVyUHNldWRvRWxlbWVudCkKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNl
VHlwZTo6UHNldWRvRWxlbWVudHMpOwogICAgICAgICBpZiAobV9hbmltYXRpb25SYXJlRGF0YSkK
ICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6QW5pbWF0aW9ucyk7CisgICAgICAgIGlm
IChtX2JlZm9yZVBzZXVkb0VsZW1lbnQgfHwgbV9hZnRlclBzZXVkb0VsZW1lbnQpCisgICAgICAg
ICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBzZXVkb0VsZW1lbnRzKTsKKyNpZiBFTkFCTEUoQ1NT
X1RZUEVEX09NKQorICAgICAgICBpZiAobV9hdHRyaWJ1dGVTdHlsZU1hcCkKKyAgICAgICAgICAg
IHJlc3VsdC5hZGQoVXNlVHlwZTo6U3R5bGVNYXApOworI2VuZGlmCisgICAgICAgIGlmIChtX3Bh
cnRMaXN0KQorICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQYXJ0TGlzdCk7CisgICAg
ICAgIGlmICghbV9wYXJ0TmFtZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzdWx0LmFkZChV
c2VUeXBlOjpQYXJ0TmFtZXMpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRp
ZgogCiBwcml2YXRlOgotICAgIGludCBtX3RhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IG1f
Y2hpbGRJbmRleDsKLSAgICB1bnNpZ25lZCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA6IDE7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHVuc2lnbmVkIG1fY29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCA6IDE7Ci0jZW5kaWYKLSAgICB1bnNpZ25lZCBtX2hhc1BlbmRpbmdSZXNv
dXJjZXMgOiAxOwotICAgIHVuc2lnbmVkIG1faGFzQ1NTQW5pbWF0aW9uIDogMTsKLSAgICB1bnNp
Z25lZCBtX2hhc0VsZW1lbnRJZGVudGlmaWVyIDogMTsKKyAgICBpbnQgbV91bnVzdWFsVGFiSW5k
ZXggeyAwIH07CisgICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZEluZGV4IHsgMCB9OwogCiAgICAg
TGF5b3V0U2l6ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgbV9zYXZl
ZExheWVyU2Nyb2xsUG9zaXRpb247CkBAIC0yMTAsMTUgKzE5NSw2IEBAIHByaXZhdGU6CiAKIGlu
bGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSgpCiAgICAgOiBOb2RlUmFyZURh
dGEoVHlwZTo6RWxlbWVudCkKLSAgICAsIG1fdGFiSW5kZXgoMCkKLSAgICAsIG1fY2hpbGRJbmRl
eCgwKQotICAgICwgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkoZmFsc2UpCi0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGZhbHNl
KQotI2VuZGlmCi0gICAgLCBtX2hhc1BlbmRpbmdSZXNvdXJjZXMoZmFsc2UpCi0gICAgLCBtX2hh
c0NTU0FuaW1hdGlvbihmYWxzZSkKLSAgICAsIG1faGFzRWxlbWVudElkZW50aWZpZXIoZmFsc2Up
CiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1TaXplRm9yUmVz
aXppbmcoKSkKIHsKIH0KQEAgLTI1Miw2ICsyMjgsMTggQEAgaW5saW5lIHZvaWQgRWxlbWVudFJh
cmVEYXRhOjpyZXNldFN0eWxlUmVsYXRpb25zKCkKICAgICBzZXRDaGlsZEluZGV4KDApOwogfQog
CitpbmxpbmUgaW50IEVsZW1lbnRSYXJlRGF0YTo6dW51c3VhbFRhYkluZGV4KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV91bnVzdWFsVGFiSW5kZXggJiYgbV91bnVzdWFsVGFiSW5kZXggIT0gLTEp
OyAvLyBDb21tb24gdmFsdWVzIG9mIDAgYW5kIC0xIGFyZSBzdG9yZWQgYXMgVGFiSW5kZXhTdGF0
ZSBpbiBOb2RlLgorICAgIHJldHVybiBtX3VudXN1YWxUYWJJbmRleDsKK30KKworaW5saW5lIHZv
aWQgRWxlbWVudFJhcmVEYXRhOjpzZXRVbnVzdWFsVGFiSW5kZXgoaW50IHRhYkluZGV4KQorewor
ICAgIEFTU0VSVCh0YWJJbmRleCAmJiB0YWJJbmRleCAhPSAtMSk7IC8vIENvbW1vbiB2YWx1ZXMg
b2YgMCBhbmQgLTEgYXJlIHN0b3JlZCBhcyBUYWJJbmRleFN0YXRlIGluIE5vZGUuCisgICAgbV91
bnVzdWFsVGFiSW5kZXggPSB0YWJJbmRleDsKK30KKwogaW5saW5lIEVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YSYgRWxlbWVudFJhcmVEYXRhOjplbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpCiB7CiAg
ICAgaWYgKCFtX2FuaW1hdGlvblJhcmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDI2YTM0NGE2
YzEyMTRhZTA5NzViNzEwNjY5OTAyNGEzNWI5NjRkNjIuLmQ1MzA0MDk3NWJhYmJhYTZmYTA0OTll
OWVhYmFkOTQ1OWQ0NDY2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTEzMCwxMCArMTMwLDE4IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JSYXJlRGF0YVVzZVR5cGUoTm9kZVJhcmVEYXRh
OjpVc2VUeXBlIHVzZVR5cGUpCiAgICAgICAgIHJldHVybiAiQXR0cmlidXRlTWFwIjsKICAgICBj
YXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6SW50ZXJhY3Rpb25PYnNlcnZlcjoKICAgICAgICAg
cmV0dXJuICJJbnRlcmFjdGlvbk9ic2VydmVyIjsKLSAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNl
VHlwZTo6UHNldWRvRWxlbWVudHM6Ci0gICAgICAgIHJldHVybiAiUHNldWRvRWxlbWVudHMiOwor
ICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpSZXNpemVPYnNlcnZlcjoKKyAgICAgICAg
cmV0dXJuICJSZXNpemVPYnNlcnZlciI7CiAgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6
OkFuaW1hdGlvbnM6CiAgICAgICAgIHJldHVybiAiQW5pbWF0aW9ucyI7CisgICAgY2FzZSBOb2Rl
UmFyZURhdGE6OlVzZVR5cGU6OlBzZXVkb0VsZW1lbnRzOgorICAgICAgICByZXR1cm4gIlBzZXVk
b0VsZW1lbnRzIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6U3R5bGVNYXA6Cisg
ICAgICAgIHJldHVybiAiU3R5bGVNYXAiOworICAgIGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBl
OjpQYXJ0TGlzdDoKKyAgICAgICAgcmV0dXJuICJQYXJ0TGlzdCI7CisgICAgY2FzZSBOb2RlUmFy
ZURhdGE6OlVzZVR5cGU6OlBhcnROYW1lczoKKyAgICAgICAgcmV0dXJuICJQYXJ0TmFtZXMiOwog
ICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGMwNDZiMzYzZjUw
OTBkNzY3NDhlNmVmZTk3ZDQ0ZGYyOGM3ZTNlOTIuLmIyYjMxZWFkOGNkNWJlNjY5YTA5YjdlYTdi
Y2U3MDhhNDQ1MWRiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDAsOSArNDAsNiBAQAogI2luY2x1ZGUg
PHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAotLy8gVGhpcyBuZWVk
cyB0byBiZSBoZXJlIGJlY2F1c2UgRG9jdW1lbnQuaCBhbHNvIGRlcGVuZHMgb24gaXQuCi0jZGVm
aW5lIERVTVBfTk9ERV9TVEFUSVNUSUNTIDAKLQogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0
U3RyZWFtOwogfQpAQCAtNTQzLDE2ICs1NDAsMzYgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIEhh
c0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDIyLAogCi0gICAgICAgIC8v
IEJpdHMgMjMtMzEgYXJlIGZyZWUuCisgICAgICAgIEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnID0g
MSA8PCAyMywKKyAgICAgICAgSGFzQ1NTQW5pbWF0aW9uRmxhZyA9IDEgPDwgMjQsCisgICAgICAg
IEhhc0VsZW1lbnRJZGVudGlmaWVyRmxhZyA9IDEgPDwgMjUsCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgICAgICBDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50RmxhZyA9IDEgPDwgMjYs
CisjZW5kaWYKKworICAgICAgICAvLyBCaXRzIDI3LTI5IGFyZSBmcmVlLgorICAgICAgICAvLyBC
aXRzIDMwLTMxOiBUYWJJbmRleFN0YXRlCiAKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElz
UGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAgICAgfTsKIAorICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgc190YWJJbmRleFN0YXRlQml0T2Zmc2V0ID0gMzA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBzX3RhYkluZGV4U3RhdGVCaXRNYXNrID0gMyA8PCBzX3RhYkluZGV4
U3RhdGVCaXRPZmZzZXQ7CisgICAgZW51bSBjbGFzcyBUYWJJbmRleFN0YXRlIDogdWludDhfdCB7
CisgICAgICAgIE5vdFNldCA9IDAsCisgICAgICAgIFplcm8gPSAxLAorICAgICAgICBOZWdhdGl2
ZU9uZSA9IDIsCisgICAgICAgIEluUmFyZURhdGEgPSAzLAorICAgIH07CisKICAgICBib29sIGdl
dEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsg
fQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9k
ZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0g
CiAgICAgdm9pZCBzZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzIHw9
IG1hc2s7IH0gCiAgICAgdm9pZCBjbGVhckZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9u
b2RlRmxhZ3MgJj0gfm1hc2s7IH0KIAorICAgIFRhYkluZGV4U3RhdGUgdGFiSW5kZXhTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRhYkluZGV4U3RhdGU+KChtX25vZGVGbGFncyAm
IHNfdGFiSW5kZXhTdGF0ZUJpdE1hc2spID4+IHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCk7IH0K
KyAgICB2b2lkIHNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSBzdGF0ZSkgeyBtX25vZGVG
bGFncyA9IChtX25vZGVGbGFncyAmIH5zX3RhYkluZGV4U3RhdGVCaXRNYXNrKSB8IChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3RhdGUpIDw8IHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCk7IH0KKwog
ICAgIGJvb2wgaXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9CiAgICAgdm9pZCBzZXRJc1BhcnNp
bmdDaGlsZHJlbkZpbmlzaGVkKCkgeyBzZXRGbGFnKElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRG
bGFnKTsgfQogICAgIHZvaWQgY2xlYXJJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgeyBjbGVh
ckZsYWcoSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKaW5kZXggNjFmNmYxYjIyYjk2MWQ3NTMyODdiMTM5MjdhN2Y2NmE5ZDFkMGUzYi4u
Y2E0ZDkxMWIyNTUxMmUyOGVkNmIzNDE0MzMyMjU5MzlhMDgyN2QxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaApAQCAtMjQ0LDcgKzI0NCw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSB7CiAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKE5v
ZGVSYXJlRGF0YSk7CiBwdWJsaWM6CiAjaWYgZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykg
JiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKLSAgICBlbnVtIGNsYXNzIFVzZVR5cGUgOiB1aW50MTZf
dCB7CisgICAgZW51bSBjbGFzcyBVc2VUeXBlIDogdWludDMyX3QgewogICAgICAgICBDb25uZWN0
ZWRGcmFtZUNvdW50ID0gMSA8PCAwLAogICAgICAgICBOb2RlTGlzdCA9IDEgPDwgMSwKICAgICAg
ICAgTXV0YXRpb25PYnNlcnZlciA9IDEgPDwgMiwKQEAgLTI1OCw4ICsyNTgsMTIgQEAgcHVibGlj
OgogICAgICAgICBDdXN0b21FbGVtZW50UXVldWUgPSAxIDw8IDEwLAogICAgICAgICBBdHRyaWJ1
dGVNYXAgPSAxIDw8IDExLAogICAgICAgICBJbnRlcmFjdGlvbk9ic2VydmVyID0gMSA8PCAxMiwK
LSAgICAgICAgUHNldWRvRWxlbWVudHMgPSAxIDw8IDEzLAorICAgICAgICBSZXNpemVPYnNlcnZl
ciA9IDEgPDwgMTMsCiAgICAgICAgIEFuaW1hdGlvbnMgPSAxIDw8IDE0LAorICAgICAgICBQc2V1
ZG9FbGVtZW50cyA9IDEgPDwgMTUsCisgICAgICAgIFN0eWxlTWFwID0gMSA8PCAxNiwKKyAgICAg
ICAgUGFydExpc3QgPSAxIDw8IDE3LAorICAgICAgICBQYXJ0TmFtZXMgPSAxIDw8IDE4LAogICAg
IH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5Mzk4NGYz
ODJjZDRlZjFkZjZjYzE3YzAzM2Y1NWZkYmYxNzZiNGY2Li43NDhmMjk3YjliOGUwNDNjZWEyMTlk
ZjBlYmFjYzg5NDI0Y2RiNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAt
NDUyLDcgKzQ1Miw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhCiAKICAgICBpZiAobmFtZSA9
PSB0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHNldFRh
YkluZGV4RXhwbGljaXRseShXVEY6Om51bGxvcHQpOwogICAgICAgICBlbHNlIGlmIChhdXRvIG9w
dGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNl
dFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVlKCkpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggMTljYzBl
NzMwZWQ4ZTcyYTUxNGY1MTU4MTllY2IzYzQ1ODcxNmExNy4uODVkMTU1ZDE0ZDE5NTNlMTA3ZGNh
NjQzOTFhMjY0YTQ3NmI0NzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAgICAg
ICBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpLT5jb2xTcGFuT3JSb3dTcGFu
Q2hhbmdlZCgpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnRhYmluZGV4QXR0
cikgewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xlYXJUYWJJ
bmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpOworICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNp
dGx5KFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRl
eCA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBs
aWNpdGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAppbmRleCBhN2I0MGY5OTAwZGU5YWE5ZDc1ZjFmNjcxZDhhOGRjNjBm
MmM0ZWJlLi41MGZmMWY2NDA4ODMzYzE4MDI1N2U1ZmIwODhhOTBkZDBkNjE1MzllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBTVkdFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWwKIAogICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAg
ICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGVhclRhYkluZGV4RXhw
bGljaXRseUlmTmVlZGVkKCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RG
OjpudWxsb3B0KTsKICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFy
c2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHko
b3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408206</attachid>
            <date>2020-09-07 20:02:58 -0700</date>
            <delta_ts>2020-09-07 20:03:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216208-20200907200257.patch</filename>
            <type>text/plain</type>
            <size>22627</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFkZDVkZDIxNjU4OTNh
MTAwNTBkYWMwZjIwZGVlZjcxZjljYTM5Yy4uZDYyODg5NmNiNTY5YTlhZDU1YmMzMTU2Yjc2ZTQ2
MDBkZmQ0ZTZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIwLTA5LTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgYWxsIHJlbWFpbmlu
ZyBmbGFncyBmcm9tIEVsZW1lbnRSYXJlRGF0YSB0byBOb2RlIHRvIHJlZHVjZSB0aGUgZnJlcXVl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYy
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGlzIHBh
dGNoIG1vdmVzIGFsbCByZW1haW5pbmcgYml0IGZsYWdzIGZyb20gRWxlbWVudFJhcmVEYXRhIHRv
IE5vZGU6Om1fbm9kZUZsYWdzLiBJdCBhbHNvIHN0b3JlcworICAgICAgICB0YWJJbmRleCBvZiAw
IGFuZCAtMSBpbiBOb2RlOjptX25vZGVGbGFncyB0byBhdm9pZCBjcmVhdGluZyBFbGVtZW50UmFy
ZURhdGEgZm9yIHRoZXNlIGNvbW1vbiB2YWx1ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNp
bmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFyVGFiSW5kZXhF
eHBsaWNpdGx5SWZOZWVkZWQpOiBEZWxldGVkLiBNZXJnZWQgaW50byBzZXRUYWJJbmRleEV4cGxp
Y2l0bHkuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkp
OiBOb3cgdGFrZXMgT3B0aW9uYWw8aW50Pi4gU3RvcmVzIDAgYW5kIC0xIGFzIG5vZGUgZmxhZ3Mu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkgY29uc3Qp
OiBBZGRlZCB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIDAgYW5kIC0xLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRIYXNQZW5kaW5nUmVzb3VyY2VzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVuZGluZ1Jlc291cmNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNDU1NBbmltYXRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SGFzQ1NTQW5p
bWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzQ1NT
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6aGFzUGVuZGluZ1Jlc291cmNlcyBjb25zdCk6IE1vdmVkIGhlcmUgZnJv
bSBFbGVtZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEhhc1BlbmRpbmdS
ZXNvdXJjZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFySGFzUGVu
ZGluZ1Jlc291cmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQ1NT
QW5pbWF0aW9uIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRI
YXNDU1NBbmltYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsZWFy
SGFzQ1NTQW5pbWF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb250
YWluc0Z1bGxTY3JlZW5FbGVtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogZG9tL0VsZW1l
bnRSYXJlRGF0YS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp0YWJJbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFRhYkluZGV4RXhwbGljaXRseSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnRhYkluZGV4U2V0
RXhwbGljaXRseSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OmNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpo
YXNQZW5kaW5nUmVzb3VyY2VzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6c2V0SGFzUGVuZGluZ1Jlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc0NTU0FuaW1hdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldEhhc0NTU0FuaW1hdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc0VsZW1l
bnRJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
YXJlRGF0YTo6c2V0SGFzRWxlbWVudElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjp1c2VUeXBlcyBjb25zdCk6IEFkZGVkIHRoZSBtaXNzaW5n
IHVzZSB0eXBlcyBmb3Igc3R5bGUgbWFwcywgcGFydCBsaXN0LAorICAgICAgICBhbmQgcGFydCBu
YW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6dW51c3VhbFRhYkluZGV4IGNv
bnN0KTogUmVuYW1lZCBmcm9tIHRhYkluZGV4LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpzZXRVbnVzdWFsVGFiSW5kZXgpOiBEaXR0byBmcm9tIHNldFRhYkluZGV4RXhwbGlj
aXRseS4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdG
b3JSYXJlRGF0YVVzZVR5cGUpOiBBZGRlZCB0aGUgbWlzc2luZyBzdHJpbmdzLgorICAgICAgICAq
IGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlRmxhZ3MpOiBNb3ZlZCBi
aXQgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURhdGEgYW5kIHJlc2VydmVkIHRoZSB0d28gaGlnaGVz
dCBiaXRzCisgICAgICAgIHRvIHN0b3JlIFRhYkluZGV4U3RhdGUuCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnNfdGFiSW5kZXhTdGF0ZUJpdE1hc2spOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OlRhYkluZGV4U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnRhYkluZGV4U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNl
dFRhYkluZGV4U3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBBZGRlZCB0aGUgbWlzc2lu
ZyB1c2UgdHlwZXM6IHN0eWxlIG1hcHMsIHBhcnQgbGlzdCwgYW5kIHBhcnQgbmFtZXMuCisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisKIDIwMjAtMDktMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU3RvcmUgYWxsIHN0eWxpbmcgZmxhZ3MgaW4gbV9yZW5kZXJlcldp
dGhTdHlsZUZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOWIwZGZlMGUyMGY0NzZkNmNh
ZGY2NWViMTBkZWUwMWFiNWQ0YjgzZi4uYWQzMmNmMWZlOWIzZTE3NzVlYjAyZjdmMDE2ZTRlNTE5
M2M1ZmE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQxLDIyICsyNDEsNDAgQEAgaW5s
aW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhJj4oZW5zdXJlUmFyZURhdGEoKSk7
CiB9CiAKLXZvaWQgRWxlbWVudDo6Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpCit2
b2lkIEVsZW1lbnQ6OnNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+IHRhYkluZGV4
KQogewotICAgIGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICBlbGVtZW50UmFyZURhdGEoKS0+
Y2xlYXJUYWJJbmRleEV4cGxpY2l0bHkoKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRUYWJJbmRl
eEV4cGxpY2l0bHkoaW50IHRhYkluZGV4KQotewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
LnNldFRhYkluZGV4RXhwbGljaXRseSh0YWJJbmRleCk7CisgICAgaWYgKCF0YWJJbmRleCkgewor
ICAgICAgICBzZXRUYWJJbmRleFN0YXRlKFRhYkluZGV4U3RhdGU6Ok5vdFNldCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc2V0VGFiSW5kZXhTdGF0ZShbdGhpcywgdmFsdWUgPSB0YWJJ
bmRleC52YWx1ZSgpXSgpIHsKKyAgICAgICAgc3dpdGNoICh2YWx1ZSkgeworICAgICAgICBjYXNl
IDA6CisgICAgICAgICAgICByZXR1cm4gVGFiSW5kZXhTdGF0ZTo6WmVybzsKKyAgICAgICAgY2Fz
ZSAtMToKKyAgICAgICAgICAgIHJldHVybiBUYWJJbmRleFN0YXRlOjpOZWdhdGl2ZU9uZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFVu
dXN1YWxUYWJJbmRleCh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gVGFiSW5kZXhTdGF0ZTo6
SW5SYXJlRGF0YTsKKyAgICAgICAgfQorICAgIH0oKSk7CiB9CiAKIE9wdGlvbmFsPGludD4gRWxl
bWVudDo6dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc1JhcmVE
YXRhKCkpCisgICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKKyAgICBjYXNlIFRhYkluZGV4
U3RhdGU6Ok5vdFNldDoKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4g
ZWxlbWVudFJhcmVEYXRhKCktPnRhYkluZGV4KCk7CisgICAgY2FzZSBUYWJJbmRleFN0YXRlOjpa
ZXJvOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5lZ2F0aXZl
T25lOgorICAgICAgICByZXR1cm4gLTE7CisgICAgY2FzZSBUYWJJbmRleFN0YXRlOjpJblJhcmVE
YXRhOgorICAgICAgICBBU1NFUlQoaGFzUmFyZURhdGEoKSk7CisgICAgICAgIHJldHVybiBlbGVt
ZW50UmFyZURhdGEoKS0+dW51c3VhbFRhYkluZGV4KCk7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGludCBFbGVtZW50Ojpk
ZWZhdWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMjI2Niw5ICsyMjg0LDkgQEAgdm9pZCBFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBvbGRQYXIKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIGVs
ZW1lbnRSYXJlRGF0YSgpLT5oYXNFbGVtZW50SWRlbnRpZmllcigpKSB7CisgICAgaWYgKGdldEZs
YWcoSGFzRWxlbWVudElkZW50aWZpZXJGbGFnKSkgewogICAgICAgICBkb2N1bWVudCgpLmlkZW50
aWZpZWRFbGVtZW50V2FzUmVtb3ZlZEZyb21Eb2N1bWVudCgqdGhpcyk7Ci0gICAgICAgIGVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRIYXNFbGVtZW50SWRlbnRpZmllcihmYWxzZSk7CisgICAgICAgIGNs
ZWFyRmxhZyhIYXNFbGVtZW50SWRlbnRpZmllckZsYWcpOwogICAgIH0KIH0KIApAQCAtMzcxNiwx
NCArMzczNCwxMiBAQCB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKICAg
ICBkb2N1bWVudCgpLmZ1bGxzY3JlZW5NYW5hZ2VyKCkucmVxdWVzdEZ1bGxzY3JlZW5Gb3JFbGVt
ZW50KHRoaXMsIEZ1bGxzY3JlZW5NYW5hZ2VyOjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxsc2NyZWVu
UmVxdWlyZW1lbnQpOwogfQogCi1ib29sIEVsZW1lbnQ6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0
YSgpLT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6c2V0
Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIGZsYWcpCiB7Ci0gICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCkuc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmbGFnKTsKKyAgICBpZiAo
ZmxhZykKKyAgICAgICAgc2V0RmxhZyhDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50RmxhZyk7Cisg
ICAgZWxzZQorICAgICAgICBjbGVhckZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcp
OwogICAgIGludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKIH0KIApAQCAtNDM2
Niw0MCArNDM4Miw2IEBAIHZvaWQgRWxlbWVudDo6Y3JlYXRlVW5pcXVlRWxlbWVudERhdGEoKQog
ICAgICAgICBtX2VsZW1lbnREYXRhID0gZG93bmNhc3Q8U2hhcmVhYmxlRWxlbWVudERhdGE+KCpt
X2VsZW1lbnREYXRhKS5tYWtlVW5pcXVlQ29weSgpOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1Bl
bmRpbmdSZXNvdXJjZXMoKSBjb25zdAotewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVs
ZW1lbnRSYXJlRGF0YSgpLT5oYXNQZW5kaW5nUmVzb3VyY2VzKCk7Ci19Ci0KLXZvaWQgRWxlbWVu
dDo6c2V0SGFzUGVuZGluZ1Jlc291cmNlcygpCi17Ci0gICAgZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCkuc2V0SGFzUGVuZGluZ1Jlc291cmNlcyh0cnVlKTsKLX0KLQotdm9pZCBFbGVtZW50OjpjbGVh
ckhhc1BlbmRpbmdSZXNvdXJjZXMoKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5zZXRIYXNQZW5kaW5nUmVzb3VyY2Vz
KGZhbHNlKTsKLX0KLQotYm9vbCBFbGVtZW50OjpoYXNDU1NBbmltYXRpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNDU1NBbmlt
YXRpb24oKTsKLX0KLQotdm9pZCBFbGVtZW50OjpzZXRIYXNDU1NBbmltYXRpb24oKQotewotICAg
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEhhc0NTU0FuaW1hdGlvbih0cnVlKTsKLX0KLQot
dm9pZCBFbGVtZW50OjpjbGVhckhhc0NTU0FuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFoYXNSYXJl
RGF0YSgpKQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudFJhcmVEYXRhKCktPnNldEhhc0NT
U0FuaW1hdGlvbihmYWxzZSk7Ci19Ci0KIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdAogewogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKQEAg
LTQ2MTEsMTAgKzQ1OTMsOCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6
OmdldEFuaW1hdGlvbnMoT3B0aW9uYWw8R2V0QW5pbWF0aW9uc09wdGlvbgogCiBFbGVtZW50SWRl
bnRpZmllciBFbGVtZW50OjpjcmVhdGVFbGVtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgYXV0byYg
cmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBBU1NFUlQoIXJhcmVEYXRh
Lmhhc0VsZW1lbnRJZGVudGlmaWVyKCkpOwotCi0gICAgcmFyZURhdGEuc2V0SGFzRWxlbWVudElk
ZW50aWZpZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFnZXRGbGFnKEhhc0VsZW1lbnRJZGVudGlmaWVy
RmxhZykpOworICAgIHNldEZsYWcoSGFzRWxlbWVudElkZW50aWZpZXJGbGFnKTsKICAgICByZXR1
cm4gRWxlbWVudElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDM5ZWUwYjliYzExMzhhMDA4NWRiMjMxNjkzNzc1MGY4M2FmZTZmNWYuLjM0ZmU1ZTA4M2Jm
MDcwOGIzNDJkMTRhZjIwZGJjNTNiNGFiMTZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzUs
NiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvblR5cGVzLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKKyNkZWZpbmUgRFVNUF9OT0RFX1NUQVRJU1RJQ1MgMAor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
OwpAQCAtNDc5LDE0ICs0ODEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQ
ZW5kaW5nUmVzb3VyY2VzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNQZW5kaW5nUmVzb3VyY2Vz
KCk7Ci0gICAgdm9pZCBjbGVhckhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKKyAgICBib29sIGhhc1Bl
bmRpbmdSZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1BlbmRpbmdSZXNvdXJj
ZXNGbGFnKTsgfQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpIHsgc2V0RmxhZyhI
YXNQZW5kaW5nUmVzb3VyY2VzRmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySGFzUGVuZGluZ1Jlc291
cmNlcygpIHsgY2xlYXJGbGFnKEhhc1BlbmRpbmdSZXNvdXJjZXNGbGFnKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKIAotICAgIGJvb2wgaGFzQ1NTQW5p
bWF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRIYXNDU1NBbmltYXRpb24oKTsKLSAgICB2b2lk
IGNsZWFySGFzQ1NTQW5pbWF0aW9uKCk7CisgICAgYm9vbCBoYXNDU1NBbmltYXRpb24oKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKEhhc0NTU0FuaW1hdGlvbkZsYWcpOyB9CisgICAgdm9pZCBzZXRI
YXNDU1NBbmltYXRpb24oKSB7IHNldEZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxhZyk7IH0KKyAgICB2
b2lkIGNsZWFySGFzQ1NTQW5pbWF0aW9uKCkgeyBjbGVhckZsYWcoSGFzQ1NTQW5pbWF0aW9uRmxh
Zyk7IH0KIAogICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBj
b25zdDsKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCk7CkBAIC01MTEsNyArNTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dEZsYWcpOyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwog
ICAgIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdG
cmFtZUJvdW5kYXJpZXMoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CkBAIC02MzUsOCArNjM3LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCi0gICAgdm9pZCBjbGVhclRhYkluZGV4RXhw
bGljaXRseUlmTmVlZGVkKCk7Ci0gICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoaW50KTsK
KyAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZv
aWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld0NsYXNzU3RyaW5n
KTsKICAgICB2b2lkIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIG5ld1Zh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKaW5kZXggOGFhZWFlYzU2
ZjAxN2NiYTM3MjE5N2FjZDkzY2E4M2Y5NjcxMTNlNS4uZGI0ZWFlMWI1NzBhNzM0MzgzOTc2Yjc5
MmEzYTAwNGU4OTA1MzAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAK
QEAgLTM2LDExICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTYW1lU2l6ZUFz
RWxlbWVudFJhcmVEYXRhIDogTm9kZVJhcmVEYXRhIHsKICAgICBpbnQgdGFiSW5kZXg7CiAgICAg
dW5zaWduZWQgc2hvcnQgY2hpbGRJbmRleDsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgdW5zaWduZWQgYml0ZmllbGRzIDogMTI7Ci0jZWxzZQotICAgIHVuc2lnbmVkIGJpdGZpZWxk
cyA6IDExOwotI2VuZGlmCiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50
UG9pbnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmY2NhYjUxMTczNDgyMWE0YmQ2
ZWNjMGEwNjM4M2FmZTIwNGQ5ODRjLi4yMzMzZDY3NzY4MzQxMWUyNGI2MmYzMzJjYTc4ZjMxNTlk
ODI2NGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01NiwxNiArNTYs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZvaWQg
cmVzZXRTdHlsZVJlbGF0aW9ucygpOwotICAgIAotICAgIE9wdGlvbmFsPGludD4gdGFiSW5kZXgo
KSBjb25zdCB7IHJldHVybiBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA/IE9wdGlvbmFsPGlu
dD4geyBtX3RhYkluZGV4IH0gOiBXVEY6Om51bGxvcHQ7IH0KLSAgICB2b2lkIHNldFRhYkluZGV4
RXhwbGljaXRseShpbnQgaW5kZXgpIHsgbV90YWJJbmRleCA9IGluZGV4OyBtX3RhYkluZGV4V2Fz
U2V0RXhwbGljaXRseSA9IHRydWU7IH0KLSAgICBib29sIHRhYkluZGV4U2V0RXhwbGljaXRseSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5OyB9Ci0gICAgdm9pZCBj
bGVhclRhYkluZGV4RXhwbGljaXRseSgpIHsgbV90YWJJbmRleCA9IDA7IG1fdGFiSW5kZXhXYXNT
ZXRFeHBsaWNpdGx5ID0gZmFsc2U7IH0KLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
Ym9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQotI2Vu
ZGlmCisKKyAgICBpbnQgdW51c3VhbFRhYkluZGV4KCkgY29uc3Q7CisgICAgdm9pZCBzZXRVbnVz
dWFsVGFiSW5kZXgoaW50KTsKIAogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkSW5kZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5k
ZXgpIHsgbV9jaGlsZEluZGV4ID0gaW5kZXg7IH0KQEAgLTk2LDE4ICs4OSw5IEBAIHB1YmxpYzoK
ICAgICBJbnRQb2ludCBzYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3NhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0U2F2ZWRMYXllclNjcm9s
bFBvc2l0aW9uKEludFBvaW50IHBvc2l0aW9uKSB7IG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9u
ID0gcG9zaXRpb247IH0KIAotICAgIGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGVuZGluZ1Jlc291cmNlczsgfQotICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jl
c291cmNlcyhib29sIGhhcykgeyBtX2hhc1BlbmRpbmdSZXNvdXJjZXMgPSBoYXM7IH0KLQotICAg
IGJvb2wgaGFzQ1NTQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDU1NBbmltYXRpb247
IH0KLSAgICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbihib29sIHZhbHVlKSB7IG1faGFzQ1NTQW5p
bWF0aW9uID0gdmFsdWU7IH0KLQogICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogZWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhKCkgeyByZXR1cm4gbV9hbmltYXRpb25SYXJlRGF0YS5nZXQoKTsg
fQogICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEo
KTsKIAotICAgIGJvb2wgaGFzRWxlbWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2hh
c0VsZW1lbnRJZGVudGlmaWVyOyB9Ci0gICAgdm9pZCBzZXRIYXNFbGVtZW50SWRlbnRpZmllcihi
b29sIHZhbHVlKSB7IG1faGFzRWxlbWVudElkZW50aWZpZXIgPSB2YWx1ZTsgfQotCiAgICAgRE9N
VG9rZW5MaXN0KiBwYXJ0TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydExpc3QuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFBhcnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxET01Ub2tlbkxpc3Q+IHBhcnRM
aXN0KSB7IG1fcGFydExpc3QgPSBXVEZNb3ZlKHBhcnRMaXN0KTsgfQogCkBAIC0xMzMsNyArMTE3
LDcgQEAgcHVibGljOgogICAgIE9wdGlvblNldDxVc2VUeXBlPiB1c2VUeXBlcygpIGNvbnN0CiAg
ICAgewogICAgICAgICBhdXRvIHJlc3VsdCA9IE5vZGVSYXJlRGF0YTo6dXNlVHlwZXMoKTsKLSAg
ICAgICAgaWYgKG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KQorICAgICAgICBpZiAobV91bnVz
dWFsVGFiSW5kZXgpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlRhYkluZGV4KTsK
ICAgICAgICAgaWYgKG1fbWluaW11bVNpemVGb3JSZXNpemluZyAhPSBkZWZhdWx0TWluaW11bVNp
emVGb3JSZXNpemluZygpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpNaW5pbXVt
U2l6ZSk7CkBAIC0xNTcsMjQgKzE0MSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3Jlc2l6
ZU9ic2VydmVyRGF0YSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6UmVzaXplT2Jz
ZXJ2ZXIpOwogI2VuZGlmCi0gICAgICAgIGlmIChtX2JlZm9yZVBzZXVkb0VsZW1lbnQgfHwgbV9h
ZnRlclBzZXVkb0VsZW1lbnQpCi0gICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OlBzZXVk
b0VsZW1lbnRzKTsKICAgICAgICAgaWYgKG1fYW5pbWF0aW9uUmFyZURhdGEpCiAgICAgICAgICAg
ICByZXN1bHQuYWRkKFVzZVR5cGU6OkFuaW1hdGlvbnMpOworICAgICAgICBpZiAobV9iZWZvcmVQ
c2V1ZG9FbGVtZW50IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQorICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpQc2V1ZG9FbGVtZW50cyk7CisjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkK
KyAgICAgICAgaWYgKG1fYXR0cmlidXRlU3R5bGVNYXApCisgICAgICAgICAgICByZXN1bHQuYWRk
KFVzZVR5cGU6OlN0eWxlTWFwKTsKKyNlbmRpZgorICAgICAgICBpZiAobV9wYXJ0TGlzdCkKKyAg
ICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6UGFydExpc3QpOworICAgICAgICBpZiAoIW1f
cGFydE5hbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6UGFy
dE5hbWVzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAogcHJpdmF0
ZToKLSAgICBpbnQgbV90YWJJbmRleDsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXg7
Ci0gICAgdW5zaWduZWQgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgOiAxOwotI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICB1bnNpZ25lZCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQgOiAxOwotI2VuZGlmCi0gICAgdW5zaWduZWQgbV9oYXNQZW5kaW5nUmVzb3VyY2VzIDogMTsK
LSAgICB1bnNpZ25lZCBtX2hhc0NTU0FuaW1hdGlvbiA6IDE7Ci0gICAgdW5zaWduZWQgbV9oYXNF
bGVtZW50SWRlbnRpZmllciA6IDE7CisgICAgaW50IG1fdW51c3VhbFRhYkluZGV4IHsgMCB9Owor
ICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7IDAgfTsKIAogICAgIExheW91dFNpemUg
bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIEludFBvaW50IG1fc2F2ZWRMYXllclNjcm9s
bFBvc2l0aW9uOwpAQCAtMjEwLDE1ICsxOTUsNiBAQCBwcml2YXRlOgogCiBpbmxpbmUgRWxlbWVu
dFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQogICAgIDogTm9kZVJhcmVEYXRhKFR5cGU6OkVs
ZW1lbnQpCi0gICAgLCBtX3RhYkluZGV4KDApCi0gICAgLCBtX2NoaWxkSW5kZXgoMCkKLSAgICAs
IG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQotI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICAsIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKLSNlbmRpZgot
ICAgICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQotICAgICwgbV9oYXNDU1NBbmltYXRp
b24oZmFsc2UpCi0gICAgLCBtX2hhc0VsZW1lbnRJZGVudGlmaWVyKGZhbHNlKQogICAgICwgbV9t
aW5pbXVtU2l6ZUZvclJlc2l6aW5nKGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiB7
CiB9CkBAIC0yNTIsNiArMjI4LDE4IEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVz
ZXRTdHlsZVJlbGF0aW9ucygpCiAgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KIAoraW5saW5lIGlu
dCBFbGVtZW50UmFyZURhdGE6OnVudXN1YWxUYWJJbmRleCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fdW51c3VhbFRhYkluZGV4KTsgLy8gc2V0VW51c3VhbFRhYkluZGV4IG11c3QgaGF2ZSBiZWVu
IGNhbGxlZCBiZWZvcmUgdGhpcy4KKyAgICByZXR1cm4gbV91bnVzdWFsVGFiSW5kZXg7Cit9CisK
K2lubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6c2V0VW51c3VhbFRhYkluZGV4KGludCB0YWJJ
bmRleCkKK3sKKyAgICBBU1NFUlQodGFiSW5kZXggJiYgdGFiSW5kZXggIT0gLTEpOyAvLyBDb21t
b24gdmFsdWVzIG9mIDAgYW5kIC0xIGFyZSBzdG9yZWQgYXMgVGFiSW5kZXhTdGF0ZSBpbiBOb2Rl
LgorICAgIG1fdW51c3VhbFRhYkluZGV4ID0gdGFiSW5kZXg7Cit9CisKIGlubGluZSBFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURh
dGEoKQogewogICAgIGlmICghbV9hbmltYXRpb25SYXJlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCAyNmEzNDRhNmMxMjE0YWUwOTc1YjcxMDY2OTkwMjRhMzViOTY0ZDYyLi5kNTMwNDA5NzViYWJi
YWE2ZmEwNDk5ZTllYWJhZDk0NTlkNDQ2NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzAsMTAg
KzEzMCwxOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yUmFyZURhdGFVc2VUeXBlKE5v
ZGVSYXJlRGF0YTo6VXNlVHlwZSB1c2VUeXBlKQogICAgICAgICByZXR1cm4gIkF0dHJpYnV0ZU1h
cCI7CiAgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OkludGVyYWN0aW9uT2JzZXJ2ZXI6
CiAgICAgICAgIHJldHVybiAiSW50ZXJhY3Rpb25PYnNlcnZlciI7Ci0gICAgY2FzZSBOb2RlUmFy
ZURhdGE6OlVzZVR5cGU6OlBzZXVkb0VsZW1lbnRzOgotICAgICAgICByZXR1cm4gIlBzZXVkb0Vs
ZW1lbnRzIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0YTo6VXNlVHlwZTo6UmVzaXplT2JzZXJ2ZXI6
CisgICAgICAgIHJldHVybiAiUmVzaXplT2JzZXJ2ZXIiOwogICAgIGNhc2UgTm9kZVJhcmVEYXRh
OjpVc2VUeXBlOjpBbmltYXRpb25zOgogICAgICAgICByZXR1cm4gIkFuaW1hdGlvbnMiOworICAg
IGNhc2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQc2V1ZG9FbGVtZW50czoKKyAgICAgICAgcmV0
dXJuICJQc2V1ZG9FbGVtZW50cyI7CisgICAgY2FzZSBOb2RlUmFyZURhdGE6OlVzZVR5cGU6OlN0
eWxlTWFwOgorICAgICAgICByZXR1cm4gIlN0eWxlTWFwIjsKKyAgICBjYXNlIE5vZGVSYXJlRGF0
YTo6VXNlVHlwZTo6UGFydExpc3Q6CisgICAgICAgIHJldHVybiAiUGFydExpc3QiOworICAgIGNh
c2UgTm9kZVJhcmVEYXRhOjpVc2VUeXBlOjpQYXJ0TmFtZXM6CisgICAgICAgIHJldHVybiAiUGFy
dE5hbWVzIjsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBj
MDQ2YjM2M2Y1MDkwZDc2NzQ4ZTZlZmU5N2Q0NGRmMjhjN2UzZTkyLi5iN2VhMjdmM2I2OTg0NDRh
OTdkY2Y2ZDM0YzNkMzMyOWQ4NTRmZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQwLDkgKzQwLDYgQEAK
ICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLS8v
IFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIERvY3VtZW50LmggYWxzbyBkZXBlbmRzIG9u
IGl0LgotI2RlZmluZSBEVU1QX05PREVfU1RBVElTVElDUyAwCi0KIG5hbWVzcGFjZSBXVEYgewog
Y2xhc3MgVGV4dFN0cmVhbTsKIH0KQEAgLTU0MywxNiArNTQwLDM2IEBAIHByb3RlY3RlZDoKIAog
ICAgICAgICBIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3NGbGFnID0gMSA8PCAyMiwKIAot
ICAgICAgICAvLyBCaXRzIDIzLTMxIGFyZSBmcmVlLgorICAgICAgICBIYXNQZW5kaW5nUmVzb3Vy
Y2VzRmxhZyA9IDEgPDwgMjMsCisgICAgICAgIEhhc0NTU0FuaW1hdGlvbkZsYWcgPSAxIDw8IDI0
LAorICAgICAgICBIYXNFbGVtZW50SWRlbnRpZmllckZsYWcgPSAxIDw8IDI1LAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcg
PSAxIDw8IDI2LAorI2VuZGlmCisKKyAgICAgICAgLy8gQml0cyAyNy0yOSBhcmUgZnJlZS4KKyAg
ICAgICAgLy8gQml0cyAzMC0zMTogVGFiSW5kZXhTdGF0ZQogCiAgICAgICAgIERlZmF1bHROb2Rl
RmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCA9IDMwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc190YWJJbmRleFN0YXRlQml0TWFzayA9IDNVIDw8
IHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldDsKKyAgICBlbnVtIGNsYXNzIFRhYkluZGV4U3RhdGUg
OiB1aW50OF90IHsKKyAgICAgICAgTm90U2V0ID0gMCwKKyAgICAgICAgWmVybyA9IDEsCisgICAg
ICAgIE5lZ2F0aXZlT25lID0gMiwKKyAgICAgICAgSW5SYXJlRGF0YSA9IDMsCisgICAgfTsKKwog
ICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxh
Z3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNv
bnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYg
JiBtYXNrKTsgfSAKICAgICB2b2lkIHNldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9u
b2RlRmxhZ3MgfD0gbWFzazsgfSAKICAgICB2b2lkIGNsZWFyRmxhZyhOb2RlRmxhZ3MgbWFzaykg
Y29uc3QgeyBtX25vZGVGbGFncyAmPSB+bWFzazsgfQogCisgICAgVGFiSW5kZXhTdGF0ZSB0YWJJ
bmRleFN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGFiSW5kZXhTdGF0ZT4oKG1f
bm9kZUZsYWdzICYgc190YWJJbmRleFN0YXRlQml0TWFzaykgPj4gc190YWJJbmRleFN0YXRlQml0
T2Zmc2V0KTsgfQorICAgIHZvaWQgc2V0VGFiSW5kZXhTdGF0ZShUYWJJbmRleFN0YXRlIHN0YXRl
KSB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfnNfdGFiSW5kZXhTdGF0ZUJpdE1hc2sp
IHwgKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0ZSkgPDwgc190YWJJbmRleFN0YXRlQml0T2Zm
c2V0KTsgfQorCiAgICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KICAgICB2b2lk
IHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZEZsYWcpOyB9CiAgICAgdm9pZCBjbGVhcklzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWQoKSB7IGNsZWFyRmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA2MWY2ZjFiMjJiOTYxZDc1MzI4N2IxMzkyN2E3ZjY2
YTlkMWQwZTNiLi5jYTRkOTExYjI1NTEyZTI4ZWQ2YjM0MTQzMzIyNTkzOWEwODI3ZDExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNDQsNyArMjQ0LDcgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lE
RU5USUZJRVIoTm9kZVJhcmVEYXRhKTsKIHB1YmxpYzoKICNpZiBkZWZpbmVkKERVTVBfTk9ERV9T
VEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUwotICAgIGVudW0gY2xhc3MgVXNlVHlw
ZSA6IHVpbnQxNl90IHsKKyAgICBlbnVtIGNsYXNzIFVzZVR5cGUgOiB1aW50MzJfdCB7CiAgICAg
ICAgIENvbm5lY3RlZEZyYW1lQ291bnQgPSAxIDw8IDAsCiAgICAgICAgIE5vZGVMaXN0ID0gMSA8
PCAxLAogICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0gMSA8PCAyLApAQCAtMjU4LDggKzI1OCwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3RvbUVsZW1lbnRRdWV1ZSA9IDEgPDwgMTAsCiAgICAg
ICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTEsCiAgICAgICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIg
PSAxIDw8IDEyLAotICAgICAgICBQc2V1ZG9FbGVtZW50cyA9IDEgPDwgMTMsCisgICAgICAgIFJl
c2l6ZU9ic2VydmVyID0gMSA8PCAxMywKICAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCisg
ICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxNSwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8
IDE2LAorICAgICAgICBQYXJ0TGlzdCA9IDEgPDwgMTcsCisgICAgICAgIFBhcnROYW1lcyA9IDEg
PDwgMTgsCiAgICAgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmlu
ZGV4IDkzOTg0ZjM4MmNkNGVmMWRmNmNjMTdjMDMzZjU1ZmRiZjE3NmI0ZjYuLjc0OGYyOTdiOWI4
ZTA0M2NlYTIxOWRmMGViYWNjODk0MjRjZGI3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmEKIAogICAg
IGlmIChuYW1lID09IHRhYmluZGV4QXR0cikgewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgY2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpOworICAgICAg
ICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2Ug
aWYgKGF1dG8gb3B0aW9uYWxUYWJJbmRleCA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAg
ICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApp
bmRleCAxOWNjMGU3MzBlZDhlNzJhNTE0ZjUxNTgxOWVjYjNjNDU4NzE2YTE3Li44NWQxNTVkMTRk
MTk1M2UxMDdkY2E2NDM5MWEyNjRhNDc2YjQ3MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYK
ICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSktPmNvbFNw
YW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6
dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CisgICAgICAgICAgICBzZXRUYWJJ
bmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsKICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRp
b25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRU
YWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE3YjQwZjk5MDBkZTlhYTlkNzVmMWY2
NzFkOGE4ZGM2MGYyYzRlYmUuLjUwZmYxZjY0MDg4MzNjMTgwMjU3ZTVmYjA4OGE5MGRkMGQ2MTUz
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lk
IFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbAogCiAgICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjp0YWJpbmRl
eEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsZWFy
VGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHNldFRhYkluZGV4RXhw
bGljaXRseShXVEY6Om51bGxvcHQpOwogICAgICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFi
SW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNldFRhYkluZGV4
RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>