<?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>218298</bug_id>
          
          <creation_ts>2020-10-28 11:29:46 -0700</creation_ts>
          <short_desc>Make WebCore::ContainerNode::ChildChangeType enum class</short_desc>
          <delta_ts>2020-10-29 12:25:21 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702409</commentid>
    <comment_count>0</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 11:29:46 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702410</commentid>
    <comment_count>1</comment_count>
      <attachid>412550</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 11:31:22 -0700</bug_when>
    <thetext>Created attachment 412550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702457</commentid>
    <comment_count>2</comment_count>
      <attachid>412550</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-28 12:51:18 -0700</bug_when>
    <thetext>Comment on attachment 412550
Patch

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

I’m going to say review+ even though I am not *sure* this is an improvement.

&gt; Source/WebCore/dom/ContainerNode.h:76
&gt; +    enum class ChildChangeType: uint8_t { ElementInserted, ElementRemoved, TextInserted, TextRemoved, TextChanged, AllChildrenRemoved, NonContentsChildRemoved, NonContentsChildInserted, AllChildrenReplaced };

Not sure this is an improvement. I understand that we like the idea of using enum class everywhere, but this makes all the code wordier and it’s not *obvious* to me that it’s better.

We know it’s better when the actual enumeration values can have shorter more straightforward names because the enumeration’s name will always be cited just before them. But here we were not able to do that.

Maybe this enumeration should be a in the ChildChange structure, with the name &quot;Type&quot; instead of next to the ChildChange structure with the name ChildChangeType.

Note that we can set the base type to uint8_t even without switching from enum to enum class.

&gt; Source/WebCore/dom/ContainerNode.h:77
&gt;      enum class ChildChangeSource { Parser, API };

Should probably put a base type of bool here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702487</commentid>
    <comment_count>3</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 14:08:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Not sure this is an improvement. I understand that we like the idea of using
&gt; enum class everywhere, but this makes all the code wordier and it’s not
&gt; *obvious* to me that it’s better.

Ah, I see.


&gt; Maybe this enumeration should be a in the ChildChange structure, with the
&gt; name &quot;Type&quot; instead of next to the ChildChange structure with the name
&gt; ChildChangeType.

In that case, should we make it enum class or keep it as enum?




&gt; &gt; Source/WebCore/dom/ContainerNode.h:77
&gt; &gt;      enum class ChildChangeSource { Parser, API };
&gt; 
&gt; Should probably put a base type of bool here?

I worried that but I did not touch it.
I&apos;ll change it in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702492</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-28 14:16:53 -0700</bug_when>
    <thetext>(In reply to Tetsuharu Ohzeki from comment #3)
&gt; (In reply to Darin Adler from comment #2)
&gt; &gt; Maybe this enumeration should be a in the ChildChange structure, with the
&gt; &gt; name &quot;Type&quot; instead of next to the ChildChange structure with the name
&gt; &gt; ChildChangeType.
&gt; 
&gt; In that case, should we make it enum class or keep it as enum?

I’m conflicted about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702494</commentid>
    <comment_count>5</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 14:27:19 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; (In reply to Tetsuharu Ohzeki from comment #3)
&gt; &gt; (In reply to Darin Adler from comment #2)
&gt; &gt; &gt; Maybe this enumeration should be a in the ChildChange structure, with the
&gt; &gt; &gt; name &quot;Type&quot; instead of next to the ChildChange structure with the name
&gt; &gt; &gt; ChildChangeType.
&gt; &gt; 
&gt; &gt; In that case, should we make it enum class or keep it as enum?
&gt; 
&gt; I’m conflicted about that.


I&apos;m trying to move ChildChangeType to ChildChange and keep it enum class. it would be a bit redundant like `ChildChange::Type::ElementInserted`.

I seem `ChildChange::ElementInserted` is concise at here and we achive to push ChildChangeType into some scope. So I will change to this pattern in the next patch.


And then, I also feel that we can move ChildChangeSource to ChildChange with keeping it as enum class.

Darin, how do you think about these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702499</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-28 14:32:18 -0700</bug_when>
    <thetext>I like ChildChange::Type::ElementInserted.

Even though it’s long, the separators actually make it easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702500</commentid>
    <comment_count>7</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 14:33:15 -0700</bug_when>
    <thetext>Okay. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702502</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-28 14:34:50 -0700</bug_when>
    <thetext>(In reply to Tetsuharu Ohzeki [UTC+9] from comment #5)
&gt; And then, I also feel that we can move ChildChangeSource to ChildChange with
&gt; keeping it as enum class.

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702515</commentid>
    <comment_count>9</comment_count>
      <attachid>412575</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-28 15:10:09 -0700</bug_when>
    <thetext>Created attachment 412575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702520</commentid>
    <comment_count>10</comment_count>
      <attachid>412575</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-28 15:26:39 -0700</bug_when>
    <thetext>Comment on attachment 412575
Patch

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

&gt; Source/WebCore/dom/ContainerNode.cpp:85
&gt; +    if (source == ContainerNode::ChildChange::Source::API) {

The ContainerNode prefix isn’t needed here. We are inside a ContainerNode member function here.

&gt; Source/WebCore/dom/ContainerNode.cpp:93
&gt; +        ASSERT(source == ContainerNode::ChildChange::Source::Parser);

Ditto.

&gt; Source/WebCore/dom/ContainerNode.cpp:133
&gt; +    if (source == ContainerNode::ChildChange::Source::API) {

Ditto.

&gt; Source/WebCore/dom/ContainerNode.cpp:140
&gt; +    if (source == ContainerNode::ChildChange::Source::Parser) {

Ditto.

&gt; Source/WebCore/dom/ContainerNode.cpp:169
&gt; +        change.type = is&lt;Element&gt;(childToRemove) ? ChildChange::Type::ElementRemoved : (is&lt;Text&gt;(childToRemove) ? ChildChange::Type::TextRemoved : ChildChange::Type::NonContentsChildRemoved);

Here we do it all on one line.

&gt; Source/WebCore/dom/ContainerNode.cpp:208
&gt; +            child.isElementNode() ?
&gt; +                ContainerNode::ChildChange::Type::ElementInserted :
&gt; +                (child.isTextNode() ?
&gt; +                    ContainerNode::ChildChange::Type::TextInserted :
&gt; +                    ContainerNode::ChildChange::Type::NonContentsChildInserted),

Here we break it into multiple lines.

Not really elegant to have that difference.

&gt; Source/WebCore/dom/ContainerNode.h:78
&gt; +        enum class Type: uint8_t { ElementInserted, ElementRemoved, TextInserted, TextRemoved, TextChanged, AllChildrenRemoved, NonContentsChildRemoved, NonContentsChildInserted, AllChildrenReplaced };
&gt; +        enum class Source: bool { Parser, API };

WebKit’s normal formatting puts a space before the &quot;:&quot;.

&gt; Source/WebCore/dom/Element.cpp:2627
&gt; +        SiblingCheckType checkType = change.type == ChildChange::Type::ElementRemoved ? SiblingElementRemoved : Other;

I think this is better with &quot;auto&quot; instead of SiblingCheckType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702637</commentid>
    <comment_count>11</comment_count>
      <attachid>412619</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-10-29 00:00:38 -0700</bug_when>
    <thetext>Created attachment 412619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702818</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-29 12:24:54 -0700</bug_when>
    <thetext>Committed r269161: &lt;https://trac.webkit.org/changeset/269161&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412619.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702819</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-29 12:25:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70820615&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412550</attachid>
            <date>2020-10-28 11:31:22 -0700</date>
            <delta_ts>2020-10-28 15:10:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218298-20201029033121.patch</filename>
            <type>text/plain</type>
            <size>12684</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uYTAwOGUyZDc2NDEwMmM1YTFmYmI0MDU5NTRkMTRh
MzNkNzI4ZDM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTEwLTI4ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGUgZW51bSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vQ2hhcmFj
dGVyRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJl
bnRBZnRlckNoYW5nZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNz
ZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRo
U2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjphZmZlY3RzRWxlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRl
ZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKToKKwogMjAyMC0xMC0yNyAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBkaXNwbGF5IGxpc3Rz
XSBBZGQgYWx0ZXJuYXRlIHZlcnNpb25zIG9mIGV4aXN0aW5nIGRpc3BsYXkgbGlzdCBpdGVtcyB0
aGF0IG9ubHkgY29udGFpbiBpbmxpbmUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCmluZGV4IGY0NGMxM2ZmMDZlZTZhYWZjNjVlZjdjM2ExNGY4MzViYmM2MDQ5NzYuLjBlZWZh
NWJkOGQzYmFkZWQwNGMwZmFiYmVhMjQ3OGY4ZGU3YmQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hh
cmFjdGVyRGF0YS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIENoYXJhY3RlckRhdGE6Om5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlIHNv
dQogICAgICAgICByZXR1cm47CiAKICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFu
Z2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OlRleHRDaGFuZ2VkLAorICAgICAgICBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGU6OlRleHRDaGFuZ2VkLAogICAgICAgICBFbGVtZW50
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKnRoaXMpLAogICAgICAgICBFbGVtZW50VHJhdmVy
c2FsOjpuZXh0U2libGluZygqdGhpcyksCiAgICAgICAgIHNvdXJjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IGY1ZDQ4YTM1ZDgyNjFiM2FmMjk4NjVjNGRiMjJjN2M2MTU0
ZDAyOGIuLjZmNmUwNGEwZWUzODBmOTM5ZjAwZmJjZmQ1ZTNmZTdlYzZlNTgwNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBBTFdBWVNfSU5M
SU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0
QXNzZXJ0aW9uKENoaQogICAgIH0KIAogICAgIGlmIChkZWZlckNoaWxkcmVuQ2hhbmdlZCA9PSBE
ZWZlckNoaWxkcmVuQ2hhbmdlZDo6Tm8pCi0gICAgICAgIGNoaWxkcmVuQ2hhbmdlZChDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSB7IENvbnRhaW5lck5vZGU6OkFsbENoaWxkcmVuUmVtb3ZlZCwg
bnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOworICAgICAgICBjaGlsZHJlbkNoYW5nZWQoQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZVR5cGU6OkFsbENoaWxkcmVuUmVt
b3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOwogCiAgICAgcmV0dXJuIGNoaWxkcmVu
OwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2Rl
OjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgICAg
IHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5nZXQoKSwg
Y2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsIGNo
aWxkVG9SZW1vdmUpOwogCi0gICAgICAgIGNoYW5nZS50eXBlID0gaXM8RWxlbWVudD4oY2hpbGRU
b1JlbW92ZSkgPyBFbGVtZW50UmVtb3ZlZCA6IChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSA/IFRl
eHRSZW1vdmVkIDogTm9uQ29udGVudHNDaGlsZFJlbW92ZWQpOworICAgICAgICBjaGFuZ2UudHlw
ZSA9IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8gQ2hpbGRDaGFuZ2VUeXBlOjpFbGVtZW50
UmVtb3ZlZCA6IChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSA/IENoaWxkQ2hhbmdlVHlwZTo6VGV4
dFJlbW92ZWQgOiBDaGlsZENoYW5nZVR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkKTsKICAg
ICAgICAgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPSAoIXByZXZpb3VzU2libGluZyB8
fCBpczxFbGVtZW50PigqcHJldmlvdXNTaWJsaW5nKSkgPyBkb3duY2FzdDxFbGVtZW50PihwcmV2
aW91c1NpYmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKCpw
cmV2aW91c1NpYmxpbmcpOwogICAgICAgICBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50ID0gKCFu
ZXh0U2libGluZyB8fCBpczxFbGVtZW50PigqbmV4dFNpYmxpbmcpKSA/IGRvd25jYXN0PEVsZW1l
bnQ+KG5leHRTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCpu
ZXh0U2libGluZyk7CiAgICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7CkBAIC0xOTgsMTAg
KzE5OCwxNCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlJgogCiAgICAgLy8gRklYTUU6IE1vdmUg
Y2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgogICAgIGlm
IChyZXBsYWNlZEFsbENoaWxkcmVuID09IFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcykKLSAgICAg
ICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgeyBDb250YWluZXJOb2RlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRy
LCBzb3VyY2UgfSk7CisgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VUeXBlOjpB
bGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlIHsKLSAgICAgICAgICAgIGNoaWxkLmlzRWxlbWVudE5vZGUoKSA/IENvbnRh
aW5lck5vZGU6OkVsZW1lbnRJbnNlcnRlZCA6IChjaGlsZC5pc1RleHROb2RlKCkgPyBDb250YWlu
ZXJOb2RlOjpUZXh0SW5zZXJ0ZWQgOiBDb250YWluZXJOb2RlOjpOb25Db250ZW50c0NoaWxkSW5z
ZXJ0ZWQpLAorICAgICAgICAgICAgY2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KKyAgICAgICAgICAg
ICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGU6OkVsZW1lbnRJbnNlcnRlZCA6Cisg
ICAgICAgICAgICAgICAgKGNoaWxkLmlzVGV4dE5vZGUoKSA/CisgICAgICAgICAgICAgICAgICAg
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlVHlwZTo6VGV4dEluc2VydGVkIDoKKyAgICAgICAg
ICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VUeXBlOjpOb25Db250ZW50c0No
aWxkSW5zZXJ0ZWQpLAogICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJs
aW5nKGNoaWxkKSwKICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNo
aWxkKSwKICAgICAgICAgICAgIHNvdXJjZQpAQCAtNzU0LDE2ICs3NTgsMTYgQEAgdm9pZCBDb250
YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCkKIHN0YXRpYyBib29s
IGFmZmVjdHNFbGVtZW50cyhjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSYgY2hhbmdl
KQogewogICAgIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHsKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6
OkVsZW1lbnRJbnNlcnRlZDoKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6OkVsZW1lbnRSZW1vdmVk
OgotICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgotICAgIGNhc2Ug
Q29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZDoKKyAgICBjYXNlIENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlVHlwZTo6RWxlbWVudEluc2VydGVkOgorICAgIGNhc2UgQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2VUeXBlOjpFbGVtZW50UmVtb3ZlZDoKKyAgICBjYXNlIENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlVHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgorICAgIGNhc2UgQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6OlRleHRJbnNlcnRlZDoKLSAg
ICBjYXNlIENvbnRhaW5lck5vZGU6OlRleHRSZW1vdmVkOgotICAgIGNhc2UgQ29udGFpbmVyTm9k
ZTo6VGV4dENoYW5nZWQ6Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpOb25Db250ZW50c0NoaWxk
SW5zZXJ0ZWQ6Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpOb25Db250ZW50c0NoaWxkUmVtb3Zl
ZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlVHlwZTo6VGV4dEluc2VydGVk
OgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VUeXBlOjpUZXh0UmVtb3ZlZDoK
KyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlVHlwZTo6VGV4dENoYW5nZWQ6Cisg
ICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJ
bnNlcnRlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlVHlwZTo6Tm9uQ29u
dGVudHNDaGlsZFJlbW92ZWQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC03ODAsNyArNzg0LDcgQEAgdm9pZCBDb250YWluZXJOb2Rl
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAvLyBGSVhN
RTogVW5jbGVhciB3aHkgaXQncyBhbHdheXMgc2FmZSB0byBza2lwIHRoaXMgd2hlbiBwYXJzZXIg
aXMgYWRkaW5nIGNoaWxkcmVuLgogICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtlIGl0J3MgZXF1YWxs
eSBzYWZlIHRvIHNraXAgZm9yIFRleHRJbnNlcnRlZCBhbmQgVGV4dFJlbW92ZWQgYXMgZm9yIFRl
eHRDaGFuZ2VkLgogICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN3aXRjaCBmb3IgY2hhbmdlIHR5
cGUgc28gd2UgcmVtZW1iZXIgdG8gdXBkYXRlIHdoZW4gYWRkaW5nIG5ldyB0eXBlcy4KLSAgICBp
ZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6QVBJICYmIGNoYW5nZS50eXBl
ICE9IFRleHRDaGFuZ2VkKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlOjpBUEkgJiYgY2hhbmdlLnR5cGUgIT0gQ2hpbGRDaGFuZ2VUeXBlOjpUZXh0Q2hhbmdlZCkK
ICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCgqdGhp
cyk7CiAKICAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNlc3Rv
cnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGE4M2RhYmY3MTAxOGI1NzVh
ZDViZmI4ZjJhNDZmYjQ5ODVkNGEzMDAuLjAxY2MwOWRkZDhlMjlmNjNmMmQyNzNlOTc5YWJhMzA4
MDQ3OGZmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNzMsNyArNzMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlJiBjbG9u
ZSk7CiAKLSAgICBlbnVtIENoaWxkQ2hhbmdlVHlwZSB7IEVsZW1lbnRJbnNlcnRlZCwgRWxlbWVu
dFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxDaGls
ZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250ZW50c0NoaWxkSW5z
ZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQgfTsKKyAgICBlbnVtIGNsYXNzIENoaWxkQ2hhbmdl
VHlwZTogdWludDhfdCB7IEVsZW1lbnRJbnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNl
cnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNv
bnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVu
UmVwbGFjZWQgfTsKICAgICBlbnVtIGNsYXNzIENoaWxkQ2hhbmdlU291cmNlIHsgUGFyc2VyLCBB
UEkgfTsKICAgICBzdHJ1Y3QgQ2hpbGRDaGFuZ2UgewogICAgICAgICBDaGlsZENoYW5nZVR5cGUg
dHlwZTsKQEAgLTg0LDE2ICs4NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNJbnNlcnRp
b24oKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAg
ICAgICAgIGNhc2UgRWxlbWVudEluc2VydGVkOgotICAgICAgICAgICAgY2FzZSBUZXh0SW5zZXJ0
ZWQ6Ci0gICAgICAgICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZDoKLSAgICAgICAg
ICAgIGNhc2UgQWxsQ2hpbGRyZW5SZXBsYWNlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFu
Z2VUeXBlOjpFbGVtZW50SW5zZXJ0ZWQ6CisgICAgICAgICAgICBjYXNlIENoaWxkQ2hhbmdlVHlw
ZTo6VGV4dEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2VUeXBlOjpB
bGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgY2FzZSBFbGVtZW50UmVtb3ZlZDoKLSAgICAgICAgICAgIGNhc2UgVGV4dFJlbW92ZWQ6
Ci0gICAgICAgICAgICBjYXNlIFRleHRDaGFuZ2VkOgotICAgICAgICAgICAgY2FzZSBBbGxDaGls
ZHJlblJlbW92ZWQ6Ci0gICAgICAgICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgor
ICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6OkVsZW1lbnRSZW1vdmVkOgorICAgICAg
ICAgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6OlRleHRSZW1vdmVkOgorICAgICAgICAgICAgY2Fz
ZSBDaGlsZENoYW5nZVR5cGU6OlRleHRDaGFuZ2VkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENo
YW5nZVR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFu
Z2VUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkODhiMGI5ZDU0NmY2ZDU4MWVlYzVhZjA0NDJjNGRj
NzhhNGZhOGNhLi5hNjFlMmUwYjg4YWQ2M2VjMjJmMDRhNGU5NjU1M2RkZTBmMzc0YjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNjI0LDI3ICsyNjI0LDI3IEBAIHZvaWQgRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5n
ZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKICAgICAgICAgY2hlY2tGb3JF
bXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgU2libGluZ0NoZWNr
VHlwZSBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBFbGVtZW50UmVtb3ZlZCA/IFNpYmxpbmdF
bGVtZW50UmVtb3ZlZCA6IE90aGVyOworICAgICAgICBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlw
ZSA9IGNoYW5nZS50eXBlID09IENoaWxkQ2hhbmdlVHlwZTo6RWxlbWVudFJlbW92ZWQgPyBTaWJs
aW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKICAgICAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVD
aGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50LCBj
aGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKICAgICB9CiAKICAgICBpZiAoU2hhZG93Um9vdCog
c2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBzd2l0Y2ggKGNoYW5n
ZS50eXBlKSB7Ci0gICAgICAgIGNhc2UgRWxlbWVudEluc2VydGVkOgotICAgICAgICBjYXNlIEVs
ZW1lbnRSZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6RWxlbWVudEluc2Vy
dGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6RWxlbWVudFJlbW92ZWQ6CiAgICAg
ICAgICAgICAvLyBGb3IgZWxlbWVudHMsIHdlIG5vdGlmeSBzaGFkb3dSb290IGluIEVsZW1lbnQ6
Omluc2VydGVkSW50b0FuY2VzdG9yIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yLgog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQWxsQ2hpbGRyZW5SZW1vdmVkOgotICAg
ICAgICBjYXNlIEFsbENoaWxkcmVuUmVwbGFjZWQ6CisgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2VU
eXBlOjpBbGxDaGlsZHJlblJlbW92ZWQ6CisgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2VUeXBlOjpB
bGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICAgICAgc2hhZG93Um9vdC0+ZGlkUmVtb3ZlQWxs
Q2hpbGRyZW5PZlNoYWRvd0hvc3QoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFRleHRJbnNlcnRlZDoKLSAgICAgICAgY2FzZSBUZXh0UmVtb3ZlZDoKLSAgICAgICAgY2FzZSBU
ZXh0Q2hhbmdlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6OlRleHRJbnNlcnRlZDoK
KyAgICAgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6OlRleHRSZW1vdmVkOgorICAgICAgICBjYXNl
IENoaWxkQ2hhbmdlVHlwZTo6VGV4dENoYW5nZWQ6CiAgICAgICAgICAgICBzaGFkb3dSb290LT5k
aWRDaGFuZ2VEZWZhdWx0U2xvdCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAgICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRS
ZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6Tm9uQ29udGVudHNDaGlsZElu
c2VydGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6Tm9uQ29udGVudHNDaGlsZFJl
bW92ZWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCBhYmNjM2M4OTZmNGVlZGU3ZTQwNzgxZmNmZjVkOTg1YjI1YjIx
ZDkyLi44MjM1YWViZTZkMTkyYmIwYzRmYzlkMmY4ZWY4MzQ1MDdkY2M4MzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xMjgsMTcgKzEyOCwxNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCiAKICAgICAv
LyBGSVhNRTogQXZvaWQgYWx3YXlzIGludmFsaWRhdGluZyBzdHlsZSBqdXN0IGZvciBmaXJzdC1j
aGlsZCwgZXRjLi4uIGFzIGRvbmUgaW4gRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkLgogICAgIHN3
aXRjaCAoY2hpbGRDaGFuZ2UudHlwZSkgewotICAgIGNhc2UgRWxlbWVudEluc2VydGVkOgotICAg
IGNhc2UgRWxlbWVudFJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6OkVsZW1lbnRJ
bnNlcnRlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6RWxlbWVudFJlbW92ZWQ6CiAgICAg
ICAgIG1faG9zdC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVGV4dEluc2VydGVkOgotICAgIGNhc2UgVGV4dFJlbW92ZWQ6Ci0g
ICAgY2FzZSBUZXh0Q2hhbmdlZDoKLSAgICBjYXNlIEFsbENoaWxkcmVuUmVtb3ZlZDoKLSAgICBj
YXNlIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgotICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZElu
c2VydGVkOgotICAgIGNhc2UgQWxsQ2hpbGRyZW5SZXBsYWNlZDoKKyAgICBjYXNlIENoaWxkQ2hh
bmdlVHlwZTo6VGV4dEluc2VydGVkOgorICAgIGNhc2UgQ2hpbGRDaGFuZ2VUeXBlOjpUZXh0UmVt
b3ZlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6VGV4dENoYW5nZWQ6CisgICAgY2FzZSBD
aGlsZENoYW5nZVR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdl
VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZVR5cGU6
Ok5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlVHlwZTo6QWxs
Q2hpbGRyZW5SZXBsYWNlZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAppbmRleCAxYTU5MmNkYzZlNGVkMThhYzQ2NzAxOWQyYjdiMGNlMjc2
M2RkZGU5Li5kZmM5NGY3ZWRhNjAyMDcyZjI2NGE1YThiZWEzM2Q0ZGI0NmVmNTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChF
bGVtZW50KiBiZWZvCiAKICAgICBSZWZQdHI8Tm9kZT4gb2xkTWFya2VkTm9kZTsKICAgICBpZiAo
YmVmb3JlQ2hhbmdlKQotICAgICAgICBvbGRNYXJrZWROb2RlID0gY2hhbmdlVHlwZSA9PSBFbGVt
ZW50SW5zZXJ0ZWQgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqYmVmb3JlQ2hhbmdl
KSA6IGJlZm9yZUNoYW5nZS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgb2xkTWFya2VkTm9kZSA9
IGNoYW5nZVR5cGUgPT0gQ2hpbGRDaGFuZ2VUeXBlOjpFbGVtZW50SW5zZXJ0ZWQgPyBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqYmVmb3JlQ2hhbmdlKSA6IGJlZm9yZUNoYW5nZS0+bmV4
dFNpYmxpbmcoKTsKIAogICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYmIGVsZW1lbnRBZmZlY3Rz
RGlyZWN0aW9uYWxpdHkoKm9sZE1hcmtlZE5vZGUpKQogICAgICAgICBvbGRNYXJrZWROb2RlID0g
b2xkTWFya2VkTm9kZS0+bmV4dFNpYmxpbmcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412575</attachid>
            <date>2020-10-28 15:10:09 -0700</date>
            <delta_ts>2020-10-29 00:00:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218298-20201029071008.patch</filename>
            <type>text/plain</type>
            <size>33799</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uODg2YWI4NmU1NjA4YTkzYmIwMDgwMGFlMzQxZDc4
NzBlOTNiYTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTEwLTI4ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGUgZW51bSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mjk4CisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNo
IG1vdmVkIHRvIGBDaGlsZENoYW5nZVR5cGVgIHRvIHVuZGVyIGBDaGlsZENoYW5nZWAuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBtb3ZlIGBDaGlsZENoYW5nZVNvdXJjZWAgdG8gdW5kZXIgYENo
aWxkQ2hhbmdlYCBhbmQgc3BlY2lmeSBhIGJhc2UgdHlwZS4KKworICAgICAgICAqIGRvbS9DaGFy
YWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFw
cGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZSk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1v
dmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFj
ZUFsbENoaWxkcmVuV2l0aE5ld1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBw
ZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjphZmZlY3RzRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VD
aGlsZHJlbik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjppc0luc2VydGlvbiBjb25zdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlw
UGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
CisKIDIwMjAtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gQWRkIGFsdGVybmF0ZSB2ZXJzaW9u
cyBvZiBleGlzdGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBvbmx5IGNvbnRhaW4gaW5saW5l
IGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBmNDRjMTNmZjA2ZWU2
YWFmYzY1ZWY3YzNhMTRmODM1YmJjNjA0OTc2Li4wZmYyYTVjZTJhM2M2NmQzODE3OTE0YWVmNTAy
ZWQyNDkxNzM1NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0xMDUs
NyArMTA1LDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25z
dCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhp
cykgJiYgcGFyZW50Tm9kZSgpKQogICAgICAgICBkb3duY2FzdDxUZXh0PigqdGhpcykudXBkYXRl
UmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2Uob2xkTGVuZ3RoLCAwKTsKIAotICAgIG5vdGlmeVBh
cmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIp
OworICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcik7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24o
KnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTkxLDEy
ICsxOTEsMTIgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0
cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXAKICAgICBpZiAoZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnRleHRXYXNS
ZXBsYWNlZCh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCBuZXdMZW5ndGgp
OwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2VTb3VyY2U6OkFQSSk7CisgICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVu
dChvbGREYXRhKTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNo
YW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZSBzb3VyY2UpCit2b2lkIENoYXJh
Y3RlckRhdGE6Om5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24o
KTsKIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6bm90aWZ5UGFyZW50
QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2Ugc291CiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIGNoYW5nZSA9IHsKLSAg
ICAgICAgQ29udGFpbmVyTm9kZTo6VGV4dENoYW5nZWQsCisgICAgICAgIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKICAgICAgICAgRWxlbWVudFRyYXZlcnNh
bDo6cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4
dFNpYmxpbmcoKnRoaXMpLAogICAgICAgICBzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGE2NmYyYTQ3MTdjYzA4ZmE0NTYwMTgyMzdkMjFiYjQwM2MyNzJkYzcuLmM1OTQ3
MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZSk7CisgICAgdm9pZCBub3Rp
ZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsK
IAogICAgIFN0cmluZyBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CmluZGV4IGY1ZDQ4YTM1ZDgyNjFiM2FmMjk4NjVjNGRiMjJjN2M2MTU0ZDAyOGIuLjQ0NjUyNWJj
N2U4Y2QyOTgxODk2ZDdkMDUwZTAxZjg0MGNhMjViYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCB1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OnNfY291bnQgPSAwOwogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRT
Y29wZSogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50
U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKLUFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250
YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2VTb3VyY2Ugc291cmNlLCBEZWZlckNoaWxkcmVuQ2hhbmdlZCBkZWZlckNoaWxkcmVuQ2hhbmdl
ZCkKK0FMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIERlZmVy
Q2hpbGRyZW5DaGFuZ2VkIGRlZmVyQ2hpbGRyZW5DaGFuZ2VkKQogewogICAgIGF1dG8gY2hpbGRy
ZW4gPSBjb2xsZWN0Q2hpbGROb2RlcygqdGhpcyk7CiAKLSAgICBpZiAoc291cmNlID09IENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlOjpBUEkpIHsKKyAgICBpZiAoc291cmNlID09IENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSkgewogICAgICAgICBDaGlsZExp
c3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuKSB7CiAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hp
bGQuZ2V0KCkpOwpAQCAtOTAsNyArOTAsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAg
ICAgICAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZVNvdXJjZTo6UGFyc2VyKTsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSA9PSBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpOwogICAgICAgICBTY3JpcHREaXNh
bGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAg
IGlmIChVTkxJS0VMWShkb2N1bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0
aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlv
blNjb3BlIG11dGF0aW9uKCp0aGlzKTsKQEAgLTExNSwxMiArMTE1LDEyIEBAIEFMV0FZU19JTkxJ
TkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRB
c3NlcnRpb24oQ2hpCiAgICAgfQogCiAgICAgaWYgKGRlZmVyQ2hpbGRyZW5DaGFuZ2VkID09IERl
ZmVyQ2hpbGRyZW5DaGFuZ2VkOjpObykKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBu
dWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7CisgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJl
bW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9KTsKIAogICAgIHJldHVybiBjaGlsZHJl
bjsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRo
U2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hhbmdlU291cmNlIHNv
dXJjZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNj
cmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtb3ZlLCBDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSkKIHsKICAgICBSZWY8Tm9kZT4gcHJvdGVjdGVkQ2hpbGRUb1JlbW92ZShjaGlsZFRvUmVt
b3ZlKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjaGlsZFRvUmVtb3Zl
LnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKQEAgLTEzMCwxNCArMTMwLDE0IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2Rl
JiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFs
bG93ZWRJblN1YnRyZWUoY2hpbGRUb1JlbW92ZSkpOwotICAgIGlmIChzb3VyY2UgPT0gQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSkgeworICAgIGlmIChzb3VyY2UgPT0gQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKSB7CiAgICAgICAgIGNoaWxkVG9S
ZW1vdmUubm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwogICAgICAgICBk
aXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhwcm90ZWN0ZWRDaGlsZFRvUmVtb3ZlKTsKICAgICAg
ICAgaWYgKGNoaWxkVG9SZW1vdmUucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKSB7CisgICAgaWYgKHNvdXJjZSA9PSBDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpIHsKICAgICAgICAgLy8gRklYTUU6IE1l
cmdlIHRoZXNlIHR3byBjb2RlIHBhdGhzLiBJdCdzIGEgYnVnIGluIHRoZSBwYXJzZXIgbm90IHRv
IHVwZGF0ZSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGluIHRpbWUuCiAgICAgICAgIGRpc2Nvbm5l
Y3RTdWJmcmFtZXNJZk5lZWRlZCgqdGhpcywgRGVzY2VuZGFudHNPbmx5KTsKICAgICB9IGVsc2Ug
ewpAQCAtMTY2LDcgKzE2Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpy
ZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgICAgIHJl
bW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5nZXQoKSwgY2hp
bGRUb1JlbW92ZSk7CiAgICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsIGNoaWxk
VG9SZW1vdmUpOwogCi0gICAgICAgIGNoYW5nZS50eXBlID0gaXM8RWxlbWVudD4oY2hpbGRUb1Jl
bW92ZSkgPyBFbGVtZW50UmVtb3ZlZCA6IChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSA/IFRleHRS
ZW1vdmVkIDogTm9uQ29udGVudHNDaGlsZFJlbW92ZWQpOworICAgICAgICBjaGFuZ2UudHlwZSA9
IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8gQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRS
ZW1vdmVkIDogKGlzPFRleHQ+KGNoaWxkVG9SZW1vdmUpID8gQ2hpbGRDaGFuZ2U6OlR5cGU6OlRl
eHRSZW1vdmVkIDogQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkKTsK
ICAgICAgICAgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPSAoIXByZXZpb3VzU2libGlu
ZyB8fCBpczxFbGVtZW50PigqcHJldmlvdXNTaWJsaW5nKSkgPyBkb3duY2FzdDxFbGVtZW50Pihw
cmV2aW91c1NpYmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5n
KCpwcmV2aW91c1NpYmxpbmcpOwogICAgICAgICBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50ID0g
KCFuZXh0U2libGluZyB8fCBpczxFbGVtZW50PigqbmV4dFNpYmxpbmcpKSA/IGRvd25jYXN0PEVs
ZW1lbnQ+KG5leHRTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5n
KCpuZXh0U2libGluZyk7CiAgICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7CkBAIC0xODIs
NyArMTgyLDcgQEAgZW51bSBjbGFzcyBSZXBsYWNlZEFsbENoaWxkcmVuIHsgTm8sIFllcyB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01JbnNlcnRpb25Xb3JrPgogc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVy
Tm9kZSYgY29udGFpbmVyTm9kZSwgTm9kZSYgY2hpbGQsCi0gICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2VTb3VyY2Ugc291cmNlLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxhY2VkQWxsQ2hp
bGRyZW4sIERPTUluc2VydGlvbldvcmsgZG9Ob2RlSW5zZXJ0aW9uKQorICAgIENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxh
Y2VkQWxsQ2hpbGRyZW4sIERPTUluc2VydGlvbldvcmsgZG9Ob2RlSW5zZXJ0aW9uKQogewogICAg
IE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CiAgICAgewpAQCAt
MTk4LDEwICsxOTgsMTQgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlTm9kZUlu
c2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9kZSYKIAogICAgIC8vIEZJWE1F
OiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4K
ICAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMp
Ci0gICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwg
bnVsbHB0ciwgc291cmNlIH0pOworICAgICAgICBjb250YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdl
ZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsKLSAgICAgICAgICAgIGNoaWxkLmlzRWxlbWVudE5vZGUo
KSA/IENvbnRhaW5lck5vZGU6OkVsZW1lbnRJbnNlcnRlZCA6IChjaGlsZC5pc1RleHROb2RlKCkg
PyBDb250YWluZXJOb2RlOjpUZXh0SW5zZXJ0ZWQgOiBDb250YWluZXJOb2RlOjpOb25Db250ZW50
c0NoaWxkSW5zZXJ0ZWQpLAorICAgICAgICAgICAgY2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KKyAg
ICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudElu
c2VydGVkIDoKKyAgICAgICAgICAgICAgICAoY2hpbGQuaXNUZXh0Tm9kZSgpID8KKyAgICAgICAg
ICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRl
ZCA6CisgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBl
OjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAogICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNh
bDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHRTaWJsaW5nKGNoaWxkKSwKICAgICAgICAgICAgIHNvdXJjZQpAQCAtMjEyLDcgKzIxNiw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2Ny
aXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmCiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0
SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKICAgICAgICAgdGFyZ2V0LT5kaWRGaW5pc2hJ
bnNlcnRpbmdOb2RlKCk7CiAKLSAgICBpZiAoc291cmNlID09IENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlU291cmNlOjpBUEkpCisgICAgaWYgKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6U291cmNlOjpBUEkpCiAgICAgICAgIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVu
dHMoY2hpbGQpOwogfQogCkBAIC0yNjEsNyArMjY1LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0
YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKIHsKICAgICBBU1NF
UlQob2xkUGFyZW50KTsKIAotICAgIGF1dG8gY2hpbGRyZW4gPSBvbGRQYXJlbnQtPnJlbW92ZUFs
bENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKTsK
KyAgICBhdXRvIGNoaWxkcmVuID0gb2xkUGFyZW50LT5yZW1vdmVBbGxDaGlsZHJlbldpdGhTY3Jp
cHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKIAogICAgIC8vIEZJWE1F
OiBhc3NlcnQgdGhhdCB3ZSBkb24ndCBkaXNwYXRjaCBldmVudHMgaGVyZSBzaW5jZSB0aGlzIGNv
bnRhaW5lciBub2RlIGlzIHN0aWxsIGRpc2Nvbm5lY3RlZC4KICAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW4pIHsKQEAgLTQxMSw3ICs0MTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250
YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQog
ICAgICAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIENoaWxkQ2hhbmdlU291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5v
LCBbJl0geworICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24o
KnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxs
Q2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vy
c2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0
LCBjaGlsZCk7CiAgICAgICAgIH0pOwpAQCAtNDcwLDcgKzQ3NCw3IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBuZXh0Q2hpbGQp
CiAgICAgaWYgKG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcoKSA9PSAmbmV3Q2hpbGQgfHwgJm5l
eHRDaGlsZCA9PSAmbmV3Q2hpbGQpIC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdD
aGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlz
LCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxk
cmVuOjpObywgWyZdIHsKICAgICAgICAgaWYgKCZkb2N1bWVudCgpICE9ICZuZXdDaGlsZC5kb2N1
bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5hZG9wdE5vZGUobmV3Q2hpbGQpOwogCkBA
IC01NDQsNyArNTQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVwbGFj
ZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBvbGRDaGlsZCkKICAgICAgICAgaWYgKGNoaWxk
LT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBleGVjdXRlTm9k
ZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENo
YW5nZVNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKKyAgICAgICAg
ZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQo
KSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZd
IHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUo
KSk7CiAgICAgICAgICAgICBpZiAocmVmQ2hpbGQpCiAgICAgICAgICAgICAgICAgaW5zZXJ0QmVm
b3JlQ29tbW9uKCpyZWZDaGlsZCwgY2hpbGQuZ2V0KCkpOwpAQCAtNTc0LDcgKzU3OCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUmIG9sZENoaWxk
KQogICAgIGlmIChvbGRDaGlsZC5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IgfTsKIAotICAgIGlmICghcmVtb3ZlTm9kZVdpdGhT
Y3JpcHRBc3NlcnRpb24ob2xkQ2hpbGQsIENoaWxkQ2hhbmdlU291cmNlOjpBUEkpKQorICAgIGlm
ICghcmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24ob2xkQ2hpbGQsIENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yIH07
CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZOZWNlc3NhcnkoKTsKQEAgLTYx
OSw3ICs2MjMsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJl
dmlvdXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlJiBvbAogCiB2b2lkIENvbnRhaW5lck5v
ZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5vZGUmIG9sZENoaWxkKQogewotICAgIHJlbW92ZU5vZGVX
aXRoU2NyaXB0QXNzZXJ0aW9uKG9sZENoaWxkLCBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKTsK
KyAgICByZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihvbGRDaGlsZCwgQ2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyKTsKIH0KIAogLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNj
b25jZXB0LW5vZGUtcmVwbGFjZS1hbGwKQEAgLTY0Nyw5ICs2NTEsOSBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnJlcGxhY2VBbGxDaGlsZHJlbldpdGhOZXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
IAogICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBDaGls
ZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKLSAgICByZW1vdmVBbGxDaGlsZHJl
bldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSwgRGVmZXJDaGlsZHJl
bkNoYW5nZWQ6Olllcyk7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9u
KENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Olllcyk7CiAK
LSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5vZGUu
Z2V0KCksIENoaWxkQ2hhbmdlU291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Olllcywg
WyZdIHsKKyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMs
IG5vZGUuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJl
bjo6WWVzLCBbJl0gewogICAgICAgICBBU1NFUlQoIWVuc3VyZVByZUluc2VydGlvblZhbGlkaXR5
KG5vZGUsIG51bGxwdHIpLmhhc0V4Y2VwdGlvbigpKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCAqdGhpcyk7CiAgICAgICAg
IG5vZGUtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKQEAgLTY3NCw3ICs2
NzgsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAg
IHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGlsZENoYW5nZVNvdXJjZTo6
QVBJKTsKKyAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJKTsKIAogICAgIHJlYnVpbGRTVkdFeHRlbnNpb25zRWxlbWVudHNJZk5l
Y2Vzc2FyeSgpOwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKQEAgLTcyNSw3
ICs3MjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZFdp
dGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZAogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKLSAgICAgICAg
ZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQo
KSwgQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7
CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywg
Y2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJl
bjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHko
dHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21tb24oY2hpbGQpOwogICAg
ICAgICB9KTsKQEAgLTc0MSw3ICs3NDUsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFw
cGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3Q2hpbGQuaXNEb2N1bWVu
dEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRlbXBsYXRl
VGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRo
aXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxk
cmVuOjpObywgWyZdIHsKKyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRp
b24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2Vk
QWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5ld0No
aWxkLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdDaGls
ZCk7CiAKQEAgLTc1NCwxNiArNzU4LDE2IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQXBw
ZW5kQ2hpbGQoTm9kZSYgbmV3Q2hpbGQpCiBzdGF0aWMgYm9vbCBhZmZlY3RzRWxlbWVudHMoY29u
c3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBzd2l0Y2ggKGNo
YW5nZS50eXBlKSB7Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpFbGVtZW50SW5zZXJ0ZWQ6Ci0g
ICAgY2FzZSBDb250YWluZXJOb2RlOjpFbGVtZW50UmVtb3ZlZDoKLSAgICBjYXNlIENvbnRhaW5l
ck5vZGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6OkFsbENo
aWxkcmVuUmVwbGFjZWQ6CisgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudEluc2VydGVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6OkVsZW1lbnRSZW1vdmVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6OlRleHRJbnNlcnRlZDoKLSAgICBjYXNlIENvbnRh
aW5lck5vZGU6OlRleHRSZW1vdmVkOgotICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6VGV4dENoYW5n
ZWQ6Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6Ci0g
ICAgY2FzZSBDb250YWluZXJOb2RlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKKyAgICBjYXNl
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0SW5zZXJ0ZWQ6CisgICAgY2Fz
ZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ6CisgICAgY2Fz
ZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dENoYW5nZWQ6CisgICAgY2Fz
ZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2Vy
dGVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRl
bnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzgwLDcgKzc4NCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgLy8gRklYTUU6
IFVuY2xlYXIgd2h5IGl0J3MgYWx3YXlzIHNhZmUgdG8gc2tpcCB0aGlzIHdoZW4gcGFyc2VyIGlz
IGFkZGluZyBjaGlsZHJlbi4KICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSBpdCdzIGVxdWFsbHkg
c2FmZSB0byBza2lwIGZvciBUZXh0SW5zZXJ0ZWQgYW5kIFRleHRSZW1vdmVkIGFzIGZvciBUZXh0
Q2hhbmdlZC4KICAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzd2l0Y2ggZm9yIGNoYW5nZSB0eXBl
IHNvIHdlIHJlbWVtYmVyIHRvIHVwZGF0ZSB3aGVuIGFkZGluZyBuZXcgdHlwZXMuCi0gICAgaWYg
KGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSAmJiBjaGFuZ2UudHlwZSAh
PSBUZXh0Q2hhbmdlZCkKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291
cmNlOjpBUEkgJiYgY2hhbmdlLnR5cGUgIT0gQ2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2Vk
KQogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVJhbmdlc0FmdGVyQ2hpbGRyZW5DaGFuZ2VkKCp0
aGlzKTsKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2Vz
dG9ycygpOwpAQCAtOTcyLDcgKzk3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OnJlcGxhY2VDaGlsZHJlbihWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIHZlY3RvcikKICAgICAv
LyBzdGVwIDMKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKICAgICBD
aGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKLSAgICByZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2VTb3VyY2U6OkFQSSwgRGVmZXJDaGls
ZHJlbkNoYW5nZWQ6Ok5vKTsKKyAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRp
b24oQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6Tm8pOwog
CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgaWYgKGF1dG8gYXBwZW5kUmVzdWx0ID0gYXBwZW5k
Q2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjaygqbm9kZSk7IGFwcGVuZFJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGE4M2Rh
YmY3MTAxOGI1NzVhZDViZmI4ZjJhNDZmYjQ5ODVkNGEzMDAuLmE1MDI5MTc3MzQ0N2JlOGIwNmM3
MDJlNjhkZDg5YjQ0N2M5ODU5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAt
NzMsMjcgKzczLDI4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvbmVDaGlsZE5vZGVzKENvbnRh
aW5lck5vZGUmIGNsb25lKTsKIAotICAgIGVudW0gQ2hpbGRDaGFuZ2VUeXBlIHsgRWxlbWVudElu
c2VydGVkLCBFbGVtZW50UmVtb3ZlZCwgVGV4dEluc2VydGVkLCBUZXh0UmVtb3ZlZCwgVGV4dENo
YW5nZWQsIEFsbENoaWxkcmVuUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZFJlbW92ZWQsIE5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZCwgQWxsQ2hpbGRyZW5SZXBsYWNlZCB9OwotICAgIGVudW0gY2xh
c3MgQ2hpbGRDaGFuZ2VTb3VyY2UgeyBQYXJzZXIsIEFQSSB9OwogICAgIHN0cnVjdCBDaGlsZENo
YW5nZSB7Ci0gICAgICAgIENoaWxkQ2hhbmdlVHlwZSB0eXBlOworICAgICAgICBlbnVtIGNsYXNz
IFR5cGU6IHVpbnQ4X3QgeyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVkLCBUZXh0SW5z
ZXJ0ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1vdmVkLCBOb25D
b250ZW50c0NoaWxkUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZEluc2VydGVkLCBBbGxDaGlsZHJl
blJlcGxhY2VkIH07CisgICAgICAgIGVudW0gY2xhc3MgU291cmNlOiBib29sIHsgUGFyc2VyLCBB
UEkgfTsKKworICAgICAgICBDaGlsZENoYW5nZTo6VHlwZSB0eXBlOwogICAgICAgICBFbGVtZW50
KiBwcmV2aW91c1NpYmxpbmdFbGVtZW50OwogICAgICAgICBFbGVtZW50KiBuZXh0U2libGluZ0Vs
ZW1lbnQ7Ci0gICAgICAgIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZTsKKyAgICAgICAgQ2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2U7CiAKICAgICAgICAgYm9vbCBpc0luc2VydGlvbigpIGNvbnN0
CiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgY2Fz
ZSBFbGVtZW50SW5zZXJ0ZWQ6Ci0gICAgICAgICAgICBjYXNlIFRleHRJbnNlcnRlZDoKLSAgICAg
ICAgICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAgICAgICAgICAgY2FzZSBB
bGxDaGlsZHJlblJlcGxhY2VkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
RWxlbWVudEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4
dEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVu
dHNDaGlsZEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6QWxs
Q2hpbGRyZW5SZXBsYWNlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIGNhc2UgRWxlbWVudFJlbW92ZWQ6Ci0gICAgICAgICAgICBjYXNlIFRleHRSZW1vdmVkOgot
ICAgICAgICAgICAgY2FzZSBUZXh0Q2hhbmdlZDoKLSAgICAgICAgICAgIGNhc2UgQWxsQ2hpbGRy
ZW5SZW1vdmVkOgotICAgICAgICAgICAgY2FzZSBOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKKyAg
ICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkOgorICAgICAg
ICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ6CisgICAgICAgICAgICBj
YXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hp
bGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hp
bGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTQ1LDggKzE0Niw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9p
ZCBleGVjdXRlUHJlcGFyZWRDaGlsZHJlblJlbW92YWwoKTsKICAgICBlbnVtIGNsYXNzIERlZmVy
Q2hpbGRyZW5DaGFuZ2VkIHsgWWVzLCBObyB9OwotICAgIE5vZGVWZWN0b3IgcmVtb3ZlQWxsQ2hp
bGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlU291cmNlLCBEZWZlckNoaWxkcmVu
Q2hhbmdlZCA9IERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpObyk7Ci0gICAgYm9vbCByZW1vdmVOb2Rl
V2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiwgQ2hpbGRDaGFuZ2VTb3VyY2UpOworICAgIE5vZGVW
ZWN0b3IgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpT
b3VyY2UsIERlZmVyQ2hpbGRyZW5DaGFuZ2VkID0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKTsK
KyAgICBib29sIHJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmLCBDaGlsZENoYW5n
ZTo6U291cmNlKTsKIAogICAgIHZvaWQgcmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxk
LCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUmIG9sZENoaWxkKTsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBhcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBkODhiMGI5ZDU0NmY2ZDU4MWVlYzVhZjA0NDJjNGRjNzhh
NGZhOGNhLi4zY2E5MTE2YWM4NmMwZjQ1MjYwNWQzYTQ3NmJiYTJhN2EwYTgwOTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0yNjIxLDMwICsyNjIxLDMwIEBAIHN0YXRpYyB2b2lkIGNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50JiBwYXJlbnQsIFNpYmxpbmdDaGVja1R5cGUg
Y2hlY2tUCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAg
ICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKnRoaXMpOwogICAgIGVsc2UgewotICAgICAgICBT
aWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSA9IGNoYW5nZS50eXBlID09IEVsZW1lbnRSZW1vdmVk
ID8gU2libGluZ0VsZW1lbnRSZW1vdmVkIDogT3RoZXI7CisgICAgICAgIFNpYmxpbmdDaGVja1R5
cGUgY2hlY2tUeXBlID0gY2hhbmdlLnR5cGUgPT0gQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRS
ZW1vdmVkID8gU2libGluZ0VsZW1lbnRSZW1vdmVkIDogT3RoZXI7CiAgICAgICAgIGNoZWNrRm9y
U2libGluZ1N0eWxlQ2hhbmdlcygqdGhpcywgY2hlY2tUeXBlLCBjaGFuZ2UucHJldmlvdXNTaWJs
aW5nRWxlbWVudCwgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCk7CiAgICAgfQogCiAgICAgaWYg
KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0aGlzLT5zaGFkb3dSb290KCkpIHsKICAgICAgICAg
c3dpdGNoIChjaGFuZ2UudHlwZSkgewotICAgICAgICBjYXNlIEVsZW1lbnRJbnNlcnRlZDoKLSAg
ICAgICAgY2FzZSBFbGVtZW50UmVtb3ZlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudEluc2VydGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVt
ZW50UmVtb3ZlZDoKICAgICAgICAgICAgIC8vIEZvciBlbGVtZW50cywgd2Ugbm90aWZ5IHNoYWRv
d1Jvb3QgaW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IgYW5kIEVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbGxDaGls
ZHJlblJlbW92ZWQ6Ci0gICAgICAgIGNhc2UgQWxsQ2hpbGRyZW5SZXBsYWNlZDoKKyAgICAgICAg
Y2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgorICAgICAgICBjYXNl
IENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICAgICAgc2hh
ZG93Um9vdC0+ZGlkUmVtb3ZlQWxsQ2hpbGRyZW5PZlNoYWRvd0hvc3QoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFRleHRJbnNlcnRlZDoKLSAgICAgICAgY2FzZSBUZXh0UmVt
b3ZlZDoKLSAgICAgICAgY2FzZSBUZXh0Q2hhbmdlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5n
ZTo6VHlwZTo6VGV4dEluc2VydGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpU
ZXh0UmVtb3ZlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dENoYW5nZWQ6
CiAgICAgICAgICAgICBzaGFkb3dSb290LT5kaWRDaGFuZ2VEZWZhdWx0U2xvdCgpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAg
ICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hh
bmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6CisgICAgICAgIGNhc2UgQ2hpbGRD
aGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggYWJjYzNj
ODk2ZjRlZWRlN2U0MDc4MWZjZmY1ZDk4NWIyNWIyMWQ5Mi4uN2FmMDc5YTNhYTY4Y2VlYmUzYmMx
OTcyYzVlNjY5YWYzMDVmMzUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTI4
LDE3ICsxMjgsMTcgQEAgdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoaWxkQ2hhbmdlKQogCiAgICAgLy8gRklYTUU6IEF2b2lkIGFsd2F5cyBpbnZh
bGlkYXRpbmcgc3R5bGUganVzdCBmb3IgZmlyc3QtY2hpbGQsIGV0Yy4uLiBhcyBkb25lIGluIEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZC4KICAgICBzd2l0Y2ggKGNoaWxkQ2hhbmdlLnR5cGUpIHsK
LSAgICBjYXNlIEVsZW1lbnRJbnNlcnRlZDoKLSAgICBjYXNlIEVsZW1lbnRSZW1vdmVkOgorICAg
IGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJbnNlcnRlZDoKKyAgICBjYXNlIENoaWxk
Q2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZDoKICAgICAgICAgbV9ob3N0LT5pbnZhbGlkYXRl
U3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
SW5zZXJ0ZWQ6Ci0gICAgY2FzZSBUZXh0UmVtb3ZlZDoKLSAgICBjYXNlIFRleHRDaGFuZ2VkOgot
ICAgIGNhc2UgQWxsQ2hpbGRyZW5SZW1vdmVkOgotICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZFJl
bW92ZWQ6Ci0gICAgY2FzZSBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6Ci0gICAgY2FzZSBBbGxD
aGlsZHJlblJlcGxhY2VkOgorICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRl
ZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3ZlZDoKKyAgICBjYXNlIENo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29u
dGVudHNDaGlsZFJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVu
dHNDaGlsZEluc2VydGVkOgorICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVu
UmVwbGFjZWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKaW5kZXggMWE1OTJjZGM2ZTRlZDE4YWM0NjcwMTlkMmI3YjBjZTI3NjNkZGRlOS4u
NjU4ZmI5MTg5YWRlNTJiYjFiZmRiMDMxYjYwYmU3ZGMzZWE2MzNmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojpj
YWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpCiAgICAgICAgIGludmFsaWRhdGVTdHls
ZUZvclN1YnRyZWUoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxp
dHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm9yZUNoYW5nZSwgQ2hp
bGRDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCit2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rp
b25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hhbmdl
LCBDaGlsZENoYW5nZTo6VHlwZSBjaGFuZ2VUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1
bmN0aW9uIGxvb2tzIHN1c3BpY2lvdXMuCiAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEhUTUxF
bGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQo
RWxlbWVudCogYmVmbwogCiAgICAgUmVmUHRyPE5vZGU+IG9sZE1hcmtlZE5vZGU7CiAgICAgaWYg
KGJlZm9yZUNoYW5nZSkKLSAgICAgICAgb2xkTWFya2VkTm9kZSA9IGNoYW5nZVR5cGUgPT0gRWxl
bWVudEluc2VydGVkID8gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmJlZm9yZUNoYW5n
ZSkgOiBiZWZvcmVDaGFuZ2UtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIG9sZE1hcmtlZE5vZGUg
PSBjaGFuZ2VUeXBlID09IENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50SW5zZXJ0ZWQgPyBFbGVt
ZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqYmVmb3JlQ2hhbmdlKSA6IGJlZm9yZUNoYW5nZS0+
bmV4dFNpYmxpbmcoKTsKIAogICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYmIGVsZW1lbnRBZmZl
Y3RzRGlyZWN0aW9uYWxpdHkoKm9sZE1hcmtlZE5vZGUpKQogICAgICAgICBvbGRNYXJrZWROb2Rl
ID0gb2xkTWFya2VkTm9kZS0+bmV4dFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aAppbmRleCAyNjcxNWZkMDQxYWFmOWYwMmVjYTNjM2NiNDE4YTJkOWQ3ZjRmNjA2Li43NmFjMDc0
Njc5NGU3MWQwNTA3ZTYxYTBhZGE4MDQzZmY3NmEyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlyQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25h
bGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpOwot
ICAgIHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2Vk
KEVsZW1lbnQqIGJlZm9yZUNoYW5nZSwgQ2hpbGRDaGFuZ2VUeXBlKTsKKyAgICB2b2lkIGFkanVz
dERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChFbGVtZW50KiBiZWZv
cmVDaGFuZ2UsIENoaWxkQ2hhbmdlOjpUeXBlKTsKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlPSAwKSBjb25zdDsKIAog
ICAgIHN0YXRpYyB2b2lkIHBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJO
YW1lTWFwJiwgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgdGFibGVbXSwgc2l6ZV90IHRhYmxl
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IDM2
MDY2NWI3Mjg4MDE2OGIxZmQ1OTA1NjViZDI3NGM4YzlmYmFlMjguLjViNDQ2YzdmMzlmZTc4NTll
ZDdjZTY0M2RiNmQ5MTJmMzAwYTRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5n
ZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRl
bnRJblByb2dyZXNzKSB7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyIHx8IG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MpIHsKICAgICAgICAg
bV9pc1NldFRleHRDb250ZW50SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzE2
MTQzYjgwZjFjOTYxMDZlM2VlY2JjNzc4NzIyNmU5NjBlYThhLi5iNGU3OTk1OGM1YjEzMDM1NWY3
OTk5NGIxMTgzYzUzZjkyY2VkNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHR3JhcGhp
Y3NFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291
cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2Ug
PT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCmluZGV4IDU3NzVlOTgxNDAyMWIzNjVlMGYwM2M2ZWY3OTczNjZjMmE3NzhkMmUuLmNh
YWM1NTc4MzIyMDc0OTUwZTQ4YjU0NTkxY2I5OWY1ZjE3Njk4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIFN0eWxlZEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENo
YW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlSW5z
dGFuY2VzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRl
eCAxMDAyODk0MDdlOTM3MWRkMjAxY2ZkMTNhOWI2ZjM5Y2ExZDUwNjQ0Li4zZDEzZDE2ZTEwN2Zl
NDRjZjIwYjU3OWE1ZjE3Njk1MmQ4NTg2YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNl
ID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBw
YXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CiAgICAgaWYgKCFwYXJlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5kZXggNzQzMmViYmYxMDhjMTBjNWM1
MTIyYzgzZGY5ZmQ0NjA3NTY3ZGYxNy4uMGE4MTY1YzgzYTNjZDg1YTkxYTk1ZDA0MDM0ZTI3YjIz
NmI5OTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6
UGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBh
cnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggY2YzYWRlZDRkYzk3ZmVlNmQ2
ODc0YTMyYmY3MjkxZTZiZTUwZjU1My4uZjJhNmVlMDhkYjdhMGQyZGYzYmQ4Y2M1Mzc1ZDMxNzk4
YjUxMjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2gKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJz
ZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
KQogICAgICAgICByZXR1cm47CiAgICAgaW52YWxpZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAzYjgwMDBlODFiN2JkYmFlNjMzNWI2NjE5
NWYxNjE0NTEzNTdiOTJhLi4zZGEwZjMzMDk3NTJhZmYzMjhjYjgwYmRjOGY0MzY5ZmNkYjAxMGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFy
c2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCA4MmZh
OTE5NGZjNGQ0NTAwYTg1NWNlMmEwYjAzOGQ3MGNjOGU2MTViLi4wYjQzYmI4NDJlNWUzNjJhYWVm
ODc5ZmQ2MDYzYWE1NzZlYWUyMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKaW5kZXggZjY4NjBhMTNjODNjOWNhZGVmY2ZmZDA1YTFjZWY4ZDZlNGY4NWQ0ZS4uMjZkZTMy
ODkzNzg4ZjkzYjFlYjdiZGU2ZjAzZTJjZjJmM2IyNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9
PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJl
bmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCmluZGV4IGQ2YjM4ZDcwN2Y2YzRhNTQ0OGEyZmE2YmZmZGU3ODI3MDk4
M2ZmNTkuLjFjZjYzNmUzOTFiMDYyZWViNjM4MDI3NTE4ZTAzZGU1Y2NmZDk3YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0g
ICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKKyAgICBp
ZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412619</attachid>
            <date>2020-10-29 00:00:38 -0700</date>
            <delta_ts>2020-10-29 12:24:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218298-20201029160037.patch</filename>
            <type>text/plain</type>
            <size>33790</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1MWEyOGI0NWEwYmRj
MmQzZjAwMDEzMTY2ZTBmZmM3YTQ4OTRlMy4uODg2YWI4NmU1NjA4YTkzYmIwMDgwMGFlMzQxZDc4
NzBlOTNiYTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTEwLTI4ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgTWFr
ZSBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVR5cGUgZW51bSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mjk4CisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNo
IG1vdmVkIHRvIGBDaGlsZENoYW5nZVR5cGVgIHRvIHVuZGVyIGBDaGlsZENoYW5nZWAuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBtb3ZlIGBDaGlsZENoYW5nZVNvdXJjZWAgdG8gdW5kZXIgYENo
aWxkQ2hhbmdlYCBhbmQgc3BlY2lmeSBhIGJhc2UgdHlwZS4KKworICAgICAgICAqIGRvbS9DaGFy
YWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFw
cGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZSk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1v
dmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFj
ZUFsbENoaWxkcmVuV2l0aE5ld1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBw
ZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjphZmZlY3RzRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VD
aGlsZHJlbik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjppc0luc2VydGlvbiBjb25zdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlw
UGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
CisKIDIwMjAtMTAtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NvbmN1cnJlbnQgZGlzcGxheSBsaXN0c10gQWRkIGFsdGVybmF0ZSB2ZXJzaW9u
cyBvZiBleGlzdGluZyBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBvbmx5IGNvbnRhaW4gaW5saW5l
IGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBmNDRjMTNmZjA2ZWU2
YWFmYzY1ZWY3YzNhMTRmODM1YmJjNjA0OTc2Li4wZmYyYTVjZTJhM2M2NmQzODE3OTE0YWVmNTAy
ZWQyNDkxNzM1NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0xMDUs
NyArMTA1LDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25z
dCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhp
cykgJiYgcGFyZW50Tm9kZSgpKQogICAgICAgICBkb3duY2FzdDxUZXh0PigqdGhpcykudXBkYXRl
UmVuZGVyZXJBZnRlckNvbnRlbnRDaGFuZ2Uob2xkTGVuZ3RoLCAwKTsKIAotICAgIG5vdGlmeVBh
cmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIp
OworICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcik7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24o
KnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTkxLDEy
ICsxOTEsMTIgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0
cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXAKICAgICBpZiAoZG9jdW1lbnQoKS5m
cmFtZSgpKQogICAgICAgICBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnRleHRXYXNS
ZXBsYWNlZCh0aGlzLCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgb2xkTGVuZ3RoLCBuZXdMZW5ndGgp
OwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2VTb3VyY2U6OkFQSSk7CisgICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVu
dChvbGREYXRhKTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNo
YW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZSBzb3VyY2UpCit2b2lkIENoYXJh
Y3RlckRhdGE6Om5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24o
KTsKIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6bm90aWZ5UGFyZW50
QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2Ugc291CiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIGNoYW5nZSA9IHsKLSAg
ICAgICAgQ29udGFpbmVyTm9kZTo6VGV4dENoYW5nZWQsCisgICAgICAgIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKICAgICAgICAgRWxlbWVudFRyYXZlcnNh
bDo6cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4
dFNpYmxpbmcoKnRoaXMpLAogICAgICAgICBzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGE2NmYyYTQ3MTdjYzA4ZmE0NTYwMTgyMzdkMjFiYjQwM2MyNzJkYzcuLmM1OTQ3
MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZSk7CisgICAgdm9pZCBub3Rp
ZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsK
IAogICAgIFN0cmluZyBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CmluZGV4IGY1ZDQ4YTM1ZDgyNjFiM2FmMjk4NjVjNGRiMjJjN2M2MTU0ZDAyOGIuLmQwYmNhZjAy
ZDNjOWNkYjQyNGM5YzU3NzFiODk0ZWE4MjRjMTllYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCB1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OnNfY291bnQgPSAwOwogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRT
Y29wZSogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50
U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKLUFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250
YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2VTb3VyY2Ugc291cmNlLCBEZWZlckNoaWxkcmVuQ2hhbmdlZCBkZWZlckNoaWxkcmVuQ2hhbmdl
ZCkKK0FMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIERlZmVy
Q2hpbGRyZW5DaGFuZ2VkIGRlZmVyQ2hpbGRyZW5DaGFuZ2VkKQogewogICAgIGF1dG8gY2hpbGRy
ZW4gPSBjb2xsZWN0Q2hpbGROb2RlcygqdGhpcyk7CiAKLSAgICBpZiAoc291cmNlID09IENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlU291cmNlOjpBUEkpIHsKKyAgICBpZiAoc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSkgewogICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3Bl
IG11dGF0aW9uKCp0aGlzKTsKICAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7
CiAgICAgICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOwpAQCAt
OTAsNyArOTAsNyBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogICAgICAgICAgICAgZGlzcGF0
Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6
UGFyc2VyKTsKKyAgICAgICAgQVNTRVJUKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIpOwogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIGlmIChVTkxJS0VMWShkb2N1bWVudCgpLmhhc011
dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxkTGlzdCkpKSB7CiAg
ICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKQEAgLTEx
NSwxMiArMTE1LDEyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpy
ZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAgICAgfQogCiAgICAgaWYg
KGRlZmVyQ2hpbGRyZW5DaGFuZ2VkID09IERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpObykKLSAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVy
Tm9kZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENoaWxk
Q2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJj
ZSB9KTsKIAogICAgIHJldHVybiBjaGlsZHJlbjsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIENv
bnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9S
ZW1vdmUsIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBDb250
YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVt
b3ZlLCBDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKIHsKICAgICBSZWY8Tm9kZT4gcHJvdGVj
dGVkQ2hpbGRUb1JlbW92ZShjaGlsZFRvUmVtb3ZlKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihjaGlsZFRvUmVtb3ZlLnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKQEAgLTEz
MCwxNCArMTMwLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1h
aW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoY2hpbGRUb1JlbW92ZSkp
OwotICAgIGlmIChzb3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2U6OkFQ
SSkgeworICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKSB7CiAgICAg
ICAgIGNoaWxkVG9SZW1vdmUubm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgp
OwogICAgICAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKTsKICAgICAgICAgaWYgKGNoaWxkVG9SZW1vdmUucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHNvdXJjZSA9PSBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKSB7CisgICAgaWYgKHNvdXJjZSA9
PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpIHsKICAgICAgICAgLy8gRklYTUU6IE1lcmdl
IHRoZXNlIHR3byBjb2RlIHBhdGhzLiBJdCdzIGEgYnVnIGluIHRoZSBwYXJzZXIgbm90IHRvIHVw
ZGF0ZSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGluIHRpbWUuCiAgICAgICAgIGRpc2Nvbm5lY3RT
dWJmcmFtZXNJZk5lZWRlZCgqdGhpcywgRGVzY2VuZGFudHNPbmx5KTsKICAgICB9IGVsc2UgewpA
QCAtMTY2LDcgKzE2NiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQogICAgICAgICByZW1v
dmVCZXR3ZWVuKHByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dFNpYmxpbmcuZ2V0KCksIGNoaWxk
VG9SZW1vdmUpOwogICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCBjaGlsZFRv
UmVtb3ZlKTsKIAotICAgICAgICBjaGFuZ2UudHlwZSA9IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1v
dmUpID8gRWxlbWVudFJlbW92ZWQgOiAoaXM8VGV4dD4oY2hpbGRUb1JlbW92ZSkgPyBUZXh0UmVt
b3ZlZCA6IE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkKTsKKyAgICAgICAgY2hhbmdlLnR5cGUgPSBp
czxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/CisgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudFJlbW92ZWQgOgorICAgICAgICAgICAgKGlzPFRleHQ+KGNoaWxkVG9SZW1vdmUp
ID8KKyAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQgOgorICAg
ICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZCk7
CiAgICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFwcmV2aW91c1NpYmxp
bmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNhc3Q8RWxlbWVudD4o
cHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGlu
ZygqcHJldmlvdXNTaWJsaW5nKTsKICAgICAgICAgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCA9
ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkgPyBkb3duY2FzdDxF
bGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGlu
ZygqbmV4dFNpYmxpbmcpOwogICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291cmNlOwpAQCAtMTgy
LDcgKzE4Niw3IEBAIGVudW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgRE9NSW5zZXJ0aW9uV29yaz4KIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5l
ck5vZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLAotICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlU291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNlZEFsbENo
aWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKKyAgICBDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBs
YWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKIHsKICAg
ICBOb2RlVmVjdG9yIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOwogICAgIHsKQEAg
LTE5OCwxMCArMjAyLDE0IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJ
bnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmCiAKICAgICAvLyBGSVhN
RTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBTY3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2su
CiAgICAgaWYgKHJlcGxhY2VkQWxsQ2hpbGRyZW4gPT0gUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVz
KQotICAgICAgICBjb250YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZSB7IENvbnRhaW5lck5vZGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKKyAgICAgICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5n
ZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0p
OwogICAgIGVsc2UgewogICAgICAgICBjb250YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7Ci0gICAgICAgICAgICBjaGlsZC5pc0VsZW1lbnROb2Rl
KCkgPyBDb250YWluZXJOb2RlOjpFbGVtZW50SW5zZXJ0ZWQgOiAoY2hpbGQuaXNUZXh0Tm9kZSgp
ID8gQ29udGFpbmVyTm9kZTo6VGV4dEluc2VydGVkIDogQ29udGFpbmVyTm9kZTo6Tm9uQ29udGVu
dHNDaGlsZEluc2VydGVkKSwKKyAgICAgICAgICAgIGNoaWxkLmlzRWxlbWVudE5vZGUoKSA/Cisg
ICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJ
bnNlcnRlZCA6CisgICAgICAgICAgICAgICAgKGNoaWxkLmlzVGV4dE5vZGUoKSA/CisgICAgICAg
ICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0SW5zZXJ0
ZWQgOgorICAgICAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlw
ZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkKSwKICAgICAgICAgICAgIEVsZW1lbnRUcmF2ZXJz
YWw6OnByZXZpb3VzU2libGluZyhjaGlsZCksCiAgICAgICAgICAgICBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZyhjaGlsZCksCiAgICAgICAgICAgICBzb3VyY2UKQEAgLTIxMiw3ICsyMjAs
NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNj
cmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlJgogICAgIGZvciAoYXV0byYgdGFyZ2V0IDogcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCiAgICAgICAgIHRhcmdldC0+ZGlkRmluaXNo
SW5zZXJ0aW5nTm9kZSgpOwogCi0gICAgaWYgKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZVNvdXJjZTo6QVBJKQorICAgIGlmIChzb3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlNvdXJjZTo6QVBJKQogICAgICAgICBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZl
bnRzKGNoaWxkKTsKIH0KIApAQCAtMjYxLDcgKzI2OSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgQVNT
RVJUKG9sZFBhcmVudCk7CiAKLSAgICBhdXRvIGNoaWxkcmVuID0gb2xkUGFyZW50LT5yZW1vdmVB
bGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcik7
CisgICAgYXV0byBjaGlsZHJlbiA9IG9sZFBhcmVudC0+cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2Ny
aXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcik7CiAKICAgICAvLyBGSVhN
RTogYXNzZXJ0IHRoYXQgd2UgZG9uJ3QgZGlzcGF0Y2ggZXZlbnRzIGhlcmUgc2luY2UgdGhpcyBj
b250YWluZXIgbm9kZSBpcyBzdGlsbCBkaXNjb25uZWN0ZWQuCiAgICAgZm9yIChhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuKSB7CkBAIC00MTEsNyArNDE5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29u
dGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCkK
ICAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNo
aWxkLmdldCgpLCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFs
bENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4
dCwgY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTQ3MCw3ICs0NzgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwgTm9kZSYgbmV4dENoaWxk
KQogICAgIGlmIChuZXh0Q2hpbGQucHJldmlvdXNTaWJsaW5nKCkgPT0gJm5ld0NoaWxkIHx8ICZu
ZXh0Q2hpbGQgPT0gJm5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybjsK
IAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3
Q2hpbGQsIENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5v
LCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhp
cywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGls
ZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9j
dW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApA
QCAtNTQ0LDcgKzU1Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAgICAgICAgIGlmIChjaGls
ZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgZXhlY3V0ZU5v
ZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQoKSwgQ2hpbGRD
aGFuZ2VTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgICAg
IGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0
KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsm
XSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3Bl
KCkpOwogICAgICAgICAgICAgaWYgKHJlZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJl
Zm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNoaWxkLmdldCgpKTsKQEAgLTU3NCw3ICs1ODIsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlJiBvbGRDaGls
ZCkKICAgICBpZiAob2xkQ2hpbGQucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yIH07CiAKLSAgICBpZiAoIXJlbW92ZU5vZGVXaXRo
U2NyaXB0QXNzZXJ0aW9uKG9sZENoaWxkLCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJKSkKKyAgICBp
ZiAoIXJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKG9sZENoaWxkLCBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciB9
OwogCiAgICAgcmVidWlsZFNWR0V4dGVuc2lvbnNFbGVtZW50c0lmTmVjZXNzYXJ5KCk7CkBAIC02
MTksNyArNjI3LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHBy
ZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSYgb2wKIAogdm9pZCBDb250YWluZXJO
b2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlJiBvbGRDaGlsZCkKIHsKLSAgICByZW1vdmVOb2Rl
V2l0aFNjcmlwdEFzc2VydGlvbihvbGRDaGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcik7
CisgICAgcmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24ob2xkQ2hpbGQsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcik7CiB9CiAKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8j
Y29uY2VwdC1ub2RlLXJlcGxhY2UtYWxsCkBAIC02NDcsOSArNjU1LDkgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpyZXBsYWNlQWxsQ2hpbGRyZW5XaXRoTmV3VGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CiAKICAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgQ2hp
bGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7Ci0gICAgcmVtb3ZlQWxsQ2hpbGRy
ZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlU291cmNlOjpBUEksIERlZmVyQ2hpbGRy
ZW5DaGFuZ2VkOjpZZXMpOworICAgIHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlv
bihDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpZZXMpOwog
Ci0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBub2Rl
LmdldCgpLCBDaGlsZENoYW5nZVNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMs
IFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlz
LCBub2RlLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRy
ZW46OlllcywgWyZdIHsKICAgICAgICAgQVNTRVJUKCFlbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0
eShub2RlLCBudWxscHRyKS5oYXNFeGNlcHRpb24oKSk7CiAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgICAg
ICBub2RlLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CkBAIC02NzQsNyAr
NjgyLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLSAg
ICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2VTb3VyY2U6
OkFQSSk7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSk7CiAKICAgICByZWJ1aWxkU1ZHRXh0ZW5zaW9uc0VsZW1lbnRzSWZO
ZWNlc3NhcnkoKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CkBAIC03MjUs
NyArNzMzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGRX
aXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAgICAg
IGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0
KCksIENoaWxkQ2hhbmdlU291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0g
eworICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMs
IGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRy
ZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5
KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGFwcGVuZENoaWxkQ29tbW9uKGNoaWxkKTsKICAg
ICAgICAgfSk7CkBAIC03NDEsNyArNzQ5LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJB
cHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLmlzRG9jdW1l
bnRGcmFnbWVudCgpKTsKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZW1wbGF0
ZVRhZykpOwogCi0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0
aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGls
ZHJlbjo6Tm8sIFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0
aW9uKCp0aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNl
ZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgaWYgKCZkb2N1bWVudCgpICE9ICZuZXdD
aGlsZC5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5hZG9wdE5vZGUobmV3Q2hp
bGQpOwogCkBAIC03NTQsMTYgKzc2MiwxNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFw
cGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogc3RhdGljIGJvb2wgYWZmZWN0c0VsZW1lbnRzKGNv
bnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgc3dpdGNoIChj
aGFuZ2UudHlwZSkgewotICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6RWxlbWVudEluc2VydGVkOgot
ICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6RWxlbWVudFJlbW92ZWQ6Ci0gICAgY2FzZSBDb250YWlu
ZXJOb2RlOjpBbGxDaGlsZHJlblJlbW92ZWQ6Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpBbGxD
aGlsZHJlblJlcGxhY2VkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5
cGU6OkVsZW1lbnRJbnNlcnRlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
OjpUeXBlOjpFbGVtZW50UmVtb3ZlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlbW92ZWQ6CisgICAgY2FzZSBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZDoKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgY2FzZSBDb250YWluZXJOb2RlOjpUZXh0SW5zZXJ0ZWQ6Ci0gICAgY2FzZSBDb250
YWluZXJOb2RlOjpUZXh0UmVtb3ZlZDoKLSAgICBjYXNlIENvbnRhaW5lck5vZGU6OlRleHRDaGFu
Z2VkOgotICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgot
ICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ6CisgICAgY2Fz
ZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkOgorICAgIGNh
c2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRSZW1vdmVkOgorICAgIGNh
c2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2VkOgorICAgIGNh
c2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJbnNl
cnRlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250
ZW50c0NoaWxkUmVtb3ZlZDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc4MCw3ICs3ODgsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIC8vIEZJWE1F
OiBVbmNsZWFyIHdoeSBpdCdzIGFsd2F5cyBzYWZlIHRvIHNraXAgdGhpcyB3aGVuIHBhcnNlciBp
cyBhZGRpbmcgY2hpbGRyZW4uCiAgICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgaXQncyBlcXVhbGx5
IHNhZmUgdG8gc2tpcCBmb3IgVGV4dEluc2VydGVkIGFuZCBUZXh0UmVtb3ZlZCBhcyBmb3IgVGV4
dENoYW5nZWQuCiAgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3dpdGNoIGZvciBjaGFuZ2UgdHlw
ZSBzbyB3ZSByZW1lbWJlciB0byB1cGRhdGUgd2hlbiBhZGRpbmcgbmV3IHR5cGVzLgotICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpBUEkgJiYgY2hhbmdlLnR5cGUg
IT0gVGV4dENoYW5nZWQpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6QVBJICYmIGNoYW5nZS50eXBlICE9IENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdl
ZCkKICAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hhbmdlZCgq
dGhpcyk7CiAKICAgICBpbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzSW5BbmNl
c3RvcnMoKTsKQEAgLTk3Miw3ICs5ODAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJO
b2RlOjpyZXBsYWNlQ2hpbGRyZW4oVmVjdG9yPE5vZGVPclN0cmluZz4mJiB2ZWN0b3IpCiAgICAg
Ly8gc3RlcCAzCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAgICAg
Q2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7Ci0gICAgcmVtb3ZlQWxsQ2hp
bGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlU291cmNlOjpBUEksIERlZmVyQ2hp
bGRyZW5DaGFuZ2VkOjpObyk7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKTsK
IAogICAgIGlmIChub2RlKSB7CiAgICAgICAgIGlmIChhdXRvIGFwcGVuZFJlc3VsdCA9IGFwcGVu
ZENoaWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2soKm5vZGUpOyBhcHBlbmRSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBhODNk
YWJmNzEwMThiNTc1YWQ1YmZiOGYyYTQ2ZmI0OTg1ZDRhMzAwLi43MjUyMDE0ODRkOTA0ZGEzZmVi
NjZhOTY0MmZlZTA1MGYwNDRkMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAg
LTczLDI3ICs3MywyOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250
YWluZXJOb2RlJiBjbG9uZSk7CiAKLSAgICBlbnVtIENoaWxkQ2hhbmdlVHlwZSB7IEVsZW1lbnRJ
bnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRD
aGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25D
b250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQgfTsKLSAgICBlbnVtIGNs
YXNzIENoaWxkQ2hhbmdlU291cmNlIHsgUGFyc2VyLCBBUEkgfTsKICAgICBzdHJ1Y3QgQ2hpbGRD
aGFuZ2UgewotICAgICAgICBDaGlsZENoYW5nZVR5cGUgdHlwZTsKKyAgICAgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7IEVsZW1lbnRJbnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJ
bnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5v
bkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxk
cmVuUmVwbGFjZWQgfTsKKyAgICAgICAgZW51bSBjbGFzcyBTb3VyY2UgOiBib29sIHsgUGFyc2Vy
LCBBUEkgfTsKKworICAgICAgICBDaGlsZENoYW5nZTo6VHlwZSB0eXBlOwogICAgICAgICBFbGVt
ZW50KiBwcmV2aW91c1NpYmxpbmdFbGVtZW50OwogICAgICAgICBFbGVtZW50KiBuZXh0U2libGlu
Z0VsZW1lbnQ7Ci0gICAgICAgIENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZTsKKyAgICAgICAgQ2hp
bGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2U7CiAKICAgICAgICAgYm9vbCBpc0luc2VydGlvbigpIGNv
bnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAg
Y2FzZSBFbGVtZW50SW5zZXJ0ZWQ6Ci0gICAgICAgICAgICBjYXNlIFRleHRJbnNlcnRlZDoKLSAg
ICAgICAgICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAgICAgICAgICAgY2Fz
ZSBBbGxDaGlsZHJlblJlcGxhY2VkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
VGV4dEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29u
dGVudHNDaGlsZEluc2VydGVkOgorICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
QWxsQ2hpbGRyZW5SZXBsYWNlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIGNhc2UgRWxlbWVudFJlbW92ZWQ6Ci0gICAgICAgICAgICBjYXNlIFRleHRSZW1vdmVk
OgotICAgICAgICAgICAgY2FzZSBUZXh0Q2hhbmdlZDoKLSAgICAgICAgICAgIGNhc2UgQWxsQ2hp
bGRyZW5SZW1vdmVkOgotICAgICAgICAgICAgY2FzZSBOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoK
KyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkOgorICAg
ICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ6CisgICAgICAgICAg
ICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZDoKKyAgICAgICAgICAgIGNhc2Ug
Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZDoKKyAgICAgICAgICAgIGNhc2Ug
Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMTQ1LDggKzE0Niw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dm9pZCBleGVjdXRlUHJlcGFyZWRDaGlsZHJlblJlbW92YWwoKTsKICAgICBlbnVtIGNsYXNzIERl
ZmVyQ2hpbGRyZW5DaGFuZ2VkIHsgWWVzLCBObyB9OwotICAgIE5vZGVWZWN0b3IgcmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlU291cmNlLCBEZWZlckNoaWxk
cmVuQ2hhbmdlZCA9IERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpObyk7Ci0gICAgYm9vbCByZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiwgQ2hpbGRDaGFuZ2VTb3VyY2UpOworICAgIE5v
ZGVWZWN0b3IgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdl
OjpTb3VyY2UsIERlZmVyQ2hpbGRyZW5DaGFuZ2VkID0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5v
KTsKKyAgICBib29sIHJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmLCBDaGlsZENo
YW5nZTo6U291cmNlKTsKIAogICAgIHZvaWQgcmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0No
aWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUmIG9sZENoaWxkKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBhcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkODhiMGI5ZDU0NmY2ZDU4MWVlYzVhZjA0NDJjNGRj
NzhhNGZhOGNhLi43MjI2MTJhNmIwMzM3NjY5YTBhNDI5Yzc5OWRiYWZlMGE5MGVkYjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNjIxLDMwICsyNjIxLDMwIEBAIHN0YXRpYyB2b2lkIGNo
ZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50JiBwYXJlbnQsIFNpYmxpbmdDaGVja1R5
cGUgY2hlY2tUCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Up
OwotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisg
ICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAg
ICAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKnRoaXMpOwogICAgIGVsc2UgewotICAgICAg
ICBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSA9IGNoYW5nZS50eXBlID09IEVsZW1lbnRSZW1v
dmVkID8gU2libGluZ0VsZW1lbnRSZW1vdmVkIDogT3RoZXI7CisgICAgICAgIGF1dG8gY2hlY2tU
eXBlID0gY2hhbmdlLnR5cGUgPT0gQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkID8g
U2libGluZ0VsZW1lbnRSZW1vdmVkIDogT3RoZXI7CiAgICAgICAgIGNoZWNrRm9yU2libGluZ1N0
eWxlQ2hhbmdlcygqdGhpcywgY2hlY2tUeXBlLCBjaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVu
dCwgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCk7CiAgICAgfQogCiAgICAgaWYgKFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QgPSB0aGlzLT5zaGFkb3dSb290KCkpIHsKICAgICAgICAgc3dpdGNoIChj
aGFuZ2UudHlwZSkgewotICAgICAgICBjYXNlIEVsZW1lbnRJbnNlcnRlZDoKLSAgICAgICAgY2Fz
ZSBFbGVtZW50UmVtb3ZlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVu
dEluc2VydGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3Zl
ZDoKICAgICAgICAgICAgIC8vIEZvciBlbGVtZW50cywgd2Ugbm90aWZ5IHNoYWRvd1Jvb3QgaW4g
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IgYW5kIEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5j
ZXN0b3IuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbGxDaGlsZHJlblJlbW92
ZWQ6Ci0gICAgICAgIGNhc2UgQWxsQ2hpbGRyZW5SZXBsYWNlZDoKKyAgICAgICAgY2FzZSBDaGls
ZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hh
bmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICAgICAgc2hhZG93Um9vdC0+
ZGlkUmVtb3ZlQWxsQ2hpbGRyZW5PZlNoYWRvd0hvc3QoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFRleHRJbnNlcnRlZDoKLSAgICAgICAgY2FzZSBUZXh0UmVtb3ZlZDoKLSAg
ICAgICAgY2FzZSBUZXh0Q2hhbmdlZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
VGV4dEluc2VydGVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3Zl
ZDoKKyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dENoYW5nZWQ6CiAgICAgICAg
ICAgICBzaGFkb3dSb290LT5kaWRDaGFuZ2VEZWZhdWx0U2xvdCgpOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAgICAgICBjYXNl
IE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBl
OjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6CisgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5
cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggYWJjYzNjODk2ZjRlZWRl
N2U0MDc4MWZjZmY1ZDk4NWIyNWIyMWQ5Mi4uN2FmMDc5YTNhYTY4Y2VlYmUzYmMxOTcyYzVlNjY5
YWYzMDVmMzUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTI4LDE3ICsxMjgs
MTcgQEAgdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoaWxkQ2hhbmdlKQogCiAgICAgLy8gRklYTUU6IEF2b2lkIGFsd2F5cyBpbnZhbGlkYXRpbmcg
c3R5bGUganVzdCBmb3IgZmlyc3QtY2hpbGQsIGV0Yy4uLiBhcyBkb25lIGluIEVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZC4KICAgICBzd2l0Y2ggKGNoaWxkQ2hhbmdlLnR5cGUpIHsKLSAgICBjYXNl
IEVsZW1lbnRJbnNlcnRlZDoKLSAgICBjYXNlIEVsZW1lbnRSZW1vdmVkOgorICAgIGNhc2UgQ2hp
bGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJbnNlcnRlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlOjpU
eXBlOjpFbGVtZW50UmVtb3ZlZDoKICAgICAgICAgbV9ob3N0LT5pbnZhbGlkYXRlU3R5bGVGb3JT
dWJ0cmVlSW50ZXJuYWwoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUZXh0SW5zZXJ0ZWQ6
Ci0gICAgY2FzZSBUZXh0UmVtb3ZlZDoKLSAgICBjYXNlIFRleHRDaGFuZ2VkOgotICAgIGNhc2Ug
QWxsQ2hpbGRyZW5SZW1vdmVkOgotICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZFJlbW92ZWQ6Ci0g
ICAgY2FzZSBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6Ci0gICAgY2FzZSBBbGxDaGlsZHJlblJl
cGxhY2VkOgorICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZDoKKyAgICBj
YXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3ZlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdl
OjpUeXBlOjpUZXh0Q2hhbmdlZDoKKyAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGls
ZHJlblJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGls
ZFJlbW92ZWQ6CisgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZElu
c2VydGVkOgorICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggMWE1OTJjZGM2ZTRlZDE4YWM0NjcwMTlkMmI3YjBjZTI3NjNkZGRlOS4uNjU4ZmI5MTg5
YWRlNTJiYjFiZmRiMDMxYjYwYmU3ZGMzZWE2MzNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpjYWxjdWxhdGVB
bmRBZGp1c3REaXJlY3Rpb25hbGl0eSgpCiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWUoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRl
ZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm9yZUNoYW5nZSwgQ2hpbGRDaGFuZ2VU
eXBlIGNoYW5nZVR5cGUpCit2b2lkIEhUTUxFbGVtZW50OjphZGp1c3REaXJlY3Rpb25hbGl0eUlm
TmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hhbmdlLCBDaGlsZENo
YW5nZTo6VHlwZSBjaGFuZ2VUeXBlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGxv
b2tzIHN1c3BpY2lvdXMuCiAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojph
ZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCog
YmVmbwogCiAgICAgUmVmUHRyPE5vZGU+IG9sZE1hcmtlZE5vZGU7CiAgICAgaWYgKGJlZm9yZUNo
YW5nZSkKLSAgICAgICAgb2xkTWFya2VkTm9kZSA9IGNoYW5nZVR5cGUgPT0gRWxlbWVudEluc2Vy
dGVkID8gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmJlZm9yZUNoYW5nZSkgOiBiZWZv
cmVDaGFuZ2UtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIG9sZE1hcmtlZE5vZGUgPSBjaGFuZ2VU
eXBlID09IENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50SW5zZXJ0ZWQgPyBFbGVtZW50VHJhdmVy
c2FsOjpuZXh0U2libGluZygqYmVmb3JlQ2hhbmdlKSA6IGJlZm9yZUNoYW5nZS0+bmV4dFNpYmxp
bmcoKTsKIAogICAgIHdoaWxlIChvbGRNYXJrZWROb2RlICYmIGVsZW1lbnRBZmZlY3RzRGlyZWN0
aW9uYWxpdHkoKm9sZE1hcmtlZE5vZGUpKQogICAgICAgICBvbGRNYXJrZWROb2RlID0gb2xkTWFy
a2VkTm9kZS0+bmV4dFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAy
NjcxNWZkMDQxYWFmOWYwMmVjYTNjM2NiNDE4YTJkOWQ3ZjRmNjA2Li43NmFjMDc0Njc5NGU3MWQw
NTA3ZTYxYTBhZGE4MDQzZmY3NmEyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBA
IC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVl
ZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudCogY2hpbGQpOwotICAgIHZvaWQg
YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQq
IGJlZm9yZUNoYW5nZSwgQ2hpbGRDaGFuZ2VUeXBlKTsKKyAgICB2b2lkIGFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChFbGVtZW50KiBiZWZvcmVDaGFuZ2Us
IENoaWxkQ2hhbmdlOjpUeXBlKTsKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5KE5v
ZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlPSAwKSBjb25zdDsKIAogICAgIHN0YXRp
YyB2b2lkIHBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJOYW1lTWFwJiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgdGFibGVbXSwgc2l6ZV90IHRhYmxlU2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IDM2MDY2NWI3Mjg4
MDE2OGIxZmQ1OTA1NjViZDI3NGM4YzlmYmFlMjguLjViNDQ2YzdmMzlmZTc4NTllZDdjZTY0M2Ri
NmQ5MTJmMzAwYTRjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQu
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2Ug
PT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlciB8fCBtX2lzU2V0VGV4dENvbnRlbnRJblByb2dy
ZXNzKSB7CisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFy
c2VyIHx8IG1faXNTZXRUZXh0Q29udGVudEluUHJvZ3Jlc3MpIHsKICAgICAgICAgbV9pc1NldFRl
eHRDb250ZW50SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzE2MTQzYjgwZjFj
OTYxMDZlM2VlY2JjNzc4NzIyNmU5NjBlYThhLi5iNGU3OTk1OGM1YjEzMDM1NWY3OTk5NGIxMTgz
YzUzZjkyY2VkNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cApAQCAtNzksNyArNzksNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENo
aWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IDU3NzVlOTgxNDAyMWIzNjVlMGYwM2M2ZWY3OTczNjZjMmE3NzhkMmUuLmNhYWM1NTc4MzIy
MDc0OTUwZTQ4YjU0NTkxY2I5OWY1ZjE3Njk4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIFN0eWxlZEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VT
b3VyY2U6OlBhcnNlcikKKyAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAxMDAyODk0
MDdlOTM3MWRkMjAxY2ZkMTNhOWI2ZjM5Y2ExZDUwNjQ0Li4zZDEzZDE2ZTEwN2ZlNDRjZjIwYjU3
OWE1ZjE3Njk1MmQ4NTg2YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVM
aWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBwYXJlbnQgPSBt
YWtlUmVmUHRyKHBhcmVudE5vZGUoKSk7CiAgICAgaWYgKCFwYXJlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5kZXggNzQzMmViYmYxMDhjMTBjNWM1MTIyYzgzZGY5
ZmQ0NjA3NTY3ZGYxNy4uMGE4MTY1YzgzYTNjZDg1YTkxYTk1ZDA0MDM0ZTI3YjIzNmI5OTRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQor
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggY2YzYWRlZDRkYzk3ZmVlNmQ2ODc0YTMyYmY3
MjkxZTZiZTUwZjU1My4uZjJhNmVlMDhkYjdhMGQyZGYzYmQ4Y2M1Mzc1ZDMxNzk4YjUxMjFlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2gKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIAot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291cmNlOjpQYXJzZXIpCisgICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAg
ICByZXR1cm47CiAgICAgaW52YWxpZGF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcAppbmRleCAzYjgwMDBlODFiN2JkYmFlNjMzNWI2NjE5NWYxNjE0NTEz
NTdiOTJhLi4zZGEwZjMzMDk3NTJhZmYzMjhjYjgwYmRjOGY0MzY5ZmNkYjAxMGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAK
LSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZVNvdXJjZTo6UGFyc2VyKQorICAg
IGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCA4MmZhOTE5NGZjNGQ0
NTAwYTg1NWNlMmEwYjAzOGQ3MGNjOGU2MTViLi4wYjQzYmI4NDJlNWUzNjJhYWVmODc5ZmQ2MDYz
YWE1NzZlYWUyMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBA
IC0xMTYsNyArMTE2LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlU291
cmNlOjpQYXJzZXIpCisgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXgg
ZjY4NjBhMTNjODNjOWNhZGVmY2ZmZDA1YTFjZWY4ZDZlNGY4NWQ0ZS4uMjZkZTMyODkzNzg4Zjkz
YjFlYjdiZGU2ZjAzZTJjZjJmM2IyNjAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENo
YW5nZVNvdXJjZTo6UGFyc2VyKQorICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCmluZGV4IGQ2YjM4ZDcwN2Y2YzRhNTQ0OGEyZmE2YmZmZGU3ODI3MDk4M2ZmNTkuLjFj
ZjYzNmUzOTFiMDYyZWViNjM4MDI3NTE4ZTAzZGU1Y2NmZDk3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1ZHUGF0
dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
ewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCi0gICAgaWYgKGNo
YW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcikKKyAgICBpZiAoY2hhbmdl
LnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>