<?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>49686</bug_id>
          
          <creation_ts>2010-11-17 14:01:31 -0800</creation_ts>
          <short_desc>Converge means of querying a parent node into one way, which is Node::parentNode.</short_desc>
          <delta_ts>2010-11-29 14:14:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50184</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>310511</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 14:01:31 -0800</bug_when>
    <thetext>Converge means of querying a parent node into one way, which is Node::parentNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310513</commentid>
    <comment_count>1</comment_count>
      <attachid>74153</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 14:04:38 -0800</bug_when>
    <thetext>Created attachment 74153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310529</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-17 14:25:04 -0800</bug_when>
    <thetext>Attachment 74153 did not build on qt:
Build output: http://queues.webkit.org/results/6159039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310532</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-17 14:27:22 -0800</bug_when>
    <thetext>Attachment 74153 did not build on chromium:
Build output: http://queues.webkit.org/results/6190026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310549</commentid>
    <comment_count>4</comment_count>
      <attachid>74153</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 14:52:58 -0800</bug_when>
    <thetext>Comment on attachment 74153
Patch

EWS says you missed some cases. I suggest landing most of the changes to call parentNode instead of parent first, and then land the patch that makes parent private separately along with the last few stragglers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310550</commentid>
    <comment_count>5</comment_count>
      <attachid>74153</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 14:53:17 -0800</bug_when>
    <thetext>Comment on attachment 74153
Patch

r=me as long as you don’t break the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310552</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 14:54:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 74153 [details])
&gt; EWS says you missed some cases. I suggest landing most of the changes to call parentNode instead of parent first, and then land the patch that makes parent private separately along with the last few stragglers.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310585</commentid>
    <comment_count>7</comment_count>
      <attachid>74171</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 16:01:38 -0800</bug_when>
    <thetext>Created attachment 74171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310597</commentid>
    <comment_count>8</comment_count>
      <attachid>74171</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 16:23:22 -0800</bug_when>
    <thetext>Comment on attachment 74171
Patch

parent to parentNode conversion landed  as http://trac.webkit.org/changeset/72259.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310610</commentid>
    <comment_count>9</comment_count>
      <attachid>74178</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 16:45:34 -0800</bug_when>
    <thetext>Created attachment 74178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310612</commentid>
    <comment_count>10</comment_count>
      <attachid>74178</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-17 16:47:34 -0800</bug_when>
    <thetext>Comment on attachment 74178
Patch

Letting the EWS bots cook it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310634</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-17 17:17:40 -0800</bug_when>
    <thetext>They can cook r+ patches now too.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310636</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-17 17:21:32 -0800</bug_when>
    <thetext>Attachment 74178 did not build on qt:
Build output: http://queues.webkit.org/results/6193031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310706</commentid>
    <comment_count>13</comment_count>
      <attachid>74178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 22:21:56 -0800</bug_when>
    <thetext>Comment on attachment 74178
Patch

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

review- because EWS says XSLTProcessorQt.cpp still has some calls to parent in it and ...

&gt; WebCore/dom/Node.h:658
&gt; +    ContainerNode* parent() const { return TreeShared&lt;ContainerNode&gt;::parent(); }

A cleaner way of doing this is with a using declaration:

    using TreeShared&lt;ContainerNode&gt;::parent;

That way you don’t introduce a new inline function, just change the visibility of the existing function.

I think this also deserves a comment. It’s not clear why the function is private without a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314553</commentid>
    <comment_count>14</comment_count>
      <attachid>75050</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 12:04:31 -0800</bug_when>
    <thetext>Created attachment 75050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314563</commentid>
    <comment_count>15</comment_count>
      <attachid>75050</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-29 12:37:37 -0800</bug_when>
    <thetext>Comment on attachment 75050
Patch

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

&gt; WebCore/dom/Node.h:659
&gt;      Element* ancestorElement() const;
&gt; +    // Use Node::parentNode as the consistent way of querying a parent node.
&gt; +    using TreeShared&lt;ContainerNode&gt;::parent;

I suggest paragraphing this comment and function separately rather than grouping with ancestorElement.

This comment is slightly confusing. What it implies but does not say is that we make the inherited parent function private to make sure we get a compile error if we forget to follow that rule outside Node member functions. Many readers might not be able to figure that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314594</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 13:25:42 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 75050 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75050&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Node.h:659
&gt; &gt;      Element* ancestorElement() const;
&gt; &gt; +    // Use Node::parentNode as the consistent way of querying a parent node.
&gt; &gt; +    using TreeShared&lt;ContainerNode&gt;::parent;
&gt; 
&gt; I suggest paragraphing this comment and function separately rather than grouping with ancestorElement.
&gt; 
&gt; This comment is slightly confusing. What it implies but does not say is that we make the inherited parent function private to make sure we get a compile error if we forget to follow that rule outside Node member functions. Many readers might not be able to figure that out.

Thanks! Landing with an improved, paragraphed comment/decl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314595</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-29 13:27:55 -0800</bug_when>
    <thetext>Committed r72825: &lt;http://trac.webkit.org/changeset/72825&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74153</attachid>
            <date>2010-11-17 14:04:38 -0800</date>
            <delta_ts>2010-11-17 16:01:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49686-20101117140437.patch</filename>
            <type>text/plain</type>
            <size>55432</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmM1MjI1MTdlNGE1NGFjOWNlNDkwNjNlOGYzOTQyMmFjMmYwMmVkYy4uMzRlOTE2YWQ0Y2M5NDNl
M2E0M2M4MTY3NjNlYTk1OGJhZjQzM2JhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjMgQEAKKzIwMTAtMTEtMTcgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJnZSBtZWFucyBvZiBxdWVyeWlu
ZyBhIHBhcmVudCBub2RlIGludG8gb25lIHdheSwgd2hpY2ggaXMgTm9kZTo6cGFyZW50Tm9kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Njg2CisK
KyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVuZGVyTGlzdEl0ZW1Db250YWluZXJGb3JOb2RlKTogQ2hhbmdlZCB0byB1c2UgcGFy
ZW50Tm9kZS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bW91
c2VCdXR0b25MaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2libGluZ1dpdGhB
cmlhUm9sZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Z2V0RG9jdW1lbnRMaW5rcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdCk6IERpdHRv
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tOiBEaXR0by4KKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
Omluc2VydEJlZm9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlQ29tbW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZXBsYWNlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlbW92ZUNoaWxkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjphcHBlbmRDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VyQWRkQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VHlwZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTW91
c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6
OnJlY2VpdmVkVGFyZ2V0KTogRGl0dG8uCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnBhcmVudCk6IFR1cm5lZCBpbnRvIGEgcHJpdmF0ZSBtZXRob2QgdG8g
cHJldmVudCB1c2UgaW5zdGVhZCBvZiBwYXJlbnROb2RlLgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUpOiBDaGFuZ2Vk
IHRvIHVzZSBwYXJlbnROb2RlLgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlKTogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBlbmROb2RlQ29tbWFuZDo6QXBwZW5kTm9kZUNvbW1hbmQpOiBEaXR0by4KKyAgICAg
ICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmR1
bW15U3BhbkFuY2VzdG9yRm9yTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xv
c2luZ0Jsb2NrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpoaWdoZXN0RW1iZWRkaW5nQW5j
ZXN0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxp
dFRleHRFbGVtZW50QXRFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVudGljYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0SWZJZGVudGlj
YWwpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRyZWVUb05vZGUp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbCk6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAgICAqIGVk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFbXB0eVRhYmxlQ2Vs
bCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmV2
aW91c0xpbmVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bmV4dExpbmVQb3Np
dGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6c2V0T3V0ZXJIVE1MKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
aW5zZXJ0QWRqYWNlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpz
dXBwb3J0c0ZvY3VzKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1iZWRFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6Omluc2VydFJvdyk6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW5IZWFkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc0luQm9k
eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNJbkZvb3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcik6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRSYW5nZSk6IERpdHRvLgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50Ojpy
ZXBsYWNlTWVkaWFFbGVtZW50VGltZXJGaXJlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVyU2l0ZSk6IERpdHRvLgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9k
ZUluRGlyZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1l
bnQ6OmF0dGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRWxlbWVu
dDo6dXBkYXRlU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElu
cHV0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjphdHRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6dXBkYXRlU3R5bGUpOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0dyYWRpZW50U3RvcDo6Z3JhZGllbnRFbGVtZW50KTogRGl0dG8uCisgICAg
ICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVM
aWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpkZXRlcm1pbmVWaWV3cG9ydCk6IERp
dHRvLgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0eWxlZEVsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKTog
RGl0dG8uCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVXNlRWxlbWVudDo6cmVtb3ZlRGlzYWxsb3dlZEVsZW1lbnRzRnJvbVN1YnRyZWUpOiBE
aXR0by4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IERpdHRv
LgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBh
dGg6Ok5vZGVTZXQ6OnNvcnQpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBhdGhTdGVwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpub2Rlc0luQXhpcyk6IERpdHRvLgorICAg
ICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4
c2x0U3R5bGVzaGVldFBvaW50ZXIpOiBEaXR0by4KKwogMjAxMC0xMS0xNyAgQ3JpcyBOZWNrYXIg
IDxjZG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggM2Rk
Y2RjNTA1MjZmOWZjOTExODI2ZjlhNDBiM2FlYzkyNWYwYzlhNi4uY2FmMTJkYzY4NWI3ZDVjYTEy
NGQxNDA4Y2FiOWIyNGEyMDQwMTdmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBib29sIHJlcGxh
Y2VkTm9kZU5lZWRzQ2hhcmFjdGVyKE5vZGUqIHJlcGxhY2VkTm9kZSkKIC8vIEZpbmRzIGEgUmVu
ZGVyTGlzdEl0ZW0gcGFyZW50IGdpdmUgYSBub2RlLgogc3RhdGljIFJlbmRlckxpc3RJdGVtKiBy
ZW5kZXJMaXN0SXRlbUNvbnRhaW5lckZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBmb3IgKDsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyQm94TW9kZWxPYmplY3QoKTsKICAgICAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJM
aXN0SXRlbShyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZWY0MjI3MmMxOGViOGM5ODU3Y2YxYzAxMmE1
NTE1NzA4YTE2NDk4Zi4uMTQxZDcyNTk0OTU4MjliMDBlZWI1YTA2NzhhYmIwNDc4YTdhM2I3NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtODYzLDcgKzg2Myw3IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6Om1vdXNlQnV0dG9uTGlzdGVuZXIoKSBjb25zdAogICAgIAogICAgIC8vIGNoZWNrIGlm
IG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVuZXIKICAgICB3aGlsZSAobm9kZSAm
JiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50KCk7
CisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZGVjcmVtZW50KCkKIAogc3RhdGljIEVsZW1lbnQqIHNpYmxpbmdXaXRoQXJp
YVJvbGUoU3RyaW5nIHJvbGUsIE5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZSogc2libGluZyA9IG5v
ZGUtPnBhcmVudCgpLT5maXJzdENoaWxkKCk7CisgICAgTm9kZSogc2libGluZyA9IG5vZGUtPnBh
cmVudE5vZGUoKS0+Zmlyc3RDaGlsZCgpOwogICAgIHdoaWxlIChzaWJsaW5nKSB7CiAgICAgICAg
IGlmIChzaWJsaW5nLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2libGluZ0FyaWFSb2xlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNpYmxpbmcp
LT5nZXRBdHRyaWJ1dGUocm9sZUF0dHIpOwpAQCAtMjMzMiw3ICsyMzMyLDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgcmUKICAgICAgICAgICAgIGlmICghYXhvYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSAmJiBheG9iai0+aXNMaW5rKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChheG9iaik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBwYXJlbnQgPSBj
dXJyLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIE5vZGUqIHBhcmVudCA9IGN1cnItPnBhcmVudE5v
ZGUoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgY3Vyci0+aGFzVGFnTmFtZShhcmVhVGFn
KSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUobWFwVGFnKSkgewogICAgICAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsqIGFyZWFPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rKj4oYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShJbWFnZU1hcExp
bmtSb2xlKSk7CiAgICAgICAgICAgICAgICAgYXJlYU9iamVjdC0+c2V0SFRNTEFyZWFFbGVtZW50
KHN0YXRpY19jYXN0PEhUTUxBcmVhRWxlbWVudCo+KGN1cnIpKTsKQEAgLTI3MDAsNyArMjcwMCw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNCiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1
cm4gMDsKICAgICAKLSAgICBIVE1MTWFwRWxlbWVudCogbWFwID0gc3RhdGljX2Nhc3Q8SFRNTE1h
cEVsZW1lbnQqPihhcmVhLT5wYXJlbnQoKSk7CisgICAgSFRNTE1hcEVsZW1lbnQqIG1hcCA9IHN0
YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4oYXJlYS0+cGFyZW50Tm9kZSgpKTsKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAo
bWFwKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpp
bmRleCA3YTEzZjExYmMyNjQ5MDY5Nzg3NDhlZDc0NzM4M2Y2OGY2ZGU2OWI3Li45NzYwMzgyZGMz
ODVhYjQ0NGM1YzNjYThkYjg4MTk0NGZkZGQ4Njg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KQEAgLTQwNyw3
ICs0MDcsNyBAQCBzdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZlbChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICBm
b3IgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50KCkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2RlOyBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1l
KGJsb2NrcXVvdGVUYWcpKQogICAgICAgICAgICAgcmVzdWx0ICs9IDE7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAppbmRleCAyMTIwZTM4ODJmMGRhZDNlMDA4ODU5MDg4YWU4YTc5YmY4MTZmMDc4
Li5lMTU4ODI4OWRiYTM2OTY1MWVjODQ1YzU4ZmE3NjA1NDRjYTMwMjRjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiB7CiAg
ICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYg
aXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRh
dGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50KCkpOworICAgIEFT
U0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSk7CiAKICAgICBlYyA9IDA7CiAKQEAgLTE2
NSw3ICsxNjUsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICBub3RpZnlDaGls
ZEluc2VydGVkKGNoaWxkKTsKIAogICAgICAgICAvLyBBZGQgY2hpbGQgdG8gdGhlIHJlbmRlcmlu
ZyB0cmVlLgotICAgICAgICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkgJiYg
Y2hpbGQtPnBhcmVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNo
aWxkLT5hdHRhY2hlZCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcykgewogICAgICAg
ICAgICAgaWYgKHNob3VsZExhenlBdHRhY2gpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlB
dHRhY2goKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIENvbnRh
aW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZQogdm9pZCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24oTm9k
ZSogbmV4dENoaWxkLCBOb2RlKiBuZXdDaGlsZCkKIHsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwot
ICAgIEFTU0VSVCghbmV3Q2hpbGQtPnBhcmVudCgpKTsgLy8gVXNlIGluc2VydEJlZm9yZSBpZiB5
b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERPTSBtdXRhdGlvbiBldmVu
dHMpLgorICAgIEFTU0VSVCghbmV3Q2hpbGQtPnBhcmVudE5vZGUoKSk7IC8vIFVzZSBpbnNlcnRC
ZWZvcmUgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0
YXRpb24gZXZlbnRzKS4KICAgICBBU1NFUlQoIW5ld0NoaWxkLT5uZXh0U2libGluZygpKTsKICAg
ICBBU1NFUlQoIW5ld0NoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7CiAKQEAgLTI0MCw3ICsyNDAs
NyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogewogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBu
b2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRl
ZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgotICAgIEFTU0VS
VChyZWZDb3VudCgpIHx8IHBhcmVudCgpKTsKKyAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBwYXJl
bnROb2RlKCkpOwogCiAgICAgZWMgPSAwOwogCkBAIC0zMzQsNyArMzM0LDcgQEAgYm9vbCBDb250
YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSog
b2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChjaGlsZC5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIEFkZCBjaGlsZCB0byB0aGUgcmVuZGVyaW5n
IHRyZWUKLSAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpICYmIGNo
aWxkLT5wYXJlbnQoKSA9PSB0aGlzKSB7CisgICAgICAgIGlmIChhdHRhY2hlZCgpICYmICFjaGls
ZC0+YXR0YWNoZWQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IHRoaXMpIHsKICAgICAgICAg
ICAgIGlmIChzaG91bGRMYXp5QXR0YWNoKQogICAgICAgICAgICAgICAgIGNoaWxkLT5sYXp5QXR0
YWNoKCk7CiAgICAgICAgICAgICBlbHNlCkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBDb250YWlu
ZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8g
SWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBt
dXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50KCkpOworICAg
IEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSk7CiAKICAgICBlYyA9IDA7CiAKQEAg
LTU1MCw3ICs1NTAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogewogICAgIC8vIENoZWNr
IHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBj
YW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRz
LgotICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudCgpKTsKKyAgICBBU1NFUlQocmVmQ291
bnQoKSB8fCBwYXJlbnROb2RlKCkpOwogCiAgICAgZWMgPSAwOwogCkBAIC02MDQsNyArNjA0LDcg
QEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0No
aWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAgICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChj
aGlsZCk7CiAKICAgICAgICAgLy8gQWRkIGNoaWxkIHRvIHRoZSByZW5kZXJpbmcgdHJlZQotICAg
ICAgICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkgJiYgY2hpbGQtPnBhcmVu
dCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hl
ZCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcykgewogICAgICAgICAgICAgaWYgKHNo
b3VsZExhenlBdHRhY2gpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsKICAg
ICAgICAgICAgIGVsc2UKQEAgLTYyNCw3ICs2MjQsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OmFw
cGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBi
bwogdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkKQogewogICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKCFuZXdDaGlsZC0+
cGFyZW50KCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFy
ZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KKyAgICBBU1NFUlQoIW5ld0No
aWxkLT5wYXJlbnROb2RlKCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFu
ZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0
RE9NTm9kZShkb2N1bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cAppbmRleCA5MDEyYjY4ODliOWFiNWU3MjQxY2MxZTM4ZDg0YTNjMzhkOTUyY2EzLi5lZDRiOTZj
Nzc0YzcwM2Y4YjdkNTIzY2Y1ZDVmYWU1YzEyNmUzZGZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAKQEAg
LTU5LDkgKzU5LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudFR5cGU6OmNsb25lTm9kZShi
b29sIC8qZGVlcCovKQogdm9pZCBEb2N1bWVudFR5cGU6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
IHsKICAgICAvLyBPdXIgZG9jdW1lbnQgbm9kZSBjYW4gYmUgbnVsbCBpZiB3ZSB3ZXJlIGNyZWF0
ZWQgYnkgYSBET01JbXBsZW1lbnRhdGlvbi4gIFdlIHVzZSB0aGUgcGFyZW50KCkgaW5zdGVhZC4K
LSAgICBBU1NFUlQocGFyZW50KCkgJiYgcGFyZW50KCktPmlzRG9jdW1lbnROb2RlKCkpOwotICAg
IGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBE
b2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnQoKSk7CisgICAgQVNT
RVJUKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2RlKCkpOworICAg
IGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKSB7Cisg
ICAgICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBhcmVudE5vZGUo
KSk7CiAgICAgICAgIGlmICghZG9jLT5kb2N0eXBlKCkpCiAgICAgICAgICAgICBkb2MtPnNldERv
Y1R5cGUodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBmNjM1MzAwNzM0ZTNlYWMyYmFjNDViNjQ2
YzdjYzM3OTY1MzIzYTU1Li4yMTM3ZjhkM2IxNTIyMTczZDE1NWQ2YWViZTc0ZWUxZmIxNjBkMjFj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMTUwNyw3ICsxNTA3LDcgQEAgQXRvbWljU3RyaW5nIEVsZW1lbnQ6OmNv
bXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IERvY3VtZW50Kj4obiktPmNvbnRlbnRMYW5ndWFnZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgp
OwogICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApp
bmRleCA2MWMzNWU4NTRmMDU4ZmZhMzE3ZGM1ZDE4ODRhNzVmNzgwOTNiNmEyLi4wNzI2NTZlYjQz
MWQzM2ZkZDUyNGI1NDg2YzQwNGM3M2Y3OWJjZTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
Y3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRU
YXJnZXQoKQogICAgIC8vIHdlIHNob3VsZCB0ZXN0IGFuZCBmaXggdGhpcy4KICAgICBOb2RlKiBu
ID0gdGFyZzsKICAgICB3aGlsZSAobiAmJiAhbi0+cmVuZGVyZXIoKSkKLSAgICAgICAgbiA9IG4t
PnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIGlmIChuKSB7CiAg
ICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVy
KCk7CiAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNjc1ZGUwNGQxOWFh
YjFjNTUwYTgzNGI3OTEzOWJlMDhmZjY0OTQwNS4uZWQ5M2Y1ZDEzOTIyNTVmNTYzMzI1ZDExZDFm
MGYwZDIyY2EyYmY1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtNjU1LDYgKzY1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBS
ZW5kZXJTdHlsZSogdmlydHVhbENvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7CiAK
ICAgICBFbGVtZW50KiBhbmNlc3RvckVsZW1lbnQoKSBjb25zdDsKKyAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpwYXJl
bnQoKTsgfQogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXgg
OGMwMzIyNDA1MGFjYzYwMzk4MWIyNTkzY2FiZWYyODllZWJlYjE2MS4uZDU2NjEzZTc3YjlkMjE3
ZjM2MmY0MjMxZjQ3OWM1ODYxNWVlNjE1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNzUxLDEzICs3NTEsMTMg
QEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0
ID09IDAgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUoKS0+cGFyZW50KCkpOworICAgICAg
ICByZXR1cm4gIW1fb2Zmc2V0ICYmICFub2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlKCktPnBhcmVu
dE5vZGUoKSk7CiAKICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4g
IW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUoKSkgJiYgaW5SZW5kZXJlZFRleHQoKTsKIAogICAg
IGlmIChpc1RhYmxlRWxlbWVudChub2RlKCkpIHx8IGVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
KCkpKQotICAgICAgICByZXR1cm4gKGF0Rmlyc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkgfHwg
YXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpKSAmJiAhbm9kZUlzVXNlclNlbGVjdE5vbmUo
bm9kZSgpLT5wYXJlbnQoKSk7CisgICAgICAgIHJldHVybiAoYXRGaXJzdEVkaXRpbmdQb3NpdGlv
bkZvck5vZGUoKSB8fCBhdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkpICYmICFub2RlSXNV
c2VyU2VsZWN0Tm9uZShub2RlKCktPnBhcmVudE5vZGUoKSk7CiAKICAgICBpZiAobV9hbmNob3JO
b2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uSXRlcmF0b3IuY3BwCmluZGV4IGQyYzNhM2YwY2Y0ZTBmMDNiNDBkYjU0NmQ5OWFmMTEwMmNk
NTE0NzYuLjc2N2U3MDU5YzlkMDgxMTg1NzRlNjRjZTBmOTZlNDdjMzU4NGM0M2QgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBib29sIFBvc2l0aW9uSXRl
cmF0b3I6OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKHJlbmRlcmVyLT5pc0JSKCkpCi0gICAgICAgIHJldHVybiAhbV9vZmZzZXRJbkFuY2hvciAm
JiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25lKG1fYW5jaG9yTm9kZS0+cGFyZW50KCkp
OworICAgICAgICByZXR1cm4gIW1fb2Zmc2V0SW5BbmNob3IgJiYgIVBvc2l0aW9uOjpub2RlSXNV
c2VyU2VsZWN0Tm9uZShtX2FuY2hvck5vZGUtPnBhcmVudE5vZGUoKSk7CiAKICAgICBpZiAocmVu
ZGVyZXItPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gIVBvc2l0aW9uOjpub2RlSXNVc2VyU2Vs
ZWN0Tm9uZShtX2FuY2hvck5vZGUpICYmIFBvc2l0aW9uKCp0aGlzKS5pblJlbmRlcmVkVGV4dCgp
OwogCiAgICAgaWYgKGlzVGFibGVFbGVtZW50KG1fYW5jaG9yTm9kZSkgfHwgZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG1fYW5jaG9yTm9kZSkpCi0gICAgICAgIHJldHVybiAoYXRTdGFydE9mTm9kZSgp
IHx8IGF0RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUobV9h
bmNob3JOb2RlLT5wYXJlbnQoKSk7CisgICAgICAgIHJldHVybiAoYXRTdGFydE9mTm9kZSgpIHx8
IGF0RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUobV9hbmNo
b3JOb2RlLT5wYXJlbnROb2RlKCkpOwogCiAgICAgaWYgKCFtX2FuY2hvck5vZGUtPmhhc1RhZ05h
bWUoaHRtbFRhZykgJiYgcmVuZGVyZXItPmlzQmxvY2tGbG93KCkpIHsKICAgICAgICAgaWYgKHRv
UmVuZGVyQmxvY2socmVuZGVyZXIpLT5oZWlnaHQoKSB8fCBtX2FuY2hvck5vZGUtPmhhc1RhZ05h
bWUoYm9keVRhZykpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29t
bWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3BwCmluZGV4IGVl
ZWNkZDJjYmNiY2FkODM0ZmVjNmVmYTQxODkzZTllZmQ5OWJmMzQuLjU4ZjdmYTYyMGJhOTE3NmIx
NjdjOGMwNTgwMGMxOTc3NzRmMDI1YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9BcHBl
bmROb2RlQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5k
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBBcHBlbmROb2RlQ29tbWFuZDo6QXBwZW5kTm9kZUNvbW1h
bmQoUGFzc1JlZlB0cjxFbGVtZW50PiBwYXJlbnQsIFBhc3NSZWZQdHI8Tm9kZQogewogICAgIEFT
U0VSVChtX3BhcmVudCk7CiAgICAgQVNTRVJUKG1fbm9kZSk7Ci0gICAgQVNTRVJUKCFtX25vZGUt
PnBhcmVudCgpKTsKKyAgICBBU1NFUlQoIW1fbm9kZS0+cGFyZW50Tm9kZSgpKTsKIAogICAgIEFT
U0VSVChtX3BhcmVudC0+aXNDb250ZW50RWRpdGFibGUoKSB8fCAhbV9wYXJlbnQtPmF0dGFjaGVk
KCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggNGUxYzczMzU2
NjE1NjRmZmQxNzJmMDhjY2MxNzY3OTg0MmQyMDlmYi4uYzRhYWFjOGZlMWQ1MTE2ZjNmN2U1MTRh
YjBiMjUwMzhlYzY5YmJlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBA
IC03NDQsOSArNzQ0LDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZv
bnRTdHlsZUNoYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbgogc3RhdGljIE5vZGUqIGR1
bW15U3BhbkFuY2VzdG9yRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAgIHdoaWxlIChu
b2RlICYmICFpc1N0eWxlU3Bhbihub2RlKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgp
OworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIAotICAgIHJldHVybiBu
b2RlID8gbm9kZS0+cGFyZW50KCkgOiAwOworICAgIHJldHVybiBub2RlID8gbm9kZS0+cGFyZW50
Tm9kZSgpIDogMDsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6Y2xlYW51cFVuc3R5bGVk
QXBwbGVTdHlsZVNwYW5zKE5vZGUqIGR1bW15U3BhbkFuY2VzdG9yKQpAQCAtNzc4LDcgKzc3OCw3
IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmNlc3RvcnNXaXRoVW5p
Y29kZUJpZGkoTm9kZSogbm9kZSwgYm9vbCBiCiAgICAgTm9kZSogaGlnaGVzdEFuY2VzdG9yV2l0
aFVuaWNvZGVCaWRpID0gMDsKICAgICBOb2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNv
ZGVCaWRpID0gMDsKICAgICBpbnQgaGlnaGVzdEFuY2VzdG9yVW5pY29kZUJpZGkgPSAwOwotICAg
IGZvciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudCgpOyBuICE9IGJsb2NrOyBuID0gbi0+cGFyZW50
KCkpIHsKKyAgICBmb3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4gIT0gYmxvY2s7
IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaW50IHVuaWNvZGVCaWRpID0gZ2V0SWRl
bnRpZmllclZhbHVlKGNvbXB1dGVkU3R5bGUobikuZ2V0KCksIENTU1Byb3BlcnR5VW5pY29kZUJp
ZGkpOwogICAgICAgICBpZiAodW5pY29kZUJpZGkgJiYgdW5pY29kZUJpZGkgIT0gQ1NTVmFsdWVO
b3JtYWwpIHsKICAgICAgICAgICAgIGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRpID0gdW5pY29k
ZUJpZGk7CkBAIC04MDUsMTIgKzgwNSwxMiBAQCBIVE1MRWxlbWVudCogQXBwbHlTdHlsZUNvbW1h
bmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKE5vZGUqIG5vZGUsIGJvb2wgYgogICAg
IC8vIFNwbGl0IGV2ZXJ5IGFuY2VzdG9yIHRocm91Z2ggaGlnaGVzdCBhbmNlc3RvciB3aXRoIGVt
YmVkZGluZy4KICAgICBOb2RlKiBuID0gbm9kZTsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBFbGVtZW50KiBwYXJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obi0+cGFyZW50KCkpOwor
ICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obi0+cGFyZW50
Tm9kZSgpKTsKICAgICAgICAgaWYgKGJlZm9yZSA/IG4tPnByZXZpb3VzU2libGluZygpIDogbi0+
bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIHNwbGl0RWxlbWVudChwYXJlbnQsIGJlZm9yZSA/
IG4gOiBuLT5uZXh0U2libGluZygpKTsKICAgICAgICAgaWYgKHBhcmVudCA9PSBoaWdoZXN0QW5j
ZXN0b3JXaXRoVW5pY29kZUJpZGkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbiA9IG4t
PnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIH0KICAgICByZXR1
cm4gdW5zcGxpdEFuY2VzdG9yOwogfQpAQCAtODIyLDggKzgyMiw4IEBAIHZvaWQgQXBwbHlTdHls
ZUNvbW1hbmQ6OnJlbW92ZUVtYmVkZGluZ1VwVG9FbmNsb3NpbmdCbG9jayhOb2RlKiBub2RlLCBO
b2RlKiB1bnNwCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIHBhcmVudCA9IDA7Ci0gICAg
Zm9yIChOb2RlKiBuID0gbm9kZS0+cGFyZW50KCk7IG4gIT0gYmxvY2sgJiYgbiAhPSB1bnNwbGl0
QW5jZXN0b3I7IG4gPSBwYXJlbnQpIHsKLSAgICAgICAgcGFyZW50ID0gbi0+cGFyZW50KCk7Cisg
ICAgZm9yIChOb2RlKiBuID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBuICE9IGJsb2NrICYmIG4gIT0g
dW5zcGxpdEFuY2VzdG9yOyBuID0gcGFyZW50KSB7CisgICAgICAgIHBhcmVudCA9IG4tPnBhcmVu
dE5vZGUoKTsKICAgICAgICAgaWYgKCFuLT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCkBAIC04NTQsNyArODU0LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKE5vZGUqIG5vZGUsIE5vZGUqIHVuc3AK
IAogc3RhdGljIE5vZGUqIGhpZ2hlc3RFbWJlZGRpbmdBbmNlc3RvcihOb2RlKiBzdGFydE5vZGUs
IE5vZGUqIGVuY2xvc2luZ05vZGUpCiB7Ci0gICAgZm9yIChOb2RlKiBuID0gc3RhcnROb2RlOyBu
ICYmIG4gIT0gZW5jbG9zaW5nTm9kZTsgbiA9IG4tPnBhcmVudCgpKSB7CisgICAgZm9yIChOb2Rl
KiBuID0gc3RhcnROb2RlOyBuICYmIG4gIT0gZW5jbG9zaW5nTm9kZTsgbiA9IG4tPnBhcmVudE5v
ZGUoKSkgewogICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIGdldElkZW50aWZpZXJW
YWx1ZShjb21wdXRlZFN0eWxlKG4pLmdldCgpLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKSA9PSBD
U1NWYWx1ZUVtYmVkKQogICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgfQpAQCAtMTYyMCwxMSAr
MTYyMCwxMSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50QXRFbmQo
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdAogICAgIFRleHQqIHRleHQgPSBzdGF0
aWNfY2FzdDxUZXh0Kj4oZW5kLm5vZGUoKSk7CiAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdF
bGVtZW50KHRleHQsIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAotICAgIE5vZGUq
IHByZXZOb2RlID0gdGV4dC0+cGFyZW50KCktPnByZXZpb3VzU2libGluZygpLT5sYXN0Q2hpbGQo
KTsKKyAgICBOb2RlKiBwcmV2Tm9kZSA9IHRleHQtPnBhcmVudE5vZGUoKS0+cHJldmlvdXNTaWJs
aW5nKCktPmxhc3RDaGlsZCgpOwogICAgIEFTU0VSVChwcmV2Tm9kZSk7CiAgICAgTm9kZSogc3Rh
cnROb2RlID0gc3RhcnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBwcmV2Tm9kZSA6IHN0YXJ0Lm5v
ZGUoKTsKICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlv
bihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihw
cmV2Tm9kZS0+cGFyZW50KCksIHByZXZOb2RlLT5ub2RlSW5kZXgoKSArIDEpKTsKKyAgICB1cGRh
dGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkpLCBQb3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50Tm9kZSgpLCBwcmV2Tm9kZS0+bm9kZUlu
ZGV4KCkgKyAxKSk7CiB9CiAKIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFNwbGl0VGV4
dEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0
eWxlKQpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VT
dGFydFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uICZzdGFydCwKICAgICAg
ICAgaWYgKHN0YXJ0Lm5vZGUoKS0+cHJldmlvdXNTaWJsaW5nKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgc3RhcnROb2RlID0gc3RhcnQubm9kZSgpLT5wYXJlbnQoKTsK
KyAgICAgICAgc3RhcnROb2RlID0gc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCk7CiAgICAgICAg
IHN0YXJ0T2Zmc2V0ID0gMDsKICAgICB9CiAKQEAgLTE3MzAsMTEgKzE3MzAsMTEgQEAgYm9vbCBB
cHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0
aW9uICZzdGFydCwgY29uc3QKICAgICAgICAgaWYgKGVuZE9mZnNldCA8IGNhcmV0TWF4T2Zmc2V0
KGVuZE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHVuc2lnbmVk
IHBhcmVudExhc3RPZmZzZXQgPSBlbmQubm9kZSgpLT5wYXJlbnQoKS0+Y2hpbGROb2RlcygpLT5s
ZW5ndGgoKSAtIDE7CisgICAgICAgIHVuc2lnbmVkIHBhcmVudExhc3RPZmZzZXQgPSBlbmQubm9k
ZSgpLT5wYXJlbnROb2RlKCktPmNoaWxkTm9kZXMoKS0+bGVuZ3RoKCkgLSAxOwogICAgICAgICBp
ZiAoZW5kLm5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBlbmROb2RlID0gZW5kLm5vZGUoKS0+cGFyZW50KCk7CisgICAgICAgIGVuZE5v
ZGUgPSBlbmQubm9kZSgpLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGVuZE9mZnNldCA9IHBhcmVu
dExhc3RPZmZzZXQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAppbmRleCA1NTc5YjI1MGM3ZTg5Y2E4NmY2YjU5OTYyMDU3ZTQ2OGQ3NjI5MjQ3Li4wNmNm
ZDJiMWQ1NmNjNzVhMjQ0Mzk3YjRkN2Q0OTZkODc5NzZkZmFkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTExODUsMTcgKzExODUsMTcgQEAgUGFzc1JlZlB0
cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRUcmVlVG9Ob2RlKE5vZGUqIHN0YXJ0
LCBOb2RlKiBlbmQsIGIKICAgICBBU1NFUlQoc3RhcnQgIT0gZW5kKTsKIAogICAgIFJlZlB0cjxO
b2RlPiBub2RlOwotICAgIGZvciAobm9kZSA9IHN0YXJ0OyBub2RlICYmIG5vZGUtPnBhcmVudCgp
ICE9IGVuZDsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmICghbm9kZS0+cGFy
ZW50KCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICBmb3IgKG5vZGUgPSBzdGFydDsgbm9kZSAmJiBu
b2RlLT5wYXJlbnROb2RlKCkgIT0gZW5kOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Cisg
ICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnQoUG9z
aXRpb24obm9kZS0+cGFyZW50KCksIDApLCBET1dOU1RSRUFNKTsKKyAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uSW5QYXJlbnQoUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCAwKSwg
RE9XTlNUUkVBTSk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkluTm9kZShQb3Np
dGlvbihub2RlLCAwKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkluUGFyZW50
ICE9IHBvc2l0aW9uSW5Ob2RlKQotICAgICAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
U3BsaXRFbGVtZW50Q29tbWFuZDo6Y3JlYXRlKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlLT5w
YXJlbnQoKSksIG5vZGUpKTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNw
bGl0RWxlbWVudENvbW1hbmQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZS0+cGFy
ZW50Tm9kZSgpKSwgbm9kZSkpOwogICAgIH0KICAgICBpZiAoc3BsaXRBbmNlc3RvcikgewogICAg
ICAgICBzcGxpdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuZCksIG5vZGUpOwotICAg
ICAgICByZXR1cm4gbm9kZS0+cGFyZW50KCk7CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRO
b2RlKCk7CiAgICAgfQogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1NmRlYWMzMjFkM2ZlOGNjYzAz
ZWUzNmY2NGQ5ZjM2NTY1NTEyMzkyLi5iNjE3YTI3ZWFjMTc4NTg0ZWIyNTU0NGVhOTYxZjNhMTdm
MDgzMGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBA
IC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3Zh
bChOb2RlKiBub2RlLCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG5vZGUtPnBhcmVudCgpID09IHBvc2l0
aW9uLm5vZGUoKSAmJiBub2RlLT5ub2RlSW5kZXgoKSA8ICh1bnNpZ25lZClwb3NpdGlvbi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKQorICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgPT0gcG9z
aXRpb24ubm9kZSgpICYmIG5vZGUtPm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKXBvc2l0aW9uLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpCiAgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24ocG9z
aXRpb24ubm9kZSgpLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gMSk7CiAg
ICAgaWYgKHBvc2l0aW9uLm5vZGUoKSA9PSBub2RlIHx8IHBvc2l0aW9uLm5vZGUoKS0+aXNEZXNj
ZW5kYW50T2Yobm9kZSkpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUobm9kZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGM2NzBlODdhMWJhNDU2MTkzM2E3MjRmOTJm
ZTFhNTE3OGMwOTBjNTQuLjUzMGVkMzZjZjMyOGI2MzNmOGRmYmM5YTNjMGQ5ZWU2ODY3OWUwMTQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0
b3I6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYgaGFzTmVzdGVkT3JNdWx0aXBsZUVt
YmUKICAgICBOb2RlKiBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKG5vZGUpOwogICAgIFdyaXRpbmdE
aXJlY3Rpb24gZm91bmREaXJlY3Rpb24gPSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjsKIAotICAg
IGZvciAoOyBub2RlICE9IGJsb2NrOyBub2RlID0gbm9kZS0+cGFyZW50KCkpIHsKKyAgICBmb3Ig
KDsgbm9kZSAhPSBibG9jazsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBp
ZiAoIW5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmlu
ZGV4IGExY2I3OWZhMTBhMTViNGY0YmMyN2U3MDRkODhmOThhZmM5ODcyZjAuLmZmNTlmNDk0YTBk
MTAxYjAwMmNlZWQ4ZTRjMDhiZGMyNTA4MTIzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAgICAgUmVmUHRy
PE5vZGU+IGF0Q2hpbGQgPSBtX2F0Q2hpbGQucmVsZWFzZSgpOwogCi0gICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50KCk7CisgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJl
bnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKaW5kZXggZjhmMDJiOTRhMTc3NDcwZTQ4NDc0YmM1ZDEyY2I0YTZkMmE4ZDdjZi4u
ZDA4YWMyZTZiYTgxYjEwMjY4OWExOTExNDY0ZGE0OWU5ZjgxNWJhNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCkBAIC04NDMsNyArODQzLDcgQEAgYm9vbCBpc0VtcHR5VGFibGVDZWxsKGNvbnN0
IE5vZGUqIG5vZGUpCiAKICAgICAvLyBGaW5kIHJlbmRlcmVkIG5vZGUKICAgICB3aGlsZSAobm9k
ZSAmJiAhbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOwor
ICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDQxN2RlNzFhMWRhNGQ4MjdlODQ3
Njc4OTEyMDNmMzU1MzM3ZDU0MDIuLjRjYmRjY2VlZWM1OGE0NGNlMjc2MTEyYWRjNDUyMTIzODBk
NGU5NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgTm9kZSogU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFz
dEVuZCkKICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIG5leHRQYXJlbnQgPSBuZXh0ID8gbmV4
dC0+cGFyZW50Tm9kZSgpIDogMDsKICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RFbmQgJiYg
biAhPSBuZXh0UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbGFzdEFuY2VzdG9yQ2xv
c2VkT3JTZWxmID0gbi0+aXNEZXNjZW5kYW50T2YobGFzdENsb3NlZCkgPyBsYXN0Q2xvc2VkIDog
bjsKLSAgICAgICAgICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RBbmNl
c3RvckNsb3NlZE9yU2VsZi0+cGFyZW50KCk7IHBhcmVudCAmJiBwYXJlbnQgIT0gbmV4dFBhcmVu
dDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RBbmNlc3RvckNsb3NlZE9yU2VsZi0+cGFyZW50
Tm9kZSgpOyBwYXJlbnQgJiYgcGFyZW50ICE9IG5leHRQYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+
cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBhbmNlc3RvcnMgdGhh
dCBhcmVuJ3QgaW4gdGhlIGFuY2VzdG9yc1RvQ2xvc2UgbGlzdCBzaG91bGQgZWl0aGVyIGJlIGEp
IHVucmVuZGVyZWQ6CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50LT5yZW5kZXJlcigp
KQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAKaW5kZXggZDZlMWE2ZWQxODc5ZGU5OWI5NWJiMDQzZjJhNTE1MmVlYzVmODA5YS4uN2Q0
NjM3NGJjNjQyYWM2M2E4NDcxMTg5MDAwNmFiMWUyNGQ2NjVjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxl
X3VuaXRzLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xp
bmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50CiAg
ICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9y
TG9naWNhbExlZnRQb3NpdGlvbih4IC0gYWJzUG9zLngoKSwgaXNFZGl0YWJsZVBvc2l0aW9uKHAp
KS0+cmVuZGVyZXIoKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CiAg
ICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKLSAgICAgICAg
ICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnQoKSwgbm9kZS0+bm9kZUluZGV4KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9k
ZUluZGV4KCkpOwogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQoSW50
UG9pbnQoeCAtIGFic1Bvcy54KCksIHJvb3QtPmxpbmVUb3AoKSkpOwogICAgIH0KICAgICAKQEAg
LTcxNSw3ICs3MTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IHgpCiAgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3Np
dGlvbih4IC0gYWJzUG9zLngoKSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsK
ICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CiAgICAgICAgIGlmIChub2Rl
ICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKLSAgICAgICAgICAgIHJldHVybiBQb3Np
dGlvbihub2RlLT5wYXJlbnQoKSwgbm9kZS0+bm9kZUluZGV4KCkpOworICAgICAgICAgICAgcmV0
dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkpOwogICAg
ICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoeCAtIGFic1Bv
cy54KCksIHJvb3QtPmxpbmVUb3AoKSkpOwogICAgIH0gICAgCiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKaW5kZXggMDE1NWJjZTBhZmYyOTlmODJmZWEwZTI3NWEzZTNhNjg4N2JlY2FkNy4uY2Vi
ZmRhMmUzNWFjNGIxZTczMThkNDc3MjRhYTc5N2I1YzA5MWFiNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6Z2V0UmVn
aW9uKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiAKIEhUTUxJbWFnZUVsZW1lbnQqIEhUTUxB
cmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KCkgY29uc3QKIHsKLSAgICBOb2RlKiBtYXBFbGVtZW50
ID0gcGFyZW50KCk7CisgICAgTm9kZSogbWFwRWxlbWVudCA9IHBhcmVudE5vZGUoKTsKICAgICBp
ZiAoIW1hcEVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBiYzRiZjA3OTBlYWVhMTE3N2E1MDRjNWZkYzhhOTM5
NmUwYTIwYTllLi40ZGNmOTk4Y2UwZGJmMThjOGI1ZjkwYjA0NGZmNjBmOTkwYjg4ODVjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBI
VE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgTm9kZSogcCA9IHBhcmVudCgpOworICAgIE5vZGUqIHAgPSBwYXJlbnRO
b2RlKCk7CiAgICAgaWYgKCFwIHx8ICFwLT5pc0hUTUxFbGVtZW50KCkpIHsKICAgICAgICAgZWMg
PSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTUwNyw3
ICs1MDcsNyBAQCBOb2RlKiBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5n
JiB3aGVyZSwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbgogICAgIC8vIE9wZXJhIGFsc28gYXBw
ZWFycyB0byBkaXNhbGxvdyBzdWNoIHVzYWdlLgogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHdoZXJlLCAiYmVmb3JlQmVnaW4iKSkgewotICAgICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSB0aGlzLT5wYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gdGhpcy0+
cGFyZW50Tm9kZSgpOwogICAgICAgICByZXR1cm4gKHBhcmVudCAmJiBwYXJlbnQtPmluc2VydEJl
Zm9yZShuZXdDaGlsZCwgdGhpcywgZWMpKSA/IG5ld0NoaWxkIDogMDsKICAgICB9CiAKQEAgLTUx
OCw3ICs1MTgsNyBAQCBOb2RlKiBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3Ry
aW5nJiB3aGVyZSwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbgogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2hpbGQobmV3Q2hpbGQsIGVjKSA/IG5ld0NoaWxkIDogMDsKIAogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh3aGVyZSwgImFmdGVyRW5kIikpIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gdGhpcy0+cGFyZW50KCk7CisgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHRoaXMtPnBhcmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIChwYXJlbnQgJiYgcGFyZW50LT5p
bnNlcnRCZWZvcmUobmV3Q2hpbGQsIG5leHRTaWJsaW5nKCksIGVjKSkgPyBuZXdDaGlsZCA6IDA7
CiAgICAgfQogICAgIApAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhU
TUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgQXR0cmli
CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewotICAgIHJldHVy
biBFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgfHwgKGlzQ29udGVudEVkaXRhYmxlKCkgJiYgcGFy
ZW50KCkgJiYgIXBhcmVudCgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKTsKKyAgICByZXR1cm4gRWxl
bWVudDo6c3VwcG9ydHNGb2N1cygpIHx8IChpc0NvbnRlbnRFZGl0YWJsZSgpICYmIHBhcmVudE5v
ZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKTsKIH0KIAogYm9vbCBI
VE1MRWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmNwcAppbmRleCBjNGYwMDdjNDU4ODZjZmUzMWQ5NDNhYzVmYmU3Y2FiMzEyNWQ0ODllLi5k
Zjk3MjgwNzM4ZTc2Y2Y0NWVjYTRiYTJmOWFiMWE0ZmY1NmVlMjZlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgdm9pZCBIVE1MRW1iZWRFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgU3RyaW5nIHdpZHRoID0gZ2V0QXR0cmlidXRlKHdp
ZHRoQXR0cik7CiAgICAgU3RyaW5nIGhlaWdodCA9IGdldEF0dHJpYnV0ZShoZWlnaHRBdHRyKTsK
ICAgICBpZiAoIXdpZHRoLmlzRW1wdHkoKSB8fCAhaGVpZ2h0LmlzRW1wdHkoKSkgewotICAgICAg
ICBOb2RlKiBuID0gcGFyZW50KCk7CisgICAgICAgIE5vZGUqIG4gPSBwYXJlbnROb2RlKCk7CiAg
ICAgICAgIHdoaWxlIChuICYmICFuLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAg
ICBuID0gbi0+cGFyZW50KCk7CisgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAg
ICAgICBpZiAobikgewogICAgICAgICAgICAgaWYgKCF3aWR0aC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihuKS0+c2V0QXR0cmlidXRl
KHdpZHRoQXR0ciwgd2lkdGgpOwpAQCAtMjQ3LDkgKzI0Nyw5IEBAIHZvaWQgSFRNTEVtYmVkRWxl
bWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNs
cykKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHBy
ZXNlcnZlRGVjbHMpOwogCiAgICAgaWYgKChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8IGF0
dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSAmJiAhYXR0ci0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
IE5vZGUqIG4gPSBwYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogbiA9IHBhcmVudE5v
ZGUoKTsKICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAg
ICAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIG4gPSBuLT5wYXJlbnROb2Rl
KCk7CiAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVs
ZW1lbnQqPihuKS0+c2V0QXR0cmlidXRlKGF0dHItPm5hbWUoKSwgYXR0ci0+dmFsdWUoKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGY2MzQ0ZDQ0YjU2ZjdiNTIxY2E3
OGI4NDFjZjc3Zjg0ZDRmNzkwMDMuLmU1NTQ2MjAzMzQ5M2JlOGQxNzhjY2JlZjZhNTNiMzVmZjBh
N2I2NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBQ
YXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3coaW50IGlu
ZGV4LCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50OwogICAg
IGlmIChsYXN0Um93KQotICAgICAgICBwYXJlbnQgPSByb3cgPyByb3ctPnBhcmVudCgpIDogbGFz
dFJvdy0+cGFyZW50KCk7CisgICAgICAgIHBhcmVudCA9IHJvdyA/IHJvdy0+cGFyZW50Tm9kZSgp
IDogbGFzdFJvdy0+cGFyZW50Tm9kZSgpOwogICAgIGVsc2UgewogICAgICAgICBwYXJlbnQgPSBs
YXN0Qm9keSgpOwogICAgICAgICBpZiAoIXBhcmVudCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggYjM4YzI3MTkwNDkxNWJhZTFlZTRkNTU4MTQxYzk2Njhk
MzZlZjM4Ni4uMjAxNDNkOWI1OWU4MmM1YjU5MTA2MzEyMjJmOWY1YjFhMDYwZWMxOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0zOSwxNyArMzksMTcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNJbkhlYWQoRWxlbWVu
dCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgpICYmIHN0YXRpY19jYXN0PEVsZW1l
bnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRoZWFkVGFnKTsKKyAgICByZXR1cm4g
cm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvdy0+cGFyZW50Tm9k
ZSgpKS0+aGFzTG9jYWxOYW1lKHRoZWFkVGFnKTsKIH0KIAogc3RhdGljIGJvb2wgaXNJbkJvZHko
RWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgpICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRib2R5VGFnKTsKKyAgICBy
ZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvdy0+cGFy
ZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRib2R5VGFnKTsKIH0KIAogc3RhdGljIGJvb2wgaXNJ
bkZvb3QoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgpICYmIHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsK
KyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJv
dy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKIH0KIAogSFRNTFRhYmxl
Um93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVs
ZW1lbnQqIHRhYmxlLCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91cykKQEAgLTU4LDcgKzU4
LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0Fm
dGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLAogCiAgICAgLy8gU3RhcnQgYnkgbG9va2luZyBm
b3IgdGhlIG5leHQgcm93IGluIHRoaXMgc2VjdGlvbi4KICAgICAvLyBDb250aW51ZSBvbmx5IGlm
IHRoZXJlIGlzIG5vbmUuCi0gICAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzLT5wYXJlbnQoKSAh
PSB0YWJsZSkgeworICAgIGlmIChwcmV2aW91cyAmJiBwcmV2aW91cy0+cGFyZW50Tm9kZSgpICE9
IHRhYmxlKSB7CiAgICAgICAgIGZvciAoY2hpbGQgPSBwcmV2aW91cy0+bmV4dFNpYmxpbmcoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChj
aGlsZC0+aGFzVGFnTmFtZSh0clRhZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihjaGlsZCk7CkBAIC02OSw3ICs2OSw3IEBAIEhUTUxU
YWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1MVGFi
bGVFbGVtZW50KiB0YWJsZSwKICAgICBpZiAoIXByZXZpb3VzKQogICAgICAgICBjaGlsZCA9IHRh
YmxlLT5maXJzdENoaWxkKCk7CiAgICAgZWxzZSBpZiAoaXNJbkhlYWQocHJldmlvdXMpKQotICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzLT5wYXJlbnQoKS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAg
Y2hpbGQgPSBwcmV2aW91cy0+cGFyZW50Tm9kZSgpLT5uZXh0U2libGluZygpOwogICAgIGZvciAo
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hp
bGQtPmhhc1RhZ05hbWUodGhlYWRUYWcpKSB7CiAgICAgICAgICAgICBmb3IgKE5vZGUqIGdyYW5k
Y2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBncmFuZGNoaWxkOyBncmFuZGNoaWxkID0gZ3Jh
bmRjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtODIsMTAgKzgyLDEwIEBAIEhUTUxUYWJsZVJv
d0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVt
ZW50KiB0YWJsZSwKICAgICAvLyBJZiBzdGlsbCBsb29raW5nIGF0IHRvcCBsZXZlbCBhbmQgYm9k
aWVzLCBmaW5kIHRoZSBuZXh0IHJvdyBpbiB0b3AgbGV2ZWwgb3IgdGhlIGZpcnN0IGluIHRoZSBu
ZXh0IGJvZHkgc2VjdGlvbi4KICAgICBpZiAoIXByZXZpb3VzIHx8IGlzSW5IZWFkKHByZXZpb3Vz
KSkKICAgICAgICAgY2hpbGQgPSB0YWJsZS0+Zmlyc3RDaGlsZCgpOwotICAgIGVsc2UgaWYgKHBy
ZXZpb3VzLT5wYXJlbnQoKSA9PSB0YWJsZSkKKyAgICBlbHNlIGlmIChwcmV2aW91cy0+cGFyZW50
Tm9kZSgpID09IHRhYmxlKQogICAgICAgICBjaGlsZCA9IHByZXZpb3VzLT5uZXh0U2libGluZygp
OwogICAgIGVsc2UgaWYgKGlzSW5Cb2R5KHByZXZpb3VzKSkKLSAgICAgICAgY2hpbGQgPSBwcmV2
aW91cy0+cGFyZW50KCktPm5leHRTaWJsaW5nKCk7CisgICAgICAgIGNoaWxkID0gcHJldmlvdXMt
PnBhcmVudE5vZGUoKS0+bmV4dFNpYmxpbmcoKTsKICAgICBmb3IgKDsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRy
VGFnKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGFibGVSb3dFbGVtZW50
Kj4oY2hpbGQpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVtZW50KiB0YWJsZSwKICAg
ICBpZiAoIXByZXZpb3VzIHx8ICFpc0luRm9vdChwcmV2aW91cykpCiAgICAgICAgIGNoaWxkID0g
dGFibGUtPmZpcnN0Q2hpbGQoKTsKICAgICBlbHNlCi0gICAgICAgIGNoaWxkID0gcHJldmlvdXMt
PnBhcmVudCgpLT5uZXh0U2libGluZygpOworICAgICAgICBjaGlsZCA9IHByZXZpb3VzLT5wYXJl
bnROb2RlKCktPm5leHRTaWJsaW5nKCk7CiAgICAgZm9yICg7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh0Zm9vdFRh
ZykpIHsKICAgICAgICAgICAgIGZvciAoTm9kZSogZ3JhbmRjaGlsZCA9IGNoaWxkLT5maXJzdENo
aWxkKCk7IGdyYW5kY2hpbGQ7IGdyYW5kY2hpbGQgPSBncmFuZGNoaWxkLT5uZXh0U2libGluZygp
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKaW5kZXggZjcyMTdlYjBj
OTk2ODVlMmRiNGQ5NjEzN2FmYTI3MDI1MDljYWUxMy4uMjdlYWY1MTNlYzZmZDM5ZjQ5YmE3YWYy
YWEyZTAxMDU2ZTMwZjIyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNw
cApAQCAtMjc3LDcgKzI3Nyw3IEBAIGludCBIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRSYW5n
ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0LCBpbnQgZW5kLCBjCiAgICAgfQogICAg
IGFkZFRleHQodGV4dCwgY2xhc3NOYW1lKTsKICAgICBpZiAoIWNsYXNzTmFtZS5pc0VtcHR5KCkg
JiYgbV9jdXJyZW50ICE9IG1fdGJvZHkpCi0gICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKKyAgICAgICAgbV9jdXJyZW50ID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVudC0+cGFyZW50Tm9kZSgpKTsKICAgICByZXR1cm4g
ZW5kOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggYzRmMGIxNDA0YmNlMzVmODE1YzAw
YWVmMDg1NmIzNjdhOGQwYTY1Yy4uYWY2Njc5NWNjN2VhNzNlZjJhZDY4Y2YwNjk3ODY4MDYxZWIz
YzgzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgTWVk
aWFEb2N1bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFEb2N1
bWVudD4qKQogICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgZnJh
bWUoKS0+bG9hZGVyKCktPndyaXRlcigpLT5taW1lVHlwZSgpKTsKIAogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjOwotICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudCgpLT5yZXBsYWNlQ2hpbGQo
ZW1iZWRFbGVtZW50LCB2aWRlb0VsZW1lbnQsIGVjKTsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5w
YXJlbnROb2RlKCktPnJlcGxhY2VDaGlsZChlbWJlZEVsZW1lbnQsIHZpZGVvRWxlbWVudCwgZWMp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcAppbmRleCA3MjAxYWM3Zjc0YWMzM2IzMmJiNzFjZWNhOTNlMjk0NDA3OWI5ZTQwLi5jNDZi
OWI5YmU5ZjZiZDc2YWIzY2JmNTlkZDFhMzQ1ZTk2NTk4NTRkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCBQYXNzUmVm
UHRyPENoaWxkVHlwZT4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFjaChDb250YWluZXJOb2Rl
KiBwYXJlbnQsIFBhc3NSZQogICAgIC8vIGRvZXNuJ3QuICBJdCBmZWVscyBsaWtlIHdlJ3JlIG1p
c3NpbmcgYSBjb25jZXB0IHNvbWVob3cuCiAgICAgaWYgKHNob3VsZEZvc3RlclBhcmVudCgpKSB7
CiAgICAgICAgIGZvc3RlclBhcmVudChjaGlsZC5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVChjaGls
ZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVudCgpIHx8ICFjaGlsZC0+cGFyZW50KCktPmF0
dGFjaGVkKCkpOworICAgICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNoaWxkLT5w
YXJlbnROb2RlKCkgfHwgIWNoaWxkLT5wYXJlbnROb2RlKCktPmF0dGFjaGVkKCkpOwogICAgICAg
ICByZXR1cm4gY2hpbGQucmVsZWFzZSgpOwogICAgIH0KIApAQCAtNDM0LDcgKzQzNCw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmZpbmRGb3N0ZXJTaXRlKEF0dGFjaG1lbnRTaXRlJiBz
aXRlKQogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIGxhc3RUYWJsZUVsZW1l
bnRSZWNvcmQgPSBtX29wZW5FbGVtZW50cy50b3Btb3N0KHRhYmxlVGFnLmxvY2FsTmFtZSgpKTsK
ICAgICBpZiAobGFzdFRhYmxlRWxlbWVudFJlY29yZCkgewogICAgICAgICBFbGVtZW50KiBsYXN0
VGFibGVFbGVtZW50ID0gbGFzdFRhYmxlRWxlbWVudFJlY29yZC0+ZWxlbWVudCgpOwotICAgICAg
ICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbGFzdFRhYmxlRWxlbWVudC0+cGFyZW50KCkp
IHsKKyAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RUYWJsZUVsZW1lbnQt
PnBhcmVudE5vZGUoKSkgewogICAgICAgICAgICAgc2l0ZS5wYXJlbnQgPSBwYXJlbnQ7CiAgICAg
ICAgICAgICBzaXRlLm5leHRDaGlsZCA9IGxhc3RUYWJsZUVsZW1lbnQ7CiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggM2UxNWEy
NjQwODNiMmQzNGEyMTQ4YmE4YWFmYjc5NTE3ZmRhYTVkMi4uM2QzOTEzMWQ5YTVlNjU5ZjZkMGQ5
NDczMWZmZmYxMzRjOTIyYTgxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIEhUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1BbmNl
c3RvcihFbGVtZW50KiBlbGVtZW50KQogICAgIHdoaWxlIChlbGVtZW50KSB7CiAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICBOb2RlKiBwYXJlbnQg
PSBlbGVtZW50LT5wYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gZWxl
bWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5pc0Vs
ZW1lbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRl
eCA4ZWU1ZGZmOWE3MDYxMzY5NGQxZDU2MWZmYTBlMWM2ZDRmM2I0ZTk4Li4yODY2MDE5Nzg2Njkx
MjYzMTIzM2FiZjRlNDI3NDZkNjZlZWY5NWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApA
QCAtNDY0LDI1ICs0NjQsMjUgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVO
b2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2QKICAgICAgICAgICAg
ICAgICBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IGNhbmRpZGF0ZVBhcmVudC5u
b2RlOwogCiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVyKSkg
ewotICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG91dGVyLT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgaWYgKERvY3VtZW50
KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4ob3V0ZXItPnBhcmVudE5vZGUoKSkp
CiAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0g
c3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25lckVsZW1lbnQoKSk7CiAKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShvdXRlci0+cGFyZW50KCkp
KQotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0
ZXItPnBhcmVudCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWlu
ZXJOb2RlKG91dGVyLT5wYXJlbnROb2RlKCkpKQorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5l
bmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudE5vZGUoKTsKIAogICAgICAgICAg
ICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNhbmRpZGF0ZS4K
ICAgICAgICAgICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwg
Y2FuZGlkYXRlKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgZGlzdGFuY2UgaXMgbWF4
aW11bS4KICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPT0gbWF4RGlzdGFuY2Uo
KSkgewotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKG91dGVy
LT5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5v
ZGUob3V0ZXItPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoZm9j
dXNlZE5vZGUsIGNhbmRpZGF0ZSwgY2xvc2VzdCk7CiAgICAgICAgIH0KIAotICAgICAgICBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50KCkpOworICAgICAgICBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50Tm9kZSgpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBhZGFh
YzAzMmQ2OTA1Y2RkZjRjMDgzZjZkMjE2Y2Y2MWYzNDkyMTQ0Li4xYWYxYjgwYWZlNWZjYmMwZTk2
OWMxZDcxYzEwMTIzMmJmODkwYzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBBU1NFUlQoZG9j
dW1lbnQoKS0+cGFnZSgpKTsKIAotICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPnJlbmRlcmVyKCkKKyAgICBy
ZXR1cm4gSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpICYmIHBhcmVudE5v
ZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCkKICAgICAgICAgJiYgKCFzdHlsZS0+aGFz
QXBwZWFyYW5jZSgpIHx8IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+c2hvdWxkUmVuZGVy
TWVkaWFDb250cm9sUGFydChzdHlsZS0+YXBwZWFyYW5jZSgpLCBtX21lZGlhRWxlbWVudCkpOwog
fQogICAgIApAQCAtMTgzLDEyICsxODMsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xFbGVtZW50Ojph
dHRhY2goKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVyZXItPnNldFN0eWxlKHN0eWxlLmdl
dCgpKTsKICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgaWYgKHBhcmVudCgpICYmIHBh
cmVudCgpLT5yZW5kZXJlcigpKSB7CisgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2Rl
KCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gRmluZCBuZXh0IHNpYmxpbmcgd2l0aCBhIHJl
bmRlcmVyIHRvIGRldGVybWluZSB3aGVyZSB0byBpbnNlcnQuCiAgICAgICAgIE5vZGUqIHNpYmxp
bmcgPSBuZXh0U2libGluZygpOwogICAgICAgICB3aGlsZSAoc2libGluZyAmJiAhc2libGluZy0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0U2libGluZygp
OwotICAgICAgICBwYXJlbnQoKS0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIsIHNpYmxp
bmcgPyBzaWJsaW5nLT5yZW5kZXJlcigpIDogMCk7CisgICAgICAgIHBhcmVudE5vZGUoKS0+cmVu
ZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIsIHNpYmxpbmcgPyBzaWJsaW5nLT5yZW5kZXJlcigp
IDogMCk7CiAgICAgfQogICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwogfQpAQCAtMjAyLDcg
KzIwMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6dXBkYXRlU3R5bGUoKQogICAgIGlm
ICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJl
bmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5yZW5k
ZXJlcigpOworICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJlbmRlcmVySXNOZWVkZWQoc3R5bGUu
Z2V0KCkpICYmIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgIW5lZWRzUmVuZGVyZXIpCiAgICAgICAgIGRldGFjaCgpOwogICAg
IGVsc2UgaWYgKCFyZW5kZXJlcigpICYmIG5lZWRzUmVuZGVyZXIpCkBAIC00MTYsNyArNDE2LDcg
QEAgYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIEFTU0VSVChkb2N1bWVudCgpLT5wYWdlKCkpOwogCi0gICAg
cmV0dXJuIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpICYmIHBhcmVu
dCgpICYmIHBhcmVudCgpLT5yZW5kZXJlcigpCisgICAgcmV0dXJuIEhUTUxJbnB1dEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpICYmIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCkt
PnJlbmRlcmVyKCkKICAgICAgICAgJiYgKCFzdHlsZS0+aGFzQXBwZWFyYW5jZSgpIHx8IGRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+c2hvdWxkUmVuZGVyTWVkaWFDb250cm9sUGFydChzdHls
ZS0+YXBwZWFyYW5jZSgpLCBtZWRpYUVsZW1lbnQoKSkpOwogfQogCkBAIC00MzQsMTIgKzQzNCwx
MiBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAgICAgICAgcmV0
dXJuOwogICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZS5nZXQoKSk7CiAgICAgc2V0UmVuZGVy
ZXIocmVuZGVyZXIpOwotICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+cmVuZGVyZXIoKSkg
eworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgIC8vIEZpbmQgbmV4dCBzaWJsaW5nIHdpdGggYSByZW5kZXJlciB0byBkZXRlcm1pbmUg
d2hlcmUgdG8gaW5zZXJ0LgogICAgICAgICBOb2RlKiBzaWJsaW5nID0gbmV4dFNpYmxpbmcoKTsK
ICAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgIXNpYmxpbmctPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgcGFyZW50KCkt
PnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyLCBzaWJsaW5nID8gc2libGluZy0+cmVuZGVy
ZXIoKSA6IDApOworICAgICAgICBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPmFkZENoaWxkKHJl
bmRlcmVyLCBzaWJsaW5nID8gc2libGluZy0+cmVuZGVyZXIoKSA6IDApOwogICAgIH0gIAogICAg
IENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwogfQpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50Ojp1cGRhdGVTdHlsZSgpCiAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUuZ2V0KCkpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5yZW5kZXJlcigpOwor
ICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJlbmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpICYm
IHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRl
cmVyKCkgJiYgIW5lZWRzUmVuZGVyZXIpCiAgICAgICAgIGRldGFjaCgpOwogICAgIGVsc2UgaWYg
KCFyZW5kZXJlcigpICYmIG5lZWRzUmVuZGVyZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHR3JhZGllbnRTdG9wLmNwcAppbmRleCBhNWU1ODA4ODYxNzUzYzcxOTdmMzU3NGRhNWRmYzNh
MDhiODEzMmE1Li4wOTRmYzdmZTA2YWM1OTg0MGMwZmJjZGFhMzZiYmI3NWFlMDA0MDdmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBSZW5kZXJTVkdHcmFkaWVudFN0b3A6OmxheW91dCgpCiAKIFNWR0dyYWRpZW50
RWxlbWVudCogUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpncmFkaWVudEVsZW1lbnQoKSBjb25zdAog
ewotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlKCktPnBhcmVudCgpOworICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlKCktPnBhcmVudE5vZGUoKTsKICAgICBp
ZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZShsaW5lYXJHcmFkaWVudFRhZykgfHwgcGFyZW50Tm9k
ZS0+aGFzVGFnTmFtZShyYWRpYWxHcmFkaWVudFRhZykpCiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTVkdHcmFkaWVudEVsZW1lbnQqPihwYXJlbnROb2RlKTsKICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmNwcAppbmRleCA4ZTQyOWQwNTlkMjQwM2NkMWRkMzJkNTUwODhkMmYzZTQ1NjI5ZmRl
Li44ZTBlNTZlOGUwN2FmODkyNGMwYWU0YjUxODRmODQ3YTNmNjZhYzQxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyT2JqZWN0KiBTVkdB
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7Ci0gICAgaWYgKHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQoKSktPmlzVGV4dENv
bnRlbnQoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVudE5vZGUoKSkt
PmlzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lu
bGluZSh0aGlzKTsKIAogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyKHRoaXMpOwpAQCAtMjA3LDggKzIwNyw4IEBAIGJvb2wgU1ZHQUVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiAgICAgLy8gVGhl
ICdhJyBlbGVtZW50IG1heSBjb250YWluIGFueSBlbGVtZW50IHRoYXQgaXRzIHBhcmVudCBtYXkg
Y29udGFpbiwgZXhjZXB0IGl0c2VsZi4KICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHBhcmVudCgpICYmIHBh
cmVudCgpLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudCgpLT5jaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKKyAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVu
dE5vZGUoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnROb2RlKCktPmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogCiAgICAgcmV0dXJuIFNWR0VsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1l
bnQuY3BwCmluZGV4IDMxNWFhMjkwOWJiNjYxMzAzYTJmNTdhNmE1ZDg2MWI1YTc1YzMzMmYuLjdm
ZWQ3NzRmNDU5NjhjNzdlNWEwNmQ0N2Q2YTFmYjMxOWJhNzRmYzggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIKICAgICAgICAgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyCiAgICAgICAgIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAgICAgaWYgKENvbnRh
aW5lck5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnQoKSkgewotICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHBhcmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChDb250
YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkKICAgICAg
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKICAgICAgICAgfQpAQCAtMTMxLDggKzEzMSw4IEBA
IHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlCiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKIAogICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKSB7Ci0gICAgICAgIGlmIChDb250YWlu
ZXJOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50KCkpIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBwYXJlbnROb2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCiAgICAgICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuY3BwCmluZGV4IGVlMWFjM2E3ZjE2ODk4NjgyM2U4NmU3ZmRmMzM5ZWY1YzRkN2M3
ZDYuLjU0YmIyZmU0ZTFmZDAxMzE4YzdiYjE3ODAwYjg2MjcwOTg1MTVmN2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcApAQCAtNTUsMTEgKzU1LDExIEBAIHZvaWQgU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIGlmIChhdHRyTmFtZSAhPSBTVkdOYW1lczo6aW5BdHRyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50KCk7Ci0g
ICAgaWYgKCFwYXJlbnROb2RlKQorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE5v
ZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHBhcmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFy
ZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoLmNwcAppbmRleCBmODM4MWJmMGI0MWRjM2ZkYzljYzVjMDljYjgwOWVmMjlk
YWFiZjFhLi44MTY4Y2Y2ZDQ4MzQ2Y2ViNzE4MDkzZjBlN2YyOTYxMjRiYzJjMDA4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNWR0xlbmd0aDo6ZGV0ZXJtaW5lVmlld3Bv
cnQoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgZmxvYXQmIHdpZHRoLCBmbG9hdAogICAgIH0K
ICAgICAKICAgICAvLyBSZXNvbHZlIHZhbHVlIGFnYWluc3QgZW5jbG9zaW5nIG5vbi1TVkcgUmVu
ZGVyQm94Ci0gICAgaWYgKCFjb250ZXh0LT5wYXJlbnQoKSB8fCBjb250ZXh0LT5wYXJlbnQoKS0+
aXNTVkdFbGVtZW50KCkpCisgICAgaWYgKCFjb250ZXh0LT5wYXJlbnROb2RlKCkgfHwgY29udGV4
dC0+cGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvbnRleHQtPnJlbmRlcmVyKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDY0MDMwYmM2ODVhZGM0NWVmNTZhZmNkZjg2YzZiMTI1
N2I5MmMzYWUuLmQ1ZWY0ODY4OTE2NzdlMGI3NmJmNzdmYWY1NDU2YmE0ZWE2MjlmNWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zNjIsMTQgKzM2MiwxNCBAQCB2b2lkIFNWR1N0eWxl
ZEVsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wgaGFzUmVsYXRp
dmVMZW5ndGhzLAogICAgIH0KIAogICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBhcmVudCBub2Rl
LCBhbmQgbm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUgbGVuZ3RoIHN0
YXRlLgotICAgIE5vZGUqIG5vZGUgPSBwYXJlbnQoKTsKKyAgICBDb250YWluZXJOb2RlKiBub2Rl
ID0gcGFyZW50Tm9kZSgpOwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmICghbm9kZS0+
aXNTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBTVkdFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG5vZGUpOwogICAgICAgICBpZiAo
IWVsZW1lbnQtPmlzU3R5bGVkKCkpIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnQo
KTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDNmYmMyMmViZDVj
MGE4ZDJlZDUzOGJjZWU4ZTRlM2U5NTNlZDYxMTkuLmE2OTMzNGM4MDkyYzU1NjQ1YzMyNzU0YTNl
NDI4MmFlMjBhMDNkM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAg
dm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZShO
b2RlKiBzdWJ0cmVlKQogICAgICAgICBpZiAoaXNEaXNhbGxvd2VkRWxlbWVudChub2RlKSkgewog
ICAgICAgICAgICAgTm9kZSogbmV4dCA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoc3VidHJl
ZSk7CiAgICAgICAgICAgICAvLyBUaGUgc3VidHJlZSBpcyBub3QgaW4gZG9jdW1lbnQgc28gdGhp
cyB3b24ndCBnZW5lcmF0ZSBldmVudHMgdGhhdCBjb3VsZCBtdXRhdGUgdGhlIHRyZWUuCi0gICAg
ICAgICAgICBub2RlLT5wYXJlbnQoKS0+cmVtb3ZlQ2hpbGQobm9kZSwgZWMpOworICAgICAgICAg
ICAgbm9kZS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLCBlYyk7CiAgICAgICAgICAg
ICBub2RlID0gbmV4dDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZShzdWJ0cmVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCmluZGV4IDY3NTdmZWU1ZjAzYjc0NDMwNzNjNzUwMjZkZjBmNTA1MTE0YTQwNWIu
LjQ0MWNmYzNjZTBhNDM2MmNiY2NlOWU4NzNlM2U3MmI3MDYyZjViZTYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICBTVkdFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogI2lmbmRlZiBOREVCVUcKICAgICAvLyBWZXJpZnkgd2UgYXJl
IG5vdCBpbiA8dXNlPiBpbnN0YW5jZSB0cmVlLgotICAgIGZvciAoTm9kZSogbiA9IHRoaXM7IG47
IG4gPSBuLT5wYXJlbnQoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG4gPSB0aGlzOyBuOyBu
ID0gbi0+cGFyZW50Tm9kZSgpKQogICAgICAgICBBU1NFUlQoIW4tPmlzU2hhZG93Tm9kZSgpKTsK
ICNlbmRpZgogICAgIFNWR1NWR0VsZW1lbnQqIG93bmVyID0gb3duZXJTVkdFbGVtZW50KCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwIGIvV2ViQ29yZS94bWwvWFBh
dGhOb2RlU2V0LmNwcAppbmRleCBiYTk0MjNlYzg3YzJhMDE0M2U0N2Y3NWQ0YTM1MTdlN2Q2Yzlm
Nzg4Li5hOGU0NDI4NjI5ZWZiNjU1OWQxZGFmYjQwY2YyNTFhMjY3MjQwYjNkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE5vZGVTZXQ6OnNvcnQoKSBjb25zdAog
ICAgICAgICAgICAgcGFyZW50c1ZlY3Rvci5hcHBlbmQobik7CiAgICAgICAgICAgICBjb250YWlu
c0F0dHJpYnV0ZU5vZGVzID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB3aGlsZSAoKG4gPSBu
LT5wYXJlbnQoKSkpCisgICAgICAgIHdoaWxlICgobiA9IG4tPnBhcmVudE5vZGUoKSkpCiAgICAg
ICAgICAgICBwYXJlbnRzVmVjdG9yLmFwcGVuZChuKTsKICAgICB9CiAgICAgc29ydEJsb2NrKDAs
IG5vZGVDb3VudCwgcGFyZW50TWF0cml4LCBjb250YWluc0F0dHJpYnV0ZU5vZGVzKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aFN0ZXAu
Y3BwCmluZGV4IGRkZDhjM2NmZjgxYTMxMWUwNzA5YjI3M2YyZjMyYWQ1ZTQ4ZGQwOGMuLmQ4MmNk
NTA1NjJmMjdhNWNmNDJjMjBmMWNlM2YxOThiMWJlOGI4MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
eG1sL1hQYXRoU3RlcC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcApAQCAtMzIw
LDcgKzMyMCw3IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29udGV4dCwgTm9kZVNl
dCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHN0YXRpY19jYXN0PEF0
dHIqPihjb250ZXh0KS0+b3duZXJFbGVtZW50KCk7CiAKICAgICAgICAgICAgIE5vZGUqIG4gPSBj
b250ZXh0OwotICAgICAgICAgICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IG4tPnBhcmVudCgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbi0+cGFyZW50Tm9k
ZSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChuID0gbi0+dHJhdmVyc2VQcmV2aW91c05vZGUo
KTsgbiAhPSBwYXJlbnQ7IG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKQogICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMobiwgUHJlY2VkaW5nQXhpcywgbV9ub2RlVGVzdCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQobik7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMwN2MyMWNjZGZiZGFjZDk3MzQ0MzE1ZWE5MjQyMmUy
NTk0ZWZmZC4uNDY5Y2I2NDM0NDUzMDNhZDllMTJiMjQ4NzU1YmExZDVhMjk1MmU3MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2
b2lkIGZyZWVYc2x0UGFyYW1BcnJheShjb25zdCBjaGFyKiogcGFyYW1zKQogc3RhdGljIHhzbHRT
dHlsZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UG9pbnRlcihSZWZQdHI8WFNMU3R5bGVTaGVldD4m
IGNhY2hlZFN0eWxlc2hlZXQsIE5vZGUqIHN0eWxlc2hlZXRSb290Tm9kZSkKIHsKICAgICBpZiAo
IWNhY2hlZFN0eWxlc2hlZXQgJiYgc3R5bGVzaGVldFJvb3ROb2RlKSB7Ci0gICAgICAgIGNhY2hl
ZFN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVzaGVldFJvb3ROb2RlLT5w
YXJlbnQoKSA/IHN0eWxlc2hlZXRSb290Tm9kZS0+cGFyZW50KCkgOiBzdHlsZXNoZWV0Um9vdE5v
ZGUsCisgICAgICAgIGNhY2hlZFN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUoc3R5
bGVzaGVldFJvb3ROb2RlLT5wYXJlbnROb2RlKCkgPyBzdHlsZXNoZWV0Um9vdE5vZGUtPnBhcmVu
dE5vZGUoKSA6IHN0eWxlc2hlZXRSb290Tm9kZSwKICAgICAgICAgICAgIHN0eWxlc2hlZXRSb290
Tm9kZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksCiAgICAgICAgICAgICBzdHlsZXNoZWV0
Um9vdE5vZGUtPmRvY3VtZW50KCktPnVybCgpKTsgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgYmFz
ZVVSTCBoZXJlPwogICAgICAgICBjYWNoZWRTdHlsZXNoZWV0LT5wYXJzZVN0cmluZyhjcmVhdGVN
YXJrdXAoc3R5bGVzaGVldFJvb3ROb2RlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74171</attachid>
            <date>2010-11-17 16:01:38 -0800</date>
            <delta_ts>2010-11-17 16:23:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49686-20101117160137.patch</filename>
            <type>text/plain</type>
            <size>63881</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Nzk3M2RiN2IxMjc2MTEwYmFmMzc1MDAxODI5YzE4ZDhlMjg3M2IzOC4uZDY1ZDMzY2MxMTM0YTdk
ZGYxM2QzOTJiNTY3OGZmNTU0MjhmZmY1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjMgQEAKKzIwMTAtMTEtMTcgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJnZSBtZWFucyBvZiBxdWVyeWlu
ZyBhIHBhcmVudCBub2RlIGludG8gb25lIHdheSwgd2hpY2ggaXMgTm9kZTo6cGFyZW50Tm9kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Njg2CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyTGlzdEl0
ZW1Db250YWluZXJGb3JOb2RlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bW91c2VCdXR0b25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpzaWJsaW5n
V2l0aEFyaWFSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmdldERvY3VtZW50TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgIChi
bG9ja3F1b3RlTGV2ZWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdEdyb3VwZXJWaXNpdG9yOjp2aXNpdERPTVdyYXBw
ZXIpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJl
bW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VHlwZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSk6Cisg
ICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSk6CisgICAgICAg
ICogZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25J
dGVyYXRvcjo6aXNDYW5kaWRhdGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwZW5kTm9kZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwZW5kTm9kZUNvbW1hbmQ6OkFwcGVuZE5vZGVD
b21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmR1bW15U3BhbkFuY2VzdG9yRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmNlc3RvcnNXaXRoVW5pY29kZUJpZGkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUVtYmVkZGluZ1VwVG9FbmNs
b3NpbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpoaWdoZXN0RW1iZWRkaW5nQW5jZXN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEVsZW1lbnRB
dEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFydFdp
dGhQcmV2aW91c0lmSWRlbnRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21t
YW5kOjptZXJnZUVuZFdpdGhOZXh0SWZJZGVudGljYWwpOgorICAgICAgICAqIGVkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6OnNwbGl0VHJlZVRvTm9kZSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJl
bW92YWwpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRW1wdHlUYWJsZUNlbGwpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1h
cmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6CisgICAgICAgICogZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRMaW5lUG9zaXRpb24pOgorICAgICAgICAqIGh0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6aW1h
Z2VFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6Omluc2VydEFkamFjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpzdXBwb3J0c0ZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUYWJsZUVsZW1lbnQ6Omluc2VydFJvdyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luSGVhZCk6CisgICAgICAg
IChXZWJDb3JlOjppc0luQm9keSk6CisgICAgICAgIChXZWJDb3JlOjppc0luRm9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6cm93QWZ0ZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRSYW5nZSk6CisgICAgICAgICogaHRtbC9NZWRpYURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRG9jdW1lbnQ6OnJlcGxhY2VNZWRp
YUVsZW1lbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0
YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpmaW5kRm9zdGVy
U2l0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nv
bnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sSW5wdXRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
SW5wdXRFbGVtZW50Ojp1cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R0dyYWRpZW50U3RvcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdHcmFkaWVudFN0
b3A6OmdyYWRpZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGln
aHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
TGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdl
Tm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6ZGV0ZXJtaW5lVmlld3BvcnQpOgorICAgICAgICAq
IHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKToKKyAgICAgICAgKiBzdmcv
U1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpyZW1v
dmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OnNvcnQpOgorICAgICAgICAqIHhtbC9Y
UGF0aFN0ZXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlN0ZXA6Om5vZGVzSW5BeGlz
KToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6eHNsdFN0eWxlc2hlZXRQb2ludGVyKToKKwogMjAxMC0xMS0xNyAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCmluZGV4IDNkZGNkYzUwNTI2ZjlmYzkxMTgyNmY5YTQwYjNhZWM5MjVmMGM5YTYu
LmNhZjEyZGM2ODViN2Q1Y2ExMjRkMTQwOGNhYjliMjRhMjA0MDE3ZjAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBA
QCBzdGF0aWMgYm9vbCByZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihOb2RlKiByZXBsYWNlZE5v
ZGUpCiAvLyBGaW5kcyBhIFJlbmRlckxpc3RJdGVtIHBhcmVudCBnaXZlIGEgbm9kZS4KIHN0YXRp
YyBSZW5kZXJMaXN0SXRlbSogcmVuZGVyTGlzdEl0ZW1Db250YWluZXJGb3JOb2RlKE5vZGUqIG5v
ZGUpCiB7Ci0gICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgeworICAgIGZv
ciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlckJveE1vZGVsT2JqZWN0KCk7CiAg
ICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNMaXN0SXRlbSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRvUmVuZGVyTGlzdEl0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGVmNDIyNzJj
MThlYjhjOTg1N2NmMWMwMTJhNTUxNTcwOGExNjQ5OGYuLjE0MWQ3MjU5NDk1ODI5YjAwZWViNWEw
Njc4YWJiMDQ3OGE3YTNiNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTg2Myw3ICs4NjMsNyBAQCBFbGVtZW50KiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojptb3VzZUJ1dHRvbkxpc3RlbmVyKCkgY29uc3QKICAg
ICAKICAgICAvLyBjaGVjayBpZiBvdXIgcGFyZW50IGlzIGEgbW91c2UgYnV0dG9uIGxpc3RlbmVy
CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudCgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwog
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlY3JlbWVudCgpCiAKIHN0YXRpYyBFbGVt
ZW50KiBzaWJsaW5nV2l0aEFyaWFSb2xlKFN0cmluZyByb2xlLCBOb2RlKiBub2RlKQogewotICAg
IE5vZGUqIHNpYmxpbmcgPSBub2RlLT5wYXJlbnQoKS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUq
IHNpYmxpbmcgPSBub2RlLT5wYXJlbnROb2RlKCktPmZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAo
c2libGluZykgewogICAgICAgICBpZiAoc2libGluZy0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNpYmxpbmdBcmlhUm9sZSA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihzaWJsaW5nKS0+Z2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKQEAgLTIzMzIsNyAr
MjMzMiw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW1lbnRMaW5r
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlCiAgICAgICAgICAgICBpZiAoIWF4b2Jq
LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgJiYgYXhvYmotPmlzTGluaygpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYXhvYmopOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgTm9kZSogcGFyZW50ID0gY3Vyci0+cGFyZW50KCk7CisgICAgICAgICAgICBOb2RlKiBwYXJl
bnQgPSBjdXJyLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAocGFyZW50ICYmIGN1cnIt
Pmhhc1RhZ05hbWUoYXJlYVRhZykgJiYgcGFyZW50LT5oYXNUYWdOYW1lKG1hcFRhZykpIHsKICAg
ICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKiBhcmVhT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluayo+KGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoSW1hZ2VNYXBMaW5rUm9sZSkpOwogICAgICAgICAgICAgICAgIGFyZWFPYmplY3Qt
PnNldEhUTUxBcmVhRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihjdXJyKSk7
CkBAIC0yNzAwLDcgKzI3MDAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTQogICAgIGlmICgh
YXJlYSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgSFRNTE1hcEVsZW1lbnQqIG1hcCA9
IHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4oYXJlYS0+cGFyZW50KCkpOworICAgIEhUTUxN
YXBFbGVtZW50KiBtYXAgPSBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGFyZWEtPnBhcmVu
dE5vZGUoKSk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gYWNjZXNzaWJpbGl0
eVBhcmVudEZvckltYWdlTWFwKG1hcCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbSBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0KaW5kZXggN2ExM2YxMWJjMjY0OTA2OTc4NzQ4ZWQ3NDczODNmNjhm
NmRlNjliNy4uOTc2MDM4MmRjMzg1YWI0NDRjNWMzY2E4ZGI4ODE5NDRmZGRkODY4NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbQorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCkBAIC00MDcsNyArNDA3LDcgQEAgc3RhdGljIGludCBibG9ja3F1b3RlTGV2ZWwo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaW50
IHJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gcmVuZGVy
ZXItPm5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKICAgICAgICAgICAgIHJlc3VsdCAr
PSAxOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggODRh
MGNlZjkyNDY2MWFlOWM3YzRiOTI5ZDAzM2E2MTIyZGE5ZDVlOC4uYjI2ODgyYjhkNDk0MDc3MTc5
MjYwYTYyZWU5ZGZhZTVlNmY3ZjlhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEdDQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFy
b290KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdCA9IHJvb3QtPnBhcmVudCgpOworICAgICAgICAgICAgICAgIHdoaWxlIChyb290LT5w
YXJlbnROb2RlKCkpCisgICAgICAgICAgICAgICAgICAgIHJvb3QgPSByb290LT5wYXJlbnROb2Rl
KCk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBhbG9uZSBpbiBpdHMgRE9N
IHRyZWUgKGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCBvciBhbnkKICAgICAgICAgICAgICAgICAvLyBj
aGlsZHJlbikgdGhlbiB0aGUgZ3JvdXAgd2lsbCBiZSBmaWx0ZXJlZCBvdXQgbGF0ZXIgYW55d2F5
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyMTIwZTM4ODJmMGRhZDNlMDA4ODU5MDg4YWU4YTc5
YmY4MTZmMDc4Li5lMTU4ODI4OWRiYTM2OTY1MWVjODQ1YzU4ZmE3NjA1NDRjYTMwMjRjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6
aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBF
eGNlCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAg
ICAgLy8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2Vu
ZGluZyBtdXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50KCkp
OworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSk7CiAKICAgICBlYyA9IDA7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgICAgICBu
b3RpZnlDaGlsZEluc2VydGVkKGNoaWxkKTsKIAogICAgICAgICAvLyBBZGQgY2hpbGQgdG8gdGhl
IHJlbmRlcmluZyB0cmVlLgotICAgICAgICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFj
aGVkKCkgJiYgY2hpbGQtPnBhcmVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKGF0dGFjaGVk
KCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcykg
ewogICAgICAgICAgICAgaWYgKHNob3VsZExhenlBdHRhY2gpCiAgICAgICAgICAgICAgICAgY2hp
bGQtPmxhenlBdHRhY2goKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE4NCw3ICsxODQsNyBAQCBi
b29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxk
LCBOb2RlKiByZWZDaGlsZCwgRXhjZQogdm9pZCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmVD
b21tb24oTm9kZSogbmV4dENoaWxkLCBOb2RlKiBuZXdDaGlsZCkKIHsKICAgICBBU1NFUlQobmV3
Q2hpbGQpOwotICAgIEFTU0VSVCghbmV3Q2hpbGQtPnBhcmVudCgpKTsgLy8gVXNlIGluc2VydEJl
Zm9yZSBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERPTSBtdXRh
dGlvbiBldmVudHMpLgorICAgIEFTU0VSVCghbmV3Q2hpbGQtPnBhcmVudE5vZGUoKSk7IC8vIFVz
ZSBpbnNlcnRCZWZvcmUgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQgd2Fu
dCBET00gbXV0YXRpb24gZXZlbnRzKS4KICAgICBBU1NFUlQoIW5ld0NoaWxkLT5uZXh0U2libGlu
ZygpKTsKICAgICBBU1NFUlQoIW5ld0NoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSk7CiAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhjZQogewogICAgIC8vIENoZWNrIHRo
YXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4g
YmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgot
ICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudCgpKTsKKyAgICBBU1NFUlQocmVmQ291bnQo
KSB8fCBwYXJlbnROb2RlKCkpOwogCiAgICAgZWMgPSAwOwogCkBAIC0zMzQsNyArMzM0LDcgQEAg
Ym9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChjaGls
ZC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIEFkZCBjaGlsZCB0byB0aGUg
cmVuZGVyaW5nIHRyZWUKLSAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hl
ZCgpICYmIGNoaWxkLT5wYXJlbnQoKSA9PSB0aGlzKSB7CisgICAgICAgIGlmIChhdHRhY2hlZCgp
ICYmICFjaGlsZC0+YXR0YWNoZWQoKSAmJiBjaGlsZC0+cGFyZW50Tm9kZSgpID09IHRoaXMpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRMYXp5QXR0YWNoKQogICAgICAgICAgICAgICAgIGNoaWxk
LT5sYXp5QXR0YWNoKCk7CiAgICAgICAgICAgICBlbHNlCkBAIC0zOTEsNyArMzkxLDcgQEAgYm9v
bCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIu
CiAgICAgLy8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Yg
c2VuZGluZyBtdXRhdGlvbiBldmVudHMuCi0gICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50
KCkpOworICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE5vZGUoKSk7CiAKICAgICBlYyA9
IDA7CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBibwogewogICAg
IC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgogICAgIC8vIElmIGl0
IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRp
b24gZXZlbnRzLgotICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudCgpKTsKKyAgICBBU1NF
UlQocmVmQ291bnQoKSB8fCBwYXJlbnROb2RlKCkpOwogCiAgICAgZWMgPSAwOwogCkBAIC02MDQs
NyArNjA0LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAgICAgbm90aWZ5Q2hpbGRJ
bnNlcnRlZChjaGlsZCk7CiAKICAgICAgICAgLy8gQWRkIGNoaWxkIHRvIHRoZSByZW5kZXJpbmcg
dHJlZQotICAgICAgICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkgJiYgY2hp
bGQtPnBhcmVudCgpID09IHRoaXMpIHsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxk
LT5hdHRhY2hlZCgpICYmIGNoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcykgewogICAgICAgICAg
ICAgaWYgKHNob3VsZExhenlBdHRhY2gpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRh
Y2goKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTYyNCw3ICs2MjQsNyBAQCBib29sIENvbnRhaW5l
ck5vZGU6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmIGVjLCBibwogdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkKQogewogICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgQVNTRVJUKCFu
ZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFu
ZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KKyAgICBBU1NF
UlQoIW5ld0NoaWxkLT5wYXJlbnROb2RlKCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5l
ZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4K
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcAppbmRleCA5MDEyYjY4ODliOWFiNWU3MjQxY2MxZTM4ZDg0YTNjMzhkOTUyY2Ez
Li5lZDRiOTZjNzc0YzcwM2Y4YjdkNTIzY2Y1ZDVmYWU1YzEyNmUzZGZhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlw
ZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudFR5cGU6OmNs
b25lTm9kZShib29sIC8qZGVlcCovKQogdm9pZCBEb2N1bWVudFR5cGU6Omluc2VydGVkSW50b0Rv
Y3VtZW50KCkKIHsKICAgICAvLyBPdXIgZG9jdW1lbnQgbm9kZSBjYW4gYmUgbnVsbCBpZiB3ZSB3
ZXJlIGNyZWF0ZWQgYnkgYSBET01JbXBsZW1lbnRhdGlvbi4gIFdlIHVzZSB0aGUgcGFyZW50KCkg
aW5zdGVhZC4KLSAgICBBU1NFUlQocGFyZW50KCkgJiYgcGFyZW50KCktPmlzRG9jdW1lbnROb2Rl
KCkpOwotICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNEb2N1bWVudE5vZGUoKSkgewot
ICAgICAgICBEb2N1bWVudCogZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnQoKSk7
CisgICAgQVNTRVJUKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzRG9jdW1lbnROb2Rl
KCkpOworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc0RvY3VtZW50Tm9k
ZSgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHBh
cmVudE5vZGUoKSk7CiAgICAgICAgIGlmICghZG9jLT5kb2N0eXBlKCkpCiAgICAgICAgICAgICBk
b2MtPnNldERvY1R5cGUodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBmNjM1MzAwNzM0ZTNlYWMy
YmFjNDViNjQ2YzdjYzM3OTY1MzIzYTU1Li4yMTM3ZjhkM2IxNTIyMTczZDE1NWQ2YWViZTc0ZWUx
ZmIxNjBkMjFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUwNyw3ICsxNTA3LDcgQEAgQXRvbWljU3RyaW5nIEVs
ZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiAgICAgICAgICAgICB2YWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4obiktPmNvbnRlbnRMYW5ndWFnZSgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFy
ZW50Tm9kZSgpOwogICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcAppbmRleCA2MWMzNWU4NTRmMDU4ZmZhMzE3ZGM1ZDE4ODRhNzVmNzgwOTNiNmEyLi4w
NzI2NTZlYjQzMWQzM2ZkZDUyNGI1NDg2YzQwNGM3M2Y3OWJjZTdhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6
cmVjZWl2ZWRUYXJnZXQoKQogICAgIC8vIHdlIHNob3VsZCB0ZXN0IGFuZCBmaXggdGhpcy4KICAg
ICBOb2RlKiBuID0gdGFyZzsKICAgICB3aGlsZSAobiAmJiAhbi0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIGlm
IChuKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xv
c2luZ0xheWVyKCk7CiAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9uKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKaW5kZXggOGMwMzIyNDA1MGFjYzYwMzk4MWIyNTkzY2FiZWYyODllZWJlYjE2MS4uZDU2NjEz
ZTc3YjlkMjE3ZjM2MmY0MjMxZjQ3OWM1ODYxNWVlNjE1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtNzUxLDEz
ICs3NTEsMTMgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKLSAgICAgICAgcmV0dXJu
IG1fb2Zmc2V0ID09IDAgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUoKS0+cGFyZW50KCkp
OworICAgICAgICByZXR1cm4gIW1fb2Zmc2V0ICYmICFub2RlSXNVc2VyU2VsZWN0Tm9uZShub2Rl
KCktPnBhcmVudE5vZGUoKSk7CiAKICAgICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKQogICAgICAg
ICByZXR1cm4gIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUoKSkgJiYgaW5SZW5kZXJlZFRleHQo
KTsKIAogICAgIGlmIChpc1RhYmxlRWxlbWVudChub2RlKCkpIHx8IGVkaXRpbmdJZ25vcmVzQ29u
dGVudChub2RlKCkpKQotICAgICAgICByZXR1cm4gKGF0Rmlyc3RFZGl0aW5nUG9zaXRpb25Gb3JO
b2RlKCkgfHwgYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpKSAmJiAhbm9kZUlzVXNlclNl
bGVjdE5vbmUobm9kZSgpLT5wYXJlbnQoKSk7CisgICAgICAgIHJldHVybiAoYXRGaXJzdEVkaXRp
bmdQb3NpdGlvbkZvck5vZGUoKSB8fCBhdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkpICYm
ICFub2RlSXNVc2VyU2VsZWN0Tm9uZShub2RlKCktPnBhcmVudE5vZGUoKSk7CiAKICAgICBpZiAo
bV9hbmNob3JOb2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCmluZGV4IGQyYzNhM2YwY2Y0ZTBmMDNiNDBkYjU0NmQ5
OWFmMTEwMmNkNTE0NzYuLjc2N2U3MDU5YzlkMDgxMTg1NzRlNjRjZTBmOTZlNDdjMzU4NGM0M2Qg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBib29sIFBv
c2l0aW9uSXRlcmF0b3I6OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKHJlbmRlcmVyLT5pc0JSKCkpCi0gICAgICAgIHJldHVybiAhbV9vZmZzZXRJ
bkFuY2hvciAmJiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25lKG1fYW5jaG9yTm9kZS0+
cGFyZW50KCkpOworICAgICAgICByZXR1cm4gIW1fb2Zmc2V0SW5BbmNob3IgJiYgIVBvc2l0aW9u
Ojpub2RlSXNVc2VyU2VsZWN0Tm9uZShtX2FuY2hvck5vZGUtPnBhcmVudE5vZGUoKSk7CiAKICAg
ICBpZiAocmVuZGVyZXItPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gIVBvc2l0aW9uOjpub2Rl
SXNVc2VyU2VsZWN0Tm9uZShtX2FuY2hvck5vZGUpICYmIFBvc2l0aW9uKCp0aGlzKS5pblJlbmRl
cmVkVGV4dCgpOwogCiAgICAgaWYgKGlzVGFibGVFbGVtZW50KG1fYW5jaG9yTm9kZSkgfHwgZWRp
dGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZSkpCi0gICAgICAgIHJldHVybiAoYXRTdGFy
dE9mTm9kZSgpIHx8IGF0RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVj
dE5vbmUobV9hbmNob3JOb2RlLT5wYXJlbnQoKSk7CisgICAgICAgIHJldHVybiAoYXRTdGFydE9m
Tm9kZSgpIHx8IGF0RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5v
bmUobV9hbmNob3JOb2RlLT5wYXJlbnROb2RlKCkpOwogCiAgICAgaWYgKCFtX2FuY2hvck5vZGUt
Pmhhc1RhZ05hbWUoaHRtbFRhZykgJiYgcmVuZGVyZXItPmlzQmxvY2tGbG93KCkpIHsKICAgICAg
ICAgaWYgKHRvUmVuZGVyQmxvY2socmVuZGVyZXIpLT5oZWlnaHQoKSB8fCBtX2FuY2hvck5vZGUt
Pmhhc1RhZ05hbWUoYm9keVRhZykpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9BcHBl
bmROb2RlQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuY3Bw
CmluZGV4IGVlZWNkZDJjYmNiY2FkODM0ZmVjNmVmYTQxODkzZTllZmQ5OWJmMzQuLjU4ZjdmYTYy
MGJhOTE3NmIxNjdjOGMwNTgwMGMxOTc3NzRmMDI1YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5v
ZGVDb21tYW5kLmNwcApAQCAtMzgsNyArMzgsNyBAQCBBcHBlbmROb2RlQ29tbWFuZDo6QXBwZW5k
Tm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBwYXJlbnQsIFBhc3NSZWZQdHI8Tm9kZQog
ewogICAgIEFTU0VSVChtX3BhcmVudCk7CiAgICAgQVNTRVJUKG1fbm9kZSk7Ci0gICAgQVNTRVJU
KCFtX25vZGUtPnBhcmVudCgpKTsKKyAgICBBU1NFUlQoIW1fbm9kZS0+cGFyZW50Tm9kZSgpKTsK
IAogICAgIEFTU0VSVChtX3BhcmVudC0+aXNDb250ZW50RWRpdGFibGUoKSB8fCAhbV9wYXJlbnQt
PmF0dGFjaGVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXgg
NGUxYzczMzU2NjE1NjRmZmQxNzJmMDhjY2MxNzY3OTg0MmQyMDlmYi4uYzRhYWFjOGZlMWQ1MTE2
ZjNmN2U1MTRhYjBiMjUwMzhlYzY5YmJlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCkBAIC03NDQsOSArNzQ0LDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlS
ZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbgogc3RhdGlj
IE5vZGUqIGR1bW15U3BhbkFuY2VzdG9yRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAg
IHdoaWxlIChub2RlICYmICFpc1N0eWxlU3Bhbihub2RlKSkKLSAgICAgICAgbm9kZSA9IG5vZGUt
PnBhcmVudCgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIAotICAg
IHJldHVybiBub2RlID8gbm9kZS0+cGFyZW50KCkgOiAwOworICAgIHJldHVybiBub2RlID8gbm9k
ZS0+cGFyZW50Tm9kZSgpIDogMDsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6Y2xlYW51
cFVuc3R5bGVkQXBwbGVTdHlsZVNwYW5zKE5vZGUqIGR1bW15U3BhbkFuY2VzdG9yKQpAQCAtNzc4
LDcgKzc3OCw3IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmNlc3Rv
cnNXaXRoVW5pY29kZUJpZGkoTm9kZSogbm9kZSwgYm9vbCBiCiAgICAgTm9kZSogaGlnaGVzdEFu
Y2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKICAgICBOb2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9y
V2l0aFVuaWNvZGVCaWRpID0gMDsKICAgICBpbnQgaGlnaGVzdEFuY2VzdG9yVW5pY29kZUJpZGkg
PSAwOwotICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudCgpOyBuICE9IGJsb2NrOyBuID0g
bi0+cGFyZW50KCkpIHsKKyAgICBmb3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4g
IT0gYmxvY2s7IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaW50IHVuaWNvZGVCaWRp
ID0gZ2V0SWRlbnRpZmllclZhbHVlKGNvbXB1dGVkU3R5bGUobikuZ2V0KCksIENTU1Byb3BlcnR5
VW5pY29kZUJpZGkpOwogICAgICAgICBpZiAodW5pY29kZUJpZGkgJiYgdW5pY29kZUJpZGkgIT0g
Q1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgICAgIGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRp
ID0gdW5pY29kZUJpZGk7CkBAIC04MDUsMTIgKzgwNSwxMiBAQCBIVE1MRWxlbWVudCogQXBwbHlT
dHlsZUNvbW1hbmQ6OnNwbGl0QW5jZXN0b3JzV2l0aFVuaWNvZGVCaWRpKE5vZGUqIG5vZGUsIGJv
b2wgYgogICAgIC8vIFNwbGl0IGV2ZXJ5IGFuY2VzdG9yIHRocm91Z2ggaGlnaGVzdCBhbmNlc3Rv
ciB3aXRoIGVtYmVkZGluZy4KICAgICBOb2RlKiBuID0gbm9kZTsKICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obi0+cGFy
ZW50KCkpOworICAgICAgICBFbGVtZW50KiBwYXJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bi0+cGFyZW50Tm9kZSgpKTsKICAgICAgICAgaWYgKGJlZm9yZSA/IG4tPnByZXZpb3VzU2libGlu
ZygpIDogbi0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIHNwbGl0RWxlbWVudChwYXJlbnQs
IGJlZm9yZSA/IG4gOiBuLT5uZXh0U2libGluZygpKTsKICAgICAgICAgaWYgKHBhcmVudCA9PSBo
aWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIH0K
ICAgICByZXR1cm4gdW5zcGxpdEFuY2VzdG9yOwogfQpAQCAtODIyLDggKzgyMiw4IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUVtYmVkZGluZ1VwVG9FbmNsb3NpbmdCbG9jayhOb2Rl
KiBub2RlLCBOb2RlKiB1bnNwCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIHBhcmVudCA9
IDA7Ci0gICAgZm9yIChOb2RlKiBuID0gbm9kZS0+cGFyZW50KCk7IG4gIT0gYmxvY2sgJiYgbiAh
PSB1bnNwbGl0QW5jZXN0b3I7IG4gPSBwYXJlbnQpIHsKLSAgICAgICAgcGFyZW50ID0gbi0+cGFy
ZW50KCk7CisgICAgZm9yIChOb2RlKiBuID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBuICE9IGJsb2Nr
ICYmIG4gIT0gdW5zcGxpdEFuY2VzdG9yOyBuID0gcGFyZW50KSB7CisgICAgICAgIHBhcmVudCA9
IG4tPnBhcmVudE5vZGUoKTsKICAgICAgICAgaWYgKCFuLT5pc1N0eWxlZEVsZW1lbnQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC04NTQsNyArODU0LDcgQEAgdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKE5vZGUqIG5vZGUsIE5v
ZGUqIHVuc3AKIAogc3RhdGljIE5vZGUqIGhpZ2hlc3RFbWJlZGRpbmdBbmNlc3RvcihOb2RlKiBz
dGFydE5vZGUsIE5vZGUqIGVuY2xvc2luZ05vZGUpCiB7Ci0gICAgZm9yIChOb2RlKiBuID0gc3Rh
cnROb2RlOyBuICYmIG4gIT0gZW5jbG9zaW5nTm9kZTsgbiA9IG4tPnBhcmVudCgpKSB7CisgICAg
Zm9yIChOb2RlKiBuID0gc3RhcnROb2RlOyBuICYmIG4gIT0gZW5jbG9zaW5nTm9kZTsgbiA9IG4t
PnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIGdldElk
ZW50aWZpZXJWYWx1ZShjb21wdXRlZFN0eWxlKG4pLmdldCgpLCBDU1NQcm9wZXJ0eVVuaWNvZGVC
aWRpKSA9PSBDU1NWYWx1ZUVtYmVkKQogICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgfQpAQCAt
MTYyMCwxMSArMTYyMCwxMSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVt
ZW50QXRFbmQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdAogICAgIFRleHQqIHRl
eHQgPSBzdGF0aWNfY2FzdDxUZXh0Kj4oZW5kLm5vZGUoKSk7CiAgICAgc3BsaXRUZXh0Tm9kZUNv
bnRhaW5pbmdFbGVtZW50KHRleHQsIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAot
ICAgIE5vZGUqIHByZXZOb2RlID0gdGV4dC0+cGFyZW50KCktPnByZXZpb3VzU2libGluZygpLT5s
YXN0Q2hpbGQoKTsKKyAgICBOb2RlKiBwcmV2Tm9kZSA9IHRleHQtPnBhcmVudE5vZGUoKS0+cHJl
dmlvdXNTaWJsaW5nKCktPmxhc3RDaGlsZCgpOwogICAgIEFTU0VSVChwcmV2Tm9kZSk7CiAgICAg
Tm9kZSogc3RhcnROb2RlID0gc3RhcnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBwcmV2Tm9kZSA6
IHN0YXJ0Lm5vZGUoKTsKICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICB1cGRhdGVTdGFydEVu
ZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQ
b3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50KCksIHByZXZOb2RlLT5ub2RlSW5kZXgoKSArIDEpKTsK
KyAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50Tm9kZSgpLCBwcmV2Tm9k
ZS0+bm9kZUluZGV4KCkgKyAxKSk7CiB9CiAKIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNob3Vs
ZFNwbGl0VGV4dEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIHN0eWxlKQpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFu
ZDo6bWVyZ2VTdGFydFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uICZzdGFy
dCwKICAgICAgICAgaWYgKHN0YXJ0Lm5vZGUoKS0+cHJldmlvdXNTaWJsaW5nKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgc3RhcnROb2RlID0gc3RhcnQubm9kZSgpLT5w
YXJlbnQoKTsKKyAgICAgICAgc3RhcnROb2RlID0gc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCk7
CiAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKICAgICB9CiAKQEAgLTE3MzAsMTEgKzE3MzAsMTEg
QEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKGNv
bnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QKICAgICAgICAgaWYgKGVuZE9mZnNldCA8IGNhcmV0
TWF4T2Zmc2V0KGVuZE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHVuc2lnbmVkIHBhcmVudExhc3RPZmZzZXQgPSBlbmQubm9kZSgpLT5wYXJlbnQoKS0+Y2hpbGRO
b2RlcygpLT5sZW5ndGgoKSAtIDE7CisgICAgICAgIHVuc2lnbmVkIHBhcmVudExhc3RPZmZzZXQg
PSBlbmQubm9kZSgpLT5wYXJlbnROb2RlKCktPmNoaWxkTm9kZXMoKS0+bGVuZ3RoKCkgLSAxOwog
ICAgICAgICBpZiAoZW5kLm5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBlbmROb2RlID0gZW5kLm5vZGUoKS0+cGFyZW50KCk7CisgICAg
ICAgIGVuZE5vZGUgPSBlbmQubm9kZSgpLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGVuZE9mZnNl
dCA9IHBhcmVudExhc3RPZmZzZXQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAppbmRleCA1NTc5YjI1MGM3ZTg5Y2E4NmY2YjU5OTYyMDU3ZTQ2OGQ3NjI5
MjQ3Li4wNmNmZDJiMWQ1NmNjNzVhMjQ0Mzk3YjRkN2Q0OTZkODc5NzZkZmFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTExODUsMTcgKzExODUsMTcgQEAg
UGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c3BsaXRUcmVlVG9Ob2RlKE5v
ZGUqIHN0YXJ0LCBOb2RlKiBlbmQsIGIKICAgICBBU1NFUlQoc3RhcnQgIT0gZW5kKTsKIAogICAg
IFJlZlB0cjxOb2RlPiBub2RlOwotICAgIGZvciAobm9kZSA9IHN0YXJ0OyBub2RlICYmIG5vZGUt
PnBhcmVudCgpICE9IGVuZDsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmICgh
bm9kZS0+cGFyZW50KCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICBmb3IgKG5vZGUgPSBzdGFydDsg
bm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkgIT0gZW5kOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgIGlmICghbm9kZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uSW5Q
YXJlbnQoUG9zaXRpb24obm9kZS0+cGFyZW50KCksIDApLCBET1dOU1RSRUFNKTsKKyAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uSW5QYXJlbnQoUG9zaXRpb24obm9kZS0+cGFyZW50Tm9k
ZSgpLCAwKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbklu
Tm9kZShQb3NpdGlvbihub2RlLCAwKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgIGlmIChwb3NpdGlv
bkluUGFyZW50ICE9IHBvc2l0aW9uSW5Ob2RlKQotICAgICAgICAgICAgYXBwbHlDb21tYW5kVG9D
b21wb3NpdGUoU3BsaXRFbGVtZW50Q29tbWFuZDo6Y3JlYXRlKHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlLT5wYXJlbnQoKSksIG5vZGUpKTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29t
cG9zaXRlKFNwbGl0RWxlbWVudENvbW1hbmQ6OmNyZWF0ZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bm9kZS0+cGFyZW50Tm9kZSgpKSwgbm9kZSkpOwogICAgIH0KICAgICBpZiAoc3BsaXRBbmNlc3Rv
cikgewogICAgICAgICBzcGxpdEVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuZCksIG5v
ZGUpOwotICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50KCk7CisgICAgICAgIHJldHVybiBub2Rl
LT5wYXJlbnROb2RlKCk7CiAgICAgfQogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1NmRlYWMzMjFk
M2ZlOGNjYzAzZWUzNmY2NGQ5ZjM2NTY1NTEyMzkyLi5iNjE3YTI3ZWFjMTc4NTg0ZWIyNTU0NGVh
OTYxZjNhMTdmMDgzMGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JO
b2RlUmVtb3ZhbChOb2RlKiBub2RlLCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKHBv
c2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKG5vZGUtPnBhcmVudCgp
ID09IHBvc2l0aW9uLm5vZGUoKSAmJiBub2RlLT5ub2RlSW5kZXgoKSA8ICh1bnNpZ25lZClwb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQorICAgIGlmIChub2RlLT5wYXJlbnROb2Rl
KCkgPT0gcG9zaXRpb24ubm9kZSgpICYmIG5vZGUtPm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKXBv
c2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpCiAgICAgICAgIHBvc2l0aW9uID0gUG9z
aXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
IC0gMSk7CiAgICAgaWYgKHBvc2l0aW9uLm5vZGUoKSA9PSBub2RlIHx8IHBvc2l0aW9uLm5vZGUo
KS0+aXNEZXNjZW5kYW50T2Yobm9kZSkpCiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUobm9kZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGM2NzBlODdhMWJhNDU2MTkz
M2E3MjRmOTJmZTFhNTE3OGMwOTBjNTQuLjUzMGVkMzZjZjMyOGI2MzNmOGRmYmM5YTNjMGQ5ZWU2
ODY3OWUwMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgV3JpdGluZ0RpcmVj
dGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYgaGFzTmVzdGVkT3JN
dWx0aXBsZUVtYmUKICAgICBOb2RlKiBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKG5vZGUpOwogICAg
IFdyaXRpbmdEaXJlY3Rpb24gZm91bmREaXJlY3Rpb24gPSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
bjsKIAotICAgIGZvciAoOyBub2RlICE9IGJsb2NrOyBub2RlID0gbm9kZS0+cGFyZW50KCkpIHsK
KyAgICBmb3IgKDsgbm9kZSAhPSBibG9jazsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewog
ICAgICAgICBpZiAoIW5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRz
Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQuY3BwCmluZGV4IGExY2I3OWZhMTBhMTViNGY0YmMyN2U3MDRkODhmOThhZmM5ODcyZjAuLmZm
NTlmNDk0YTBkMTAxYjAwMmNlZWQ4ZTRjMDhiZGMyNTA4MTIzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29y
ZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcApAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAg
ICAgUmVmUHRyPE5vZGU+IGF0Q2hpbGQgPSBtX2F0Q2hpbGQucmVsZWFzZSgpOwogCi0gICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50KCk7CisgICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAKaW5kZXggZjhmMDJiOTRhMTc3NDcwZTQ4NDc0YmM1ZDEyY2I0YTZk
MmE4ZDdjZi4uZDA4YWMyZTZiYTgxYjEwMjY4OWExOTExNDY0ZGE0OWU5ZjgxNWJhNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCkBAIC04NDMsNyArODQzLDcgQEAgYm9vbCBpc0VtcHR5VGFibGVD
ZWxsKGNvbnN0IE5vZGUqIG5vZGUpCiAKICAgICAvLyBGaW5kIHJlbmRlcmVkIG5vZGUKICAgICB3
aGlsZSAobm9kZSAmJiAhbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudCgpOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDQxN2RlNzFhMWRh
NGQ4MjdlODQ3Njc4OTEyMDNmMzU1MzM3ZDU0MDIuLjRjYmRjY2VlZWM1OGE0NGNlMjc2MTEyYWRj
NDUyMTIzODBkNGU5NWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisr
KyBiL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgTm9kZSog
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogcGFzdEVuZCkKICAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIG5leHRQYXJlbnQgPSBu
ZXh0ID8gbmV4dC0+cGFyZW50Tm9kZSgpIDogMDsKICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBh
c3RFbmQgJiYgbiAhPSBuZXh0UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbGFzdEFu
Y2VzdG9yQ2xvc2VkT3JTZWxmID0gbi0+aXNEZXNjZW5kYW50T2YobGFzdENsb3NlZCkgPyBsYXN0
Q2xvc2VkIDogbjsKLSAgICAgICAgICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IGxhc3RBbmNlc3RvckNsb3NlZE9yU2VsZi0+cGFyZW50KCk7IHBhcmVudCAmJiBwYXJlbnQgIT0g
bmV4dFBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RBbmNlc3RvckNsb3NlZE9yU2Vs
Zi0+cGFyZW50Tm9kZSgpOyBwYXJlbnQgJiYgcGFyZW50ICE9IG5leHRQYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBhbmNl
c3RvcnMgdGhhdCBhcmVuJ3QgaW4gdGhlIGFuY2VzdG9yc1RvQ2xvc2UgbGlzdCBzaG91bGQgZWl0
aGVyIGJlIGEpIHVucmVuZGVyZWQ6CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW50LT5y
ZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5jcHAKaW5kZXggZDZlMWE2ZWQxODc5ZGU5OWI5NWJiMDQzZjJhNTE1MmVlYzVm
ODA5YS4uN2Q0NjM3NGJjNjQyYWM2M2E4NDcxMTg5MDAwNmFiMWUyNGQ2NjVjYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91c0xpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlv
biwgaW50CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVh
ZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlvbih4IC0gYWJzUG9zLngoKSwgaXNFZGl0YWJsZVBv
c2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7CiAgICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkK
LSAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnQoKSwgbm9kZS0+bm9kZUlu
ZGV4KCkpOworICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwg
bm9kZS0+bm9kZUluZGV4KCkpOwogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9y
UG9pbnQoSW50UG9pbnQoeCAtIGFic1Bvcy54KCksIHJvb3QtPmxpbmVUb3AoKSkpOwogICAgIH0K
ICAgICAKQEAgLTcxNSw3ICs3MTUsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IHgpCiAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSByb290LT5jbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNh
bExlZnRQb3NpdGlvbih4IC0gYWJzUG9zLngoKSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVu
ZGVyZXIoKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CiAgICAgICAg
IGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKLSAgICAgICAgICAgIHJl
dHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnQoKSwgbm9kZS0+bm9kZUluZGV4KCkpOworICAgICAg
ICAgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4
KCkpOwogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQo
eCAtIGFic1Bvcy54KCksIHJvb3QtPmxpbmVUb3AoKSkpOwogICAgIH0gICAgCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKaW5kZXggMDE1NWJjZTBhZmYyOTlmODJmZWEwZTI3NWEzZTNhNjg4N2Jl
Y2FkNy4uY2ViZmRhMmUzNWFjNGIxZTczMThkNDc3MjRhYTc5N2I1YzA5MWFiNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYXRoIEhUTUxBcmVhRWxlbWVu
dDo6Z2V0UmVnaW9uKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiAKIEhUTUxJbWFnZUVsZW1l
bnQqIEhUTUxBcmVhRWxlbWVudDo6aW1hZ2VFbGVtZW50KCkgY29uc3QKIHsKLSAgICBOb2RlKiBt
YXBFbGVtZW50ID0gcGFyZW50KCk7CisgICAgTm9kZSogbWFwRWxlbWVudCA9IHBhcmVudE5vZGUo
KTsKICAgICBpZiAoIW1hcEVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBiYzRiZjA3OTBlYWVhMTE3N2E1MDRj
NWZkYzhhOTM5NmUwYTIwYTllLi40ZGNmOTk4Y2UwZGJmMThjOGI1ZjkwYjA0NGZmNjBmOTkwYjg4
ODVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEhUTUxFbGVt
ZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykK
IAogdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTm9kZSogcCA9IHBhcmVudCgpOworICAgIE5vZGUqIHAg
PSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwIHx8ICFwLT5pc0hUTUxFbGVtZW50KCkpIHsKICAg
ICAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTUwNyw3ICs1MDcsNyBAQCBOb2RlKiBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29u
c3QgU3RyaW5nJiB3aGVyZSwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbgogICAgIC8vIE9wZXJh
IGFsc28gYXBwZWFycyB0byBkaXNhbGxvdyBzdWNoIHVzYWdlLgogCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHdoZXJlLCAiYmVmb3JlQmVnaW4iKSkgewotICAgICAgICBDb250YWluZXJOb2Rl
KiBwYXJlbnQgPSB0aGlzLT5wYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
ID0gdGhpcy0+cGFyZW50Tm9kZSgpOwogICAgICAgICByZXR1cm4gKHBhcmVudCAmJiBwYXJlbnQt
Pmluc2VydEJlZm9yZShuZXdDaGlsZCwgdGhpcywgZWMpKSA/IG5ld0NoaWxkIDogMDsKICAgICB9
CiAKQEAgLTUxOCw3ICs1MTgsNyBAQCBOb2RlKiBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQo
Y29uc3QgU3RyaW5nJiB3aGVyZSwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbgogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjKSA/IG5ld0NoaWxkIDogMDsKIAogICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh3aGVyZSwgImFmdGVyRW5kIikpIHsKLSAgICAgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gdGhpcy0+cGFyZW50KCk7CisgICAgICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IHRoaXMtPnBhcmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIChwYXJlbnQgJiYg
cGFyZW50LT5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIG5leHRTaWJsaW5nKCksIGVjKSkgPyBuZXdD
aGlsZCA6IDA7CiAgICAgfQogICAgIApAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgSFRNTEVsZW1l
bnQ6OmFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVu
dCwgQXR0cmliCiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogewot
ICAgIHJldHVybiBFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgfHwgKGlzQ29udGVudEVkaXRhYmxl
KCkgJiYgcGFyZW50KCkgJiYgIXBhcmVudCgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKTsKKyAgICBy
ZXR1cm4gRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIHx8IChpc0NvbnRlbnRFZGl0YWJsZSgpICYm
IHBhcmVudE5vZGUoKSAmJiAhcGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKTsKIH0K
IAogYm9vbCBIVE1MRWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdCAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmNwcAppbmRleCBjNGYwMDdjNDU4ODZjZmUzMWQ5NDNhYzVmYmU3Y2FiMzEy
NWQ0ODllLi5kZjk3MjgwNzM4ZTc2Y2Y0NWVjYTRiYTJmOWFiMWE0ZmY1NmVlMjZlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgdm9pZCBIVE1MRW1iZWRF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAgU3RyaW5nIHdpZHRoID0gZ2V0QXR0
cmlidXRlKHdpZHRoQXR0cik7CiAgICAgU3RyaW5nIGhlaWdodCA9IGdldEF0dHJpYnV0ZShoZWln
aHRBdHRyKTsKICAgICBpZiAoIXdpZHRoLmlzRW1wdHkoKSB8fCAhaGVpZ2h0LmlzRW1wdHkoKSkg
ewotICAgICAgICBOb2RlKiBuID0gcGFyZW50KCk7CisgICAgICAgIE5vZGUqIG4gPSBwYXJlbnRO
b2RlKCk7CiAgICAgICAgIHdoaWxlIChuICYmICFuLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0g
ICAgICAgICAgICBuID0gbi0+cGFyZW50KCk7CisgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9k
ZSgpOwogICAgICAgICBpZiAobikgewogICAgICAgICAgICAgaWYgKCF3aWR0aC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihuKS0+c2V0
QXR0cmlidXRlKHdpZHRoQXR0ciwgd2lkdGgpOwpAQCAtMjQ3LDkgKzI0Nyw5IEBAIHZvaWQgSFRN
TEVtYmVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJl
c2VydmVEZWNscykKICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHIsIHByZXNlcnZlRGVjbHMpOwogCiAgICAgaWYgKChhdHRyLT5uYW1lKCkgPT0gd2lkdGhB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSAmJiAhYXR0ci0+aXNFbXB0eSgpKSB7
Ci0gICAgICAgIE5vZGUqIG4gPSBwYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogbiA9
IHBhcmVudE5vZGUoKTsKICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmhhc1RhZ05hbWUob2JqZWN0
VGFnKSkKLSAgICAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIG4gPSBuLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRN
TE9iamVjdEVsZW1lbnQqPihuKS0+c2V0QXR0cmlidXRlKGF0dHItPm5hbWUoKSwgYXR0ci0+dmFs
dWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGY2MzQ0ZDQ0YjU2
ZjdiNTIxY2E3OGI4NDFjZjc3Zjg0ZDRmNzkwMDMuLmU1NTQ2MjAzMzQ5M2JlOGQxNzhjY2JlZjZh
NTNiMzVmZjBhN2I2NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTIwNSw3ICsy
MDUsNyBAQCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRS
b3coaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50OwogICAgIGlmIChsYXN0Um93KQotICAgICAgICBwYXJlbnQgPSByb3cgPyByb3ctPnBhcmVu
dCgpIDogbGFzdFJvdy0+cGFyZW50KCk7CisgICAgICAgIHBhcmVudCA9IHJvdyA/IHJvdy0+cGFy
ZW50Tm9kZSgpIDogbGFzdFJvdy0+cGFyZW50Tm9kZSgpOwogICAgIGVsc2UgewogICAgICAgICBw
YXJlbnQgPSBsYXN0Qm9keSgpOwogICAgICAgICBpZiAoIXBhcmVudCkgewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggYjM4YzI3MTkwNDkxNWJhZTFlZTRkNTU4
MTQxYzk2NjhkMzZlZjM4Ni4uMjAxNDNkOWI1OWU4MmM1YjU5MTA2MzEyMjJmOWY1YjFhMDYwZWMx
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0zOSwxNyAr
MzksMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNJbkhl
YWQoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgpICYmIHN0YXRpY19j
YXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRoZWFkVGFnKTsKKyAg
ICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJvdy0+
cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRoZWFkVGFnKTsKIH0KIAogc3RhdGljIGJvb2wg
aXNJbkJvZHkoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgpICYmIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRib2R5VGFn
KTsKKyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRib2R5VGFnKTsKIH0KIAogc3RhdGlj
IGJvb2wgaXNJbkZvb3QoRWxlbWVudCogcm93KQogewotICAgIHJldHVybiByb3ctPnBhcmVudCgp
ICYmIHN0YXRpY19jYXN0PEVsZW1lbnQqPihyb3ctPnBhcmVudCgpKS0+aGFzTG9jYWxOYW1lKHRm
b290VGFnKTsKKyAgICByZXR1cm4gcm93LT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHJvdy0+cGFyZW50Tm9kZSgpKS0+aGFzTG9jYWxOYW1lKHRmb290VGFnKTsKIH0KIAog
SFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhU
TUxUYWJsZUVsZW1lbnQqIHRhYmxlLCBIVE1MVGFibGVSb3dFbGVtZW50KiBwcmV2aW91cykKQEAg
LTU4LDcgKzU4LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlLAogCiAgICAgLy8gU3RhcnQgYnkg
bG9va2luZyBmb3IgdGhlIG5leHQgcm93IGluIHRoaXMgc2VjdGlvbi4KICAgICAvLyBDb250aW51
ZSBvbmx5IGlmIHRoZXJlIGlzIG5vbmUuCi0gICAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzLT5w
YXJlbnQoKSAhPSB0YWJsZSkgeworICAgIGlmIChwcmV2aW91cyAmJiBwcmV2aW91cy0+cGFyZW50
Tm9kZSgpICE9IHRhYmxlKSB7CiAgICAgICAgIGZvciAoY2hpbGQgPSBwcmV2aW91cy0+bmV4dFNp
YmxpbmcoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAg
ICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh0clRhZykpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihjaGlsZCk7CkBAIC02OSw3ICs2OSw3
IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRl
cihIVE1MVGFibGVFbGVtZW50KiB0YWJsZSwKICAgICBpZiAoIXByZXZpb3VzKQogICAgICAgICBj
aGlsZCA9IHRhYmxlLT5maXJzdENoaWxkKCk7CiAgICAgZWxzZSBpZiAoaXNJbkhlYWQocHJldmlv
dXMpKQotICAgICAgICBjaGlsZCA9IHByZXZpb3VzLT5wYXJlbnQoKS0+bmV4dFNpYmxpbmcoKTsK
KyAgICAgICAgY2hpbGQgPSBwcmV2aW91cy0+cGFyZW50Tm9kZSgpLT5uZXh0U2libGluZygpOwog
ICAgIGZvciAoOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAg
ICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGhlYWRUYWcpKSB7CiAgICAgICAgICAgICBmb3IgKE5v
ZGUqIGdyYW5kY2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBncmFuZGNoaWxkOyBncmFuZGNo
aWxkID0gZ3JhbmRjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtODIsMTAgKzgyLDEwIEBAIEhU
TUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1M
VGFibGVFbGVtZW50KiB0YWJsZSwKICAgICAvLyBJZiBzdGlsbCBsb29raW5nIGF0IHRvcCBsZXZl
bCBhbmQgYm9kaWVzLCBmaW5kIHRoZSBuZXh0IHJvdyBpbiB0b3AgbGV2ZWwgb3IgdGhlIGZpcnN0
IGluIHRoZSBuZXh0IGJvZHkgc2VjdGlvbi4KICAgICBpZiAoIXByZXZpb3VzIHx8IGlzSW5IZWFk
KHByZXZpb3VzKSkKICAgICAgICAgY2hpbGQgPSB0YWJsZS0+Zmlyc3RDaGlsZCgpOwotICAgIGVs
c2UgaWYgKHByZXZpb3VzLT5wYXJlbnQoKSA9PSB0YWJsZSkKKyAgICBlbHNlIGlmIChwcmV2aW91
cy0+cGFyZW50Tm9kZSgpID09IHRhYmxlKQogICAgICAgICBjaGlsZCA9IHByZXZpb3VzLT5uZXh0
U2libGluZygpOwogICAgIGVsc2UgaWYgKGlzSW5Cb2R5KHByZXZpb3VzKSkKLSAgICAgICAgY2hp
bGQgPSBwcmV2aW91cy0+cGFyZW50KCktPm5leHRTaWJsaW5nKCk7CisgICAgICAgIGNoaWxkID0g
cHJldmlvdXMtPnBhcmVudE5vZGUoKS0+bmV4dFNpYmxpbmcoKTsKICAgICBmb3IgKDsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNU
YWdOYW1lKHRyVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGFibGVS
b3dFbGVtZW50Kj4oY2hpbGQpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1l
bnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVtZW50KiB0
YWJsZSwKICAgICBpZiAoIXByZXZpb3VzIHx8ICFpc0luRm9vdChwcmV2aW91cykpCiAgICAgICAg
IGNoaWxkID0gdGFibGUtPmZpcnN0Q2hpbGQoKTsKICAgICBlbHNlCi0gICAgICAgIGNoaWxkID0g
cHJldmlvdXMtPnBhcmVudCgpLT5uZXh0U2libGluZygpOworICAgICAgICBjaGlsZCA9IHByZXZp
b3VzLT5wYXJlbnROb2RlKCktPm5leHRTaWJsaW5nKCk7CiAgICAgZm9yICg7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFt
ZSh0Zm9vdFRhZykpIHsKICAgICAgICAgICAgIGZvciAoTm9kZSogZ3JhbmRjaGlsZCA9IGNoaWxk
LT5maXJzdENoaWxkKCk7IGdyYW5kY2hpbGQ7IGdyYW5kY2hpbGQgPSBncmFuZGNoaWxkLT5uZXh0
U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKaW5kZXgg
ZjcyMTdlYjBjOTk2ODVlMmRiNGQ5NjEzN2FmYTI3MDI1MDljYWUxMy4uMjdlYWY1MTNlYzZmZDM5
ZjQ5YmE3YWYyYWEyZTAxMDU2ZTMwZjIyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIGludCBIVE1MVmlld1NvdXJjZURvY3VtZW50
OjphZGRSYW5nZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0LCBpbnQgZW5kLCBjCiAg
ICAgfQogICAgIGFkZFRleHQodGV4dCwgY2xhc3NOYW1lKTsKICAgICBpZiAoIWNsYXNzTmFtZS5p
c0VtcHR5KCkgJiYgbV9jdXJyZW50ICE9IG1fdGJvZHkpCi0gICAgICAgIG1fY3VycmVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBhcmVudCgpKTsKKyAgICAgICAgbV9jdXJy
ZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVudC0+cGFyZW50Tm9kZSgpKTsKICAg
ICByZXR1cm4gZW5kOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAgYi9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggYzRmMGIxNDA0YmNl
MzVmODE1YzAwYWVmMDg1NmIzNjdhOGQwYTY1Yy4uYWY2Njc5NWNjN2VhNzNlZjJhZDY4Y2YwNjk3
ODY4MDYxZWIzYzgzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMjExLDcgKzIxMSw3IEBA
IHZvaWQgTWVkaWFEb2N1bWVudDo6cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoVGltZXI8
TWVkaWFEb2N1bWVudD4qKQogICAgICAgICBlbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBl
QXR0ciwgZnJhbWUoKS0+bG9hZGVyKCktPndyaXRlcigpLT5taW1lVHlwZSgpKTsKIAogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICB2aWRlb0VsZW1lbnQtPnBhcmVudCgpLT5yZXBs
YWNlQ2hpbGQoZW1iZWRFbGVtZW50LCB2aWRlb0VsZW1lbnQsIGVjKTsKKyAgICAgICAgdmlkZW9F
bGVtZW50LT5wYXJlbnROb2RlKCktPnJlcGxhY2VDaGlsZChlbWJlZEVsZW1lbnQsIHZpZGVvRWxl
bWVudCwgZWMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAppbmRleCA3MjAxYWM3Zjc0YWMzM2IzMmJiNzFjZWNhOTNlMjk0NDA3OWI5
ZTQwLi5jNDZiOWI5YmU5ZjZiZDc2YWIzY2JmNTlkZDFhMzQ1ZTk2NTk4NTRkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBQYXNzUmVmUHRyPENoaWxkVHlwZT4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFjaChDb250
YWluZXJOb2RlKiBwYXJlbnQsIFBhc3NSZQogICAgIC8vIGRvZXNuJ3QuICBJdCBmZWVscyBsaWtl
IHdlJ3JlIG1pc3NpbmcgYSBjb25jZXB0IHNvbWVob3cuCiAgICAgaWYgKHNob3VsZEZvc3RlclBh
cmVudCgpKSB7CiAgICAgICAgIGZvc3RlclBhcmVudChjaGlsZC5nZXQoKSk7Ci0gICAgICAgIEFT
U0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVudCgpIHx8ICFjaGlsZC0+cGFy
ZW50KCktPmF0dGFjaGVkKCkpOworICAgICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwg
IWNoaWxkLT5wYXJlbnROb2RlKCkgfHwgIWNoaWxkLT5wYXJlbnROb2RlKCktPmF0dGFjaGVkKCkp
OwogICAgICAgICByZXR1cm4gY2hpbGQucmVsZWFzZSgpOwogICAgIH0KIApAQCAtNDM0LDcgKzQz
NCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmZpbmRGb3N0ZXJTaXRlKEF0dGFjaG1l
bnRTaXRlJiBzaXRlKQogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIGxhc3RU
YWJsZUVsZW1lbnRSZWNvcmQgPSBtX29wZW5FbGVtZW50cy50b3Btb3N0KHRhYmxlVGFnLmxvY2Fs
TmFtZSgpKTsKICAgICBpZiAobGFzdFRhYmxlRWxlbWVudFJlY29yZCkgewogICAgICAgICBFbGVt
ZW50KiBsYXN0VGFibGVFbGVtZW50ID0gbGFzdFRhYmxlRWxlbWVudFJlY29yZC0+ZWxlbWVudCgp
OwotICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbGFzdFRhYmxlRWxlbWVudC0+
cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9IGxhc3RUYWJs
ZUVsZW1lbnQtPnBhcmVudE5vZGUoKSkgewogICAgICAgICAgICAgc2l0ZS5wYXJlbnQgPSBwYXJl
bnQ7CiAgICAgICAgICAgICBzaXRlLm5leHRDaGlsZCA9IGxhc3RUYWJsZUVsZW1lbnQ7CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5k
ZXggM2UxNWEyNjQwODNiMmQzNGEyMTQ4YmE4YWFmYjc5NTE3ZmRhYTVkMi4uM2QzOTEzMWQ5YTVl
NjU5ZjZkMGQ5NDczMWZmZmYxMzRjOTIyYTgxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIEhUTUxGb3JtRWxlbWVudCogY2xvc2Vz
dEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQogICAgIHdoaWxlIChlbGVtZW50KSB7CiAg
ICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGZvcm1UYWcpKQogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICBOb2Rl
KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnQoKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZSogcGFy
ZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIXBhcmVudCB8fCAhcGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAppbmRleCA4ZWU1ZGZmOWE3MDYxMzY5NGQxZDU2MWZmYTBlMWM2ZDRmM2I0ZTk4Li4yODY2
MDE5Nzg2NjkxMjYzMTIzM2FiZjRlNDI3NDZkNjZlZWY5NWEyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcApAQCAtNDY0LDI1ICs0NjQsMjUgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2QKICAg
ICAgICAgICAgICAgICBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IGNhbmRpZGF0
ZVBhcmVudC5ub2RlOwogCiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50
KG91dGVyKSkgewotICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KG91dGVyLT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgaWYg
KERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4ob3V0ZXItPnBhcmVu
dE5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxh
YmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25lckVsZW1lbnQoKSk7CiAK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShvdXRlci0+
cGFyZW50KCkpKQotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxl
Qm94ID0gb3V0ZXItPnBhcmVudCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFi
bGVDb250YWluZXJOb2RlKG91dGVyLT5wYXJlbnROb2RlKCkpKQorICAgICAgICAgICAgICAgIGNh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudE5vZGUoKTsKIAog
ICAgICAgICAgICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNh
bmRpZGF0ZS4KICAgICAgICAgICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1
c2VkTm9kZSwgY2FuZGlkYXRlKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgZGlzdGFu
Y2UgaXMgbWF4aW11bS4KICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPT0gbWF4
RGlzdGFuY2UoKSkgewotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRO
b2RlKG91dGVyLT5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZl
cnNlTmV4dE5vZGUob3V0ZXItPnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZD
bG9zZXIoZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZSwgY2xvc2VzdCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50KCkpOworICAg
ICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShvdXRlci0+cGFyZW50Tm9kZSgpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApp
bmRleCBhZGFhYzAzMmQ2OTA1Y2RkZjRjMDgzZjZkMjE2Y2Y2MWYzNDkyMTQ0Li4xYWYxYjgwYWZl
NWZjYmMwZTk2OWMxZDcxYzEwMTIzMmJmODkwYzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBNZWRpYUNvbnRy
b2xFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBB
U1NFUlQoZG9jdW1lbnQoKS0+cGFnZSgpKTsKIAotICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChzdHlsZSkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPnJlbmRlcmVy
KCkKKyAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpICYm
IHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCkKICAgICAgICAgJiYgKCFz
dHlsZS0+aGFzQXBwZWFyYW5jZSgpIHx8IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+c2hv
dWxkUmVuZGVyTWVkaWFDb250cm9sUGFydChzdHlsZS0+YXBwZWFyYW5jZSgpLCBtX21lZGlhRWxl
bWVudCkpOwogfQogICAgIApAQCAtMTgzLDEyICsxODMsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xF
bGVtZW50OjphdHRhY2goKQogICAgICAgICByZXR1cm47CiAgICAgcmVuZGVyZXItPnNldFN0eWxl
KHN0eWxlLmdldCgpKTsKICAgICBzZXRSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgaWYgKHBhcmVu
dCgpICYmIHBhcmVudCgpLT5yZW5kZXJlcigpKSB7CisgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBw
YXJlbnROb2RlKCktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gRmluZCBuZXh0IHNpYmxpbmcg
d2l0aCBhIHJlbmRlcmVyIHRvIGRldGVybWluZSB3aGVyZSB0byBpbnNlcnQuCiAgICAgICAgIE5v
ZGUqIHNpYmxpbmcgPSBuZXh0U2libGluZygpOwogICAgICAgICB3aGlsZSAoc2libGluZyAmJiAh
c2libGluZy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0
U2libGluZygpOwotICAgICAgICBwYXJlbnQoKS0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVy
ZXIsIHNpYmxpbmcgPyBzaWJsaW5nLT5yZW5kZXJlcigpIDogMCk7CisgICAgICAgIHBhcmVudE5v
ZGUoKS0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIsIHNpYmxpbmcgPyBzaWJsaW5nLT5y
ZW5kZXJlcigpIDogMCk7CiAgICAgfQogICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwogfQpA
QCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6dXBkYXRlU3R5bGUo
KQogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgbmVlZHNSZW5k
ZXJlciA9IHJlbmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpICYmIHBhcmVudCgpICYmIHBhcmVu
dCgpLT5yZW5kZXJlcigpOworICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJlbmRlcmVySXNOZWVk
ZWQoc3R5bGUuZ2V0KCkpICYmIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVy
KCk7CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIW5lZWRzUmVuZGVyZXIpCiAgICAgICAgIGRldGFj
aCgpOwogICAgIGVsc2UgaWYgKCFyZW5kZXJlcigpICYmIG5lZWRzUmVuZGVyZXIpCkBAIC00MTYs
NyArNDE2LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIEFTU0VSVChkb2N1bWVudCgpLT5wYWdlKCkp
OwogCi0gICAgcmV0dXJuIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
ICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5yZW5kZXJlcigpCisgICAgcmV0dXJuIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpICYmIHBhcmVudE5vZGUoKSAmJiBwYXJl
bnROb2RlKCktPnJlbmRlcmVyKCkKICAgICAgICAgJiYgKCFzdHlsZS0+aGFzQXBwZWFyYW5jZSgp
IHx8IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+c2hvdWxkUmVuZGVyTWVkaWFDb250cm9s
UGFydChzdHlsZS0+YXBwZWFyYW5jZSgpLCBtZWRpYUVsZW1lbnQoKSkpOwogfQogCkBAIC00MzQs
MTIgKzQzNCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6YXR0YWNoKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIHJlbmRlcmVyLT5zZXRTdHlsZShzdHlsZS5nZXQoKSk7CiAgICAg
c2V0UmVuZGVyZXIocmVuZGVyZXIpOwotICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+cmVu
ZGVyZXIoKSkgeworICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgIC8vIEZpbmQgbmV4dCBzaWJsaW5nIHdpdGggYSByZW5kZXJlciB0byBk
ZXRlcm1pbmUgd2hlcmUgdG8gaW5zZXJ0LgogICAgICAgICBOb2RlKiBzaWJsaW5nID0gbmV4dFNp
YmxpbmcoKTsKICAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgIXNpYmxpbmctPnJlbmRlcmVyKCkp
CiAgICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAg
cGFyZW50KCktPnJlbmRlcmVyKCktPmFkZENoaWxkKHJlbmRlcmVyLCBzaWJsaW5nID8gc2libGlu
Zy0+cmVuZGVyZXIoKSA6IDApOworICAgICAgICBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCktPmFk
ZENoaWxkKHJlbmRlcmVyLCBzaWJsaW5nID8gc2libGluZy0+cmVuZGVyZXIoKSA6IDApOwogICAg
IH0gIAogICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwogfQpAQCAtNDUzLDcgKzQ1Myw3IEBA
IHZvaWQgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojp1cGRhdGVTdHlsZSgpCiAgICAgaWYgKCFz
dHlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJl
bmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5yZW5k
ZXJlcigpOworICAgIGJvb2wgbmVlZHNSZW5kZXJlciA9IHJlbmRlcmVySXNOZWVkZWQoc3R5bGUu
Z2V0KCkpICYmIHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPnJlbmRlcmVyKCk7CiAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgIW5lZWRzUmVuZGVyZXIpCiAgICAgICAgIGRldGFjaCgpOwogICAg
IGVsc2UgaWYgKCFyZW5kZXJlcigpICYmIG5lZWRzUmVuZGVyZXIpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAppbmRleCBhNWU1ODA4ODYxNzUzYzcxOTdmMzU3
NGRhNWRmYzNhMDhiODEzMmE1Li4wOTRmYzdmZTA2YWM1OTg0MGMwZmJjZGFhMzZiYmI3NWFlMDA0
MDdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVudFN0b3Au
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJTVkdHcmFkaWVudFN0b3A6OmxheW91dCgpCiAKIFNW
R0dyYWRpZW50RWxlbWVudCogUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpncmFkaWVudEVsZW1lbnQo
KSBjb25zdAogewotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlKCktPnBhcmVu
dCgpOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlKCktPnBhcmVudE5vZGUo
KTsKICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZShsaW5lYXJHcmFkaWVudFRhZykgfHwg
cGFyZW50Tm9kZS0+aGFzVGFnTmFtZShyYWRpYWxHcmFkaWVudFRhZykpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdHcmFkaWVudEVsZW1lbnQqPihwYXJlbnROb2RlKTsKICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1dlYkNvcmUv
c3ZnL1NWR0FFbGVtZW50LmNwcAppbmRleCA4ZTQyOWQwNTlkMjQwM2NkMWRkMzJkNTUwODhkMmYz
ZTQ1NjI5ZmRlLi44ZTBlNTZlOGUwN2FmODkyNGMwYWU0YjUxODRmODQ3YTNmNjZhYzQxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyT2Jq
ZWN0KiBTVkdBRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCiB7Ci0gICAgaWYgKHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQoKSkt
PmlzVGV4dENvbnRlbnQoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhcmVu
dE5vZGUoKSktPmlzVGV4dENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR0lubGluZSh0aGlzKTsKIAogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwpAQCAtMjA3LDggKzIwNyw4IEBAIGJvb2wgU1ZH
QUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiAg
ICAgLy8gVGhlICdhJyBlbGVtZW50IG1heSBjb250YWluIGFueSBlbGVtZW50IHRoYXQgaXRzIHBh
cmVudCBtYXkgY29udGFpbiwgZXhjZXB0IGl0c2VsZi4KICAgICBpZiAoY2hpbGQtPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmFUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHBhcmVu
dCgpICYmIHBhcmVudCgpLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHBhcmVudCgp
LT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKKyAgICBpZiAocGFyZW50Tm9kZSgp
ICYmIHBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnRO
b2RlKCktPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogCiAgICAgcmV0dXJuIFNW
R0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRkVM
aWdodEVsZW1lbnQuY3BwCmluZGV4IDMxNWFhMjkwOWJiNjYxMzAzYTJmNTdhNmE1ZDg2MWI1YTc1
YzMzMmYuLjdmZWQ3NzRmNDU5NjhjNzdlNWEwNmQ0N2Q2YTFmYjMxOWJhNzRmYzggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9T
VkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBTVkdGRUxpZ2h0RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIKICAgICAgICAg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyCiAgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpIHsKLSAgICAgICAg
aWYgKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnQoKSkgewotICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAg
IGlmIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUo
KSkKICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKICAgICAgICAgfQpAQCAtMTMxLDgg
KzEzMSw4IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNo
YW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlCiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKIAogICAgIGlmICghY2hhbmdlZEJ5UGFyc2VyKSB7Ci0gICAgICAgIGlm
IChDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50KCkpIHsKLSAgICAgICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnROb2RlLT5yZW5kZXJlcigpOworICAgICAgICBp
ZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkp
CiAgICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlTm9kZUVsZW1lbnQuY3BwCmluZGV4IGVlMWFjM2E3ZjE2ODk4NjgyM2U4NmU3ZmRmMzM5
ZWY1YzRkN2M3ZDYuLjU0YmIyZmU0ZTFmZDAxMzE4YzdiYjE3ODAwYjg2MjcwOTg1MTVmN2EgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcApAQCAtNTUsMTEgKzU1LDExIEBAIHZv
aWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChhdHRyTmFtZSAhPSBTVkdOYW1lczo6aW5BdHRy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gcGFy
ZW50KCk7Ci0gICAgaWYgKCFwYXJlbnROb2RlKQorICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudE5vZGUtPnJlbmRlcmVyKCk7CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCBmODM4MWJmMGI0MWRjM2ZkYzljYzVjMDlj
YjgwOWVmMjlkYWFiZjFhLi44MTY4Y2Y2ZDQ4MzQ2Y2ViNzE4MDkzZjBlN2YyOTYxMjRiYzJjMDA4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCisrKyBiL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNWR0xlbmd0aDo6ZGV0ZXJt
aW5lVmlld3BvcnQoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgZmxvYXQmIHdpZHRoLCBmbG9h
dAogICAgIH0KICAgICAKICAgICAvLyBSZXNvbHZlIHZhbHVlIGFnYWluc3QgZW5jbG9zaW5nIG5v
bi1TVkcgUmVuZGVyQm94Ci0gICAgaWYgKCFjb250ZXh0LT5wYXJlbnQoKSB8fCBjb250ZXh0LT5w
YXJlbnQoKS0+aXNTVkdFbGVtZW50KCkpCisgICAgaWYgKCFjb250ZXh0LT5wYXJlbnROb2RlKCkg
fHwgY29udGV4dC0+cGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvbnRleHQtPnJlbmRlcmVy
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDY0MDMwYmM2ODVhZGM0NWVmNTZhZmNk
Zjg2YzZiMTI1N2I5MmMzYWUuLmQ1ZWY0ODY4OTE2NzdlMGI3NmJmNzdmYWY1NDU2YmE0ZWE2Mjlm
NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zNjIsMTQgKzM2MiwxNCBAQCB2b2lk
IFNWR1N0eWxlZEVsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wg
aGFzUmVsYXRpdmVMZW5ndGhzLAogICAgIH0KIAogICAgIC8vIEZpbmQgZmlyc3Qgc3R5bGVkIHBh
cmVudCBub2RlLCBhbmQgbm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBvdXIgcmVsYXRpdmUg
bGVuZ3RoIHN0YXRlLgotICAgIE5vZGUqIG5vZGUgPSBwYXJlbnQoKTsKKyAgICBDb250YWluZXJO
b2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOwogICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlm
ICghbm9kZS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBT
VkdFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG5vZGUpOwogICAg
ICAgICBpZiAoIWVsZW1lbnQtPmlzU3R5bGVkKCkpIHsKLSAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnQoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDNm
YmMyMmViZDVjMGE4ZDJlZDUzOGJjZWU4ZTRlM2U5NTNlZDYxMTkuLmE2OTMzNGM4MDkyYzU1NjQ1
YzMyNzU0YTNlNDI4MmFlMjBhMDNkM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC03NDUsNyAr
NzQ1LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9t
U3VidHJlZShOb2RlKiBzdWJ0cmVlKQogICAgICAgICBpZiAoaXNEaXNhbGxvd2VkRWxlbWVudChu
b2RlKSkgewogICAgICAgICAgICAgTm9kZSogbmV4dCA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxp
bmcoc3VidHJlZSk7CiAgICAgICAgICAgICAvLyBUaGUgc3VidHJlZSBpcyBub3QgaW4gZG9jdW1l
bnQgc28gdGhpcyB3b24ndCBnZW5lcmF0ZSBldmVudHMgdGhhdCBjb3VsZCBtdXRhdGUgdGhlIHRy
ZWUuCi0gICAgICAgICAgICBub2RlLT5wYXJlbnQoKS0+cmVtb3ZlQ2hpbGQobm9kZSwgZWMpOwor
ICAgICAgICAgICAgbm9kZS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLCBlYyk7CiAg
ICAgICAgICAgICBub2RlID0gbmV4dDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShzdWJ0cmVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDY3NTdmZWU1ZjAzYjc0NDMwNzNjNzUwMjZkZjBmNTA1
MTE0YTQwNWIuLjQ0MWNmYzNjZTBhNDM2MmNiY2NlOWU4NzNlM2U3MmI3MDYyZjViZTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICBTVkdFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogI2lmbmRlZiBOREVCVUcKICAgICAvLyBWZXJp
Znkgd2UgYXJlIG5vdCBpbiA8dXNlPiBpbnN0YW5jZSB0cmVlLgotICAgIGZvciAoTm9kZSogbiA9
IHRoaXM7IG47IG4gPSBuLT5wYXJlbnQoKSkKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG4gPSB0
aGlzOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKQogICAgICAgICBBU1NFUlQoIW4tPmlzU2hhZG93
Tm9kZSgpKTsKICNlbmRpZgogICAgIFNWR1NWR0VsZW1lbnQqIG93bmVyID0gb3duZXJTVkdFbGVt
ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwIGIvV2ViQ29y
ZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRleCBiYTk0MjNlYzg3YzJhMDE0M2U0N2Y3NWQ0YTM1
MTdlN2Q2YzlmNzg4Li5hOGU0NDI4NjI5ZWZiNjU1OWQxZGFmYjQwY2YyNTFhMjY3MjQwYjNkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1dlYkNvcmUveG1s
L1hQYXRoTm9kZVNldC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE5vZGVTZXQ6OnNvcnQo
KSBjb25zdAogICAgICAgICAgICAgcGFyZW50c1ZlY3Rvci5hcHBlbmQobik7CiAgICAgICAgICAg
ICBjb250YWluc0F0dHJpYnV0ZU5vZGVzID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB3aGls
ZSAoKG4gPSBuLT5wYXJlbnQoKSkpCisgICAgICAgIHdoaWxlICgobiA9IG4tPnBhcmVudE5vZGUo
KSkpCiAgICAgICAgICAgICBwYXJlbnRzVmVjdG9yLmFwcGVuZChuKTsKICAgICB9CiAgICAgc29y
dEJsb2NrKDAsIG5vZGVDb3VudCwgcGFyZW50TWF0cml4LCBjb250YWluc0F0dHJpYnV0ZU5vZGVz
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAgYi9XZWJDb3JlL3htbC9Y
UGF0aFN0ZXAuY3BwCmluZGV4IGRkZDhjM2NmZjgxYTMxMWUwNzA5YjI3M2YyZjMyYWQ1ZTQ4ZGQw
OGMuLmQ4MmNkNTA1NjJmMjdhNWNmNDJjMjBmMWNlM2YxOThiMWJlOGI4MDQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmNw
cApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgU3RlcDo6bm9kZXNJbkF4aXMoTm9kZSogY29udGV4
dCwgTm9kZVNldCYgbm9kZXMpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHN0YXRp
Y19jYXN0PEF0dHIqPihjb250ZXh0KS0+b3duZXJFbGVtZW50KCk7CiAKICAgICAgICAgICAgIE5v
ZGUqIG4gPSBjb250ZXh0OwotICAgICAgICAgICAgd2hpbGUgKE5vZGUqIHBhcmVudCA9IG4tPnBh
cmVudCgpKSB7CisgICAgICAgICAgICB3aGlsZSAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbi0+
cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChuID0gbi0+dHJhdmVyc2VQcmV2
aW91c05vZGUoKTsgbiAhPSBwYXJlbnQ7IG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKQog
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU1hdGNoZXMobiwgUHJlY2VkaW5nQXhpcywgbV9u
b2RlVGVzdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQobik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMwN2MyMWNjZGZiZGFjZDk3MzQ0MzE1
ZWE5MjQyMmUyNTk0ZWZmZC4uNDY5Y2I2NDM0NDUzMDNhZDllMTJiMjQ4NzU1YmExZDVhMjk1MmU3
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBi
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IHN0YXRpYyB2b2lkIGZyZWVYc2x0UGFyYW1BcnJheShjb25zdCBjaGFyKiogcGFyYW1zKQogc3Rh
dGljIHhzbHRTdHlsZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UG9pbnRlcihSZWZQdHI8WFNMU3R5
bGVTaGVldD4mIGNhY2hlZFN0eWxlc2hlZXQsIE5vZGUqIHN0eWxlc2hlZXRSb290Tm9kZSkKIHsK
ICAgICBpZiAoIWNhY2hlZFN0eWxlc2hlZXQgJiYgc3R5bGVzaGVldFJvb3ROb2RlKSB7Ci0gICAg
ICAgIGNhY2hlZFN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUoc3R5bGVzaGVldFJv
b3ROb2RlLT5wYXJlbnQoKSA/IHN0eWxlc2hlZXRSb290Tm9kZS0+cGFyZW50KCkgOiBzdHlsZXNo
ZWV0Um9vdE5vZGUsCisgICAgICAgIGNhY2hlZFN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0Ojpj
cmVhdGUoc3R5bGVzaGVldFJvb3ROb2RlLT5wYXJlbnROb2RlKCkgPyBzdHlsZXNoZWV0Um9vdE5v
ZGUtPnBhcmVudE5vZGUoKSA6IHN0eWxlc2hlZXRSb290Tm9kZSwKICAgICAgICAgICAgIHN0eWxl
c2hlZXRSb290Tm9kZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksCiAgICAgICAgICAgICBz
dHlsZXNoZWV0Um9vdE5vZGUtPmRvY3VtZW50KCktPnVybCgpKTsgLy8gRklYTUU6IFNob3VsZCB3
ZSB1c2UgYmFzZVVSTCBoZXJlPwogICAgICAgICBjYWNoZWRTdHlsZXNoZWV0LT5wYXJzZVN0cmlu
ZyhjcmVhdGVNYXJrdXAoc3R5bGVzaGVldFJvb3ROb2RlKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZGYw
Y2QzZTljZWY0NjI1NGVlM2FhZDc4YWIyYzlhM2NiZGYyZjAwLi4xODAwZThlOWMyMDg5MWZiNDM3
YWQyYjk3MWViZmY4YmYwM2EyOGY0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
MC0xMS0xNyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcmdlIG1lYW5z
IG9mIHF1ZXJ5aW5nIGEgcGFyZW50IG5vZGUgaW50byBvbmUgd2F5LCB3aGljaCBpcyBOb2RlOjpw
YXJlbnROb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDk2ODYKKworICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUltcGw6Omluc2VydFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lSW1wbDo6c2V0RmluZEVuZHN0YXRlRm9jdXNBbmRTZWxlY3Rpb24pOgorCiAyMDEwLTEx
LTE2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IGM1
YWMyNzVlMjgzMGZlZDg2OGI2ODYxN2Y1MDE0YzE5OWUwNDI3ZDEuLmFkYWFiNjE2OGMyZGMwOGRl
YmNiMjk0ZDhjMjAzMjY2NWFhNDliZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKQEAgLTg0OCw3ICs4NDgsNyBAQCBib29sIFdlYkZyYW1lSW1wbDo6aW5zZXJ0U3R5bGVUZXh0
KAogICAgIGlmICghaWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIEVsZW1lbnQqIG9sZEVsZW1lbnQg
PSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgICBpZiAob2xkRWxlbWVudCkg
ewotICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gb2xkRWxlbWVudC0+cGFyZW50KCk7CisgICAg
ICAgICAgICBOb2RlKiBwYXJlbnQgPSBvbGRFbGVtZW50LT5wYXJlbnROb2RlKCk7CiAgICAgICAg
ICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG9sZEVsZW1lbnQsIGVycik7CkBAIC0yMDA2LDcgKzIw
MDYsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0RmluZEVuZHN0YXRlRm9jdXNBbmRTZWxlY3Rp
b24oKQogICAgICAgICAvLyBleGFtcGxlLCBmb2N1cyBsaW5rcyBpZiB3ZSBoYXZlIGZvdW5kIHRl
eHQgd2l0aGluIHRoZSBsaW5rLgogICAgICAgICBOb2RlKiBub2RlID0gbV9hY3RpdmVNYXRjaC0+
Zmlyc3ROb2RlKCk7CiAgICAgICAgIHdoaWxlIChub2RlICYmICFub2RlLT5pc0ZvY3VzYWJsZSgp
ICYmIG5vZGUgIT0gZnJhbWUoKS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnQoKTsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAKICAg
ICAgICAgaWYgKG5vZGUgJiYgbm9kZSAhPSBmcmFtZSgpLT5kb2N1bWVudCgpKSB7CiAgICAgICAg
ICAgICAvLyBGb3VuZCBhIGZvY3VzYWJsZSBwYXJlbnQgbm9kZS4gU2V0IGZvY3VzIHRvIGl0Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9XZWJLaXQvcXQvQXBp
L3F3ZWJlbGVtZW50LmNwcAppbmRleCA4MTIxMTExNGRhYmJmMWFkNTg0Njc4M2M3ZDdiMzg0Yjlk
NWI1ZDRlLi44ZjQwYzBmZjdlOWI1MWMwZTIxNDI1NWVjMzIyNDVlMDc1MzdlNTg1IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcApAQCAtMTA5MiwxMSArMTA5MiwxMSBAQCB2b2lkIFFXZWJFbGVtZW50Ojpw
cmVwZW5kT3V0c2lkZShjb25zdCBRV2ViRWxlbWVudCAmZWxlbWVudCkKICAgICBpZiAoIW1fZWxl
bWVudCB8fCBlbGVtZW50LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
ZWxlbWVudC0+cGFyZW50KCkpCisgICAgaWYgKCFtX2VsZW1lbnQtPnBhcmVudE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwotICAgIG1f
ZWxlbWVudC0+cGFyZW50KCktPmluc2VydEJlZm9yZShlbGVtZW50Lm1fZWxlbWVudCwgbV9lbGVt
ZW50LCBleGNlcHRpb24pOworICAgIG1fZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pbnNlcnRCZWZv
cmUoZWxlbWVudC5tX2VsZW1lbnQsIG1fZWxlbWVudCwgZXhjZXB0aW9uKTsKIH0KIAogLyohCkBA
IC0xMTExLDcgKzExMTEsNyBAQCB2b2lkIFFXZWJFbGVtZW50OjpwcmVwZW5kT3V0c2lkZShjb25z
dCBRU3RyaW5nICZtYXJrdXApCiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV9lbGVtZW50LT5wYXJlbnQoKSkKKyAgICBpZiAoIW1fZWxlbWVudC0+cGFy
ZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpKQpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBRV2ViRWxlbWVudDo6cHJlcGVu
ZE91dHNpZGUoY29uc3QgUVN0cmluZyAmbWFya3VwKQogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGh0bWxFbGVtZW50LT5kZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZy
YWdtZW50KG1hcmt1cCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7Ci0gICAg
bV9lbGVtZW50LT5wYXJlbnQoKS0+aW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBtX2VsZW1lbnQsIGV4
Y2VwdGlvbik7CisgICAgbV9lbGVtZW50LT5wYXJlbnROb2RlKCktPmluc2VydEJlZm9yZShmcmFn
bWVudCwgbV9lbGVtZW50LCBleGNlcHRpb24pOwogfQogCiAvKiEKQEAgLTExMzksMTQgKzExMzks
MTQgQEAgdm9pZCBRV2ViRWxlbWVudDo6YXBwZW5kT3V0c2lkZShjb25zdCBRV2ViRWxlbWVudCAm
ZWxlbWVudCkKICAgICBpZiAoIW1fZWxlbWVudCB8fCBlbGVtZW50LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIW1fZWxlbWVudC0+cGFyZW50KCkpCisgICAgaWYgKCFtX2Vs
ZW1lbnQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb24gPSAwOwogICAgIGlmICghbV9lbGVtZW50LT5uZXh0U2libGluZygpKQotICAg
ICAgICBtX2VsZW1lbnQtPnBhcmVudCgpLT5hcHBlbmRDaGlsZChlbGVtZW50Lm1fZWxlbWVudCwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgbV9lbGVtZW50LT5wYXJlbnROb2RlKCktPmFwcGVuZENoaWxk
KGVsZW1lbnQubV9lbGVtZW50LCBleGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgbV9lbGVt
ZW50LT5wYXJlbnQoKS0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBtX2VsZW1lbnQt
Pm5leHRTaWJsaW5nKCksIGV4Y2VwdGlvbik7CisgICAgICAgIG1fZWxlbWVudC0+cGFyZW50Tm9k
ZSgpLT5pbnNlcnRCZWZvcmUoZWxlbWVudC5tX2VsZW1lbnQsIG1fZWxlbWVudC0+bmV4dFNpYmxp
bmcoKSwgZXhjZXB0aW9uKTsKIH0KIAogLyohCkBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lkIFFX
ZWJFbGVtZW50OjphcHBlbmRPdXRzaWRlKGNvbnN0IFFTdHJpbmcgJm1hcmt1cCkKICAgICBpZiAo
IW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2VsZW1lbnQtPnBhcmVu
dCgpKQorICAgIGlmICghbV9lbGVtZW50LT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbV9lbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCkBAIC0xMTcyLDkgKzExNzIs
OSBAQCB2b2lkIFFXZWJFbGVtZW50OjphcHBlbmRPdXRzaWRlKGNvbnN0IFFTdHJpbmcgJm1hcmt1
cCkKIAogICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKICAgICBpZiAoIW1fZWxlbWVu
dC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9lbGVtZW50LT5wYXJlbnQoKS0+YXBwZW5kQ2hp
bGQoZnJhZ21lbnQsIGV4Y2VwdGlvbik7CisgICAgICAgIG1fZWxlbWVudC0+cGFyZW50Tm9kZSgp
LT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIG1f
ZWxlbWVudC0+cGFyZW50KCktPmluc2VydEJlZm9yZShmcmFnbWVudCwgbV9lbGVtZW50LT5uZXh0
U2libGluZygpLCBleGNlcHRpb24pOworICAgICAgICBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKS0+
aW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBtX2VsZW1lbnQtPm5leHRTaWJsaW5nKCksIGV4Y2VwdGlv
bik7CiB9CiAKIC8qIQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgdm9pZCBRV2ViRWxlbWVudDo6ZW5j
bG9zZUNvbnRlbnRzV2l0aChjb25zdCBRU3RyaW5nICZtYXJrdXApCiAgICAgaWYgKCFtX2VsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9lbGVtZW50LT5wYXJlbnQoKSkKKyAg
ICBpZiAoIW1fZWxlbWVudC0+cGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQpAQCAtMTM2MCwxNiArMTM2MCwxNiBAQCB2
b2lkIFFXZWJFbGVtZW50OjplbmNsb3NlV2l0aChjb25zdCBRV2ViRWxlbWVudCAmZWxlbWVudCkK
ICAgICAvLyB3cmFwcGluZyBpdCBpbiB0aGUgZnJhZ21lbnQuIFRoZSByZWFzb24gZm9yIGRvaW5n
IGl0IGluIHRoaXMgb3JkZXIgaXMKICAgICAvLyB0aGF0IG9uY2UgdGhlIGZyYWdtZW50IGhhcyBi
ZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBpdCBpcyBlbXB0eSwgc28KICAgICAvLyB3ZSBubyBs
b25nZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIG5vZGVzIGl0IGNvbnRhaW5lZC4KLSAgICBOb2RlKiBw
YXJlbnROb2RlID0gbV9lbGVtZW50LT5wYXJlbnQoKTsKKyAgICBOb2RlKiBwYXJlbnQgPSBtX2Vs
ZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBOb2RlKiBzaWJsaW5nTm9kZSA9IG1fZWxlbWVudC0+
bmV4dFNpYmxpbmcoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKICAgICBp
bnNlcnRpb25Qb2ludC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LCBleGNlcHRpb24pOwogCiAgICAg
aWYgKCFzaWJsaW5nTm9kZSkKLSAgICAgICAgcGFyZW50Tm9kZS0+YXBwZW5kQ2hpbGQoZWxlbWVu
dC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7CisgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQoZWxl
bWVudC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICBwYXJlbnROb2Rl
LT5pbnNlcnRCZWZvcmUoZWxlbWVudC5tX2VsZW1lbnQsIHNpYmxpbmdOb2RlLCBleGNlcHRpb24p
OworICAgICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShlbGVtZW50Lm1fZWxlbWVudCwgc2libGlu
Z05vZGUsIGV4Y2VwdGlvbik7CiB9CiAKIC8qIQpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgdm9pZCBR
V2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgoY29uc3QgUVN0cmluZyAmbWFya3VwKQogICAgIGlmICgh
bV9lbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZWxlbWVudC0+cGFyZW50
KCkpCisgICAgaWYgKCFtX2VsZW1lbnQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKQEAgLTE0MDQsMTYgKzE0MDQs
MTYgQEAgdm9pZCBRV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgoY29uc3QgUVN0cmluZyAmbWFya3Vw
KQogICAgIC8vIHdyYXBwaW5nIGl0IGluIHRoZSBmcmFnbWVudC4gVGhlIHJlYXNvbiBmb3IgZG9p
bmcgaXQgaW4gdGhpcyBvcmRlciBpcwogICAgIC8vIHRoYXQgb25jZSB0aGUgZnJhZ21lbnQgaGFz
IGJlZW4gYWRkZWQgdG8gdGhlIGRvY3VtZW50IGl0IGlzIGVtcHR5LCBzbwogICAgIC8vIHdlIG5v
IGxvbmdlciBoYXZlIGFjY2VzcyB0byB0aGUgbm9kZXMgaXQgY29udGFpbmVkLgotICAgIE5vZGUq
IHBhcmVudE5vZGUgPSBtX2VsZW1lbnQtPnBhcmVudCgpOworICAgIE5vZGUqIHBhcmVudCA9IG1f
ZWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgIE5vZGUqIHNpYmxpbmdOb2RlID0gbV9lbGVtZW50
LT5uZXh0U2libGluZygpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwogICAg
IGluc2VydGlvblBvaW50LT5hcHBlbmRDaGlsZChtX2VsZW1lbnQsIGV4Y2VwdGlvbik7CiAKICAg
ICBpZiAoIXNpYmxpbmdOb2RlKQotICAgICAgICBwYXJlbnROb2RlLT5hcHBlbmRDaGlsZChmcmFn
bWVudCwgZXhjZXB0aW9uKTsKKyAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChmcmFnbWVudCwg
ZXhjZXB0aW9uKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9yZShm
cmFnbWVudCwgc2libGluZ05vZGUsIGV4Y2VwdGlvbik7CisgICAgICAgIHBhcmVudC0+aW5zZXJ0
QmVmb3JlKGZyYWdtZW50LCBzaWJsaW5nTm9kZSwgZXhjZXB0aW9uKTsKIH0KIAogLyohCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAy
ZjE0YmI0ZDY4NWNhYTFiZjRlMDI1MzQwMTY2OWE2OGU4YjhiODMxLi41M2QwODI3NGZkY2Q1YTdi
ZjZhZDAxNzE3ZWIzZjY1MmRiZWRiNGU1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0xNyAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcmdlIG1lYW5zIG9mIHF1ZXJ5
aW5nIGEgcGFyZW50IG5vZGUgaW50byBvbmUgd2F5LCB3aGljaCBpcyBOb2RlOjpwYXJlbnROb2Rl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2ODYK
KworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6
cHJlcGVuZE91dHNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmFwcGVuZE91dHNpZGUpOgor
ICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2VDb250ZW50c1dpdGgpOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToKKwogMjAxMC0xMS0xNiAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggODI2ODQzMGY2Mzc5ZjMzN2ZmYjFjN2Q1ZGNjZWNlZGZmNDExZjJiZi4uNjE4MjQzMmJj
ZThiOWQ3NWQ5MjM2NTFmNTFkYmI3NzExNGNmZWYyNyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMS0x
NyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcmdlIG1lYW5zIG9mIHF1
ZXJ5aW5nIGEgcGFyZW50IG5vZGUgaW50byBvbmUgd2F5LCB3aGljaCBpcyBOb2RlOjpwYXJlbnRO
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2
ODYKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KToKKwogMjAxMC0xMS0x
NyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGR1cGxpY2F0ZSBXZWIgSW5zcGVjdG9yIG1lc3NhZ2UgaGFuZGVsaW5nIGluIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVNZXNzYWdlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAwNWZkOTI0Yjg3OTQ1NWU2N2JjNTQ1NDlmN2U5MDg2YmQ4Zjc4ZjEwLi5kOWI2YjNiODZiY2Rh
Y2QwMzRkNzRhMWEzMDgxYzQ4ZDAyOWQ5OGIyIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBXZWJQYWdlOjpmaW5kWm9vbWFi
bGVBcmVhRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogCiAgICAgTm9k
ZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5n
ZXRSZWN0KCkud2lkdGgoKSA8IG1pbmltdW1ab29tVGFyZ2V0V2lkdGgpCi0gICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnQoKTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKIAog
ICAgIEludFJlY3Qgem9vbWFibGVBcmVhOwogICAgIGlmIChub2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74178</attachid>
            <date>2010-11-17 16:45:34 -0800</date>
            <delta_ts>2010-11-29 12:04:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49686-20101117164533.patch</filename>
            <type>text/plain</type>
            <size>1415</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDNmY2IwNmIyZWUxZmUwZTA4YTIxODJiYzNkYTgyY2EwYjliODI4NC4uNzQ5OTYxOThlNmU2NjUx
NTE1ODY0MGQ0YzBhMjJjNDIxZDE3YzYwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwyMSBAQAogICAgICAgICBDb252ZXJn
ZSBtZWFucyBvZiBxdWVyeWluZyBhIHBhcmVudCBub2RlIGludG8gb25lIHdheSwgd2hpY2ggaXMg
Tm9kZTo6cGFyZW50Tm9kZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Njg2CiAKKyAgICAgICAgQSBmb2xsb3ctdXAgdG8gcjcyMjU5LCB3aGljaCBl
eHBsaWNpdGx5IGZvcmJpZHMgZnVydGhlciB1c2Ugb2YgTm9kZTo6cGFyZW50IGJ5CisgICAgICAg
IG1ha2luZyBpdCBwcml2YXRlLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgc28g
bm8gbmV3IHRlc3RzLgorCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnBhcmVudCk6IFR1cm5lZCBpbnRvIGEgcHJpdmF0ZSBtZXRob2QuCisKKzIwMTAtMTEt
MTcgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDb252ZXJnZSBtZWFucyBvZiBxdWVy
eWluZyBhIHBhcmVudCBub2RlIGludG8gb25lIHdheSwgd2hpY2ggaXMgTm9kZTo6cGFyZW50Tm9k
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Njg2
CisKICAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyBuZXcgdGVzdHMuCiAKICAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDY3NWRlMDRk
MTlhYWIxYzU1MGE4MzRiNzkxMzliZTA4ZmY2NDk0MDUuLmVkOTNmNWQxMzkyMjU1ZjU2MzMyNWQx
MWQxZjBmMGQyMmNhMmJmNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTY1NSw2ICs2NTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUmVuZGVyU3R5bGUqIHZpcnR1YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8p
OwogCiAgICAgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50KCkgY29uc3Q7CisgICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6
cGFyZW50KCk7IH0KIAogICAgIHZvaWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75050</attachid>
            <date>2010-11-29 12:04:31 -0800</date>
            <delta_ts>2010-11-29 12:37:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49686-20101129120429.patch</filename>
            <type>text/plain</type>
            <size>5582</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmJiYTI4ZjAxNjdkOGI2NTAwN2M3OGM2MWJjODFkM2Q0N2IzYmU1Ni4uNjFhMDZkNDQ5NzgxYmJj
Njc4NGQ4MDdmNTM0NWEzMzk5M2UwMDkzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMS0yOSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcmdlIG1lYW5zIG9mIHF1ZXJ5aW5n
IGEgcGFyZW50IG5vZGUgaW50byBvbmUgd2F5LCB3aGljaCBpcyBOb2RlOjpwYXJlbnROb2RlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2ODYKKwor
ICAgICAgICBBIGZvbGxvdy11cCB0byByNzIyNTksIHdoaWNoIGV4cGxpY2l0bHkgZm9yYmlkcyBm
dXJ0aGVyIHVzZSBvZiBOb2RlOjpwYXJlbnQgYnkKKyAgICAgICAgbWFraW5nIGl0IHByaXZhdGUu
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBzbyBubyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0
eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKTogQ2hhbmdlZCB0byB1c2Ug
cGFyZW50Tm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpob3ZlcmVkTm9kZURldGFj
aGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWN0aXZlQ2hhaW5Ob2Rl
RGV0YWNoZWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBNYWRlIE5vZGU6OnBhcmVu
dCBwcml2YXRlLgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FuQmVTY3JvbGxlZEludG9WaWV3KTogQ2hhbmdlZCB0byB1c2UgcGFyZW50
Tm9kZS4KKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvclF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKTogRGl0dG8uCisKIDIwMTAtMTEt
MjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4M2JhODg1MzgyNGZjNmMx
MDhmMTgxYzdhMmNiNTc0MzcyZjdlYTlkLi4xNjk0YTM3NzU1OTQwNTYwYzdhMGVkZTM4MzE1OGRk
MDUwY2I5NzJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVz
aGVldHMoRWxlbQogCiAgICAgYm9vbCBvbGRJZ25vcmUgPSBtX2lnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0czsKICAgICBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyA9IHRydWU7Ci0gICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KGVs
ZW1lbnQsIGVsZW1lbnQtPnBhcmVudCgpID8gZWxlbWVudC0+cGFyZW50KCktPmNvbXB1dGVkU3R5
bGUoKSA6IDApOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVNlbGVjdG9y
KCktPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCBlbGVtZW50LT5wYXJlbnROb2RlKCkgPyBlbGVt
ZW50LT5wYXJlbnROb2RlKCktPmNvbXB1dGVkU3R5bGUoKSA6IDApOwogICAgIG1faWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzID0gb2xkSWdub3JlOwogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7
CiB9CkBAIC0zMDk2LDI0ICszMDk2LDI0IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUZvY3VzZWRO
b2RlT2ZTdWJ0cmVlKE5vZGUqIG5vZGUsIGJvb2wgYW1vbmdDaGlsZHJlbk9ubHkpCiAKIHZvaWQg
RG9jdW1lbnQ6OmhvdmVyZWROb2RlRGV0YWNoZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW1f
aG92ZXJOb2RlIHx8IChub2RlICE9IG1faG92ZXJOb2RlICYmICghbV9ob3Zlck5vZGUtPmlzVGV4
dE5vZGUoKSB8fCBub2RlICE9IG1faG92ZXJOb2RlLT5wYXJlbnQoKSkpKQorICAgIGlmICghbV9o
b3Zlck5vZGUgfHwgKG5vZGUgIT0gbV9ob3Zlck5vZGUgJiYgKCFtX2hvdmVyTm9kZS0+aXNUZXh0
Tm9kZSgpIHx8IG5vZGUgIT0gbV9ob3Zlck5vZGUtPnBhcmVudE5vZGUoKSkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2hvdmVyTm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAgIG1faG92ZXJO
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHdoaWxlIChtX2hvdmVyTm9kZSAmJiAhbV9o
b3Zlck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIG1faG92ZXJOb2RlID0gbV9ob3Zlck5vZGUt
PnBhcmVudCgpOworICAgICAgICBtX2hvdmVyTm9kZSA9IG1faG92ZXJOb2RlLT5wYXJlbnROb2Rl
KCk7CiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5z
Y2hlZHVsZUhvdmVyU3RhdGVVcGRhdGUoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6YWN0aXZlQ2hh
aW5Ob2RlRGV0YWNoZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoIW1fYWN0aXZlTm9kZSB8fCAo
bm9kZSAhPSBtX2FjdGl2ZU5vZGUgJiYgKCFtX2FjdGl2ZU5vZGUtPmlzVGV4dE5vZGUoKSB8fCBu
b2RlICE9IG1fYWN0aXZlTm9kZS0+cGFyZW50KCkpKSkKKyAgICBpZiAoIW1fYWN0aXZlTm9kZSB8
fCAobm9kZSAhPSBtX2FjdGl2ZU5vZGUgJiYgKCFtX2FjdGl2ZU5vZGUtPmlzVGV4dE5vZGUoKSB8
fCBub2RlICE9IG1fYWN0aXZlTm9kZS0+cGFyZW50Tm9kZSgpKSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fYWN0aXZlTm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAgIG1fYWN0aXZlTm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICB3aGlsZSAobV9hY3RpdmVOb2RlICYmICFtX2FjdGl2
ZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIG1fYWN0aXZlTm9kZSA9IG1fYWN0aXZlTm9kZS0+
cGFyZW50KCk7CisgICAgICAgIG1fYWN0aXZlTm9kZSA9IG1fYWN0aXZlTm9kZS0+cGFyZW50Tm9k
ZSgpOwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDY3NWRlMDRkMTlhYWIx
YzU1MGE4MzRiNzkxMzliZTA4ZmY2NDk0MDUuLjllYTRiYzI0MjIwYTlmMmUwOWJkNGM1YzBhMGFi
MTNlNTBlNDM5N2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTY1NSw2ICs2NTUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVu
ZGVyU3R5bGUqIHZpcnR1YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCiAg
ICAgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50KCkgY29uc3Q7CisgICAgLy8gVXNlIE5vZGU6OnBh
cmVudE5vZGUgYXMgdGhlIGNvbnNpc3RlbnQgd2F5IG9mIHF1ZXJ5aW5nIGEgcGFyZW50IG5vZGUu
CisgICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6cGFyZW50OwogCiAgICAgdm9p
ZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRl
eCBjN2JkYjUxYzczOTEzZGZhYjM3NTRjNTI1MTg2OWU5NmRiNjJlMmU3Li5mZmM2NWI0OGQxODFh
YWUzNmRhZWYyOTUyYTI0ZDViZjk3MWQ3NmY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAKQEAgLTYyNiw3ICs2MjYsNyBAQCBib29sIGNhbkJlU2Nyb2xsZWRJbnRvVmlldyhGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaQogewogICAgIEFT
U0VSVChjYW5kaWRhdGUubm9kZSAmJiBjYW5kaWRhdGUuaXNPZmZzY3JlZW4pOwogICAgIEludFJl
Y3QgY2FuZGlkYXRlUmVjdCA9IGNhbmRpZGF0ZS5yZWN0OwotICAgIGZvciAoTm9kZSogcGFyZW50
Tm9kZSA9IGNhbmRpZGF0ZS5ub2RlLT5wYXJlbnQoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9
IHBhcmVudE5vZGUtPnBhcmVudCgpKSB7CisgICAgZm9yIChOb2RlKiBwYXJlbnROb2RlID0gY2Fu
ZGlkYXRlLm5vZGUtPnBhcmVudE5vZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVu
dE5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBJbnRSZWN0IHBhcmVudFJlY3QgPSBub2Rl
UmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhwYXJlbnROb2RlKTsKICAgICAgICAgaWYgKCFjYW5k
aWRhdGVSZWN0LmludGVyc2VjdHMocGFyZW50UmVjdCkpIHsKICAgICAgICAgICAgIGlmICgoKGRp
cmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkxlZnQgfHwgZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0
aW9uUmlnaHQpICYmIHBhcmVudE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPm92ZXJmbG93WCgp
ID09IE9ISURERU4pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3Bw
IGIvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcAppbmRleCBjYmI4YjM5MTE4MTVhNjdh
Mzc2MDFlOGJkNzczNDFkODY3YTBmZmM2Li5iNjEwMjViOTBjMjNiZWIxNGM3MjgzNTE3OTcxYTFm
NzM2ZTZjNjU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yUXQuY3BwCisr
KyBiL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBi
b29sIFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvU3RyaW5nKE5vZGUqIHNvdXJjZU5vZGUsIFN0
cmluZyYsIFN0cmluZyYgcmVzdWx0UwogICAgIFJlZlB0cjxYU0xTdHlsZVNoZWV0PiBzdHlsZXNo
ZWV0ID0gbV9zdHlsZXNoZWV0OwogICAgIGlmICghc3R5bGVzaGVldCAmJiBtX3N0eWxlc2hlZXRS
b290Tm9kZSkgewogICAgICAgICBOb2RlKiBub2RlID0gbV9zdHlsZXNoZWV0Um9vdE5vZGUuZ2V0
KCk7Ci0gICAgICAgIHN0eWxlc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVGb3JYU0xUUHJv
Y2Vzc29yKG5vZGUtPnBhcmVudCgpID8gbm9kZS0+cGFyZW50KCkgOiBub2RlLAorICAgICAgICBz
dHlsZXNoZWV0ID0gWFNMU3R5bGVTaGVldDo6Y3JlYXRlRm9yWFNMVFByb2Nlc3Nvcihub2RlLT5w
YXJlbnROb2RlKCkgPyBub2RlLT5wYXJlbnROb2RlKCkgOiBub2RlLAogICAgICAgICAgICAgbm9k
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksCiAgICAgICAgICAgICBub2RlLT5kb2N1bWVu
dCgpLT51cmwoKSk7IC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGJhc2VVUkwgaGVyZT8KIAo=
</data>
<flag name="review"
          id="65775"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>