<?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>137704</bug_id>
          
          <creation_ts>2014-10-14 11:21:49 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderInline</short_desc>
          <delta_ts>2014-10-14 17:30:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mihnea</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041616</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 11:21:49 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for RenderInline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041629</commentid>
    <comment_count>1</comment_count>
      <attachid>239812</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 11:45:15 -0700</bug_when>
    <thetext>Created attachment 239812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041630</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 11:48:07 -0700</bug_when>
    <thetext>Attachment 239812 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderInline.cpp:1111:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041703</commentid>
    <comment_count>3</comment_count>
      <attachid>239812</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-14 15:37:44 -0700</bug_when>
    <thetext>Comment on attachment 239812
Patch

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

&gt; Source/WebCore/rendering/InlineFlowBox.cpp:222
&gt; -    toRenderInline(renderer()).lineBoxes().removeLineBox(this);
&gt; +    downcast&lt;RenderInline&gt;(renderer()).lineBoxes().removeLineBox(this);

Seems like renderer() should return a RenderInline&amp; if it’s guaranteed to be one. Maybe there’s some reason not to do this.

&gt; Source/WebCore/rendering/InlineFlowBox.cpp:1011
&gt; +    for (InlineBox* current = lastChild(); current; current = current-&gt;prevOnLine()) {

I think I would have called this “child” instead of “current”. I noticed one like this in a previous patch, and probably should have commented then.

&gt; Source/WebCore/rendering/RenderBox.cpp:2013
&gt; +    ASSERT(renderer == container() || is&lt;RenderRegion&gt;(*renderer));

Looks like this function should take a RenderElement&amp; given that assertion. Maybe some day we can make that change.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:217
&gt; +    while (is&lt;RenderInline&gt;(parent)) {

This would read better as a for loop. If we can’t fit it all on one line we could leave out the initializer, but the termination and “move to parent” would be fit nicely in a for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041719</commentid>
    <comment_count>4</comment_count>
      <attachid>239832</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 16:24:56 -0700</bug_when>
    <thetext>Created attachment 239832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041721</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 16:27:46 -0700</bug_when>
    <thetext>Attachment 239832 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderInline.cpp:1111:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041733</commentid>
    <comment_count>6</comment_count>
      <attachid>239832</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 17:29:57 -0700</bug_when>
    <thetext>Comment on attachment 239832
Patch

Clearing flags on attachment: 239832

Committed r174714: &lt;http://trac.webkit.org/changeset/174714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041734</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 17:30:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239812</attachid>
            <date>2014-10-14 11:45:15 -0700</date>
            <delta_ts>2014-10-14 16:24:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137704-20141014114521.patch</filename>
            <type>text/plain</type>
            <size>72786</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkMjcyNDEwYmE2MGFm
N2ZiMzI2Njc0MGJjMDNhZDQyNTc1N2FjOS4uOTkzM2I3NmQyZThlY2I1Zjk0MzRmY2ZmZDQ4ZTBk
YmFkYzJjZDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4IEBACiAyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVySW5saW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzc3MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBSZW5kZXJJbmxp
bmUgYW5kIGNsZWFuIHVwIHRoZSBzdXJyb3VuZGluZworICAgICAgICBjb2RlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
cnN0Q2hpbGRJbkNvbnRpbnVhdGlvbik6CisgICAgICAgICogZWRpdGluZy9TaW1wbGlmeU1hcmt1
cENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZnlNYXJrdXBDb21tYW5kOjpk
b0FwcGx5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZUZsb3dCb3g6OnJlbW92ZUxpbmVCb3hGcm9tUmVuZGVyT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphdHRhY2hMaW5lQm94VG9SZW5k
ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3Bh
Y2luZ0ZvckZsb3dCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpub2Rl
QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpiaWRp
Rmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbmxpbmVF
bGVtZW50Q29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRG
b2N1c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OndpbGxCZURlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lQm94ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvZmZzZXRGcm9tQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoRm9yUG9zaXRpb25lZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRh
aW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFj
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JQ
cm9wYWdhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY3VtdWxhdGVJbkZsb3dQb3NpdGlvbk9mZnNldHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdp
b25zT3ZlcmZsb3dGcm9tQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGlu
ZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVjb3JhdGlvbnNDbGlwUmVj
dEZvckJveEluTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9U
cmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6b3ZlcmZsb3dSZWN0Rm9yRmxvd1RocmVhZFBvcnRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp2aXN1YWxPdmVyZmxvd1JlY3RGb3JC
b3hGb3JQcm9wYWdhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJSZXBsYWNlZDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dExpbmVCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGlu
ZUJveGVzOjpyZW1vdmVBbGxGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRMaW5lQm94ZXM6OmRpcnR5UmFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dElubGluZUhlYWRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlubGluZUxvZ2lj
YWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVtcHR5
SW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oOgor
ICAgICAgICAoV2ViQ29yZTo6cmVxdWlyZXNMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFN0YXRpY1Bvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKwor
MjAxNC0xMC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFVz
ZSBpczw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFJlbmRlckZyYW1lIC8gUmVuZGVyRnJhbWVTZXQK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY5Ngog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MTA2YzNjODU4NWJlNjg0YjliZWY1ZmZjN2NlZjI0
YmQ0NTkxYjk1Li5hOTk4Y2EyN2Q3Y2U0OTg4ZjBkNjE0MzJiY2NkZjRlMGI1OTNjYjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKQEAgLTE3MCwxMSArMTcwLDExIEBAIHN0YXRpYyBpbmxpbmUgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkSW5Db250aW51YXRpb24oUmVuZGVySW5saW5lJiByZW5kZXJl
cikKICAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IHJlbmRlcmVyLmNvbnRpbnVhdGlvbigpOwogCiAg
ICAgd2hpbGUgKGNvbnRpbnVhdGlvbikgewotICAgICAgICBpZiAoY29udGludWF0aW9uLT5pc1Jl
bmRlckJsb2NrKCkpCisgICAgICAgIGlmIChpczxSZW5kZXJCbG9jaz4oKmNvbnRpbnVhdGlvbikp
CiAgICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uOwogICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IGNvbnRpbnVhdGlvbi0+Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGNoaWxkOwotICAgICAgICBjb250aW51YXRpb24gPSB0b1JlbmRlcklubGluZShjb250aW51
YXRpb24pLT5jb250aW51YXRpb24oKTsKKyAgICAgICAgY29udGludWF0aW9uID0gZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqY29udGludWF0aW9uKS5jb250aW51YXRpb24oKTsKICAgICB9CiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2lt
cGxpZnlNYXJrdXBDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2ltcGxpZnlN
YXJrdXBDb21tYW5kLmNwcAppbmRleCBjN2M5YTY4YWUzNjE0YzRlYjE2ZGE2Yzg4ZjZjZTI2MmVi
MGJmYzNiLi4xM2NkYTM2YmYxNzk2ZTBmMTkyN2Q2MTExZjRhMzE1ZjllMjY2OTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHZvaWQgU2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgaWYgKCFzdGFydGluZ1N0eWxlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIE5v
ZGUqIGN1cnJlbnROb2RlID0gc3RhcnRpbmdOb2RlOwotICAgICAgICBOb2RlKiB0b3BOb2RlV2l0
aFN0YXJ0aW5nU3R5bGUgPSAwOworICAgICAgICBOb2RlKiB0b3BOb2RlV2l0aFN0YXJ0aW5nU3R5
bGUgPSBudWxscHRyOwogICAgICAgICB3aGlsZSAoY3VycmVudE5vZGUgIT0gcm9vdE5vZGUpIHsK
ICAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS0+cGFyZW50Tm9kZSgpICE9IHJvb3ROb2RlICYm
IGlzUmVtb3ZhYmxlQmxvY2soY3VycmVudE5vZGUpKQogICAgICAgICAgICAgICAgIG5vZGVzVG9S
ZW1vdmUuYXBwZW5kKGN1cnJlbnROb2RlKTsKQEAgLTcwLDExICs3MCwxMSBAQCB2b2lkIFNpbXBs
aWZ5TWFya3VwQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICBpZiAoIWN1cnJlbnROb2Rl
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoIWN1cnJlbnROb2Rl
LT5yZW5kZXJlcigpIHx8ICFjdXJyZW50Tm9kZS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbmxpbmUo
KSB8fCB0b1JlbmRlcklubGluZShjdXJyZW50Tm9kZS0+cmVuZGVyZXIoKSktPmFsd2F5c0NyZWF0
ZUxpbmVCb3hlcygpKQorICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJJbmxpbmU+KGN1cnJlbnRO
b2RlLT5yZW5kZXJlcigpKSB8fCBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjdXJyZW50Tm9kZS0+
cmVuZGVyZXIoKSkuYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS0+Zmlyc3RD
aGlsZCgpICE9IGN1cnJlbnROb2RlLT5sYXN0Q2hpbGQoKSkgewotICAgICAgICAgICAgICAgIHRv
cE5vZGVXaXRoU3RhcnRpbmdTdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgdG9wTm9kZVdpdGhT
dGFydGluZ1N0eWxlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDJkYjdmMWEzMWI2MWRiNjYxYjMxMTJiY2Y1YzcxNjAyMzc4MzM1
MzkuLjkyMzNlNmNiMzFhNjJiZjJmOTBiYWY0MzFmMTkzYWU3MDE4YTNmNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTk3LDQzICs5Nyw0
MyBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLAogICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVR
dWFkcyhoaWdobGlnaHQtPnF1YWRzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBo
aWdobGlnaHQtPnF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgY29udGVudHNRdWFkVG9D
b29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0LT5xdWFk
c1tpXSwgY29vcmRpbmF0ZVN5c3RlbSk7Ci0gICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNCb3go
KSB8fCByZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgIH0gZWxzZSBpZiAoaXM8UmVu
ZGVyQm94PigqcmVuZGVyZXIpIHx8IGlzPFJlbmRlcklubGluZT4oKnJlbmRlcmVyKSkgewogICAg
ICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CiAgICAgICAgIExheW91dFJlY3QgcGFkZGluZ0Jv
eDsKICAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3g7CiAgICAgICAgIExheW91dFJlY3QgbWFy
Z2luQm94OwogCi0gICAgICAgIGlmIChyZW5kZXJlci0+aXNCb3goKSkgewotICAgICAgICAgICAg
UmVuZGVyQm94KiByZW5kZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcik7CisgICAgICAgIGlm
IChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgIGF1dG8mIHJlbmRlckJv
eCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKIAotICAgICAgICAgICAgTGF5b3V0
Qm94RXh0ZW50IG1hcmdpbnMocmVuZGVyQm94LT5tYXJnaW5Ub3AoKSwgcmVuZGVyQm94LT5tYXJn
aW5SaWdodCgpLCByZW5kZXJCb3gtPm1hcmdpbkJvdHRvbSgpLCByZW5kZXJCb3gtPm1hcmdpbkxl
ZnQoKSk7CisgICAgICAgICAgICBMYXlvdXRCb3hFeHRlbnQgbWFyZ2lucyhyZW5kZXJCb3gubWFy
Z2luVG9wKCksIHJlbmRlckJveC5tYXJnaW5SaWdodCgpLCByZW5kZXJCb3gubWFyZ2luQm90dG9t
KCksIHJlbmRlckJveC5tYXJnaW5MZWZ0KCkpOwogCi0gICAgICAgICAgICBpZiAoIXJlbmRlckJv
eC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcmVnaW9uKSB7CisgICAgICAgICAgICBpZiAo
IXJlbmRlckJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiByZWdpb24pIHsKICAgICAgICAg
ICAgICAgICBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZh
bHVlczsKLSAgICAgICAgICAgICAgICByZW5kZXJCb3gtPmNvbXB1dGVMb2dpY2FsV2lkdGhJblJl
Z2lvbihjb21wdXRlZFZhbHVlcywgcmVnaW9uKTsKLSAgICAgICAgICAgICAgICBtYXJnaW5zLm11
dGFibGVMb2dpY2FsTGVmdChyZW5kZXJCb3gtPnN0eWxlKCkud3JpdGluZ01vZGUoKSkgPSBjb21w
dXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydDsKLSAgICAgICAgICAgICAgICBtYXJnaW5zLm11
dGFibGVMb2dpY2FsUmlnaHQocmVuZGVyQm94LT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpID0gY29t
cHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fZW5kOworICAgICAgICAgICAgICAgIHJlbmRlckJveC5j
b21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oY29tcHV0ZWRWYWx1ZXMsIHJlZ2lvbik7CisgICAg
ICAgICAgICAgICAgbWFyZ2lucy5tdXRhYmxlTG9naWNhbExlZnQocmVuZGVyQm94LnN0eWxlKCku
d3JpdGluZ01vZGUoKSkgPSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydDsKKyAgICAg
ICAgICAgICAgICBtYXJnaW5zLm11dGFibGVMb2dpY2FsUmlnaHQocmVuZGVyQm94LnN0eWxlKCku
d3JpdGluZ01vZGUoKSkgPSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3gtPmNsaWVudEJveFJl
Y3RJblJlZ2lvbihyZWdpb24pOwotICAgICAgICAgICAgY29udGVudEJveCA9IExheW91dFJlY3Qo
cGFkZGluZ0JveC54KCkgKyByZW5kZXJCb3gtPnBhZGRpbmdMZWZ0KCksIHBhZGRpbmdCb3gueSgp
ICsgcmVuZGVyQm94LT5wYWRkaW5nVG9wKCksCi0gICAgICAgICAgICAgICAgcGFkZGluZ0JveC53
aWR0aCgpIC0gcmVuZGVyQm94LT5wYWRkaW5nTGVmdCgpIC0gcmVuZGVyQm94LT5wYWRkaW5nUmln
aHQoKSwgcGFkZGluZ0JveC5oZWlnaHQoKSAtIHJlbmRlckJveC0+cGFkZGluZ1RvcCgpIC0gcmVu
ZGVyQm94LT5wYWRkaW5nQm90dG9tKCkpOwotICAgICAgICAgICAgYm9yZGVyQm94ID0gTGF5b3V0
UmVjdChwYWRkaW5nQm94LngoKSAtIHJlbmRlckJveC0+Ym9yZGVyTGVmdCgpLCBwYWRkaW5nQm94
LnkoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCksCi0gICAgICAgICAgICAgICAgcGFkZGluZ0Jv
eC53aWR0aCgpICsgcmVuZGVyQm94LT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJCb3gtPmJvcmRlclJp
Z2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgKyByZW5kZXJCb3gtPmJvcmRlclRvcCgpICsgcmVu
ZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CisgICAgICAgICAgICBwYWRkaW5nQm94ID0gcmVuZGVy
Qm94LmNsaWVudEJveFJlY3RJblJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgY29udGVudEJv
eCA9IExheW91dFJlY3QocGFkZGluZ0JveC54KCkgKyByZW5kZXJCb3gucGFkZGluZ0xlZnQoKSwg
cGFkZGluZ0JveC55KCkgKyByZW5kZXJCb3gucGFkZGluZ1RvcCgpLAorICAgICAgICAgICAgICAg
IHBhZGRpbmdCb3gud2lkdGgoKSAtIHJlbmRlckJveC5wYWRkaW5nTGVmdCgpIC0gcmVuZGVyQm94
LnBhZGRpbmdSaWdodCgpLCBwYWRkaW5nQm94LmhlaWdodCgpIC0gcmVuZGVyQm94LnBhZGRpbmdU
b3AoKSAtIHJlbmRlckJveC5wYWRkaW5nQm90dG9tKCkpOworICAgICAgICAgICAgYm9yZGVyQm94
ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSAtIHJlbmRlckJveC5ib3JkZXJMZWZ0KCksIHBh
ZGRpbmdCb3gueSgpIC0gcmVuZGVyQm94LmJvcmRlclRvcCgpLAorICAgICAgICAgICAgICAgIHBh
ZGRpbmdCb3gud2lkdGgoKSArIHJlbmRlckJveC5ib3JkZXJMZWZ0KCkgKyByZW5kZXJCb3guYm9y
ZGVyUmlnaHQoKSwgcGFkZGluZ0JveC5oZWlnaHQoKSArIHJlbmRlckJveC5ib3JkZXJUb3AoKSAr
IHJlbmRlckJveC5ib3JkZXJCb3R0b20oKSk7CiAgICAgICAgICAgICBtYXJnaW5Cb3ggPSBMYXlv
dXRSZWN0KGJvcmRlckJveC54KCkgLSBtYXJnaW5zLmxlZnQoKSwgYm9yZGVyQm94LnkoKSAtIG1h
cmdpbnMudG9wKCksCiAgICAgICAgICAgICAgICAgYm9yZGVyQm94LndpZHRoKCkgKyBtYXJnaW5z
LmxlZnQoKSArIG1hcmdpbnMucmlnaHQoKSwgYm9yZGVyQm94LmhlaWdodCgpICsgbWFyZ2lucy50
b3AoKSArIG1hcmdpbnMuYm90dG9tKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
UmVuZGVySW5saW5lKiByZW5kZXJJbmxpbmUgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcik7Cisg
ICAgICAgICAgICBhdXRvJiByZW5kZXJJbmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpy
ZW5kZXJlcik7CiAKICAgICAgICAgICAgIC8vIFJlbmRlcklubGluZSdzIGJvdW5kaW5nIGJveCBp
bmNsdWRlcyBwYWRkaW5ncyBhbmQgYm9yZGVycywgZXhjbHVkZXMgbWFyZ2lucy4KLSAgICAgICAg
ICAgIGJvcmRlckJveCA9IHJlbmRlcklubGluZS0+bGluZXNCb3VuZGluZ0JveCgpOwotICAgICAg
ICAgICAgcGFkZGluZ0JveCA9IExheW91dFJlY3QoYm9yZGVyQm94LngoKSArIHJlbmRlcklubGlu
ZS0+Ym9yZGVyTGVmdCgpLCBib3JkZXJCb3gueSgpICsgcmVuZGVySW5saW5lLT5ib3JkZXJUb3Ao
KSwKLSAgICAgICAgICAgICAgICBib3JkZXJCb3gud2lkdGgoKSAtIHJlbmRlcklubGluZS0+Ym9y
ZGVyTGVmdCgpIC0gcmVuZGVySW5saW5lLT5ib3JkZXJSaWdodCgpLCBib3JkZXJCb3guaGVpZ2h0
KCkgLSByZW5kZXJJbmxpbmUtPmJvcmRlclRvcCgpIC0gcmVuZGVySW5saW5lLT5ib3JkZXJCb3R0
b20oKSk7Ci0gICAgICAgICAgICBjb250ZW50Qm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94Lngo
KSArIHJlbmRlcklubGluZS0+cGFkZGluZ0xlZnQoKSwgcGFkZGluZ0JveC55KCkgKyByZW5kZXJJ
bmxpbmUtPnBhZGRpbmdUb3AoKSwKLSAgICAgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkg
LSByZW5kZXJJbmxpbmUtPnBhZGRpbmdMZWZ0KCkgLSByZW5kZXJJbmxpbmUtPnBhZGRpbmdSaWdo
dCgpLCBwYWRkaW5nQm94LmhlaWdodCgpIC0gcmVuZGVySW5saW5lLT5wYWRkaW5nVG9wKCkgLSBy
ZW5kZXJJbmxpbmUtPnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgICAgICBib3JkZXJCb3ggPSBy
ZW5kZXJJbmxpbmUubGluZXNCb3VuZGluZ0JveCgpOworICAgICAgICAgICAgcGFkZGluZ0JveCA9
IExheW91dFJlY3QoYm9yZGVyQm94LngoKSArIHJlbmRlcklubGluZS5ib3JkZXJMZWZ0KCksIGJv
cmRlckJveC55KCkgKyByZW5kZXJJbmxpbmUuYm9yZGVyVG9wKCksCisgICAgICAgICAgICAgICAg
Ym9yZGVyQm94LndpZHRoKCkgLSByZW5kZXJJbmxpbmUuYm9yZGVyTGVmdCgpIC0gcmVuZGVySW5s
aW5lLmJvcmRlclJpZ2h0KCksIGJvcmRlckJveC5oZWlnaHQoKSAtIHJlbmRlcklubGluZS5ib3Jk
ZXJUb3AoKSAtIHJlbmRlcklubGluZS5ib3JkZXJCb3R0b20oKSk7CisgICAgICAgICAgICBjb250
ZW50Qm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSArIHJlbmRlcklubGluZS5wYWRkaW5n
TGVmdCgpLCBwYWRkaW5nQm94LnkoKSArIHJlbmRlcklubGluZS5wYWRkaW5nVG9wKCksCisgICAg
ICAgICAgICAgICAgcGFkZGluZ0JveC53aWR0aCgpIC0gcmVuZGVySW5saW5lLnBhZGRpbmdMZWZ0
KCkgLSByZW5kZXJJbmxpbmUucGFkZGluZ1JpZ2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgLSBy
ZW5kZXJJbmxpbmUucGFkZGluZ1RvcCgpIC0gcmVuZGVySW5saW5lLnBhZGRpbmdCb3R0b20oKSk7
CiAgICAgICAgICAgICAvLyBJZ25vcmUgbWFyZ2luVG9wIGFuZCBtYXJnaW5Cb3R0b20gZm9yIGlu
bGluZXMuCi0gICAgICAgICAgICBtYXJnaW5Cb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJveC54KCkg
LSByZW5kZXJJbmxpbmUtPm1hcmdpbkxlZnQoKSwgYm9yZGVyQm94LnkoKSwKLSAgICAgICAgICAg
ICAgICBib3JkZXJCb3gud2lkdGgoKSArIHJlbmRlcklubGluZS0+aG9yaXpvbnRhbE1hcmdpbkV4
dGVudCgpLCBib3JkZXJCb3guaGVpZ2h0KCkpOworICAgICAgICAgICAgbWFyZ2luQm94ID0gTGF5
b3V0UmVjdChib3JkZXJCb3gueCgpIC0gcmVuZGVySW5saW5lLm1hcmdpbkxlZnQoKSwgYm9yZGVy
Qm94LnkoKSwKKyAgICAgICAgICAgICAgICBib3JkZXJCb3gud2lkdGgoKSArIHJlbmRlcklubGlu
ZS5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCksIGJvcmRlckJveC5oZWlnaHQoKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBGbG9hdFF1YWQgYWJzQ29udGVudFF1YWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMmQwYzk2OGY5MjE3ZGQ1YmZjN2RlZjQwZWJiY2M2NzdhNGZkNDJlNS4u
N2U2NDU2MDVkZGM3MjYyMDczODk5MTllZmJmZDBhMzIxYzk4NGM2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMzc5NSw3ICszNzk1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QKICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsK
IAogICAgIC8vIG1fbm9kZVRvRHJhdyBpcyB1c2VkIHRvIGRyYXcgb25seSBvbmUgZWxlbWVudCAo
YW5kIGl0cyBkZXNjZW5kYW50cykKLSAgICBSZW5kZXJPYmplY3QqIGVsdFJlbmRlcmVyID0gbV9u
b2RlVG9EcmF3ID8gbV9ub2RlVG9EcmF3LT5yZW5kZXJlcigpIDogMDsKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbV9ub2RlVG9EcmF3ID8gbV9ub2RlVG9EcmF3LT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKICAgICBSZW5kZXJMYXllciogcm9vdExheWVyID0gcmVuZGVyVmlldy0+bGF5ZXIo
KTsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTM4MDQsMTIgKzM4MDQsMTIgQEAgdm9pZCBGcmFtZVZp
ZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QKIAogICAgIC8vIFRvIHdvcmsgYXJvdW5kIGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTM1MTA2LCBlbnN1cmUgdGhhdCB0aGUgcGFpbnQgcm9vdCBpc24ndCBhbiBpbmxpbmUgd2l0aCBj
dWxsZWQgbGluZSBib3hlcy4KICAgICAvLyBGSVhNRTogVGhpcyBjYW4gY2F1c2UgYWRkaXRpb25h
bCBjb250ZW50IHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzbmFwc2hvdCwgc28gcmVtb3ZlIHRoaXMg
b25jZSB0aGF0IGJ1ZyBpcyBmaXhlZC4KLSAgICB3aGlsZSAoZWx0UmVuZGVyZXIgJiYgZWx0UmVu
ZGVyZXItPmlzUmVuZGVySW5saW5lKCkgJiYgIXRvUmVuZGVySW5saW5lKGVsdFJlbmRlcmVyKS0+
Zmlyc3RMaW5lQm94KCkpCi0gICAgICAgIGVsdFJlbmRlcmVyID0gZWx0UmVuZGVyZXItPnBhcmVu
dCgpOworICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSAmJiAhZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLmZpcnN0TGluZUJveCgpKQorICAgICAgICByZW5kZXJl
ciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKIAotICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwg
ZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1fcGFpbnRCZWhhdmlvciwgZWx0UmVuZGVyZXIpOwor
ICAgIHJvb3RMYXllci0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCBMYXlvdXRTaXplKCksIG1f
cGFpbnRCZWhhdmlvciwgcmVuZGVyZXIpOwogICAgIGlmIChyb290TGF5ZXItPmNvbnRhaW5zRGly
dHlPdmVybGF5U2Nyb2xsYmFycygpKQotICAgICAgICByb290TGF5ZXItPnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50QmVoYXZpb3IsIGVsdFJlbmRlcmVy
KTsKKyAgICAgICAgcm9vdExheWVyLT5wYWludE92ZXJsYXlTY3JvbGxiYXJzKGNvbnRleHQsIGRp
cnR5UmVjdCwgbV9wYWludEJlaGF2aW9yLCByZW5kZXJlcik7CiAKICAgICBkaWRQYWludENvbnRl
bnRzKGNvbnRleHQsIGRpcnR5UmVjdCwgcGFpbnRpbmdTdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggYjkyYzQ1YWFmMjZhOGYyM2E3OWRk
M2JlNjk2NTZhNDQ5MDZhYmVjMy4uZGVhMDljZWI2MWI4ZjY1MzYzMWFlNjJmMzQ3ODhkNWY3OWFi
MzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZGVsZXRlTGluZSgpCiAKIHZvaWQg
SW5saW5lRmxvd0JveDo6cmVtb3ZlTGluZUJveEZyb21SZW5kZXJPYmplY3QoKQogewotICAgIHRv
UmVuZGVySW5saW5lKHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLnJlbW92ZUxpbmVCb3godGhpcyk7
CisgICAgZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpKS5saW5lQm94ZXMoKS5yZW1v
dmVMaW5lQm94KHRoaXMpOwogfQogCiB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkK
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkKIAog
dm9pZCBJbmxpbmVGbG93Qm94OjpleHRyYWN0TGluZUJveEZyb21SZW5kZXJPYmplY3QoKQogewot
ICAgIHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLmV4dHJhY3RMaW5lQm94
KHRoaXMpOworICAgIGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSkubGluZUJveGVz
KCkuZXh0cmFjdExpbmVCb3godGhpcyk7CiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YXR0YWNo
TGluZSgpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphdHRhY2hMaW5l
KCkKIAogdm9pZCBJbmxpbmVGbG93Qm94OjphdHRhY2hMaW5lQm94VG9SZW5kZXJPYmplY3QoKQog
ewotICAgIHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLmF0dGFjaExpbmVC
b3godGhpcyk7CisgICAgZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpKS5saW5lQm94
ZXMoKS5hdHRhY2hMaW5lQm94KHRoaXMpOwogfQogCiB2b2lkIElubGluZUZsb3dCb3g6OmFkanVz
dFBvc2l0aW9uKGZsb2F0IGR4LCBmbG9hdCBkeSkKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmRldGVybWluZVNwYWNpbmdGb3JGbG93Qm94ZXMoYm9vbCBsYXN0TGluZSwg
Ym9vbCBpc0xvZ2ljYWxseQogCiAgICAgLy8gVGhlIHJvb3QgaW5saW5lIGJveCBuZXZlciBoYXMg
Ym9yZGVycy9tYXJnaW5zL3BhZGRpbmcuCiAgICAgaWYgKHBhcmVudCgpKSB7Ci0gICAgICAgIGNv
bnN0IGF1dG8mIGlubGluZUZsb3cgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKTsKKyAgICAg
ICAgY29uc3QgYXV0byYgaW5saW5lRmxvdyA9IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVy
ZXIoKSk7CiAKICAgICAgICAgYm9vbCBsdHIgPSByZW5kZXJlcigpLnN0eWxlKCkuaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpOwogCkBAIC0xMDA3LDI5ICsxMDA3LDI5IEBAIGJvb2wgSW5saW5lRmxv
d0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlCiAKICAgICAvLyBDaGVjayBjaGlsZHJlbiBmaXJzdC4KICAgICAvLyBXZSBuZWVk
IHRvIGFjY291bnQgZm9yIGN1bGxlZCBpbmxpbmUgcGFyZW50cyBvZiB0aGUgaGl0LXRlc3RlZCBu
b2Rlcywgc28gdGhhdCB0aGV5IG1heSBhbHNvIGdldCBpbmNsdWRlZCBpbiBhcmVhLWJhc2VkIGhp
dC10ZXN0cy4KLSAgICBSZW5kZXJFbGVtZW50KiBjdWxsZWRQYXJlbnQgPSAwOwotICAgIGZvciAo
SW5saW5lQm94KiBjdXJyID0gbGFzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2T25M
aW5lKCkpIHsKLSAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNUZXh0KCkgfHwgIWN1cnIt
PmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgICAg
IFJlbmRlckVsZW1lbnQqIG5ld1BhcmVudCA9IDA7CisgICAgUmVuZGVyRWxlbWVudCogY3VsbGVk
UGFyZW50ID0gbnVsbHB0cjsKKyAgICBmb3IgKElubGluZUJveCogY3VycmVudCA9IGxhc3RDaGls
ZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cHJldk9uTGluZSgpKSB7CisgICAgICAg
IGlmIChpczxSZW5kZXJUZXh0PihjdXJyZW50LT5yZW5kZXJlcigpKSB8fCAhY3VycmVudC0+Ym94
TW9kZWxPYmplY3QoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgeworICAgICAgICAgICAgUmVu
ZGVyRWxlbWVudCogbmV3UGFyZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIC8vIEN1bGxlZCBw
YXJlbnRzIGFyZSBvbmx5IHJlbGV2YW50IGZvciBhcmVhLWJhc2VkIGhpdC10ZXN0cywgc28gaWdu
b3JlIGl0IGluIHBvaW50LWJhc2VkIG9uZXMuCiAgICAgICAgICAgICBpZiAobG9jYXRpb25JbkNv
bnRhaW5lci5pc1JlY3RCYXNlZFRlc3QoKSkgewotICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9
IGN1cnItPnJlbmRlcmVyKCkucGFyZW50KCk7CisgICAgICAgICAgICAgICAgbmV3UGFyZW50ID0g
Y3VycmVudC0+cmVuZGVyZXIoKS5wYXJlbnQoKTsKICAgICAgICAgICAgICAgICBpZiAobmV3UGFy
ZW50ID09ICZyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSAwOwor
ICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBudWxscHRyOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGN1bGxlZCBwYXJlbnQgYWZ0ZXIgYWxsIGl0cyBjaGls
ZHJlbiBoYXZlIGJlZW4gY2hlY2tlZCwgdG8gZG8gdGhpcyB3ZSB3YWl0IHVudGlsCiAgICAgICAg
ICAgICAvLyB3ZSBhcmUgYWJvdXQgdG8gdGVzdCBhbiBlbGVtZW50IHdpdGggYSBkaWZmZXJlbnQg
cGFyZW50LgogICAgICAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdWxsZWRQYXJlbnQpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIW5ld1BhcmVudCB8fCAhbmV3UGFyZW50LT5pc0Rlc2NlbmRhbnRP
ZihjdWxsZWRQYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjdWxsZWRQYXJl
bnQgJiYgY3VsbGVkUGFyZW50ICE9ICZyZW5kZXJlcigpICYmIGN1bGxlZFBhcmVudCAhPSBuZXdQ
YXJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdWxsZWRQYXJlbnQtPmlzUmVu
ZGVySW5saW5lKCkgJiYgdG9SZW5kZXJJbmxpbmUoY3VsbGVkUGFyZW50KS0+aGl0VGVzdEN1bGxl
ZElubGluZShyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVk
T2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KCpj
dWxsZWRQYXJlbnQpICYmIGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1bGxlZFBhcmVudCkuaGl0
VGVzdEN1bGxlZElubGluZShyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFj
Y3VtdWxhdGVkT2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1bGxlZFBhcmVudCA9IGN1bGxlZFBhcmVudC0+
cGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgY3VsbGVkUGFyZW50ID0gbmV3UGFyZW50OwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKGN1cnItPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pKSB7Cisg
ICAgICAgICAgICBpZiAoY3VycmVudC0+bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2Nh
dGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSkp
IHsKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0
LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRP
ZmZzZXQpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAg
LTEwMzcsNyArMTAzNyw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgfQogICAgIC8v
IENoZWNrIGFueSBjdWxsZWQgYW5jZXN0b3Igb2YgdGhlIGZpbmFsIGNoaWxkcmVuIHRlc3RlZC4K
ICAgICB3aGlsZSAoY3VsbGVkUGFyZW50ICYmIGN1bGxlZFBhcmVudCAhPSAmcmVuZGVyZXIoKSkg
ewotICAgICAgICBpZiAoY3VsbGVkUGFyZW50LT5pc1JlbmRlcklubGluZSgpICYmIHRvUmVuZGVy
SW5saW5lKGN1bGxlZFBhcmVudCktPmhpdFRlc3RDdWxsZWRJbmxpbmUocmVxdWVzdCwgcmVzdWx0
LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCkpCisgICAgICAgIGlmIChp
czxSZW5kZXJJbmxpbmU+KCpjdWxsZWRQYXJlbnQpICYmIGRvd25jYXN0PFJlbmRlcklubGluZT4o
KmN1bGxlZFBhcmVudCkuaGl0VGVzdEN1bGxlZElubGluZShyZXF1ZXN0LCByZXN1bHQsIGxvY2F0
aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBjdWxsZWRQYXJlbnQgPSBjdWxsZWRQYXJlbnQtPnBhcmVudCgpOwogICAg
IH0KQEAgLTExMDMsOSArMTEwMyw5IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAg
ICAgIC8vIEFkZCBvdXJzZWx2ZXMgdG8gdGhlIHBhaW50IGluZm8gc3RydWN0J3MgbGlzdCBvZiBp
bmxpbmVzIHRoYXQgbmVlZCB0byBwYWludCB0aGVpcgogICAgICAgICAgICAgLy8gb3V0bGluZXMu
CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJ
QkxFICYmIHJlbmRlcmVyKCkuaGFzT3V0bGluZSgpICYmICFpc1Jvb3RJbmxpbmVCb3goKSkgewot
ICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IHRvUmVuZGVySW5saW5l
KHJlbmRlcmVyKCkpOworICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9
IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSk7CiAKLSAgICAgICAgICAgICAgICBS
ZW5kZXJCbG9jayogY2IgPSAwOworICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWlu
aW5nQmxvY2sgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIGJvb2wgY29udGFpbmluZ0Jsb2Nr
UGFpbnRzQ29udGludWF0aW9uT3V0bGluZSA9IGlubGluZUZsb3cuY29udGludWF0aW9uKCkgfHwg
aW5saW5lRmxvdy5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKICAgICAgICAgICAgICAg
ICBpZiAoY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgeyAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjkwLiBXZSBjdXJyZW50bHkgZG9uJ3QgcmVjb25uZWN0
IGlubGluZSBjb250aW51YXRpb25zCkBAIC0xMTE1LDggKzExMTUsOCBAQCB2b2lkIElubGluZUZs
b3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIGlmICghZW5jbG9zaW5nQW5vbnltb3VzQmxv
Y2stPmlzQW5vbnltb3VzQmxvY2soKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5p
bmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYiA9IGVuY2xvc2luZ0Fub255
bW91c0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoYXV0byBib3ggPSAmcmVuZGVyZXIoKTsgYm94ICE9IGNiOyBib3ggPSAmYm94LT5wYXJlbnQo
KS0+ZW5jbG9zaW5nQm94TW9kZWxPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGFpbmluZ0Jsb2NrID0gZW5jbG9zaW5nQW5vbnltb3VzQmxvY2stPmNvbnRhaW5pbmdCbG9j
aygpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9ICZyZW5kZXJlcigp
OyBib3ggIT0gY29udGFpbmluZ0Jsb2NrOyBib3ggPSAmYm94LT5wYXJlbnQoKS0+ZW5jbG9zaW5n
Qm94TW9kZWxPYmplY3QoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib3gt
Pmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMjgsNyArMTEyOCw3IEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmluZ0Js
b2NrUGFpbnRzQ29udGludWF0aW9uT3V0bGluZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBB
ZGQgb3Vyc2VsdmVzIHRvIHRoZSBjb250YWluaW5nIGJsb2NrIG9mIHRoZSBlbnRpcmUgY29udGlu
dWF0aW9uIHNvIHRoYXQgaXQgY2FuCiAgICAgICAgICAgICAgICAgICAgIC8vIHBhaW50IHVzIGF0
b21pY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgIGNiLT5hZGRDb250aW51YXRpb25XaXRoT3V0
bGluZSh0b1JlbmRlcklubGluZShyZW5kZXJlcigpLmVsZW1lbnQoKS0+cmVuZGVyZXIoKSkpOwor
ICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2stPmFkZENvbnRpbnVhdGlvbldpdGhP
dXRsaW5lKGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKS5lbGVtZW50KCktPnJlbmRl
cmVyKCkpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpbmxpbmVGbG93LmlzSW5saW5l
RWxlbWVudENvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICBwYWludEluZm8ub3V0
bGluZU9iamVjdHMtPmFkZCgmaW5saW5lRmxvdyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IDhiNjA0MTUyN2E4NDU0ZjFlNGQ3
Y2EyODJlYmI2MGUxNjM4MzgxOWEuLjdhNzZhYjk4NzA1ZjhmYjdkYTJkMGEyYzk2Mjg0NDhkNTlj
NGE1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0y
ODgsMzEgKzI4OCwzMSBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaU5leHRJbmNs
dWRpbmdFbXB0eUlubGluZXMoUmVuZGVyRWxlbWVudCYgcm9vdCwgUgogICAgIHJldHVybiBiaWRp
TmV4dFNoYXJlZChyb290LCBjdXJyZW50LCBvYnNlcnZlciwgSW5jbHVkZUVtcHR5SW5saW5lcywg
ZW5kT2ZJbmxpbmVQdHIpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMoUmVuZGVyRWxlbWVudCYgcm9vdCwgSW5saW5lQmlkaVJl
c29sdmVyKiByZXNvbHZlciA9IDApCitzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMoUmVuZGVyRWxlbWVudCYgcm9vdCwgSW5saW5lQmlkaVJl
c29sdmVyKiByZXNvbHZlciA9IG51bGxwdHIpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvID0gcm9v
dC5maXJzdENoaWxkKCk7Ci0gICAgaWYgKCFvKQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSByb290LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGlmIChvLT5pc1JlbmRlcklubGluZSgpKSB7Ci0gICAgICAgIG5vdGlm
eU9ic2VydmVyRW50ZXJlZE9iamVjdChyZXNvbHZlciwgbyk7Ci0gICAgICAgIGlmICghaXNFbXB0
eUlubGluZSh0b1JlbmRlcklubGluZSgqbykpKQotICAgICAgICAgICAgbyA9IGJpZGlOZXh0U2tp
cHBpbmdFbXB0eUlubGluZXMocm9vdCwgbywgcmVzb2x2ZXIpOworICAgIGlmIChpczxSZW5kZXJJ
bmxpbmU+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJFbnRlcmVkT2JqZWN0
KHJlc29sdmVyLCByZW5kZXJlcik7CisgICAgICAgIGlmICghaXNFbXB0eUlubGluZShkb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KCpyZW5kZXJlcikpKQorICAgICAgICAgICAgcmVuZGVyZXIgPSBiaWRp
TmV4dFNraXBwaW5nRW1wdHlJbmxpbmVzKHJvb3QsIHJlbmRlcmVyLCByZXNvbHZlcik7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgLy8gTmV2ZXIgc2tpcCBlbXB0eSBpbmxpbmVzLgogICAg
ICAgICAgICAgaWYgKHJlc29sdmVyKQogICAgICAgICAgICAgICAgIHJlc29sdmVyLT5jb21taXRF
eHBsaWNpdEVtYmVkZGluZygpOwotICAgICAgICAgICAgcmV0dXJuIG87IAorICAgICAgICAgICAg
cmV0dXJuIHJlbmRlcmVyOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFVuaWZ5
IHRoaXMgd2l0aCB0aGUgYmlkaU5leHQgY2FsbCBhYm92ZS4KLSAgICBpZiAobyAmJiAhaXNJdGVy
YXRvclRhcmdldChvKSkKLSAgICAgICAgbyA9IGJpZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMo
cm9vdCwgbywgcmVzb2x2ZXIpOworICAgIGlmIChyZW5kZXJlciAmJiAhaXNJdGVyYXRvclRhcmdl
dChyZW5kZXJlcikpCisgICAgICAgIHJlbmRlcmVyID0gYmlkaU5leHRTa2lwcGluZ0VtcHR5SW5s
aW5lcyhyb290LCByZW5kZXJlciwgcmVzb2x2ZXIpOwogCiAgICAgaWYgKHJlc29sdmVyKQogICAg
ICAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKLSAgICByZXR1cm4gbzsK
KyAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBuZWVkcyB0
byBiZSByZW5hbWVkIHdoZW4gYmlkaU5leHQgZmluZHMgYSBnb29kIG5hbWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAppbmRleCBiYmUxNzA2OWU3ZGRmMjgzZjA1Mjgy
ZGQwYjBjOTljNjk0MmQ0YjM2Li5lNjBiNGI5MGFhYWNlNjNjOTYzN2JmOTE2NTQyMGY4YWM5NDAz
MDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKQEAgLTUzLDgg
KzUzLDggQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXRT
dGF0ZT4gbmV4dCwgUmVuZGVyQm94KiByZW5kZXJlciwKIAogICAgIGlmIChyZW5kZXJlci0+aXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWZpeGVkKSB7CiAgICAgICAgIGlmIChSZW5kZXJFbGVt
ZW50KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIGlm
IChjb250YWluZXItPmlzSW5GbG93UG9zaXRpb25lZCgpICYmIGNvbnRhaW5lci0+aXNSZW5kZXJJ
bmxpbmUoKSkKLSAgICAgICAgICAgICAgICBtX3BhaW50T2Zmc2V0ICs9IHRvUmVuZGVySW5saW5l
KGNvbnRhaW5lciktPm9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUocmVuZGVyZXIpOwor
ICAgICAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgaXM8UmVu
ZGVySW5saW5lPigqY29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICBtX3BhaW50T2Zmc2V0ICs9
IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmNvbnRhaW5lcikub2Zmc2V0Rm9ySW5GbG93UG9zaXRp
b25lZElubGluZShyZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDgyNDEyODczYTg1MDU1OTdlNTY0OGI5ZTc2
OGI0ZTNlNjRhYWM4NjguLmYwNjYxNDA1OGEwMmJlMTI2MWVjMDc4YTQ3MTBhNzQ5NDc3ZWRkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjUzLDcgKzI1
Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgCiAgICAgaWYg
KCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAg
ICAgICAgICAgcGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOworICAg
ICAgICAgICAgcGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsKICAg
ICB9CiAKICAgICByZW1vdmVGcm9tVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKTsKQEAgLTE2MzAsMTEgKzE2MzAsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAg
ICBpZiAoKHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRQaGFzZSA9PSBQ
YWludFBoYXNlQ2hpbGRPdXRsaW5lcykpIHsKICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVD
b250ID0gaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwogICAgICAgICBpZiAoaW5saW5lQ29u
dCAmJiBpbmxpbmVDb250LT5oYXNPdXRsaW5lKCkgJiYgaW5saW5lQ29udC0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkgewotICAgICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVS
ZW5kZXJlciA9IHRvUmVuZGVySW5saW5lKGlubGluZUNvbnQtPmVsZW1lbnQoKS0+cmVuZGVyZXIo
KSk7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKKyAg
ICAgICAgICAgIFJlbmRlcklubGluZSogaW5saW5lUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJJ
bmxpbmU+KGlubGluZUNvbnQtPmVsZW1lbnQoKS0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICBS
ZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAK
ICAgICAgICAgICAgIGJvb2wgaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVyID0gZmFs
c2U7Ci0gICAgICAgICAgICBmb3IgKFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSBpbmxpbmVS
ZW5kZXJlcjsgYm94ICE9IGNiOyBib3ggPSAmYm94LT5wYXJlbnQoKS0+ZW5jbG9zaW5nQm94TW9k
ZWxPYmplY3QoKSkgeworICAgICAgICAgICAgZm9yIChSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94
ID0gaW5saW5lUmVuZGVyZXI7IGJveCAhPSBjb250YWluaW5nQmxvY2s7IGJveCA9ICZib3gtPnBh
cmVudCgpLT5lbmNsb3NpbmdCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KGJveC0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBpbmxp
bmVFbmNsb3NlZEluU2VsZlBhaW50aW5nTGF5ZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAg
ICAgICAgICAgICAvLyBhbm9ueW1vdXMgYmxvY2sgKGkuZS4gaGF2ZSBvdXIgb3duIGxheWVyKSwg
cGFpbnQgdGhlbSBzdHJhaWdodGF3YXkgaW5zdGVhZC4gVGhpcyBpcyBiZWNhdXNlIGEgYmxvY2sg
ZGVwZW5kcyBvbiByZW5kZXJlcnMgaW4gaXRzIGNvbnRpbnVhdGlvbiB0YWJsZSBiZWluZwogICAg
ICAgICAgICAgLy8gaW4gdGhlIHNhbWUgbGF5ZXIuIAogICAgICAgICAgICAgaWYgKCFpbmxpbmVF
bmNsb3NlZEluU2VsZlBhaW50aW5nTGF5ZXIgJiYgIWhhc0xheWVyKCkpCi0gICAgICAgICAgICAg
ICAgY2ItPmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKGlubGluZVJlbmRlcmVyKTsKKyAgICAg
ICAgICAgICAgICBjb250YWluaW5nQmxvY2stPmFkZENvbnRpbnVhdGlvbldpdGhPdXRsaW5lKGlu
bGluZVJlbmRlcmVyKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFpbmxpbmVSZW5kZXJlci0+Zmly
c3RMaW5lQm94KCkgfHwgKCFpbmxpbmVFbmNsb3NlZEluU2VsZlBhaW50aW5nTGF5ZXIgJiYgaGFz
TGF5ZXIoKSkpCiAgICAgICAgICAgICAgICAgaW5saW5lUmVuZGVyZXItPnBhaW50T3V0bGluZShw
YWludEluZm8sIHBhaW50T2Zmc2V0IC0gbG9jYXRpb25PZmZzZXQoKSArIGlubGluZVJlbmRlcmVy
LT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSk7CiAgICAgICAgIH0KQEAgLTE2NjQsNyAr
MTY2NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiBSZW5kZXJJbmxpbmUqIFJlbmRlckJs
b2NrOjppbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QKIHsgCiAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbiA9IHRoaXMtPmNvbnRpbnVhdGlvbigpOwotICAgIHJl
dHVybiBjb250aW51YXRpb24gJiYgY29udGludWF0aW9uLT5pc1JlbmRlcklubGluZSgpID8gdG9S
ZW5kZXJJbmxpbmUoY29udGludWF0aW9uKSA6IDA7CisgICAgcmV0dXJuIGlzPFJlbmRlcklubGlu
ZT4oY29udGludWF0aW9uKSA/IGRvd25jYXN0PFJlbmRlcklubGluZT4oY29udGludWF0aW9uKSA6
IG51bGxwdHI7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6YmxvY2tFbGVtZW50Q29u
dGludWF0aW9uKCkgY29uc3QKQEAgLTM0MDAsNyArMzQwMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBv
aW50JiBhCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nLiBUaGUgcHJpbmNpcGFsIHJl
bmRlcmVyIG1heSBub3QgYmUgdGhlIGNvbnRpbnVhdGlvbiBwcmVjZWRpbmcgdGhpcyBibG9jay4K
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIGJsb2NrLWZsb3dzIHRoYXQgYXJl
IGhvcml6b250YWwuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00Njc4MQotICAgICAgICBib29sIHByZXZJbmxpbmVIYXNMaW5lQm94ID0gdG9SZW5k
ZXJJbmxpbmUoaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5lbGVtZW50KCktPnJlbmRlcmVy
KCkpLT5maXJzdExpbmVCb3goKTsKKyAgICAgICAgYm9vbCBwcmV2SW5saW5lSGFzTGluZUJveCA9
IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+ZWxl
bWVudCgpLT5yZW5kZXJlcigpKS5maXJzdExpbmVCb3goKTsKICAgICAgICAgZmxvYXQgdG9wTWFy
Z2luID0gcHJldklubGluZUhhc0xpbmVCb3ggPyBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSA6IExh
eW91dFVuaXQoKTsKICAgICAgICAgZmxvYXQgYm90dG9tTWFyZ2luID0gbmV4dElubGluZUhhc0xp
bmVCb3ggPyBjb2xsYXBzZWRNYXJnaW5BZnRlcigpIDogTGF5b3V0VW5pdCgpOwogICAgICAgICBM
YXlvdXRSZWN0IHJlY3QoYWRkaXRpb25hbE9mZnNldC54KCksIGFkZGl0aW9uYWxPZmZzZXQueSgp
IC0gdG9wTWFyZ2luLCB3aWR0aCgpLCBoZWlnaHQoKSArIHRvcE1hcmdpbiArIGJvdHRvbU1hcmdp
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IGYwZWViMDFiZmUzODc0ZDViNTc4MmI2OGQ5MzhkYmZjN2MyNGZiYzAuLjU0OGQ1NWRjNGY3ZDY2
ZGNjNjFmOGMyNWI4YjgwMWY5ZGQ4Yjk4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OndpbGxCZURlc3Ryb3llZCgpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFyZW50KCktPmRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOworICAgICAgICAgICAgcGFyZW50KCktPmRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsKICAgICB9CiAKICAgICBtX2xpbmVCb3hl
cy5kZWxldGVMaW5lQm94ZXMoKTsKQEAgLTQwMzIsMTAgKzQwMzIsMTAgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQm
IG1pbkxvZ2ljYWwKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIC8vIENhc2UgKDEpIGFuZCAoMikuIElubGluZSByZXBsYWNl
ZCBhbmQgaW5saW5lIGZsb3cgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5p
c1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlcklubGluZT4o
KmNoaWxkKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgaW4gcGFkZGluZy9ib3JkZXIv
bWFyZ2luIGZyb20gdGhlIGFwcHJvcHJpYXRlIHNpZGUgb2YKICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhlIGVsZW1lbnQuCi0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGJwbSA9IGdldEJvcmRl
clBhZGRpbmdNYXJnaW4oKnRvUmVuZGVySW5saW5lKGNoaWxkKSwgY2hpbGRJdGVyYXRvci5lbmRP
ZklubGluZSk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IGJwbSA9IGdldEJvcmRlclBhZGRp
bmdNYXJnaW4oZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY2hpbGQpLCBjaGlsZEl0ZXJhdG9yLmVu
ZE9mSW5saW5lKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gKz0gYnBtOwogICAgICAg
ICAgICAgICAgICAgICBjaGlsZE1heCArPSBicG07CiAKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAoIWNoaWxkLT5pc1JlbmRlcklubGluZSgpICYmICFjaGlsZC0+aXNU
ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmICghaXM8UmVuZGVySW5saW5lPigqY2hpbGQpICYmICFp
czxSZW5kZXJUZXh0PigqY2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2FzZSAoMikuIElu
bGluZSByZXBsYWNlZCBlbGVtZW50cyBhbmQgZmxvYXRzLgogICAgICAgICAgICAgICAgIC8vIEdv
IGFoZWFkIGFuZCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgbGluZSBhcyBmYXIgYXMKICAgICAgICAg
ICAgICAgICAvLyBtaW53aWR0aCBpcyBjb25jZXJuZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNDg5OGE0ZGNiZDliNTQxNTFhYzczZmI0ZWNiZDZk
YjQ0ZGEwNGQ5ZC4uNmVkY2NjMjZkNTJkODdhYzdmY2IyZThjYTA4NjY0MWY0MTgzY2I2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNzksNyArNzks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkJl
Zm9yZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1heFBvc2l0aXZlTWFyZ2luQmVm
b3JlKCkgLSBtYXhOZWdhdGl2ZU1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
bWF4UG9zaXRpdmVNYXJnaW5BZnRlcigpIC0gbWF4TmVnYXRpdmVNYXJnaW5BZnRlcigpOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCkgb3ZlcnJpZGUgZmluYWwgeyBsaW5lQm94ZXMoKS5kaXJ0eUxpbmVzRnJvbUNoYW5n
ZWRDaGlsZCh0aGlzLCBjaGlsZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21D
aGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgb3ZlcnJpZGUgZmluYWwgeyBsaW5lQm94
ZXMoKS5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcywgY2hpbGQpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwCmluZGV4IDkwZTY3ZTVjNGQ4YWNjNDQwMmM4ZWI2NjFmMTJjNjEyOTRmYWIyYTku
LjQ5MjA3OWE5M2VlNTY0MWZiNThmMTAyOTg3NmM0ZGJiZjFlYTMyMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC05MjUs
NyArOTI1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVu
dChJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLAogICAgICAgICAvLyB0cmVlIHRvIHNl
ZSB3aGljaCBwYXJlbnQgaW5saW5lIGlzIHRoZSBpc29sYXRlLiBXZSBjb3VsZCBjaGFuZ2UgZW50
ZXJJc29sYXRlCiAgICAgICAgIC8vIHRvIHRha2UgYSBSZW5kZXJPYmplY3QgYW5kIGRvIHRoaXMg
bG9naWMgdGhlcmUsIGJ1dCB0aGF0IHdvdWxkIGJlIGEgbGF5ZXJpbmcKICAgICAgICAgLy8gdmlv
bGF0aW9uIGZvciBCaWRpUmVzb2x2ZXIgKHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVy
T2JqZWN0KS4KLSAgICAgICAgUmVuZGVySW5saW5lKiBpc29sYXRlZElubGluZSA9IHRvUmVuZGVy
SW5saW5lKGhpZ2hlc3RDb250YWluaW5nSXNvbGF0ZVdpdGhpblJvb3Qoc3RhcnRPYmplY3QsIGN1
cnJlbnRSb290KSk7CisgICAgICAgIFJlbmRlcklubGluZSogaXNvbGF0ZWRJbmxpbmUgPSBkb3du
Y2FzdDxSZW5kZXJJbmxpbmU+KGhpZ2hlc3RDb250YWluaW5nSXNvbGF0ZVdpdGhpblJvb3Qoc3Rh
cnRPYmplY3QsIGN1cnJlbnRSb290KSk7CiAgICAgICAgIEFTU0VSVChpc29sYXRlZElubGluZSk7
CiAKICAgICAgICAgSW5saW5lQmlkaVJlc29sdmVyIGlzb2xhdGVkUmVzb2x2ZXI7CkBAIC0xNDg3
LDkgKzE0ODcsOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUJveGVzKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludAogICAgICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBib3gubGF5b3V0SWZOZWVkZWQoKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG8uaXNUZXh0T3JMaW5lQnJl
YWsoKSB8fCAoby5pc1JlbmRlcklubGluZSgpICYmICF3YWxrZXIuYXRFbmRPZklubGluZSgpKSkg
ewotICAgICAgICAgICAgICAgIGlmIChvLmlzUmVuZGVySW5saW5lKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHRvUmVuZGVySW5saW5lKG8pLnVwZGF0ZUFsd2F5c0NyZWF0ZUxpbmVCb3hlcyhsYXlv
dXRTdGF0ZS5pc0Z1bGxMYXlvdXQoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG8uaXNUZXh0
T3JMaW5lQnJlYWsoKSB8fCAoaXM8UmVuZGVySW5saW5lPihvKSAmJiAhd2Fsa2VyLmF0RW5kT2ZJ
bmxpbmUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVySW5saW5lPihvKSkKKyAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVySW5saW5lPihvKS51cGRhdGVBbHdheXND
cmVhdGVMaW5lQm94ZXMobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0KCkpOwogICAgICAgICAgICAg
ICAgIGlmIChsYXlvdXRTdGF0ZS5pc0Z1bGxMYXlvdXQoKSB8fCBvLnNlbGZOZWVkc0xheW91dCgp
KQogICAgICAgICAgICAgICAgICAgICBkaXJ0eUxpbmVCb3hlc0ZvclJlbmRlcmVyKG8sIGxheW91
dFN0YXRlLmlzRnVsbExheW91dCgpKTsKICAgICAgICAgICAgICAgICBvLmNsZWFyTmVlZHNMYXlv
dXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMDVjY2QzYTdi
YTgyYTg5ZDVmZmYyMTRiZDQwYTJjOWU3NWFiYjYzMS4uNTc3NWQ0Y2VhYTQ3YjQwMTJjYzBmZDcw
OTg4NDU4ZDJlNWZkY2Q5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
QEAgLTIwMDcsMTAgKzIwMDcsMTAgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2Nh
bFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgVHJhbnNmb3JtU3RhdGUKICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQobW9kZSwgdHJhbnNmb3Jt
U3RhdGUpOwogfQogCi1MYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09u
UG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERl
cGVuZHNPblBvaW50KSBjb25zdAogewogICAgIC8vIEEgcmVnaW9uICJoYXMiIGJveGVzIGluc2lk
ZSBpdCB3aXRob3V0IGJlaW5nIHRoZWlyIGNvbnRhaW5lci4gCi0gICAgQVNTRVJUKG8gPT0gY29u
dGFpbmVyKCkgfHwgby0+aXNSZW5kZXJSZWdpb24oKSk7CisgICAgQVNTRVJUKHJlbmRlcmVyID09
IGNvbnRhaW5lcigpIHx8IGlzPFJlbmRlclJlZ2lvbj4oKnJlbmRlcmVyKSk7CiAKICAgICBMYXlv
dXRTaXplIG9mZnNldDsgICAgCiAgICAgaWYgKGlzSW5GbG93UG9zaXRpb25lZCgpKQpAQCAtMjAx
OSwxNCArMjAxOSwxNCBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiwgYgogICAgIGlmICghaXNJbmxp
bmUoKSB8fCBpc1JlcGxhY2VkKCkpCiAgICAgICAgIG9mZnNldCArPSB0b3BMZWZ0TG9jYXRpb25P
ZmZzZXQoKTsKIAotICAgIGlmIChvLT5pc0JveCgpKQotICAgICAgICBvZmZzZXQgLT0gdG9SZW5k
ZXJCb3gobyktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOworICAgIGlmIChpczxSZW5kZXJCb3g+
KCpyZW5kZXJlcikpCisgICAgICAgIG9mZnNldCAtPSBkb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5k
ZXJlcikuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAKLSAgICBpZiAoc3R5bGUoKS5wb3NpdGlv
bigpID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgby0+
aXNSZW5kZXJJbmxpbmUoKSkKLSAgICAgICAgb2Zmc2V0ICs9IHRvUmVuZGVySW5saW5lKG8pLT5v
ZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKHRoaXMpOworICAgIGlmIChzdHlsZSgpLnBv
c2l0aW9uKCkgPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiByZW5kZXJlci0+aXNJbkZsb3dQb3NpdGlv
bmVkKCkgJiYgaXM8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpKQorICAgICAgICBvZmZzZXQgKz0g
ZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9u
ZWRJbmxpbmUodGhpcyk7CiAKICAgICBpZiAob2Zmc2V0RGVwZW5kc09uUG9pbnQpCi0gICAgICAg
ICpvZmZzZXREZXBlbmRzT25Qb2ludCB8PSBvLT5pc1JlbmRlckZsb3dUaHJlYWQoKTsKKyAgICAg
ICAgKm9mZnNldERlcGVuZHNPblBvaW50IHw9IGlzPFJlbmRlckZsb3dUaHJlYWQ+KCpyZW5kZXJl
cik7CiAKICAgICByZXR1cm4gb2Zmc2V0OwogfQpAQCAtMjE2NSw4ICsyMTY1LDggQEAgdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGEKICAgICB9CiAKICAgICBib29sIGNvbnRhaW5lclNraXBwZWQ7Ci0g
ICAgYXV0byBvID0gY29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsICZjb250YWluZXJTa2lwcGVk
KTsKLSAgICBpZiAoIW8pCisgICAgYXV0byogcmVuZGVyZXIgPSBjb250YWluZXIocmVwYWludENv
bnRhaW5lciwgJmNvbnRhaW5lclNraXBwZWQpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBFUG9zaXRpb24gcG9zaXRpb24gPSBzdHlsZVRvVXNlLnBvc2l0
aW9uKCk7CkBAIC0yMTc4LDEwICsyMTc4LDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAg
ICAgLy8gdXMgdG8gYWRkIHRoZSBoZWlnaHQgdHdpY2UuCiAgICAgLy8gVGhlIHNhbWUgbG9naWMg
YXBwbGllcyBmb3IgZWxlbWVudHMgZmxvd2VkIGRpcmVjdGx5IGludG8gdGhlIGZsb3cgdGhyZWFk
LiBUaGVpciB0b3BMZWZ0IG1lbWJlcgogICAgIC8vIHdpbGwgYWxyZWFkeSBjb250YWluIHRoZSBw
b3J0aW9uIHJlY3Qgb2YgdGhlIHJlZ2lvbi4KLSAgICBpZiAoby0+aXNPdXRPZkZsb3dSZW5kZXJG
bG93VGhyZWFkKCkgJiYgcG9zaXRpb24gIT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBjb250YWluaW5n
QmxvY2soKSAhPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICBpZiAocmVuZGVy
ZXItPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgpICYmIHBvc2l0aW9uICE9IEFic29sdXRl
UG9zaXRpb24gJiYgY29udGFpbmluZ0Jsb2NrKCkgIT0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9j
aygpKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogZmlyc3RSZWdpb24gPSBudWxscHRyOwogICAg
ICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWdpb24gPSBudWxscHRyOwotICAgICAgICBpZiAodG9S
ZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBmaXJzdFJlZ2lv
biwgbGFzdFJlZ2lvbikpCisgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJGbG93VGhyZWFkPigq
cmVuZGVyZXIpLmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIGZpcnN0UmVnaW9uLCBsYXN0UmVn
aW9uKSkKICAgICAgICAgICAgIHJlY3QubW92ZUJ5KGZpcnN0UmVnaW9uLT5mbG93VGhyZWFkUG9y
dGlvblJlY3QoKS5sb2NhdGlvbigpKTsKICAgICB9CiAKQEAgLTIyMDEsOCArMjIwMSw4IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhCiAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PSBGaXhlZFBv
c2l0aW9uKQogICAgICAgICBmaXhlZCA9IHRydWU7CiAKLSAgICBpZiAocG9zaXRpb24gPT0gQWJz
b2x1dGVQb3NpdGlvbiAmJiBvLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBvLT5pc1JlbmRlcklu
bGluZSgpKQotICAgICAgICB0b3BMZWZ0ICs9IHRvUmVuZGVySW5saW5lKG8pLT5vZmZzZXRGb3JJ
bkZsb3dQb3NpdGlvbmVkSW5saW5lKHRoaXMpOworICAgIGlmIChwb3NpdGlvbiA9PSBBYnNvbHV0
ZVBvc2l0aW9uICYmIHJlbmRlcmVyLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJ
bmxpbmU+KCpyZW5kZXJlcikpCisgICAgICAgIHRvcExlZnQgKz0gZG93bmNhc3Q8UmVuZGVySW5s
aW5lPigqcmVuZGVyZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUodGhpcyk7CiAg
ICAgZWxzZSBpZiAoc3R5bGVUb1VzZS5oYXNJbkZsb3dQb3NpdGlvbigpICYmIGxheWVyKCkpIHsK
ICAgICAgICAgLy8gQXBwbHkgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mZnNldCB3aGVuIGludmFs
aWRhdGluZyBhIHJlY3RhbmdsZS4gIFRoZSBsYXllcgogICAgICAgICAvLyBpcyB0cmFuc2xhdGVk
LCBidXQgdGhlIHJlbmRlciBib3ggaXNuJ3QsIHNvIHdlIG5lZWQgdG8gZG8gdGhpcyB0byBnZXQg
dGhlCkBAIC0yMjE0LDEwICsyMjE0LDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAg
Ly8gRklYTUU6IFdlIGlnbm9yZSB0aGUgbGlnaHR3ZWlnaHQgY2xpcHBpbmcgcmVjdCB0aGF0IGNv
bnRyb2xzIHVzZSwgc2luY2UgaWYgfG98IGlzIGluIG1pZC1sYXlvdXQsCiAgICAgLy8gaXRzIGNv
bnRyb2xDbGlwUmVjdCB3aWxsIGJlIHdyb25nLiBGb3Igb3ZlcmZsb3cgY2xpcCB3ZSB1c2UgdGhl
IHZhbHVlcyBjYWNoZWQgYnkgdGhlIGxheWVyLgogICAgIHJlY3Quc2V0TG9jYXRpb24odG9wTGVm
dCk7Ci0gICAgaWYgKG8tPmhhc092ZXJmbG93Q2xpcCgpKSB7Ci0gICAgICAgIFJlbmRlckJveCog
Y29udGFpbmVyQm94ID0gdG9SZW5kZXJCb3gobyk7Ci0gICAgICAgIGlmIChzaG91bGRBcHBseUNv
bnRhaW5lcnNDbGlwQW5kT2Zmc2V0KHJlcGFpbnRDb250YWluZXIsIGNvbnRhaW5lckJveCkpIHsK
LSAgICAgICAgICAgIGNvbnRhaW5lckJveC0+YXBwbHlDYWNoZWRDbGlwQW5kU2Nyb2xsT2Zmc2V0
Rm9yUmVwYWludChyZWN0KTsKKyAgICBpZiAocmVuZGVyZXItPmhhc092ZXJmbG93Q2xpcCgpKSB7
CisgICAgICAgIFJlbmRlckJveCYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94Pigq
cmVuZGVyZXIpOworICAgICAgICBpZiAoc2hvdWxkQXBwbHlDb250YWluZXJzQ2xpcEFuZE9mZnNl
dChyZXBhaW50Q29udGFpbmVyLCAmY29udGFpbmVyQm94KSkgeworICAgICAgICAgICAgY29udGFp
bmVyQm94LmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVjdCk7CiAg
ICAgICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yMjI1LDEyICsyMjI1LDEyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
CiAKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAgICAvLyBJZiB0aGUgcmVwYWlu
dENvbnRhaW5lciBpcyBiZWxvdyBvLCB0aGVuIHdlIG5lZWQgdG8gbWFwIHRoZSByZWN0IGludG8g
cmVwYWludENvbnRhaW5lcidzIGNvb3JkaW5hdGVzLgotICAgICAgICBMYXlvdXRTaXplIGNvbnRh
aW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5l
cihvKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFp
bmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIocmVuZGVyZXIpOwogICAgICAgICByZWN0
Lm1vdmUoLWNvbnRhaW5lck9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBv
LT5jb21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVjdCwgZml4ZWQpOwor
ICAgIHJlbmRlcmVyLT5jb21wdXRlUmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVj
dCwgZml4ZWQpOwogfQogCiB2b2lkIFJlbmRlckJveDo6cmVwYWludER1cmluZ0xheW91dElmTW92
ZWQoY29uc3QgTGF5b3V0UmVjdCYgb2xkUmVjdCkKQEAgLTMxMDcsMTEgKzMxMDcsMTEgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9u
ZWQoY29uc3QgUmVuZGVyQm94TW8KICAgICAgICAgcmV0dXJuIChib3hJbmZvKSA/IHN0ZDo6bWF4
PExheW91dFVuaXQ+KDAsIGNiLmNsaWVudExvZ2ljYWxXaWR0aCgpIC0gKGNiLmxvZ2ljYWxXaWR0
aCgpIC0gYm94SW5mby0+bG9naWNhbFdpZHRoKCkpKSA6IGNiLmNsaWVudExvZ2ljYWxXaWR0aCgp
OwogICAgIH0KIAotICAgIEFTU0VSVChjb250YWluaW5nQmxvY2stPmlzUmVuZGVySW5saW5lKCkg
JiYgY29udGFpbmluZ0Jsb2NrLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgQVNTRVJUKGNv
bnRhaW5pbmdCbG9jay0+aXNJbkZsb3dQb3NpdGlvbmVkKCkpOwogCi0gICAgY29uc3QgUmVuZGVy
SW5saW5lKiBmbG93ID0gdG9SZW5kZXJJbmxpbmUoY29udGFpbmluZ0Jsb2NrKTsKLSAgICBJbmxp
bmVGbG93Qm94KiBmaXJzdCA9IGZsb3ctPmZpcnN0TGluZUJveCgpOwotICAgIElubGluZUZsb3dC
b3gqIGxhc3QgPSBmbG93LT5sYXN0TGluZUJveCgpOworICAgIGNvbnN0IGF1dG8mIGZsb3cgPSBk
b3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjb250YWluaW5nQmxvY2spOworICAgIElubGluZUZsb3dC
b3gqIGZpcnN0ID0gZmxvdy5maXJzdExpbmVCb3goKTsKKyAgICBJbmxpbmVGbG93Qm94KiBsYXN0
ID0gZmxvdy5sYXN0TGluZUJveCgpOwogCiAgICAgLy8gSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sg
aXMgZW1wdHksIHJldHVybiBhIHdpZHRoIG9mIDAuCiAgICAgaWYgKCFmaXJzdCB8fCAhbGFzdCkK
QEAgLTMxNTIsOSArMzE1Miw5IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxv
Y2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgICAgICAKLSAgICBBU1NFUlQoaXM8UmVuZGVySW5saW5l
PigqY29udGFpbmluZ0Jsb2NrKSAmJiBjb250YWluaW5nQmxvY2stPmlzSW5GbG93UG9zaXRpb25l
ZCgpKTsKKyAgICBBU1NFUlQoY29udGFpbmluZ0Jsb2NrLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSk7
CiAKLSAgICBjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3cgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+
KCpjb250YWluaW5nQmxvY2spOworICAgIGNvbnN0IGF1dG8mIGZsb3cgPSBkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KCpjb250YWluaW5nQmxvY2spOwogICAgIElubGluZUZsb3dCb3gqIGZpcnN0ID0g
Zmxvdy5maXJzdExpbmVCb3goKTsKICAgICBJbmxpbmVGbG93Qm94KiBsYXN0ID0gZmxvdy5sYXN0
TGluZUJveCgpOwogCkBAIC0zNTMzLDEwICszNTMzLDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2FsV2lkdGgsIGNvbnN0
IFJlCiAgICAgLy8gcG9zaXRpb25lZCwgaW5saW5lIGJlY2F1c2UgcmlnaHQgbm93LCBpdCBpcyB1
c2luZyB0aGUgbG9naWNhbCBsZWZ0IHBvc2l0aW9uCiAgICAgLy8gb2YgdGhlIGZpcnN0IGxpbmUg
Ym94IHdoZW4gcmVhbGx5IGl0IHNob3VsZCB1c2UgdGhlIGxhc3QgbGluZSBib3guICBXaGVuCiAg
ICAgLy8gdGhpcyBpcyBmaXhlZCBlbHNld2hlcmUsIHRoaXMgYmxvY2sgc2hvdWxkIGJlIHJlbW92
ZWQuCi0gICAgaWYgKGNvbnRhaW5lckJsb2NrLT5pc1JlbmRlcklubGluZSgpICYmICFjb250YWlu
ZXJCbG9jay0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgY29u
c3QgUmVuZGVySW5saW5lKiBmbG93ID0gdG9SZW5kZXJJbmxpbmUoY29udGFpbmVyQmxvY2spOwot
ICAgICAgICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmUgPSBmbG93LT5maXJzdExpbmVCb3goKTsK
LSAgICAgICAgSW5saW5lRmxvd0JveCogbGFzdExpbmUgPSBmbG93LT5sYXN0TGluZUJveCgpOwor
ICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KCpjb250YWluZXJCbG9jaykgJiYgIWNvbnRhaW5lckJs
b2NrLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgeworICAgICAgICBjb25zdCBh
dXRvJiBmbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY29udGFpbmVyQmxvY2spOworICAg
ICAgICBJbmxpbmVGbG93Qm94KiBmaXJzdExpbmUgPSBmbG93LmZpcnN0TGluZUJveCgpOworICAg
ICAgICBJbmxpbmVGbG93Qm94KiBsYXN0TGluZSA9IGZsb3cubGFzdExpbmVCb3goKTsKICAgICAg
ICAgaWYgKGZpcnN0TGluZSAmJiBsYXN0TGluZSAmJiBmaXJzdExpbmUgIT0gbGFzdExpbmUpIHsK
ICAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsTGVmdFZhbHVl
ICsgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIGxhc3RMaW5lLT5ib3JkZXJMb2dpY2FsTGVmdCgp
ICsgKGxhc3RMaW5lLT5sb2dpY2FsTGVmdCgpIC0gZmlyc3RMaW5lLT5sb2dpY2FsTGVmdCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NzMsMTAgKzM5NzMsMTAgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQoTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWUKICAgICAvLyBwb3NpdGlvbmVkLCBpbmxpbmUgY29udGFpbmluZyBibG9jayBi
ZWNhdXNlIHJpZ2h0IG5vdywgaXQgaXMgdXNpbmcgdGhlIGxvZ2ljYWwgbGVmdCBwb3NpdGlvbgog
ICAgIC8vIG9mIHRoZSBmaXJzdCBsaW5lIGJveCB3aGVuIHJlYWxseSBpdCBzaG91bGQgdXNlIHRo
ZSBsYXN0IGxpbmUgYm94LiAgV2hlbgogICAgIC8vIHRoaXMgaXMgZml4ZWQgZWxzZXdoZXJlLCB0
aGlzIGJsb2NrIHNob3VsZCBiZSByZW1vdmVkLgotICAgIGlmIChjb250YWluZXJCbG9jay0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiAhY29udGFpbmVyQmxvY2stPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlcklubGluZSogZmxvdyA9IHRvUmVuZGVy
SW5saW5lKGNvbnRhaW5lckJsb2NrKTsKLSAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5l
ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCk7Ci0gICAgICAgIElubGluZUZsb3dCb3gqIGxhc3RMaW5l
ID0gZmxvdy0+bGFzdExpbmVCb3goKTsKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqY29udGFp
bmVyQmxvY2spICYmICFjb250YWluZXJCbG9jay0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlcklubGlu
ZT4oKmNvbnRhaW5lckJsb2NrKTsKKyAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5lID0g
Zmxvdy5maXJzdExpbmVCb3goKTsKKyAgICAgICAgSW5saW5lRmxvd0JveCogbGFzdExpbmUgPSBm
bG93Lmxhc3RMaW5lQm94KCk7CiAgICAgICAgIGlmIChmaXJzdExpbmUgJiYgbGFzdExpbmUgJiYg
Zmlyc3RMaW5lICE9IGxhc3RMaW5lKSB7CiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX3Bv
c2l0aW9uID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgKyBsYXN0
TGluZS0+Ym9yZGVyTG9naWNhbExlZnQoKSArIChsYXN0TGluZS0+bG9naWNhbExlZnQoKSAtIGZp
cnN0TGluZS0+bG9naWNhbExlZnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NjI0LDcg
KzQ2MjQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWpl
Y3Rpb24oUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbQogICAgICAgICBSZW5kZXJSZWdpb24q
IHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24g
PSBudWxscHRyOwogICAgICAgICBpZiAoZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3go
dGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCi0gICAgICAgICAgICBvdmVyZmxvd1JlY3Qu
dW5pdGUobmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCh0aGlzKSk7
CisgICAgICAgICAgICBvdmVyZmxvd1JlY3QudW5pdGUobmFtZWRGbG93RnJhZ21lbnQtPnZpc3Vh
bE92ZXJmbG93UmVjdEZvckJveCgqdGhpcykpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1fb3Zl
cmZsb3cgfHwgIXVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA2M2Y3OWM2ZGU3YTRi
OGQ2OWU1ZDk0Yjg5ZGRjZjVkNDY0YTMyNWYyLi5kMTM3NzhlMDkzZDk4MTY5NWU0ODhlYTViY2Iz
YmIxYTEwZTVlMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKQEAgLTIxMywxMyArMjEzLDEzIEBAIHN0YXRpYyBMYXlvdXRTaXpl
IGFjY3VtdWxhdGVJbkZsb3dQb3NpdGlvbk9mZnNldHMoY29uc3QgUmVuZGVyT2JqZWN0KiBjaGls
ZCkKICAgICBpZiAoIWNoaWxkLT5pc0Fub255bW91c0Jsb2NrKCkgfHwgIWNoaWxkLT5pc0luRmxv
d1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIExheW91dFNpemUoKTsKICAgICBMYXlvdXRT
aXplIG9mZnNldDsKLSAgICBSZW5kZXJFbGVtZW50KiBwID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpjaGlsZCkuaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwotICAgIHdoaWxlIChpczxSZW5k
ZXJJbmxpbmU+KHApKSB7Ci0gICAgICAgIGlmIChwLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSkgewot
ICAgICAgICAgICAgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJ
bmxpbmU+KCpwKTsKKyAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJC
bG9jaz4oKmNoaWxkKS5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7CisgICAgd2hpbGUgKGlz
PFJlbmRlcklubGluZT4ocGFyZW50KSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0luRmxvd1Bv
c2l0aW9uZWQoKSkgeworICAgICAgICAgICAgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUgPSBk
b3duY2FzdDxSZW5kZXJJbmxpbmU+KCpwYXJlbnQpOwogICAgICAgICAgICAgb2Zmc2V0ICs9IHJl
bmRlcklubGluZS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpOwogICAgICAgICB9Ci0gICAgICAg
IHAgPSBwLT5wYXJlbnQoKTsKKyAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKTsKICAg
ICB9CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAppbmRleCBmYmVjMDRhMGVkNWM4NDA3ZmI5MWM0N2MzMWQyZTgxNzU1MWE5
ZjFhLi5jMTQ2NDZlYWU4OTkwYzQ2OWQwYTcwMWU4MTVhMjQ5ZjVmZmMwYmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC05OTUsNyArOTk1LDcgQEAg
dm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKQogICAgICAgICB2aWV3
KCkuZnJhbWVWaWV3KCkucmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QodGhpcyk7CiAKICAgICBpZiAo
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkpCi0g
ICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzKTsKKyAgICAg
ICAgcGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsKIAogICAgIGlm
IChhdXRvKiBjb250YWluZXJGbG93VGhyZWFkID0gcGFyZW50KCktPnJlbmRlck5hbWVkRmxvd1Ro
cmVhZFdyYXBwZXIoKSkKICAgICAgICAgY29udGFpbmVyRmxvd1RocmVhZC0+cmVtb3ZlRmxvd0No
aWxkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4
IDM2YzM0MzUwMjg1NjFmNDBjMjI3YmU2YTBkY2EwMDZlMzdmNDc3YjcuLjRkODUzMDdlZThmMmIz
MWVhOWM1Y2EwOTdjMmE3NzUyODk3Njk0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJl
bmRlckVsZW1lbnQqIGhvdmVyQW5jZXN0b3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JikgeyB9CiAKICAg
ICBib29sIGFuY2VzdG9yTGluZUJveERpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9hbmNlc3Rvckxp
bmVCb3hEaXJ0eTsgfQogICAgIHZvaWQgc2V0QW5jZXN0b3JMaW5lQm94RGlydHkoYm9vbCBmID0g
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
aW5kZXggOTYxNTA5NmMyNjJlZDNiN2Y1YjcyNjc5N2Q4MTNmNjg3NGRhNDZkZi4uZWI4Yzc3MGJl
NDk4YWRjMjFjMTc5OWYwM2UyYjdmMTc2YTc3NWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVy
Qm94KiBib3gsIGNvbnN0IFIKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIExheW91dFJlY3QgY2hpbGRWaXN1YWxPdmVyZmxv
d1JlY3QgPSByZWdpb24tPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKGNo
aWxkKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCA9IHJlZ2lv
bi0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oKmNoaWxkKTsKICAgICAg
ICAgY2hpbGRWaXN1YWxPdmVyZmxvd1JlY3QubW92ZShkZWx0YSk7CiAgICAgICAgIHJlZ2lvbi0+
YWRkVmlzdWFsT3ZlcmZsb3dGb3JCb3goYm94LCBjaGlsZFZpc3VhbE92ZXJmbG93UmVjdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWM3ZTQ1YmMw
Yjc4Y2Y3OTJmOTQxODE1NGY0NTY1ZGMwZmVlNmIzZi4uNDY1YmE5MDU3YWE2MGYxNDg4MDYzMjc3
NjEzZDdkMDE4NGRkYjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVzdHJv
eWVkKCkKICAgICAgICAgICAgICAgICAgICAgYm94LT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocGFyZW50KCkpIAotICAgICAgICAgICAgcGFy
ZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOworICAgICAgICAgICAgcGFy
ZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsKICAgICB9CiAKICAgICBt
X2xpbmVCb3hlcy5kZWxldGVMaW5lQm94ZXMoKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6dXBkYXRlQWx3YXlzQ3JlYXRlTGluZUJveGVzKGJvb2wgZnVsbExheW91dCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gJnBhcmVu
dCgpLT5zdHlsZSgpOwotICAgIFJlbmRlcklubGluZSogcGFyZW50UmVuZGVySW5saW5lID0gcGFy
ZW50KCktPmlzUmVuZGVySW5saW5lKCkgPyB0b1JlbmRlcklubGluZShwYXJlbnQoKSkgOiAwOwor
ICAgIFJlbmRlcklubGluZSogcGFyZW50UmVuZGVySW5saW5lID0gaXM8UmVuZGVySW5saW5lPigq
cGFyZW50KCkpID8gZG93bmNhc3Q8UmVuZGVySW5saW5lPihwYXJlbnQoKSkgOiBudWxscHRyOwog
ICAgIGJvb2wgY2hlY2tGb250cyA9IGRvY3VtZW50KCkuaW5Ob1F1aXJrc01vZGUoKTsKICAgICBS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygp
OwogICAgIGJvb2wgYWx3YXlzQ3JlYXRlTGluZUJveGVzID0gKHBhcmVudFJlbmRlcklubGluZSAm
JiBwYXJlbnRSZW5kZXJJbmxpbmUtPmFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpKQpAQCAtMTEwNywy
NyArMTEwNywyNyBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iagogCiAgICAgLy8gV2UgbmVlZCB0
byBhZGQgaW4gdGhlIGluLWZsb3cgcG9zaXRpb24gb2Zmc2V0cyBvZiBhbnkgaW5saW5lcyAoaW5j
bHVkaW5nIHVzKSB1cCB0byBvdXIKICAgICAvLyBjb250YWluaW5nIGJsb2NrLgotICAgIFJlbmRl
ckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgIGZvciAoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBpbmxpbmVGbG93ID0gdGhpczsgaW5saW5lRmxvdyAmJiBpbmxpbmVGbG93LT5pc1JlbmRl
cklubGluZSgpICYmIGlubGluZUZsb3cgIT0gY2I7CisgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5p
bmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOworICAgIGZvciAoY29uc3QgUmVuZGVy
RWxlbWVudCogaW5saW5lRmxvdyA9IHRoaXM7IGlzPFJlbmRlcklubGluZT4oaW5saW5lRmxvdykg
JiYgaW5saW5lRmxvdyAhPSBjb250YWluaW5nQmxvY2s7CiAgICAgICAgICBpbmxpbmVGbG93ID0g
aW5saW5lRmxvdy0+cGFyZW50KCkpIHsKICAgICAgICAgIGlmIChpbmxpbmVGbG93ID09IHJlcGFp
bnRDb250YWluZXIpIHsKICAgICAgICAgICAgIGhpdFJlcGFpbnRDb250YWluZXIgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlubGluZUZsb3ctPnN0
eWxlKCkuaGFzSW5GbG93UG9zaXRpb24oKSAmJiBpbmxpbmVGbG93LT5oYXNMYXllcigpKQotICAg
ICAgICAgICAgcmVwYWludFJlY3QubW92ZSh0b1JlbmRlcklubGluZShpbmxpbmVGbG93KS0+bGF5
ZXIoKS0+b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKSk7CisgICAgICAgICAgICByZXBhaW50UmVj
dC5tb3ZlKGRvd25jYXN0PFJlbmRlcklubGluZT4oKmlubGluZUZsb3cpLmxheWVyKCktPm9mZnNl
dEZvckluRmxvd1Bvc2l0aW9uKCkpOwogICAgIH0KIAogICAgIExheW91dFVuaXQgb3V0bGluZVNp
emUgPSBzdHlsZSgpLm91dGxpbmVTaXplKCk7CiAgICAgcmVwYWludFJlY3QuaW5mbGF0ZShvdXRs
aW5lU2l6ZSk7CiAKLSAgICBpZiAoaGl0UmVwYWludENvbnRhaW5lciB8fCAhY2IpCisgICAgaWYg
KGhpdFJlcGFpbnRDb250YWluZXIgfHwgIWNvbnRhaW5pbmdCbG9jaykKICAgICAgICAgcmV0dXJu
IHJlcGFpbnRSZWN0OwogCi0gICAgaWYgKGNiLT5oYXNPdmVyZmxvd0NsaXAoKSkKLSAgICAgICAg
Y2ItPmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVwYWludFJlY3Qp
OworICAgIGlmIChjb250YWluaW5nQmxvY2stPmhhc092ZXJmbG93Q2xpcCgpKQorICAgICAgICBj
b250YWluaW5nQmxvY2stPmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQo
cmVwYWludFJlY3QpOwogCi0gICAgY2ItPmNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50Q29u
dGFpbmVyLCByZXBhaW50UmVjdCk7CisgICAgY29udGFpbmluZ0Jsb2NrLT5jb21wdXRlUmVjdEZv
clJlcGFpbnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QpOwogCiAgICAgaWYgKG91dGxp
bmVTaXplKSB7CiAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxSZW5k
ZXJFbGVtZW50PigqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
aW5kZXggY2U4ZTVmMjQ2NDc0MDU3NmFjNWQ3YzkxMWE1MzFiNGU1NjU4MzkwNi4uMTM0NmRlMDZi
YTdmNTIzYTIwOTBlMTUwZjdjMmQxYTdmZGQ3NzFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaApAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7
IC8vIFN1YmNsYXNzZWQgYnkgUmVuZGVyU1ZHSW5saW5lCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGly
dHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCkgb3ZlcnJpZGUgZmlu
YWwgeyBtX2xpbmVCb3hlcy5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzLCBjaGlsZCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2Jq
ZWN0JiBjaGlsZCkgb3ZlcnJpZGUgZmluYWwgeyBtX2xpbmVCb3hlcy5kaXJ0eUxpbmVzRnJvbUNo
YW5nZWRDaGlsZCgqdGhpcywgY2hpbGQpOyB9CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbGlu
ZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwpAQCAtMTgwLDggKzE4MCw2IEBAIHByaXZh
dGU6CiAgICAgUmVuZGVyTGluZUJveExpc3QgbV9saW5lQm94ZXM7ICAgLy8gQWxsIG9mIHRoZSBs
aW5lIGJveGVzIGNyZWF0ZWQgZm9yIHRoaXMgaW5saW5lIGZsb3cuICBGb3IgZXhhbXBsZSwgPGk+
SGVsbG88YnI+d29ybGQuPC9pPiB3aWxsIGhhdmUgdHdvIDxpPiBsaW5lIGJveGVzLgogfTsKIAot
UkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJlbmRlcklubGluZSwgaXNSZW5kZXJJbmxpbmUoKSkK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRF
Ul9PQkpFQ1QoUmVuZGVySW5saW5lLCBpc1JlbmRlcklubGluZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNDRmMjQyZmI0Yjc2OWNkMzM1NGI0MGQxMzk2
NmVkYmNhZDZlODMwNS4uOGU5N2QyNjgwNzRiYmI3MGM4ODFlYjkzMGVjOTRlNjg0Yjk3ZTkzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMTk4LDggKzEx
OTgsOCBAQCBib29sIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKIHsKICAgICBM
YXlvdXRQb2ludCBsb2NhbFBvaW50OwogICAgIExheW91dFNpemUgaW5saW5lQm91bmRpbmdCb3hP
ZmZzZXQ7IC8vIFdlIGRvbid0IHB1dCB0aGlzIGludG8gdGhlIFJlbmRlckxheWVyIHgveSBmb3Ig
aW5saW5lcywgc28gd2UgbmVlZCB0byBzdWJ0cmFjdCBpdCBvdXQgd2hlbiBkb25lLgotICAgIGlm
IChyZW5kZXJlcigpLmlzSW5saW5lKCkgJiYgcmVuZGVyZXIoKS5pc1JlbmRlcklubGluZSgpKSB7
Ci0gICAgICAgIFJlbmRlcklubGluZSYgaW5saW5lRmxvdyA9IHRvUmVuZGVySW5saW5lKHJlbmRl
cmVyKCkpOworICAgIGlmIChyZW5kZXJlcigpLmlzSW5saW5lKCkgJiYgaXM8UmVuZGVySW5saW5l
PihyZW5kZXJlcigpKSkgeworICAgICAgICBhdXRvJiBpbmxpbmVGbG93ID0gZG93bmNhc3Q8UmVu
ZGVySW5saW5lPihyZW5kZXJlcigpKTsKICAgICAgICAgSW50UmVjdCBsaW5lQm94ID0gaW5saW5l
Rmxvdy5saW5lc0JvdW5kaW5nQm94KCk7CiAgICAgICAgIHNldFNpemUobGluZUJveC5zaXplKCkp
OwogICAgICAgICBpbmxpbmVCb3VuZGluZ0JveE9mZnNldCA9IHRvTGF5b3V0U2l6ZShsaW5lQm94
LmxvY2F0aW9uKCkpOwpAQCAtMTIzOCw4ICsxMjM4LDggQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbigpCiAgICAgICAgICAgICBsb2NhbFBvaW50IC09IG9mZnNldDsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS5pc0luRmxvd1Bvc2l0aW9u
ZWQoKSAmJiBwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpLmlzUmVuZGVySW5saW5lKCkpIHsK
LSAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gdG9SZW5kZXJJbmxpbmUocG9zaXRpb25l
ZFBhcmVudC0+cmVuZGVyZXIoKSkub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZElubGluZSgmdG9S
ZW5kZXJCb3gocmVuZGVyZXIoKSkpOworICAgICAgICBpZiAocmVuZGVyZXIoKS5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpLmlzSW5GbG93UG9z
aXRpb25lZCgpICYmIGlzPFJlbmRlcklubGluZT4ocG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIo
KSkpIHsKKyAgICAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gZG93bmNhc3Q8UmVuZGVySW5s
aW5lPihwb3NpdGlvbmVkUGFyZW50LT5yZW5kZXJlcigpKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlv
bmVkSW5saW5lKCZ0b1JlbmRlckJveChyZW5kZXJlcigpKSk7CiAgICAgICAgICAgICBsb2NhbFBv
aW50ICs9IG9mZnNldDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAocGFyZW50KCkpIHsKQEAg
LTU0MDgsNyArNTQwOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0
IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIGNvbnN0CiAgICAgaWYgKGlzU2Vs
ZlBhaW50aW5nTGF5ZXIoKSAmJiBmbG93VGhyZWFkICYmICFyZW5kZXJlcigpLmlzSW5GbG93UmVu
ZGVyRmxvd1RocmVhZCgpKSB7CiAgICAgICAgIEFTU0VSVChuYW1lZEZsb3dGcmFnbWVudC0+aXNW
YWxpZCgpKTsKICAgICAgICAgY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIGJveE1vZGVsT2Jq
ZWN0ID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyKCkpOwotICAgICAg
ICBMYXlvdXRSZWN0IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93ID0gbmFtZWRGbG93RnJh
Z21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCgmYm94TW9kZWxPYmplY3QpOworICAgICAg
ICBMYXlvdXRSZWN0IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93ID0gbmFtZWRGbG93RnJh
Z21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveChib3hNb2RlbE9iamVjdCk7CiAKICAgICAg
ICAgLy8gTGF5ZXJzIGFyZSBpbiBwaHlzaWNhbCBjb29yZGluYXRlcyBzbyB0aGUgb3JpZ2luIG11
c3QgYmUgbW92ZWQgdG8gdGhlIHBoeXNpY2FsIHRvcC1sZWZ0IG9mIHRoZSBmbG93dGhyZWFkLgog
ICAgICAgICBpZiAoJmJveE1vZGVsT2JqZWN0ID09IGZsb3dUaHJlYWQgJiYgZmxvd1RocmVhZC0+
c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSB7CkBAIC01NDU3LDcgKzU0NTcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250
ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBjb25zdAogICAgICAgICBpZiAocmVuZGVyQm94KCktPmhh
c1Zpc3VhbE92ZXJmbG93KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEb2VzIG5vdCBkbyB0
aGUgcmlnaHQgdGhpbmcgd2l0aCBDU1MgcmVnaW9ucyB5ZXQsIHNpbmNlIHdlIGRvbid0IHlldCBm
YWN0b3IgaW4gdGhlCiAgICAgICAgICAgICAvLyBpbmRpdmlkdWFsIHJlZ2lvbiBib3hlcyBhcyBv
dmVyZmxvdy4KLSAgICAgICAgICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHNXaXRoVmlzdWFsT3Zl
cmZsb3cgPSBuYW1lZEZsb3dGcmFnbWVudCA/IG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVy
Zmxvd1JlY3RGb3JCb3gocmVuZGVyQm94KCkpIDogcmVuZGVyQm94KCktPnZpc3VhbE92ZXJmbG93
UmVjdCgpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVy
ZmxvdyA9IG5hbWVkRmxvd0ZyYWdtZW50ID8gbmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJm
bG93UmVjdEZvckJveCgqcmVuZGVyQm94KCkpIDogcmVuZGVyQm94KCktPnZpc3VhbE92ZXJmbG93
UmVjdCgpOwogICAgICAgICAgICAgcmVuZGVyQm94KCktPmZsaXBGb3JXcml0aW5nTW9kZShsYXll
ckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdyk7IC8vIExheWVycyBhcmUgaW4gcGh5c2ljYWwgY29v
cmRpbmF0ZXMsIHNvIHRoZSBvdmVyZmxvdyBoYXMgdG8gYmUgZmxpcHBlZC4KICAgICAgICAgICAg
IGxheWVyQm91bmRzV2l0aFZpc3VhbE92ZXJmbG93Lm1vdmUob2Zmc2V0RnJvbVJvb3RMb2NhbCk7
CiAgICAgICAgICAgICBpZiAodGhpcyAhPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllciB8fCBj
bGlwUmVjdHNDb250ZXh0LnJlc3BlY3RPdmVyZmxvd0NsaXAgPT0gUmVzcGVjdE92ZXJmbG93Q2xp
cCkKQEAgLTU1OTMsNyArNTU5Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmludGVyc2VjdHNEYW1h
Z2VSZWN0KGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvCiAgICAgLy8g
dG8gdGhlIGZsb3cgdGhyZWFkLCBub3QgdGhlIGxhc3QgcmVnaW9uIChpbiB3aGljaCBpdCB3aWxs
IGVuZCB1cCBiZWNhdXNlIG9mIGJvdHRvbTowcHgpCiAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50
ICYmIHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgIExh
eW91dFJlY3QgYiA9IGxheWVyQm91bmRzOwotICAgICAgICBiLm1vdmVCeShuYW1lZEZsb3dGcmFn
bWVudC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2Jq
ZWN0PigmcmVuZGVyZXIoKSkpLmxvY2F0aW9uKCkpOworICAgICAgICBiLm1vdmVCeShuYW1lZEZs
b3dGcmFnbWVudC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGRvd25jYXN0PFJlbmRlckJveE1v
ZGVsT2JqZWN0PihyZW5kZXJlcigpKSkubG9jYXRpb24oKSk7CiAgICAgICAgIGIuaW5mbGF0ZShy
ZW5kZXJlcigpLnZpZXcoKS5tYXhpbWFsT3V0bGluZVNpemUoKSk7CiAgICAgICAgIGlmIChiLmlu
dGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2MjAs
MTAgKzU2MjAsMTAgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6bG9jYWxCb3VuZGluZ0JveChD
YWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzIGZsYWdzKSBjb25zdAogICAgIC8vIGFzIHBhcnQgb2Yg
b3VyIGJvdW5kaW5nIGJveC4gIFdlIGRvIHRoaXMgYmVjYXVzZSB3ZSBhcmUgdGhlIHJlc3BvbnNp
YmxlIGxheWVyIGZvciBib3RoIGhpdCB0ZXN0aW5nIGFuZCBwYWludGluZyB0aG9zZQogICAgIC8v
IGZsb2F0cy4KICAgICBMYXlvdXRSZWN0IHJlc3VsdDsKLSAgICBpZiAocmVuZGVyZXIoKS5pc0lu
bGluZSgpICYmIHJlbmRlcmVyKCkuaXNSZW5kZXJJbmxpbmUoKSkKLSAgICAgICAgcmVzdWx0ID0g
dG9SZW5kZXJJbmxpbmUocmVuZGVyZXIoKSkubGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94
KCk7CisgICAgaWYgKHJlbmRlcmVyKCkuaXNJbmxpbmUoKSAmJiBpczxSZW5kZXJJbmxpbmU+KHJl
bmRlcmVyKCkpKQorICAgICAgICByZXN1bHQgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRl
cmVyKCkpLmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCgpOwogICAgIGVsc2UgaWYgKGlz
PFJlbmRlclRhYmxlUm93PihyZW5kZXJlcigpKSkgewotICAgICAgICBSZW5kZXJUYWJsZVJvdyYg
dGFibGVSb3cgPSBkb3duY2FzdDxSZW5kZXJUYWJsZVJvdz4ocmVuZGVyZXIoKSk7CisgICAgICAg
IGF1dG8mIHRhYmxlUm93ID0gZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKCkpOwog
ICAgICAgICAvLyBPdXIgYm91bmRpbmcgYm94IGlzIGp1c3QgdGhlIHVuaW9uIG9mIGFsbCBvZiBv
dXIgY2VsbHMnIGJvcmRlci9vdmVyZmxvdyByZWN0cy4KICAgICAgICAgZm9yIChSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwgPSB0YWJsZVJvdy5maXJzdENlbGwoKTsgY2VsbDsgY2VsbCA9IGNlbGwtPm5l
eHRDZWxsKCkpIHsKICAgICAgICAgICAgIExheW91dFJlY3QgYmJveCA9IGNlbGwtPmJvcmRlckJv
eFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
Qm94TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwCmluZGV4IDA5Mjc2YmIyYWM0NDA2OTE4ODg5MTNjYWU3NmM0OWE3NTcxZGIwNmEuLmM4NmZl
OGY2NDNlMDE3NjUzNDA4YTU3ZmFjYWYwYTg1MzhiYjQxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcApAQCAtMzEyLDIyICszMTIsMjIgQEAg
Ym9vbCBSZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVu
ZGVyZXIsIGNvbnN0IEhpdFRlc3RSZXEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVu
ZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250YWluZXIsIFJlbmRlck9iamVjdCogY2hpbGQpCit2b2lkIFJlbmRlckxpbmVC
b3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCYg
Y29udGFpbmVyLCBSZW5kZXJPYmplY3QmIGNoaWxkKQogewotICAgIEFTU0VSVChjb250YWluZXIt
PmlzUmVuZGVySW5saW5lKCkgfHwgY29udGFpbmVyLT5pc1JlbmRlckJsb2NrRmxvdygpKTsKLSAg
ICBpZiAoIWNvbnRhaW5lci0+cGFyZW50KCkgfHwgKGNvbnRhaW5lci0+aXNSZW5kZXJCbG9ja0Zs
b3coKSAmJiBjb250YWluZXItPnNlbGZOZWVkc0xheW91dCgpKSkKKyAgICBBU1NFUlQoaXM8UmVu
ZGVySW5saW5lPihjb250YWluZXIpIHx8IGlzPFJlbmRlckJsb2NrRmxvdz4oY29udGFpbmVyKSk7
CisgICAgaWYgKCFjb250YWluZXIucGFyZW50KCkgfHwgKGlzPFJlbmRlckJsb2NrRmxvdz4oY29u
dGFpbmVyKSAmJiBjb250YWluZXIuc2VsZk5lZWRzTGF5b3V0KCkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZW5kZXJJbmxpbmUqIGlubGluZUNvbnRhaW5lciA9IGNvbnRhaW5lci0+aXNSZW5k
ZXJJbmxpbmUoKSA/IHRvUmVuZGVySW5saW5lKGNvbnRhaW5lcikgOiAwOworICAgIFJlbmRlcklu
bGluZSogaW5saW5lQ29udGFpbmVyID0gaXM8UmVuZGVySW5saW5lPihjb250YWluZXIpID8gJmRv
d25jYXN0PFJlbmRlcklubGluZT4oY29udGFpbmVyKSA6IG51bGxwdHI7CiAgICAgSW5saW5lQm94
KiBmaXJzdEJveCA9IGlubGluZUNvbnRhaW5lciA/IGlubGluZUNvbnRhaW5lci0+Zmlyc3RMaW5l
Qm94SW5jbHVkaW5nQ3VsbGluZygpIDogZmlyc3RMaW5lQm94KCk7CiAKICAgICAvLyBJZiB3ZSBo
YXZlIG5vIGZpcnN0IGxpbmUgYm94LCB0aGVuIGp1c3QgYmFpbCBlYXJseS4KICAgICBpZiAoIWZp
cnN0Qm94KSB7CiAgICAgICAgIC8vIEZvciBhbiBlbXB0eSBpbmxpbmUsIGdvIGFoZWFkIGFuZCBw
cm9wYWdhdGUgdGhlIGNoZWNrIHVwIHRvIG91ciBwYXJlbnQsIHVubGVzcyB0aGUgcGFyZW50CiAg
ICAgICAgIC8vIGlzIGFscmVhZHkgZGlydHkuCi0gICAgICAgIGlmIChjb250YWluZXItPmlzSW5s
aW5lKCkgJiYgIWNvbnRhaW5lci0+YW5jZXN0b3JMaW5lQm94RGlydHkoKSkgewotICAgICAgICAg
ICAgY29udGFpbmVyLT5wYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoY29udGFp
bmVyKTsKLSAgICAgICAgICAgIGNvbnRhaW5lci0+c2V0QW5jZXN0b3JMaW5lQm94RGlydHkoKTsg
Ly8gTWFyayB0aGUgY29udGFpbmVyIHRvIGF2b2lkIGRpcnR5aW5nIHRoZSBzYW1lIGxpbmVzIGFn
YWluIGFjcm9zcyBtdWx0aXBsZSBkZXN0cm95KCkgY2FsbHMgb2YgdGhlIHNhbWUgc3VidHJlZS4K
KyAgICAgICAgaWYgKGNvbnRhaW5lci5pc0lubGluZSgpICYmICFjb250YWluZXIuYW5jZXN0b3JM
aW5lQm94RGlydHkoKSkgeworICAgICAgICAgICAgY29udGFpbmVyLnBhcmVudCgpLT5kaXJ0eUxp
bmVzRnJvbUNoYW5nZWRDaGlsZChjb250YWluZXIpOworICAgICAgICAgICAgY29udGFpbmVyLnNl
dEFuY2VzdG9yTGluZUJveERpcnR5KCk7IC8vIE1hcmsgdGhlIGNvbnRhaW5lciB0byBhdm9pZCBk
aXJ0eWluZyB0aGUgc2FtZSBsaW5lcyBhZ2FpbiBhY3Jvc3MgbXVsdGlwbGUgZGVzdHJveSgpIGNh
bGxzIG9mIHRoZSBzYW1lIHN1YnRyZWUuCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVz
RnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbgogICAgIC8vIHBh
cmVudCdzIGZpcnN0IGxpbmUgYm94LgogICAgIFJvb3RJbmxpbmVCb3gqIGJveCA9IG51bGxwdHI7
CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50OwotICAgIGZvciAoY3VycmVudCA9IGNoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnByZXZpb3VzU2li
bGluZygpKSB7CisgICAgZm9yIChjdXJyZW50ID0gY2hpbGQucHJldmlvdXNTaWJsaW5nKCk7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBp
ZiAoY3VycmVudC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0
OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFp
bgogICAgICAgICAgICAgLy8gVGhpcyBpc24ndCBnb29kIGVub3VnaCwgc2luY2Ugd2Ugd29uJ3Qg
bG9jYXRlIHRoZSByb290IGxpbmUgYm94IHRoYXQgZW5jbG9zZXMgdGhlIHJlbW92ZWQKICAgICAg
ICAgICAgIC8vIDxicj4uIFdlIGhhdmUgdG8ganVzdCBvdmVyLWludmFsaWRhdGUgYSBiaXQgYW5k
IGdvIHVwIHRvIG91ciBwYXJlbnQuCiAgICAgICAgICAgICBpZiAoIWlubGluZUNvbnRhaW5lci0+
YW5jZXN0b3JMaW5lQm94RGlydHkoKSkgewotICAgICAgICAgICAgICAgIGlubGluZUNvbnRhaW5l
ci0+cGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKGlubGluZUNvbnRhaW5lcik7
CisgICAgICAgICAgICAgICAgaW5saW5lQ29udGFpbmVyLT5wYXJlbnQoKS0+ZGlydHlMaW5lc0Zy
b21DaGFuZ2VkQ2hpbGQoKmlubGluZUNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgaW5saW5l
Q29udGFpbmVyLT5zZXRBbmNlc3RvckxpbmVCb3hEaXJ0eSgpOyAvLyBNYXJrIHRoZSBjb250YWlu
ZXIgdG8gYXZvaWQgZGlydHlpbmcgdGhlIHNhbWUgbGluZXMgYWdhaW4gYWNyb3NzIG11bHRpcGxl
IGRlc3Ryb3koKSBjYWxscyBvZiB0aGUgc2FtZSBzdWJ0cmVlLgogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzk0LDkgKzM5NCw5IEBAIHZvaWQgUmVuZGVyTGluZUJveExp
c3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250
YWluCiAgICAgICAgIC8vIElmIHxjaGlsZHwgaGFzIGJlZW4gaW5zZXJ0ZWQgYmVmb3JlIHRoZSBm
aXJzdCBlbGVtZW50IGluIHRoZSBsaW5lYm94LCBidXQgYWZ0ZXIgY29sbGFwc2VkIGxlYWRpbmcK
ICAgICAgICAgLy8gc3BhY2UsIHRoZSBzZWFyY2ggZm9yIHxjaGlsZHwncyBsaW5lYm94IHdpbGwg
Z28gcGFzdCB0aGUgbGVhZGluZyBzcGFjZSB0byB0aGUgcHJldmlvdXMgbGluZWJveCBhbmQgc2Vs
ZWN0IHRoYXQKICAgICAgICAgLy8gb25lIGFzIHxib3h8LiBJZiB3ZSBoaXQgdGhhdCBzaXR1YXRp
b24gaGVyZSwgZGlydHkgdGhlIHxib3h8IGFjdHVhbGx5IGNvbnRhaW5pbmcgdGhlIGNoaWxkIHRv
by4gCi0gICAgICAgIGJvb2wgaW5zZXJ0ZWRBZnRlckxlYWRpbmdTcGFjZSA9IGJveC0+bGluZUJy
ZWFrT2JqKCkgPT0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOwotICAgICAgICBpZiAoYWRqYWNl
bnRCb3ggJiYgKGFkamFjZW50Qm94LT5saW5lQnJlYWtPYmooKSA9PSBjaGlsZCB8fCBjaGlsZC0+
aXNCUigpIHx8IChjdXJyZW50ICYmIGN1cnJlbnQtPmlzQlIoKSkKLSAgICAgICAgICAgIHx8IGlu
c2VydGVkQWZ0ZXJMZWFkaW5nU3BhY2UgfHwgaXNJc29sYXRlZChjb250YWluZXItPnN0eWxlKCku
dW5pY29kZUJpZGkoKSkpKQorICAgICAgICBib29sIGluc2VydGVkQWZ0ZXJMZWFkaW5nU3BhY2Ug
PSBib3gtPmxpbmVCcmVha09iaigpID09IGNoaWxkLnByZXZpb3VzU2libGluZygpOworICAgICAg
ICBpZiAoYWRqYWNlbnRCb3ggJiYgKGFkamFjZW50Qm94LT5saW5lQnJlYWtPYmooKSA9PSAmY2hp
bGQgfHwgY2hpbGQuaXNCUigpIHx8IChjdXJyZW50ICYmIGN1cnJlbnQtPmlzQlIoKSkKKyAgICAg
ICAgICAgIHx8IGluc2VydGVkQWZ0ZXJMZWFkaW5nU3BhY2UgfHwgaXNJc29sYXRlZChjb250YWlu
ZXIuc3R5bGUoKS51bmljb2RlQmlkaSgpKSkpCiAgICAgICAgICAgICBhZGphY2VudEJveC0+bWFy
a0RpcnR5KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCb3hMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuaAppbmRleCAyYzJmYTQ4Nzg3ODY3ODY0YWRhYjU0YjRmMjkyODkyOWFkMDVkYjJm
Li43YWEzNWEyZDk4Nzc1YmI4YmRhYmUyMjY2ZGFjOWE2M2FiOGVkZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaApAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVMaW5lQm94KElubGluZUZsb3dCb3gqKTsKICAgICAKICAg
ICB2b2lkIGRpcnR5TGluZUJveGVzKCk7Ci0gICAgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5nZWRD
aGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogcGFyZW50LCBSZW5kZXJPYmplY3QqIGNoaWxkKTsK
KyAgICB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0
JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpOwogCiAgICAgdm9pZCBwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAg
ICAgYm9vbCBoaXRUZXN0KFJlbmRlckJveE1vZGVsT2JqZWN0KiwgY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rp
b24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCBiMjExODYyY2RlNjg4YjQxZWQzNGUwODNiYWUyM2QzYWU1NjNm
MTkzLi42ZWE1NjIwZDg5ZGVjMTZmY2MwN2E0ZTc5ZmNlM2MwMjcxNTRhODhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAt
Mjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZWdpb25DaGFuZ2Vk
V3JpdGluZ01vZGUoUmVuZGVyUmVnaW9uKiByZWdpb24pCiAKIExheW91dFJlY3QgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjpkZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94SW5OYW1lZEZsb3dGcmFnbWVu
dChjb25zdCBSZW5kZXJCb3gmIGJveCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQmIGZyYWdtZW50
KSBjb25zdAogewotICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0ID0gZnJhZ21lbnQu
dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KCZib3gpOworICAgIExheW91dFJlY3QgdmlzdWFsT3Zl
cmZsb3dSZWN0ID0gZnJhZ21lbnQudmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGJveCk7CiAgICAg
TGF5b3V0VW5pdCBpbml0aWFsTG9naWNhbFggPSBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyB2aXN1YWxPdmVyZmxvd1JlY3QueCgpIDogdmlzdWFsT3ZlcmZsb3dSZWN0LnkoKTsK
IAogICAgIC8vIFRoZSB2aXN1YWwgb3ZlcmZsb3cgcmVjdCByZXR1cm5lZCBieSB2aXN1YWxPdmVy
Zmxvd1JlY3RGb3JCb3ggaXMgYWxyZWFkeSBmbGlwcGVkIGJ1dCB0aGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzg3YzFjOTIyMTc4ZmI0ZDE5YmIyMjZj
NzkyNTFiMzVjYTMwNTQ4OS4uYjI3ZDkxMGYwYmQ1ZTBhOGIzNmEwMjA2NzlkMmFmZWFjMWRjMmJm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIwNDcs
NyArMjA0Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVlKCkKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIEFTU0VSVChpc1Jvb3RlZCgpKSBoZXJlIGJ1dCBnZW5lcmF0ZWQg
Y29udGVudCBtYWtlcyBzb21lIG91dC1vZi1vcmRlciBpbnNlcnRpb24uCiAKICAgICBpZiAoIWlz
RmxvYXRpbmcoKSAmJiBwYXJlbnQoKS0+Y2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAgcGFyZW50
KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHRoaXMpOworICAgICAgICBwYXJlbnQoKS0+
ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMpOwogICAgIAogICAgIC8vIFdlIGhhdmUg
dG8gdW5zZXQgdGhlIGN1cnJlbnQgbGF5b3V0IFJlbmRlckZsb3dUaHJlYWQgaGVyZSwgc2luY2Ug
aW5zZXJ0ZWRJbnRvVHJlZSgpIGNhbiBoYXBwZW4gaW4KICAgICAvLyB0aGUgbWlkZGxlIG9mIGxh
eW91dCBidXQgZm9yIG9iamVjdHMgaW5zaWRlIGEgbmVzdGVkIGZsb3cgdGhyZWFkIHRoYXQgaXMg
c3RpbGwgYmVpbmcgcG9wdWxhdGVkLiBUaGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCmluZGV4IGNmNTNhMzAxN2NlZjBjYWQ2ZTgzZjEzZWQzNmM4MzEzMGIwYTI1
YWEuLmY5ZGU4Y2U4Y2Q1NjI1YmE1MGIxNzAzNzFiYWNmYjE0MmM1ZTE5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJSZWdpb246Om92ZXJmbG93UmVjdEZvckZsb3dUaHJlYWRQb3J0aW9uKGNv
bnN0IExheW91dFJlY3QmIGZsb3cKICAgICBpZiAoc2hvdWxkQ2xpcEZsb3dUaHJlYWRDb250ZW50
KCkpCiAgICAgICAgIHJldHVybiBmbG93VGhyZWFkUG9ydGlvblJlY3Q7CiAKLSAgICBMYXlvdXRS
ZWN0IGZsb3dUaHJlYWRPdmVyZmxvdyA9IG92ZXJmbG93VHlwZSA9PSBWaXN1YWxPdmVyZmxvdyA/
IHZpc3VhbE92ZXJmbG93UmVjdEZvckJveChtX2Zsb3dUaHJlYWQpIDogbGF5b3V0T3ZlcmZsb3dS
ZWN0Rm9yQm94KG1fZmxvd1RocmVhZCk7CisgICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkT3ZlcmZs
b3cgPSBvdmVyZmxvd1R5cGUgPT0gVmlzdWFsT3ZlcmZsb3cgPyB2aXN1YWxPdmVyZmxvd1JlY3RG
b3JCb3goKm1fZmxvd1RocmVhZCkgOiBsYXlvdXRPdmVyZmxvd1JlY3RGb3JCb3gobV9mbG93VGhy
ZWFkKTsKIAogICAgIC8vIFdlIGFyZSBpbnRlcmVzdGVkIGFib3V0IHRoZSBvdXRsaW5lIHNpemUg
b25seSB3aGVuIGNvbXB1dGluZyB0aGUgdmlzdWFsIG92ZXJmbG93LgogICAgIExheW91dFVuaXQg
b3V0bGluZVNpemUgPSBvdmVyZmxvd1R5cGUgPT0gVmlzdWFsT3ZlcmZsb3cgPyBMYXlvdXRVbml0
KG1heGltYWxPdXRsaW5lU2l6ZShQYWludFBoYXNlT3V0bGluZSkpIDogTGF5b3V0VW5pdCgpOwpA
QCAtNTIzLDE2ICs1MjMsMTYgQEAgTGF5b3V0UmVjdCBSZW5kZXJSZWdpb246OmxheW91dE92ZXJm
bG93UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCkKICAgICByZXR1cm4gb3ZlcmZsb3ct
PmxheW91dE92ZXJmbG93UmVjdCgpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6dmlz
dWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3gpCitM
YXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0JiBib3gpCiB7Ci0gICAgaWYgKGJveC0+aXNSZW5kZXJJbmxpbmUo
KSkgewotICAgICAgICBjb25zdCBSZW5kZXJJbmxpbmUqIGlubGluZUJveCA9IHRvUmVuZGVySW5s
aW5lKGJveCk7Ci0gICAgICAgIHJldHVybiBpbmxpbmVCb3gtPmxpbmVzVmlzdWFsT3ZlcmZsb3dC
b3VuZGluZ0JveEluUmVnaW9uKHRoaXMpOworICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KGJveCkp
IHsKKyAgICAgICAgY29uc3QgUmVuZGVySW5saW5lJiBpbmxpbmVCb3ggPSBkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KGJveCk7CisgICAgICAgIHJldHVybiBpbmxpbmVCb3gubGluZXNWaXN1YWxPdmVy
Zmxvd0JvdW5kaW5nQm94SW5SZWdpb24odGhpcyk7CiAgICAgfQogCi0gICAgaWYgKGJveC0+aXNC
b3goKSkgeworICAgIGlmIChpczxSZW5kZXJCb3g+KGJveCkpIHsKICAgICAgICAgUmVmUHRyPFJl
bmRlck92ZXJmbG93PiBvdmVyZmxvdzsKLSAgICAgICAgZW5zdXJlT3ZlcmZsb3dGb3JCb3godG9S
ZW5kZXJCb3goYm94KSwgb3ZlcmZsb3csIHRydWUpOworICAgICAgICBlbnN1cmVPdmVyZmxvd0Zv
ckJveCgmZG93bmNhc3Q8UmVuZGVyQm94Pihib3gpLCBvdmVyZmxvdywgdHJ1ZSk7CiAKICAgICAg
ICAgQVNTRVJUKG92ZXJmbG93KTsKICAgICAgICAgcmV0dXJuIG92ZXJmbG93LT52aXN1YWxPdmVy
Zmxvd1JlY3QoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6
bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oY29uc3QgUmVuZGVyQm94Kgog
ICAgIHJldHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6dmlzdWFsT3Zl
cmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGJveCkKK0xheW91dFJlY3QgUmVuZGVyUmVnaW9uOjp2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3hG
b3JQcm9wYWdhdGlvbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94KQogewogICAgIExh
eW91dFJlY3QgcmVjdCA9IHZpc3VhbE92ZXJmbG93UmVjdEZvckJveChib3gpOwogICAgIGZsb3dU
aHJlYWQoKS0+ZmxpcEZvcldyaXRpbmdNb2RlTG9jYWxDb29yZGluYXRlcyhyZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCA3ZWQ1MTNlNTBlYWUyOWYyOTBi
YjljYzM3MmJkYmZjOGI5OTUwYzk2Li4yOWQ3OWQ1MmE0MzVkMzg2OGI0ZjNjZWYwZjVjN2FkMzcy
YzJlOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0xMTMs
OSArMTEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTGF5b3V0T3ZlcmZsb3dGb3JCb3goY29u
c3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgYWRkVmlzdWFsT3Zl
cmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIExh
eW91dFJlY3QgbGF5b3V0T3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveCopOwotICAg
IExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0Kik7CisgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QmKTsKICAgICBMYXlvdXRSZWN0IGxheW91dE92ZXJmbG93UmVj
dEZvckJveEZvclByb3BhZ2F0aW9uKGNvbnN0IFJlbmRlckJveCopOwotICAgIExheW91dFJlY3Qg
dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqKTsKKyAgICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclBy
b3BhZ2F0aW9uKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Jik7CiAKICAgICBMYXlvdXRSZWN0
IHJlY3RGbG93UG9ydGlvbkZvckJveChjb25zdCBSZW5kZXJCb3gqLCBjb25zdCBMYXlvdXRSZWN0
JikgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAppbmRleCA5NzIzNWI3NTIyNjU4MTRjNzU2MjFiODIyNjcyNWVmNGI3Y2QwODAxLi5iMjdk
ZjJjNWI2M2VhZDk3M2ZmOWEwNmJkYWI5NTMxODQzZmE4MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgUmVuZGVyUmVw
bGFjZWQ6On5SZW5kZXJSZXBsYWNlZCgpCiB2b2lkIFJlbmRlclJlcGxhY2VkOjp3aWxsQmVEZXN0
cm95ZWQoKQogewogICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpICYmIHBhcmVudCgp
KQotICAgICAgICBwYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcyk7Cisg
ICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcyk7CiAKICAg
ICBSZW5kZXJCb3g6OndpbGxCZURlc3Ryb3llZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4IDE0MTg3NTAwNzM0OWVkZmJl
ZTc5ZjVkOTc5YTk2MWZhNDNiODAwMmEuLjkyMGQ3NTE3YmEzYTNhZGZjYTFkMDJkZmUxNThmYzc4
ODQzZWI2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExp
bmVCb3hlcy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6
OnJlbW92ZUFsbEZyb21QYXJlbnQoUmVuZGVyVGV4dCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFt
X2ZpcnN0KSB7CiAgICAgICAgIGlmIChyZW5kZXJlci5wYXJlbnQoKSkKLSAgICAgICAgICAgIHJl
bmRlcmVyLnBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgmcmVuZGVyZXIpOwor
ICAgICAgICAgICAgcmVuZGVyZXIucGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxk
KHJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKGF1dG8gYm94ID0g
bV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCkBAIC02ODMsNyArNjgzLDcg
QEAgYm9vbCBSZW5kZXJUZXh0TGluZUJveGVzOjpkaXJ0eVJhbmdlKFJlbmRlclRleHQmIHJlbmRl
cmVyLCB1bnNpZ25lZCBzdGFydCwgdW5zaWcKICAgICAKICAgICAvLyBJZiB0aGUgdGV4dCBub2Rl
IGlzIGVtcHR5LCBkaXJ0eSB0aGUgbGluZSB3aGVyZSBuZXcgdGV4dCB3aWxsIGJlIGluc2VydGVk
LgogICAgIGlmICghbV9maXJzdCAmJiByZW5kZXJlci5wYXJlbnQoKSkgewotICAgICAgICByZW5k
ZXJlci5wYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoJnJlbmRlcmVyKTsKKyAg
ICAgICAgcmVuZGVyZXIucGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKHJlbmRl
cmVyKTsKICAgICAgICAgZGlydGllZExpbmVzID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGRp
cnRpZWRMaW5lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0Jy
ZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaAppbmRleCBlYWY4Njk4NWFjMDE4MDJm
YzNiYzFiZDlkNmY3NzY3YWJlMWYwNGQ0Li45YWVmZmI0YTBiZGU3N2IyYjgyOTFjNWVkNDRkNmRl
MzI0YmU1NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVh
a2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCkBAIC0yODYsOCArMjg2LDggQEAg
aW5saW5lIExheW91dFVuaXQgaW5saW5lTG9naWNhbFdpZHRoKFJlbmRlck9iamVjdCogY2hpbGQs
IGJvb2wgY2hlY2tTdGFydEVkZ2UgPQogICAgIHVuc2lnbmVkIGxpbmVEZXB0aCA9IDE7CiAgICAg
TGF5b3V0VW5pdCBleHRyYVdpZHRoID0gMDsKICAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnQgPSBj
aGlsZC0+cGFyZW50KCk7Ci0gICAgd2hpbGUgKHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBs
aW5lRGVwdGgrKyA8IGNNYXhMaW5lRGVwdGgpIHsKLSAgICAgICAgY29uc3QgUmVuZGVySW5saW5l
JiBwYXJlbnRBc1JlbmRlcklubGluZSA9IHRvUmVuZGVySW5saW5lKCpwYXJlbnQpOworICAgIHdo
aWxlIChpczxSZW5kZXJJbmxpbmU+KCpwYXJlbnQpICYmIGxpbmVEZXB0aCsrIDwgY01heExpbmVE
ZXB0aCkgeworICAgICAgICBjb25zdCBhdXRvJiBwYXJlbnRBc1JlbmRlcklubGluZSA9IGRvd25j
YXN0PFJlbmRlcklubGluZT4oKnBhcmVudCk7CiAgICAgICAgIGlmICghaXNFbXB0eUlubGluZShw
YXJlbnRBc1JlbmRlcklubGluZSkpIHsKICAgICAgICAgICAgIGNoZWNrU3RhcnRFZGdlID0gY2hl
Y2tTdGFydEVkZ2UgJiYgc2hvdWxkQWRkQm9yZGVyUGFkZGluZ01hcmdpbihwcmV2aW91c0luRmxv
d1NpYmxpbmcoY2hpbGQpKTsKICAgICAgICAgICAgIGlmIChjaGVja1N0YXJ0RWRnZSkKQEAgLTM3
Myw3ICszNzMsNyBAQCBpbmxpbmUgYm9vbCBzaG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRP
YmplY3QoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgUmVuZGVyTwogCiBpbmxpbmUgdm9pZCBCcmVh
a2luZ0NvbnRleHQ6OmhhbmRsZUVtcHR5SW5saW5lKCkKIHsKLSAgICBSZW5kZXJJbmxpbmUmIGZs
b3dCb3ggPSB0b1JlbmRlcklubGluZSgqbV9jdXJyZW50LnJlbmRlcmVyKCkpOworICAgIFJlbmRl
cklubGluZSYgZmxvd0JveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKm1fY3VycmVudC5yZW5k
ZXJlcigpKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgZW5kIHVwIGJlaW5nIGNhbGxlZCBv
biBlbXB0eSBpbmxpbmVzCiAgICAgQVNTRVJUKGlzRW1wdHlJbmxpbmUoZmxvd0JveCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKaW5k
ZXggMGIwYzQ0ZTZlNjBjYjUyNGZiMjlkZjQxNDU0OTliODhiNTcyYTk1YS4uOTA1OGIzZGRhODBl
NmVjNGFmYTZhNGViODI0MWI5NTM5YjgwYWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCkBAIC0xMDUsOCArMTA1LDggQEAgaW5s
aW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdCwgY29uc3Qg
TGluZUluZm8mIGxpbmVJbmZvID0KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHJl
bmRlcmVySXNFbXB0eUlubGluZSA9IGZhbHNlOwotICAgIGlmIChpdC5yZW5kZXJlcigpLT5pc1Jl
bmRlcklubGluZSgpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5lUmVuZGVy
ZXIgPSB0b1JlbmRlcklubGluZSgqaXQucmVuZGVyZXIoKSk7CisgICAgaWYgKGlzPFJlbmRlcklu
bGluZT4oKml0LnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGlubGluZVJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqaXQucmVuZGVyZXIoKSk7CiAgICAgICAgIGlm
ICghYWx3YXlzUmVxdWlyZXNMaW5lQm94KGlubGluZVJlbmRlcmVyKSAmJiAhcmVxdWlyZXNMaW5l
Qm94Rm9yQ29udGVudChpbmxpbmVSZW5kZXJlciwgbGluZUluZm8pKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZW5kZXJlcklzRW1wdHlJbmxpbmUgPSBpc0VtcHR5SW5saW5l
KGlubGluZVJlbmRlcmVyKTsKQEAgLTEyNiwxMiArMTI2LDEyIEBAIGlubGluZSB2b2lkIHNldFN0
YXRpY1Bvc2l0aW9ucyhSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBSZW5kZXJCb3gmIGNoaWxkKQog
ICAgIC8vIHdpbGwgd29yayBmb3IgdGhlIGNvbW1vbiBjYXNlcwogICAgIFJlbmRlckVsZW1lbnQq
IGNvbnRhaW5lckJsb2NrID0gY2hpbGQuY29udGFpbmVyKCk7CiAgICAgTGF5b3V0VW5pdCBibG9j
a0hlaWdodCA9IGJsb2NrLmxvZ2ljYWxIZWlnaHQoKTsKLSAgICBpZiAoY29udGFpbmVyQmxvY2st
PmlzUmVuZGVySW5saW5lKCkpIHsKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqY29udGFpbmVy
QmxvY2spKSB7CiAgICAgICAgIC8vIEEgcmVsYXRpdmUgcG9zaXRpb25lZCBpbmxpbmUgZW5jbG9z
ZXMgdXMuIEluIHRoaXMgY2FzZSwgd2UgYWxzbyBoYXZlIHRvIGRldGVybWluZSBvdXIKICAgICAg
ICAgLy8gcG9zaXRpb24gYXMgdGhvdWdoIHdlIHdlcmUgYW4gaW5saW5lLiBTZXQgfHN0YXRpY0lu
bGluZVBvc2l0aW9ufCBhbmQgfHN0YXRpY0Jsb2NrUG9zaXRpb258IG9uIHRoZSByZWxhdGl2ZSBw
b3NpdGlvbmVkCiAgICAgICAgIC8vIGlubGluZSBzbyB0aGF0IHdlIGNhbiBvYnRhaW4gdGhlIHZh
bHVlIGxhdGVyLgotICAgICAgICB0b1JlbmRlcklubGluZShjb250YWluZXJCbG9jayktPmxheWVy
KCktPnNldFN0YXRpY0lubGluZVBvc2l0aW9uKGJsb2NrLnN0YXJ0QWxpZ25lZE9mZnNldEZvckxp
bmUoYmxvY2tIZWlnaHQsIGZhbHNlKSk7Ci0gICAgICAgIHRvUmVuZGVySW5saW5lKGNvbnRhaW5l
ckJsb2NrKS0+bGF5ZXIoKS0+c2V0U3RhdGljQmxvY2tQb3NpdGlvbihibG9ja0hlaWdodCk7Cisg
ICAgICAgIGRvd25jYXN0PFJlbmRlcklubGluZT4oKmNvbnRhaW5lckJsb2NrKS5sYXllcigpLT5z
ZXRTdGF0aWNJbmxpbmVQb3NpdGlvbihibG9jay5zdGFydEFsaWduZWRPZmZzZXRGb3JMaW5lKGJs
b2NrSGVpZ2h0LCBmYWxzZSkpOworICAgICAgICBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjb250
YWluZXJCbG9jaykubGF5ZXIoKS0+c2V0U3RhdGljQmxvY2tQb3NpdGlvbihibG9ja0hlaWdodCk7
CiAgICAgfQogICAgIGJsb2NrLnVwZGF0ZVN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoY2hp
bGQsIGJsb2NrSGVpZ2h0KTsKICAgICBjaGlsZC5sYXllcigpLT5zZXRTdGF0aWNCbG9ja1Bvc2l0
aW9uKGJsb2NrSGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guY3BwCmluZGV4IDBiM2Q3ZGI3YjI0Nzc2YWRmY2JhNTU4ZDgzMDk1Y2Qy
NTRlNmRkZGMuLjMwZDBlYjUyNjE3MmE0OGY4ZjJiMjc3MDM1NmEzOTU2NTA3YTI5OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApA
QCAtMzM4LDggKzMzOCw4IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgfQogCiAgICAg
Ly8gRmluYWxseSwgcGFpbnQgdGhlIG91dGxpbmUgaWYgYW55LgotICAgIGlmIChyZW5kZXJlcigp
LnN0eWxlKCkuaGFzT3V0bGluZSgpICYmIHBhcmVudFJlbmRlcmVyLmlzUmVuZGVySW5saW5lKCkp
Ci0gICAgICAgIHRvUmVuZGVySW5saW5lKHBhcmVudFJlbmRlcmVyKS5wYWludE91dGxpbmUocGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5oYXNPdXRs
aW5lKCkgJiYgaXM8UmVuZGVySW5saW5lPihwYXJlbnRSZW5kZXJlcikpCisgICAgICAgIGRvd25j
YXN0PFJlbmRlcklubGluZT4ocGFyZW50UmVuZGVyZXIpLnBhaW50T3V0bGluZShwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKIAogICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239832</attachid>
            <date>2014-10-14 16:24:56 -0700</date>
            <delta_ts>2014-10-14 17:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137704-20141014162501.patch</filename>
            <type>text/plain</type>
            <size>72685</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFlMmQ4YjAxMjZmMWUw
MzE4YzdkZGIxNDBhODVkZDg1MDgwODZjZS4uYmJiZjg1NGQyNGI4ZDAwZjg3ODk0OWY0ZGY0NTE3
YmEwYmVmZWRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUmVuZGVySW5saW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzc3MDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBSZW5kZXJJbmxpbmUg
YW5kIGNsZWFuIHVwIHRoZSBzdXJyb3VuZGluZworICAgICAgICBjb2RlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0
Q2hpbGRJbkNvbnRpbnVhdGlvbik6CisgICAgICAgICogZWRpdGluZy9TaW1wbGlmeU1hcmt1cENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0Fw
cGx5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZFJlbmRlcmVySGlnaGxpZ2h0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUZsb3dCb3g6OnJlbW92ZUxpbmVCb3hGcm9tUmVuZGVyT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphdHRhY2hMaW5lQm94VG9SZW5kZXJP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2lu
Z0ZvckZsb3dCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpub2RlQXRQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpiaWRpRmly
c3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OnBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbmxpbmVFbGVt
ZW50Q29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRGb2N1
c1JpbmdSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OndpbGxCZURlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lQm94ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdp
ZHRoRm9yUG9zaXRpb25lZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9w
YWdhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFjY3VtdWxhdGVJbkZsb3dQb3NpdGlvbk9mZnNldHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmRpcnR5
TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25z
T3ZlcmZsb3dGcm9tQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6dXBkYXRlTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNG
cm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVjb3JhdGlvbnNDbGlwUmVjdEZv
ckJveEluTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbnNlcnRlZEludG9UcmVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclJlZ2lvbjo6b3ZlcmZsb3dSZWN0Rm9yRmxvd1RocmVhZFBvcnRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjp2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3hG
b3JQcm9wYWdhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dExpbmVCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJv
eGVzOjpyZW1vdmVBbGxGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRM
aW5lQm94ZXM6OmRpcnR5UmFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5n
Q29udGV4dElubGluZUhlYWRlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlubGluZUxvZ2ljYWxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZUVtcHR5SW5s
aW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oOgorICAg
ICAgICAoV2ViQ29yZTo6cmVxdWlyZXNMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0
YXRpY1Bvc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKwogMjAx
NC0xMC0xNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcHJvdmUgZGVidWcgZGVzY3JpcHRpb24gb2YgV0FLVmlld3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDQxMDZjM2M4NTg1YmU2ODRiOWJlZjVmZmM3Y2VmMjRiZDQ1OTFiOTUuLmE5OThj
YTI3ZDdjZTQ5ODhmMGQ2MTQzMmJjY2RmNGUwYjU5M2NiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cApAQCAtMTcwLDExICsxNzAsMTEgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGZpcnN0
Q2hpbGRJbkNvbnRpbnVhdGlvbihSZW5kZXJJbmxpbmUmIHJlbmRlcmVyKQogICAgIGF1dG8gY29u
dGludWF0aW9uID0gcmVuZGVyZXIuY29udGludWF0aW9uKCk7CiAKICAgICB3aGlsZSAoY29udGlu
dWF0aW9uKSB7Ci0gICAgICAgIGlmIChjb250aW51YXRpb24tPmlzUmVuZGVyQmxvY2soKSkKKyAg
ICAgICAgaWYgKGlzPFJlbmRlckJsb2NrPigqY29udGludWF0aW9uKSkKICAgICAgICAgICAgIHJl
dHVybiBjb250aW51YXRpb247CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGNoaWxkID0gY29u
dGludWF0aW9uLT5maXJzdENoaWxkKCkpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAg
ICAgIGNvbnRpbnVhdGlvbiA9IHRvUmVuZGVySW5saW5lKGNvbnRpbnVhdGlvbiktPmNvbnRpbnVh
dGlvbigpOworICAgICAgICBjb250aW51YXRpb24gPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpj
b250aW51YXRpb24pLmNvbnRpbnVhdGlvbigpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuY3Bw
CmluZGV4IGM3YzlhNjhhZTM2MTRjNGViMTZkYTZjODhmNmNlMjYyZWIwYmZjM2IuLjEzY2RhMzZi
ZjE3OTZlMGYxOTI3ZDYxMTFmNGEzMTVmOWUyNjY5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBTaW1wbGlmeU1hcmt1cENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAoIXN0YXJ0aW5n
U3R5bGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgTm9kZSogY3VycmVudE5vZGUg
PSBzdGFydGluZ05vZGU7Ci0gICAgICAgIE5vZGUqIHRvcE5vZGVXaXRoU3RhcnRpbmdTdHlsZSA9
IDA7CisgICAgICAgIE5vZGUqIHRvcE5vZGVXaXRoU3RhcnRpbmdTdHlsZSA9IG51bGxwdHI7CiAg
ICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSAhPSByb290Tm9kZSkgewogICAgICAgICAgICAgaWYg
KGN1cnJlbnROb2RlLT5wYXJlbnROb2RlKCkgIT0gcm9vdE5vZGUgJiYgaXNSZW1vdmFibGVCbG9j
ayhjdXJyZW50Tm9kZSkpCiAgICAgICAgICAgICAgICAgbm9kZXNUb1JlbW92ZS5hcHBlbmQoY3Vy
cmVudE5vZGUpOwpAQCAtNzAsMTEgKzcwLDExIEBAIHZvaWQgU2ltcGxpZnlNYXJrdXBDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICAgICAgICAgIGlmICghY3VycmVudE5vZGUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmICghY3VycmVudE5vZGUtPnJlbmRlcmVyKCkgfHwg
IWN1cnJlbnROb2RlLT5yZW5kZXJlcigpLT5pc1JlbmRlcklubGluZSgpIHx8IHRvUmVuZGVySW5s
aW5lKGN1cnJlbnROb2RlLT5yZW5kZXJlcigpKS0+YWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCisg
ICAgICAgICAgICBpZiAoIWlzPFJlbmRlcklubGluZT4oY3VycmVudE5vZGUtPnJlbmRlcmVyKCkp
IHx8IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1cnJlbnROb2RlLT5yZW5kZXJlcigpKS5hbHdh
eXNDcmVhdGVMaW5lQm94ZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlLT5maXJzdENoaWxkKCkgIT0gY3VycmVu
dE5vZGUtPmxhc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgdG9wTm9kZVdpdGhTdGFydGlu
Z1N0eWxlID0gMDsKKyAgICAgICAgICAgICAgICB0b3BOb2RlV2l0aFN0YXJ0aW5nU3R5bGUgPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5k
ZXggMmRiN2YxYTMxYjYxZGI2NjFiMzExMmJjZjVjNzE2MDIzNzgzMzUzOS4uOTIzM2U2Y2IzMWE2
MmJmMmY5MGJhZjQzMWYxOTNhZTcwMThhM2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtOTcsNDMgKzk3LDQzIEBAIHN0YXRpYyB2b2lk
IGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyUmVn
aW9uKiByZWdpb24sCiAgICAgICAgIHJlbmRlcmVyLT5hYnNvbHV0ZVF1YWRzKGhpZ2hsaWdodC0+
cXVhZHMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC0+cXVhZHMu
c2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBjb250ZW50c1F1YWRUb0Nvb3JkaW5hdGVTeXN0ZW0o
bWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBoaWdobGlnaHQtPnF1YWRzW2ldLCBjb29yZGluYXRl
U3lzdGVtKTsKLSAgICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5pc0JveCgpIHx8IHJlbmRlcmVyLT5p
c1JlbmRlcklubGluZSgpKSB7CisgICAgfSBlbHNlIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJl
cikgfHwgaXM8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpKSB7CiAgICAgICAgIExheW91dFJlY3Qg
Y29udGVudEJveDsKICAgICAgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94OwogICAgICAgICBMYXlv
dXRSZWN0IGJvcmRlckJveDsKICAgICAgICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3g7CiAKLSAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJCb3gqIHJlbmRl
ckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlckJveD4o
KnJlbmRlcmVyKSkgeworICAgICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVu
ZGVyQm94PigqcmVuZGVyZXIpOwogCi0gICAgICAgICAgICBMYXlvdXRCb3hFeHRlbnQgbWFyZ2lu
cyhyZW5kZXJCb3gtPm1hcmdpblRvcCgpLCByZW5kZXJCb3gtPm1hcmdpblJpZ2h0KCksIHJlbmRl
ckJveC0+bWFyZ2luQm90dG9tKCksIHJlbmRlckJveC0+bWFyZ2luTGVmdCgpKTsKKyAgICAgICAg
ICAgIExheW91dEJveEV4dGVudCBtYXJnaW5zKHJlbmRlckJveC5tYXJnaW5Ub3AoKSwgcmVuZGVy
Qm94Lm1hcmdpblJpZ2h0KCksIHJlbmRlckJveC5tYXJnaW5Cb3R0b20oKSwgcmVuZGVyQm94Lm1h
cmdpbkxlZnQoKSk7CiAKLSAgICAgICAgICAgIGlmICghcmVuZGVyQm94LT5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSAmJiByZWdpb24pIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyQm94LmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIHJlZ2lvbikgewogICAgICAgICAgICAgICAgIFJlbmRlckJv
eDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAg
ICAgICAgIHJlbmRlckJveC0+Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKGNvbXB1dGVkVmFs
dWVzLCByZWdpb24pOwotICAgICAgICAgICAgICAgIG1hcmdpbnMubXV0YWJsZUxvZ2ljYWxMZWZ0
KHJlbmRlckJveC0+c3R5bGUoKS53cml0aW5nTW9kZSgpKSA9IGNvbXB1dGVkVmFsdWVzLm1fbWFy
Z2lucy5tX3N0YXJ0OwotICAgICAgICAgICAgICAgIG1hcmdpbnMubXV0YWJsZUxvZ2ljYWxSaWdo
dChyZW5kZXJCb3gtPnN0eWxlKCkud3JpdGluZ01vZGUoKSkgPSBjb21wdXRlZFZhbHVlcy5tX21h
cmdpbnMubV9lbmQ7CisgICAgICAgICAgICAgICAgcmVuZGVyQm94LmNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvbihjb21wdXRlZFZhbHVlcywgcmVnaW9uKTsKKyAgICAgICAgICAgICAgICBtYXJn
aW5zLm11dGFibGVMb2dpY2FsTGVmdChyZW5kZXJCb3guc3R5bGUoKS53cml0aW5nTW9kZSgpKSA9
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX3N0YXJ0OworICAgICAgICAgICAgICAgIG1hcmdp
bnMubXV0YWJsZUxvZ2ljYWxSaWdodChyZW5kZXJCb3guc3R5bGUoKS53cml0aW5nTW9kZSgpKSA9
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2VuZDsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgcGFkZGluZ0JveCA9IHJlbmRlckJveC0+Y2xpZW50Qm94UmVjdEluUmVnaW9uKHJlZ2lv
bik7Ci0gICAgICAgICAgICBjb250ZW50Qm94ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSAr
IHJlbmRlckJveC0+cGFkZGluZ0xlZnQoKSwgcGFkZGluZ0JveC55KCkgKyByZW5kZXJCb3gtPnBh
ZGRpbmdUb3AoKSwKLSAgICAgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgLSByZW5kZXJC
b3gtPnBhZGRpbmdMZWZ0KCkgLSByZW5kZXJCb3gtPnBhZGRpbmdSaWdodCgpLCBwYWRkaW5nQm94
LmhlaWdodCgpIC0gcmVuZGVyQm94LT5wYWRkaW5nVG9wKCkgLSByZW5kZXJCb3gtPnBhZGRpbmdC
b3R0b20oKSk7Ci0gICAgICAgICAgICBib3JkZXJCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gu
eCgpIC0gcmVuZGVyQm94LT5ib3JkZXJMZWZ0KCksIHBhZGRpbmdCb3gueSgpIC0gcmVuZGVyQm94
LT5ib3JkZXJUb3AoKSwKLSAgICAgICAgICAgICAgICBwYWRkaW5nQm94LndpZHRoKCkgKyByZW5k
ZXJCb3gtPmJvcmRlckxlZnQoKSArIHJlbmRlckJveC0+Ym9yZGVyUmlnaHQoKSwgcGFkZGluZ0Jv
eC5oZWlnaHQoKSArIHJlbmRlckJveC0+Ym9yZGVyVG9wKCkgKyByZW5kZXJCb3gtPmJvcmRlckJv
dHRvbSgpKTsKKyAgICAgICAgICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3guY2xpZW50Qm94UmVj
dEluUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICBjb250ZW50Qm94ID0gTGF5b3V0UmVjdChw
YWRkaW5nQm94LngoKSArIHJlbmRlckJveC5wYWRkaW5nTGVmdCgpLCBwYWRkaW5nQm94LnkoKSAr
IHJlbmRlckJveC5wYWRkaW5nVG9wKCksCisgICAgICAgICAgICAgICAgcGFkZGluZ0JveC53aWR0
aCgpIC0gcmVuZGVyQm94LnBhZGRpbmdMZWZ0KCkgLSByZW5kZXJCb3gucGFkZGluZ1JpZ2h0KCks
IHBhZGRpbmdCb3guaGVpZ2h0KCkgLSByZW5kZXJCb3gucGFkZGluZ1RvcCgpIC0gcmVuZGVyQm94
LnBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgICAgICBib3JkZXJCb3ggPSBMYXlvdXRSZWN0KHBh
ZGRpbmdCb3gueCgpIC0gcmVuZGVyQm94LmJvcmRlckxlZnQoKSwgcGFkZGluZ0JveC55KCkgLSBy
ZW5kZXJCb3guYm9yZGVyVG9wKCksCisgICAgICAgICAgICAgICAgcGFkZGluZ0JveC53aWR0aCgp
ICsgcmVuZGVyQm94LmJvcmRlckxlZnQoKSArIHJlbmRlckJveC5ib3JkZXJSaWdodCgpLCBwYWRk
aW5nQm94LmhlaWdodCgpICsgcmVuZGVyQm94LmJvcmRlclRvcCgpICsgcmVuZGVyQm94LmJvcmRl
ckJvdHRvbSgpKTsKICAgICAgICAgICAgIG1hcmdpbkJveCA9IExheW91dFJlY3QoYm9yZGVyQm94
LngoKSAtIG1hcmdpbnMubGVmdCgpLCBib3JkZXJCb3gueSgpIC0gbWFyZ2lucy50b3AoKSwKICAg
ICAgICAgICAgICAgICBib3JkZXJCb3gud2lkdGgoKSArIG1hcmdpbnMubGVmdCgpICsgbWFyZ2lu
cy5yaWdodCgpLCBib3JkZXJCb3guaGVpZ2h0KCkgKyBtYXJnaW5zLnRvcCgpICsgbWFyZ2lucy5i
b3R0b20oKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZW5kZXJJbmxpbmUqIHJl
bmRlcklubGluZSA9IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGF1dG8m
IHJlbmRlcklubGluZSA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKTsKIAogICAg
ICAgICAgICAgLy8gUmVuZGVySW5saW5lJ3MgYm91bmRpbmcgYm94IGluY2x1ZGVzIHBhZGRpbmdz
IGFuZCBib3JkZXJzLCBleGNsdWRlcyBtYXJnaW5zLgotICAgICAgICAgICAgYm9yZGVyQm94ID0g
cmVuZGVySW5saW5lLT5saW5lc0JvdW5kaW5nQm94KCk7Ci0gICAgICAgICAgICBwYWRkaW5nQm94
ID0gTGF5b3V0UmVjdChib3JkZXJCb3gueCgpICsgcmVuZGVySW5saW5lLT5ib3JkZXJMZWZ0KCks
IGJvcmRlckJveC55KCkgKyByZW5kZXJJbmxpbmUtPmJvcmRlclRvcCgpLAotICAgICAgICAgICAg
ICAgIGJvcmRlckJveC53aWR0aCgpIC0gcmVuZGVySW5saW5lLT5ib3JkZXJMZWZ0KCkgLSByZW5k
ZXJJbmxpbmUtPmJvcmRlclJpZ2h0KCksIGJvcmRlckJveC5oZWlnaHQoKSAtIHJlbmRlcklubGlu
ZS0+Ym9yZGVyVG9wKCkgLSByZW5kZXJJbmxpbmUtPmJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAg
ICAgIGNvbnRlbnRCb3ggPSBMYXlvdXRSZWN0KHBhZGRpbmdCb3gueCgpICsgcmVuZGVySW5saW5l
LT5wYWRkaW5nTGVmdCgpLCBwYWRkaW5nQm94LnkoKSArIHJlbmRlcklubGluZS0+cGFkZGluZ1Rv
cCgpLAotICAgICAgICAgICAgICAgIHBhZGRpbmdCb3gud2lkdGgoKSAtIHJlbmRlcklubGluZS0+
cGFkZGluZ0xlZnQoKSAtIHJlbmRlcklubGluZS0+cGFkZGluZ1JpZ2h0KCksIHBhZGRpbmdCb3gu
aGVpZ2h0KCkgLSByZW5kZXJJbmxpbmUtPnBhZGRpbmdUb3AoKSAtIHJlbmRlcklubGluZS0+cGFk
ZGluZ0JvdHRvbSgpKTsKKyAgICAgICAgICAgIGJvcmRlckJveCA9IHJlbmRlcklubGluZS5saW5l
c0JvdW5kaW5nQm94KCk7CisgICAgICAgICAgICBwYWRkaW5nQm94ID0gTGF5b3V0UmVjdChib3Jk
ZXJCb3gueCgpICsgcmVuZGVySW5saW5lLmJvcmRlckxlZnQoKSwgYm9yZGVyQm94LnkoKSArIHJl
bmRlcklubGluZS5ib3JkZXJUb3AoKSwKKyAgICAgICAgICAgICAgICBib3JkZXJCb3gud2lkdGgo
KSAtIHJlbmRlcklubGluZS5ib3JkZXJMZWZ0KCkgLSByZW5kZXJJbmxpbmUuYm9yZGVyUmlnaHQo
KSwgYm9yZGVyQm94LmhlaWdodCgpIC0gcmVuZGVySW5saW5lLmJvcmRlclRvcCgpIC0gcmVuZGVy
SW5saW5lLmJvcmRlckJvdHRvbSgpKTsKKyAgICAgICAgICAgIGNvbnRlbnRCb3ggPSBMYXlvdXRS
ZWN0KHBhZGRpbmdCb3gueCgpICsgcmVuZGVySW5saW5lLnBhZGRpbmdMZWZ0KCksIHBhZGRpbmdC
b3gueSgpICsgcmVuZGVySW5saW5lLnBhZGRpbmdUb3AoKSwKKyAgICAgICAgICAgICAgICBwYWRk
aW5nQm94LndpZHRoKCkgLSByZW5kZXJJbmxpbmUucGFkZGluZ0xlZnQoKSAtIHJlbmRlcklubGlu
ZS5wYWRkaW5nUmlnaHQoKSwgcGFkZGluZ0JveC5oZWlnaHQoKSAtIHJlbmRlcklubGluZS5wYWRk
aW5nVG9wKCkgLSByZW5kZXJJbmxpbmUucGFkZGluZ0JvdHRvbSgpKTsKICAgICAgICAgICAgIC8v
IElnbm9yZSBtYXJnaW5Ub3AgYW5kIG1hcmdpbkJvdHRvbSBmb3IgaW5saW5lcy4KLSAgICAgICAg
ICAgIG1hcmdpbkJveCA9IExheW91dFJlY3QoYm9yZGVyQm94LngoKSAtIHJlbmRlcklubGluZS0+
bWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpLAotICAgICAgICAgICAgICAgIGJvcmRlckJveC53
aWR0aCgpICsgcmVuZGVySW5saW5lLT5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCksIGJvcmRlckJv
eC5oZWlnaHQoKSk7CisgICAgICAgICAgICBtYXJnaW5Cb3ggPSBMYXlvdXRSZWN0KGJvcmRlckJv
eC54KCkgLSByZW5kZXJJbmxpbmUubWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpLAorICAgICAg
ICAgICAgICAgIGJvcmRlckJveC53aWR0aCgpICsgcmVuZGVySW5saW5lLmhvcml6b250YWxNYXJn
aW5FeHRlbnQoKSwgYm9yZGVyQm94LmhlaWdodCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIEZs
b2F0UXVhZCBhYnNDb250ZW50UXVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAy
ZDBjOTY4ZjkyMTdkZDViZmM3ZGVmNDBlYmJjYzY3N2E0ZmQ0MmU1Li43ZTY0NTYwNWRkYzcyNjIw
NzM4OTkxOWVmYmZkMGEzMjFjOTg0YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0zNzk1LDcgKzM3OTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogICAgIEZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgLy8gbV9ub2Rl
VG9EcmF3IGlzIHVzZWQgdG8gZHJhdyBvbmx5IG9uZSBlbGVtZW50IChhbmQgaXRzIGRlc2NlbmRh
bnRzKQotICAgIFJlbmRlck9iamVjdCogZWx0UmVuZGVyZXIgPSBtX25vZGVUb0RyYXcgPyBtX25v
ZGVUb0RyYXctPnJlbmRlcmVyKCkgOiAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBt
X25vZGVUb0RyYXcgPyBtX25vZGVUb0RyYXctPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIFJl
bmRlckxheWVyKiByb290TGF5ZXIgPSByZW5kZXJWaWV3LT5sYXllcigpOwogCiAjaWZuZGVmIE5E
RUJVRwpAQCAtMzgwNCwxMiArMzgwNCwxMiBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogCiAg
ICAgLy8gVG8gd29yayBhcm91bmQgaHR0cDovL3dlYmtpdC5vcmcvYi8xMzUxMDYsIGVuc3VyZSB0
aGF0IHRoZSBwYWludCByb290IGlzbid0IGFuIGlubGluZSB3aXRoIGN1bGxlZCBsaW5lIGJveGVz
LgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBjYXVzZSBhZGRpdGlvbmFsIGNvbnRlbnQgdG8gYmUg
aW5jbHVkZWQgaW4gdGhlIHNuYXBzaG90LCBzbyByZW1vdmUgdGhpcyBvbmNlIHRoYXQgYnVnIGlz
IGZpeGVkLgotICAgIHdoaWxlIChlbHRSZW5kZXJlciAmJiBlbHRSZW5kZXJlci0+aXNSZW5kZXJJ
bmxpbmUoKSAmJiAhdG9SZW5kZXJJbmxpbmUoZWx0UmVuZGVyZXIpLT5maXJzdExpbmVCb3goKSkK
LSAgICAgICAgZWx0UmVuZGVyZXIgPSBlbHRSZW5kZXJlci0+cGFyZW50KCk7CisgICAgd2hpbGUg
KGlzPFJlbmRlcklubGluZT4ocmVuZGVyZXIpICYmICFkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpy
ZW5kZXJlcikuZmlyc3RMaW5lQm94KCkpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBh
cmVudCgpOwogCi0gICAgcm9vdExheWVyLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91
dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCBlbHRSZW5kZXJlcik7CisgICAgcm9vdExheWVyLT5w
YWludChjb250ZXh0LCBkaXJ0eVJlY3QsIExheW91dFNpemUoKSwgbV9wYWludEJlaGF2aW9yLCBy
ZW5kZXJlcik7CiAgICAgaWYgKHJvb3RMYXllci0+Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxi
YXJzKCkpCi0gICAgICAgIHJvb3RMYXllci0+cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhjb250ZXh0
LCBkaXJ0eVJlY3QsIG1fcGFpbnRCZWhhdmlvciwgZWx0UmVuZGVyZXIpOworICAgICAgICByb290
TGF5ZXItPnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoY29udGV4dCwgZGlydHlSZWN0LCBtX3BhaW50
QmVoYXZpb3IsIHJlbmRlcmVyKTsKIAogICAgIGRpZFBhaW50Q29udGVudHMoY29udGV4dCwgZGly
dHlSZWN0LCBwYWludGluZ1N0YXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAppbmRleCBiOTJjNDVhYWYyNmE4ZjIzYTc5ZGQzYmU2OTY1NmE0NDkwNmFi
ZWMzLi5kNzcxNTVjM2RkY2ZjZmY5YWY4ZjU5MmE1ODRiM2FlNWJjMTAyZDk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKCkKIAogdm9pZCBJbmxpbmVGbG93Qm94Ojpy
ZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCiB7Ci0gICAgdG9SZW5kZXJJbmxpbmUocmVu
ZGVyZXIoKSkubGluZUJveGVzKCkucmVtb3ZlTGluZUJveCh0aGlzKTsKKyAgICBkb3duY2FzdDxS
ZW5kZXJJbmxpbmU+KHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLnJlbW92ZUxpbmVCb3godGhpcyk7
CiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6ZXh0cmFjdExpbmUoKQpAQCAtMjMyLDcgKzIzMiw3
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZXh0cmFjdExpbmUoKQogCiB2b2lkIElubGluZUZsb3dC
b3g6OmV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpCiB7Ci0gICAgdG9SZW5kZXJJbmxp
bmUocmVuZGVyZXIoKSkubGluZUJveGVzKCkuZXh0cmFjdExpbmVCb3godGhpcyk7CisgICAgZG93
bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpKS5saW5lQm94ZXMoKS5leHRyYWN0TGluZUJv
eCh0aGlzKTsKIH0KIAogdm9pZCBJbmxpbmVGbG93Qm94OjphdHRhY2hMaW5lKCkKQEAgLTI0NSw3
ICsyNDUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQogCiB2b2lkIElubGlu
ZUZsb3dCb3g6OmF0dGFjaExpbmVCb3hUb1JlbmRlck9iamVjdCgpCiB7Ci0gICAgdG9SZW5kZXJJ
bmxpbmUocmVuZGVyZXIoKSkubGluZUJveGVzKCkuYXR0YWNoTGluZUJveCh0aGlzKTsKKyAgICBk
b3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKCkpLmxpbmVCb3hlcygpLmF0dGFjaExpbmVC
b3godGhpcyk7CiB9CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQg
ZHgsIGZsb2F0IGR5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6ZGV0
ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhib29sIGxhc3RMaW5lLCBib29sIGlzTG9naWNhbGx5
CiAKICAgICAvLyBUaGUgcm9vdCBpbmxpbmUgYm94IG5ldmVyIGhhcyBib3JkZXJzL21hcmdpbnMv
cGFkZGluZy4KICAgICBpZiAocGFyZW50KCkpIHsKLSAgICAgICAgY29uc3QgYXV0byYgaW5saW5l
RmxvdyA9IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCkpOworICAgICAgICBjb25zdCBhdXRvJiBp
bmxpbmVGbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcigpKTsKIAogICAgICAg
ICBib29sIGx0ciA9IHJlbmRlcmVyKCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7
CiAKQEAgLTEwMDcsMjkgKzEwMDcsMjkgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKIAogICAg
IC8vIENoZWNrIGNoaWxkcmVuIGZpcnN0LgogICAgIC8vIFdlIG5lZWQgdG8gYWNjb3VudCBmb3Ig
Y3VsbGVkIGlubGluZSBwYXJlbnRzIG9mIHRoZSBoaXQtdGVzdGVkIG5vZGVzLCBzbyB0aGF0IHRo
ZXkgbWF5IGFsc28gZ2V0IGluY2x1ZGVkIGluIGFyZWEtYmFzZWQgaGl0LXRlc3RzLgotICAgIFJl
bmRlckVsZW1lbnQqIGN1bGxlZFBhcmVudCA9IDA7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGN1cnIg
PSBsYXN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZPbkxpbmUoKSkgewotICAgICAg
ICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc1RleHQoKSB8fCAhY3Vyci0+Ym94TW9kZWxPYmplY3Qo
KS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgUmVuZGVyRWxlbWVudCog
bmV3UGFyZW50ID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiBjdWxsZWRQYXJlbnQgPSBudWxscHRy
OworICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+cHJldk9uTGluZSgpKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGls
ZC0+cmVuZGVyZXIoKSkgfHwgIWNoaWxkLT5ib3hNb2RlbE9iamVjdCgpLT5oYXNTZWxmUGFpbnRp
bmdMYXllcigpKSB7CisgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiBuZXdQYXJlbnQgPSBudWxs
cHRyOwogICAgICAgICAgICAgLy8gQ3VsbGVkIHBhcmVudHMgYXJlIG9ubHkgcmVsZXZhbnQgZm9y
IGFyZWEtYmFzZWQgaGl0LXRlc3RzLCBzbyBpZ25vcmUgaXQgaW4gcG9pbnQtYmFzZWQgb25lcy4K
ICAgICAgICAgICAgIGlmIChsb2NhdGlvbkluQ29udGFpbmVyLmlzUmVjdEJhc2VkVGVzdCgpKSB7
Ci0gICAgICAgICAgICAgICAgbmV3UGFyZW50ID0gY3Vyci0+cmVuZGVyZXIoKS5wYXJlbnQoKTsK
KyAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBjaGlsZC0+cmVuZGVyZXIoKS5wYXJlbnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAobmV3UGFyZW50ID09ICZyZW5kZXJlcigpKQotICAgICAgICAg
ICAgICAgICAgICBuZXdQYXJlbnQgPSAwOworICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQg
PSBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGN1bGxl
ZCBwYXJlbnQgYWZ0ZXIgYWxsIGl0cyBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZCwgdG8gZG8g
dGhpcyB3ZSB3YWl0IHVudGlsCiAgICAgICAgICAgICAvLyB3ZSBhcmUgYWJvdXQgdG8gdGVzdCBh
biBlbGVtZW50IHdpdGggYSBkaWZmZXJlbnQgcGFyZW50LgogICAgICAgICAgICAgaWYgKG5ld1Bh
cmVudCAhPSBjdWxsZWRQYXJlbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5ld1BhcmVudCB8
fCAhbmV3UGFyZW50LT5pc0Rlc2NlbmRhbnRPZihjdWxsZWRQYXJlbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlIChjdWxsZWRQYXJlbnQgJiYgY3VsbGVkUGFyZW50ICE9ICZyZW5kZXJl
cigpICYmIGN1bGxlZFBhcmVudCAhPSBuZXdQYXJlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjdWxsZWRQYXJlbnQtPmlzUmVuZGVySW5saW5lKCkgJiYgdG9SZW5kZXJJbmxpbmUo
Y3VsbGVkUGFyZW50KS0+aGl0VGVzdEN1bGxlZElubGluZShyZXF1ZXN0LCByZXN1bHQsIGxvY2F0
aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KCpjdWxsZWRQYXJlbnQpICYmIGRvd25jYXN0PFJlbmRl
cklubGluZT4oKmN1bGxlZFBhcmVudCkuaGl0VGVzdEN1bGxlZElubGluZShyZXF1ZXN0LCByZXN1
bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1
bGxlZFBhcmVudCA9IGN1bGxlZFBhcmVudC0+cGFyZW50KCk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY3VsbGVkUGFyZW50ID0gbmV3
UGFyZW50OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGN1cnItPm5vZGVBdFBvaW50
KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQs
IGxpbmVUb3AsIGxpbmVCb3R0b20pKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdFBv
aW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZz
ZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20pKSB7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS51
cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0g
dG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBib29sIElubGluZUZs
b3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZQogICAgIH0KICAgICAvLyBDaGVjayBhbnkgY3VsbGVkIGFuY2VzdG9yIG9mIHRo
ZSBmaW5hbCBjaGlsZHJlbiB0ZXN0ZWQuCiAgICAgd2hpbGUgKGN1bGxlZFBhcmVudCAmJiBjdWxs
ZWRQYXJlbnQgIT0gJnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKGN1bGxlZFBhcmVudC0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiB0b1JlbmRlcklubGluZShjdWxsZWRQYXJlbnQpLT5oaXRUZXN0Q3Vs
bGVkSW5saW5lKHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0
ZWRPZmZzZXQpKQorICAgICAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqY3VsbGVkUGFyZW50KSAm
JiBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjdWxsZWRQYXJlbnQpLmhpdFRlc3RDdWxsZWRJbmxp
bmUocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNl
dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY3VsbGVkUGFyZW50ID0gY3Vs
bGVkUGFyZW50LT5wYXJlbnQoKTsKICAgICB9CkBAIC0xMTAzLDkgKzExMDMsOSBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIHRvIHRoZSBwYWlu
dCBpbmZvIHN0cnVjdCdzIGxpc3Qgb2YgaW5saW5lcyB0aGF0IG5lZWQgdG8gcGFpbnQgdGhlaXIK
ICAgICAgICAgICAgIC8vIG91dGxpbmVzLgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkuc3R5
bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSAmJiByZW5kZXJlcigpLmhhc091dGxpbmUoKSAm
JiAhaXNSb290SW5saW5lQm94KCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUmIGlu
bGluZUZsb3cgPSB0b1JlbmRlcklubGluZShyZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJJbmxpbmUmIGlubGluZUZsb3cgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVy
KCkpOwogCi0gICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gMDsKKyAgICAgICAgICAg
ICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICBib29sIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUgPSBpbmxp
bmVGbG93LmNvbnRpbnVhdGlvbigpIHx8IGlubGluZUZsb3cuaXNJbmxpbmVFbGVtZW50Q29udGlu
dWF0aW9uKCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRp
bnVhdGlvbk91dGxpbmUpIHsgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDY5MC4gV2Ug
Y3VycmVudGx5IGRvbid0IHJlY29ubmVjdCBpbmxpbmUgY29udGludWF0aW9ucwpAQCAtMTExNSw4
ICsxMTE1LDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWVuY2xvc2luZ0Fub255bW91c0Jsb2NrLT5pc0Fub255bW91c0Jsb2NrKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tQYWludHNDb250aW51YXRpb25PdXRsaW5l
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2IgPSBlbmNsb3NpbmdBbm9ueW1vdXNCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gYm94ID0gJnJlbmRlcmVyKCk7IGJveCAh
PSBjYjsgYm94ID0gJmJveC0+cGFyZW50KCktPmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGVuY2xvc2luZ0Fub255
bW91c0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoYXV0byBib3ggPSAmcmVuZGVyZXIoKTsgYm94ICE9IGNvbnRhaW5pbmdCbG9jazsgYm94ID0g
JmJveC0+cGFyZW50KCktPmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYm94LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVh
dGlvbk91dGxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIG91cnNlbHZlcyB0byB0aGUgY29udGFpbmluZyBi
bG9jayBvZiB0aGUgZW50aXJlIGNvbnRpbnVhdGlvbiBzbyB0aGF0IGl0IGNhbgogICAgICAgICAg
ICAgICAgICAgICAvLyBwYWludCB1cyBhdG9taWNhbGx5LgotICAgICAgICAgICAgICAgICAgICBj
Yi0+YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUodG9SZW5kZXJJbmxpbmUocmVuZGVyZXIoKS5l
bGVtZW50KCktPnJlbmRlcmVyKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Js
b2NrLT5hZGRDb250aW51YXRpb25XaXRoT3V0bGluZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJl
bmRlcmVyKCkuZWxlbWVudCgpLT5yZW5kZXJlcigpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICghaW5saW5lRmxvdy5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgcGFpbnRJbmZvLm91dGxpbmVPYmplY3RzLT5hZGQoJmlubGluZUZsb3cpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApp
bmRleCA4YjYwNDE1MjdhODQ1NGYxZTRkN2NhMjgyZWJiNjBlMTYzODM4MTlhLi43YTc2YWI5ODcw
NWY4ZmI3ZGEyZDBhMmM5NjI4NDQ4ZDU5YzRhNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lSXRlcmF0b3IuaApAQCAtMjg4LDMxICsyODgsMzEgQEAgc3RhdGljIGlubGluZSBS
ZW5kZXJPYmplY3QqIGJpZGlOZXh0SW5jbHVkaW5nRW1wdHlJbmxpbmVzKFJlbmRlckVsZW1lbnQm
IHJvb3QsIFIKICAgICByZXR1cm4gYmlkaU5leHRTaGFyZWQocm9vdCwgY3VycmVudCwgb2JzZXJ2
ZXIsIEluY2x1ZGVFbXB0eUlubGluZXMsIGVuZE9mSW5saW5lUHRyKTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKFJlbmRlckVs
ZW1lbnQmIHJvb3QsIElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSAwKQorc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKFJlbmRlckVs
ZW1lbnQmIHJvb3QsIElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSBudWxscHRyKQogewot
ICAgIFJlbmRlck9iamVjdCogbyA9IHJvb3QuZmlyc3RDaGlsZCgpOwotICAgIGlmICghbykKKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcm9vdC5maXJzdENoaWxkKCk7CisgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoby0+aXNSZW5kZXJJ
bmxpbmUoKSkgewotICAgICAgICBub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QocmVzb2x2ZXIs
IG8pOwotICAgICAgICBpZiAoIWlzRW1wdHlJbmxpbmUodG9SZW5kZXJJbmxpbmUoKm8pKSkKLSAg
ICAgICAgICAgIG8gPSBiaWRpTmV4dFNraXBwaW5nRW1wdHlJbmxpbmVzKHJvb3QsIG8sIHJlc29s
dmVyKTsKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpKSB7CisgICAgICAgIG5v
dGlmeU9ic2VydmVyRW50ZXJlZE9iamVjdChyZXNvbHZlciwgcmVuZGVyZXIpOworICAgICAgICBp
ZiAoIWlzRW1wdHlJbmxpbmUoZG93bmNhc3Q8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpKSkKKyAg
ICAgICAgICAgIHJlbmRlcmVyID0gYmlkaU5leHRTa2lwcGluZ0VtcHR5SW5saW5lcyhyb290LCBy
ZW5kZXJlciwgcmVzb2x2ZXIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIE5ldmVy
IHNraXAgZW1wdHkgaW5saW5lcy4KICAgICAgICAgICAgIGlmIChyZXNvbHZlcikKICAgICAgICAg
ICAgICAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKLSAgICAgICAgICAg
IHJldHVybiBvOyAKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICAgICAgfQogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBVbmlmeSB0aGlzIHdpdGggdGhlIGJpZGlOZXh0IGNhbGwgYWJv
dmUuCi0gICAgaWYgKG8gJiYgIWlzSXRlcmF0b3JUYXJnZXQobykpCi0gICAgICAgIG8gPSBiaWRp
TmV4dFNraXBwaW5nRW1wdHlJbmxpbmVzKHJvb3QsIG8sIHJlc29sdmVyKTsKKyAgICBpZiAocmVu
ZGVyZXIgJiYgIWlzSXRlcmF0b3JUYXJnZXQocmVuZGVyZXIpKQorICAgICAgICByZW5kZXJlciA9
IGJpZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMocm9vdCwgcmVuZGVyZXIsIHJlc29sdmVyKTsK
IAogICAgIGlmIChyZXNvbHZlcikKICAgICAgICAgcmVzb2x2ZXItPmNvbW1pdEV4cGxpY2l0RW1i
ZWRkaW5nKCk7Ci0gICAgcmV0dXJuIG87CisgICAgcmV0dXJuIHJlbmRlcmVyOwogfQogCiAvLyBG
SVhNRTogVGhpcyBtZXRob2QgbmVlZHMgdG8gYmUgcmVuYW1lZCB3aGVuIGJpZGlOZXh0IGZpbmRz
IGEgZ29vZCBuYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91
dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5jcHAKaW5k
ZXggYmJlMTcwNjllN2RkZjI4M2YwNTI4MmRkMGIwYzk5YzY5NDJkNGIzNi4uZTYwYjRiOTBhYWFj
ZTYzYzk2MzdiZjkxNjU0MjBmOGFjOTQwMzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5b3V0U3RhdGUuY3BwCkBAIC01Myw4ICs1Myw4IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0
ZShzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U3RhdGU+IG5leHQsIFJlbmRlckJveCogcmVuZGVyZXIs
CiAKICAgICBpZiAocmVuZGVyZXItPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFmaXhlZCkg
ewogICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCogY29udGFpbmVyID0gcmVuZGVyZXItPmNvbnRh
aW5lcigpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbmVyLT5pc0luRmxvd1Bvc2l0aW9uZWQo
KSAmJiBjb250YWluZXItPmlzUmVuZGVySW5saW5lKCkpCi0gICAgICAgICAgICAgICAgbV9wYWlu
dE9mZnNldCArPSB0b1JlbmRlcklubGluZShjb250YWluZXIpLT5vZmZzZXRGb3JJbkZsb3dQb3Np
dGlvbmVkSW5saW5lKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIGlmIChjb250YWluZXItPmlzSW5G
bG93UG9zaXRpb25lZCgpICYmIGlzPFJlbmRlcklubGluZT4oKmNvbnRhaW5lcikpCisgICAgICAg
ICAgICAgICAgbV9wYWludE9mZnNldCArPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjb250YWlu
ZXIpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUocmVuZGVyZXIpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4
MjQxMjg3M2E4NTA1NTk3ZTU2NDhiOWU3NjhiNGUzZTY0YWFjODY4Li5mMDY2MTQwNThhMDJiZTEy
NjFlYzA3OGE0NzEwYTc0OTQ3N2VkZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjp3aWxsQmVE
ZXN0cm95ZWQoKQogICAgIAogICAgIGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7CiAg
ICAgICAgIGlmIChwYXJlbnQoKSkKLSAgICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJv
bUNoYW5nZWRDaGlsZCh0aGlzKTsKKyAgICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJv
bUNoYW5nZWRDaGlsZCgqdGhpcyk7CiAgICAgfQogCiAgICAgcmVtb3ZlRnJvbVVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCk7CkBAIC0xNjMwLDExICsxNjMwLDExIEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VP
dXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CiAgICAg
ICAgIFJlbmRlcklubGluZSogaW5saW5lQ29udCA9IGlubGluZUVsZW1lbnRDb250aW51YXRpb24o
KTsKICAgICAgICAgaWYgKGlubGluZUNvbnQgJiYgaW5saW5lQ29udC0+aGFzT3V0bGluZSgpICYm
IGlubGluZUNvbnQtPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKLSAgICAgICAg
ICAgIFJlbmRlcklubGluZSogaW5saW5lUmVuZGVyZXIgPSB0b1JlbmRlcklubGluZShpbmxpbmVD
b250LT5lbGVtZW50KCktPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNi
ID0gY29udGFpbmluZ0Jsb2NrKCk7CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUqIGlubGluZVJl
bmRlcmVyID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihpbmxpbmVDb250LT5lbGVtZW50KCktPnJl
bmRlcmVyKCkpOworICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRo
aXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCiAgICAgICAgICAgICBib29sIGlubGluZUVuY2xvc2Vk
SW5TZWxmUGFpbnRpbmdMYXllciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yIChSZW5kZXJCb3hN
b2RlbE9iamVjdCogYm94ID0gaW5saW5lUmVuZGVyZXI7IGJveCAhPSBjYjsgYm94ID0gJmJveC0+
cGFyZW50KCktPmVuY2xvc2luZ0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGZvciAo
UmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IGlubGluZVJlbmRlcmVyOyBib3ggIT0gY29udGFp
bmluZ0Jsb2NrOyBib3ggPSAmYm94LT5wYXJlbnQoKS0+ZW5jbG9zaW5nQm94TW9kZWxPYmplY3Qo
KSkgewogICAgICAgICAgICAgICAgIGlmIChib3gtPmhhc1NlbGZQYWludGluZ0xheWVyKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVyID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgLy8gYW5vbnltb3VzIGJsb2NrIChp
LmUuIGhhdmUgb3VyIG93biBsYXllciksIHBhaW50IHRoZW0gc3RyYWlnaHRhd2F5IGluc3RlYWQu
IFRoaXMgaXMgYmVjYXVzZSBhIGJsb2NrIGRlcGVuZHMgb24gcmVuZGVyZXJzIGluIGl0cyBjb250
aW51YXRpb24gdGFibGUgYmVpbmcKICAgICAgICAgICAgIC8vIGluIHRoZSBzYW1lIGxheWVyLiAK
ICAgICAgICAgICAgIGlmICghaW5saW5lRW5jbG9zZWRJblNlbGZQYWludGluZ0xheWVyICYmICFo
YXNMYXllcigpKQotICAgICAgICAgICAgICAgIGNiLT5hZGRDb250aW51YXRpb25XaXRoT3V0bGlu
ZShpbmxpbmVSZW5kZXJlcik7CisgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hZGRD
b250aW51YXRpb25XaXRoT3V0bGluZShpbmxpbmVSZW5kZXJlcik7CiAgICAgICAgICAgICBlbHNl
IGlmICghaW5saW5lUmVuZGVyZXItPmZpcnN0TGluZUJveCgpIHx8ICghaW5saW5lRW5jbG9zZWRJ
blNlbGZQYWludGluZ0xheWVyICYmIGhhc0xheWVyKCkpKQogICAgICAgICAgICAgICAgIGlubGlu
ZVJlbmRlcmVyLT5wYWludE91dGxpbmUocGFpbnRJbmZvLCBwYWludE9mZnNldCAtIGxvY2F0aW9u
T2Zmc2V0KCkgKyBpbmxpbmVSZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkp
OwogICAgICAgICB9CkBAIC0xNjY0LDcgKzE2NjQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
cwogUmVuZGVySW5saW5lKiBSZW5kZXJCbG9jazo6aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigp
IGNvbnN0CiB7IAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24gPSB0aGlz
LT5jb250aW51YXRpb24oKTsKLSAgICByZXR1cm4gY29udGludWF0aW9uICYmIGNvbnRpbnVhdGlv
bi0+aXNSZW5kZXJJbmxpbmUoKSA/IHRvUmVuZGVySW5saW5lKGNvbnRpbnVhdGlvbikgOiAwOwor
ICAgIHJldHVybiBpczxSZW5kZXJJbmxpbmU+KGNvbnRpbnVhdGlvbikgPyBkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KGNvbnRpbnVhdGlvbikgOiBudWxscHRyOwogfQogCiBSZW5kZXJCbG9jayogUmVu
ZGVyQmxvY2s6OmJsb2NrRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0CkBAIC0zNDAwLDcgKzM0
MDAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYQogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyB3cm9uZy4gVGhlIHByaW5jaXBhbCByZW5kZXJlciBtYXkgbm90IGJlIHRoZSBjb250aW51YXRp
b24gcHJlY2VkaW5nIHRoaXMgYmxvY2suCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25n
IGZvciBibG9jay1mbG93cyB0aGF0IGFyZSBob3Jpem9udGFsLgogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3ODEKLSAgICAgICAgYm9vbCBwcmV2
SW5saW5lSGFzTGluZUJveCA9IHRvUmVuZGVySW5saW5lKGlubGluZUVsZW1lbnRDb250aW51YXRp
b24oKS0+ZWxlbWVudCgpLT5yZW5kZXJlcigpKS0+Zmlyc3RMaW5lQm94KCk7CisgICAgICAgIGJv
b2wgcHJldklubGluZUhhc0xpbmVCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCppbmxpbmVF
bGVtZW50Q29udGludWF0aW9uKCktPmVsZW1lbnQoKS0+cmVuZGVyZXIoKSkuZmlyc3RMaW5lQm94
KCk7CiAgICAgICAgIGZsb2F0IHRvcE1hcmdpbiA9IHByZXZJbmxpbmVIYXNMaW5lQm94ID8gY29s
bGFwc2VkTWFyZ2luQmVmb3JlKCkgOiBMYXlvdXRVbml0KCk7CiAgICAgICAgIGZsb2F0IGJvdHRv
bU1hcmdpbiA9IG5leHRJbmxpbmVIYXNMaW5lQm94ID8gY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSA6
IExheW91dFVuaXQoKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0KGFkZGl0aW9uYWxPZmZzZXQu
eCgpLCBhZGRpdGlvbmFsT2Zmc2V0LnkoKSAtIHRvcE1hcmdpbiwgd2lkdGgoKSwgaGVpZ2h0KCkg
KyB0b3BNYXJnaW4gKyBib3R0b21NYXJnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBmMGVlYjAxYmZlMzg3NGQ1YjU3ODJiNjhkOTM4ZGJm
YzdjMjRmYmMwLi41NDhkNTVkYzRmN2Q2NmRjYzYxZjhjMjViOGI4MDFmOWRkOGI5ODExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMTc5LDcg
KzE3OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChwYXJlbnQoKSkK
LSAgICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzKTsK
KyAgICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcyk7
CiAgICAgfQogCiAgICAgbV9saW5lQm94ZXMuZGVsZXRlTGluZUJveGVzKCk7CkBAIC00MDMyLDEw
ICs0MDMyLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lUHJlZmVycmVk
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBDYXNlICgx
KSBhbmQgKDIpLiBJbmxpbmUgcmVwbGFjZWQgYW5kIGlubGluZSBmbG93IGVsZW1lbnRzLgotICAg
ICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChpczxSZW5kZXJJbmxpbmU+KCpjaGlsZCkpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gQWRkIGluIHBhZGRpbmcvYm9yZGVyL21hcmdpbiBmcm9tIHRoZSBhcHByb3ByaWF0ZSBzaWRl
IG9mCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50LgotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBicG0gPSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luKCp0b1JlbmRlcklubGluZShj
aGlsZCksIGNoaWxkSXRlcmF0b3IuZW5kT2ZJbmxpbmUpOworICAgICAgICAgICAgICAgICAgICBm
bG9hdCBicG0gPSBnZXRCb3JkZXJQYWRkaW5nTWFyZ2luKGRvd25jYXN0PFJlbmRlcklubGluZT4o
KmNoaWxkKSwgY2hpbGRJdGVyYXRvci5lbmRPZklubGluZSk7CiAgICAgICAgICAgICAgICAgICAg
IGNoaWxkTWluICs9IGJwbTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNYXggKz0gYnBtOwog
CkBAIC00MDU3LDcgKzQwNTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFjaGlsZC0+aXNSZW5k
ZXJJbmxpbmUoKSAmJiAhY2hpbGQtPmlzVGV4dCgpKSB7CisgICAgICAgICAgICBpZiAoIWlzPFJl
bmRlcklubGluZT4oKmNoaWxkKSAmJiAhaXM8UmVuZGVyVGV4dD4oKmNoaWxkKSkgewogICAgICAg
ICAgICAgICAgIC8vIENhc2UgKDIpLiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMgYW5kIGZsb2F0
cy4KICAgICAgICAgICAgICAgICAvLyBHbyBhaGVhZCBhbmQgdGVybWluYXRlIHRoZSBjdXJyZW50
IGxpbmUgYXMgZmFyIGFzCiAgICAgICAgICAgICAgICAgLy8gbWlud2lkdGggaXMgY29uY2VybmVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDQ4OThh
NGRjYmQ5YjU0MTUxYWM3M2ZiNGVjYmQ2ZGI0NGRhMDRkOWQuLjZlZGNjYzI2ZDUyZDg3YWM3ZmNi
MmU4Y2EwODY2NDFmNDE4M2NiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBtYXhQb3NpdGl2ZU1hcmdpbkJlZm9yZSgpIC0gbWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUo
KTsgfQogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1heFBvc2l0aXZlTWFyZ2luQWZ0ZXIoKSAtIG1heE5l
Z2F0aXZlTWFyZ2luQWZ0ZXIoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpcnR5TGluZXNGcm9t
Q2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQpIG92ZXJyaWRlIGZpbmFsIHsgbGluZUJv
eGVzKCkuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQodGhpcywgY2hpbGQpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQp
IG92ZXJyaWRlIGZpbmFsIHsgbGluZUJveGVzKCkuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQo
KnRoaXMsIGNoaWxkKTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA5MGU2N2U1YzRkOGFjYzQ0
MDJjOGViNjYxZjEyYzYxMjk0ZmFiMmE5Li40OTIwNzlhOTNlZTU2NDFmYjU4ZjEwMjk4NzZjNGRi
YmYxZWEzMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcApAQCAtOTI1LDcgKzkyNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBj
b25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZl
ciwKICAgICAgICAgLy8gdHJlZSB0byBzZWUgd2hpY2ggcGFyZW50IGlubGluZSBpcyB0aGUgaXNv
bGF0ZS4gV2UgY291bGQgY2hhbmdlIGVudGVySXNvbGF0ZQogICAgICAgICAvLyB0byB0YWtlIGEg
UmVuZGVyT2JqZWN0IGFuZCBkbyB0aGlzIGxvZ2ljIHRoZXJlLCBidXQgdGhhdCB3b3VsZCBiZSBh
IGxheWVyaW5nCiAgICAgICAgIC8vIHZpb2xhdGlvbiBmb3IgQmlkaVJlc29sdmVyICh3aGljaCBr
bm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdCkuCi0gICAgICAgIFJlbmRlcklubGluZSog
aXNvbGF0ZWRJbmxpbmUgPSB0b1JlbmRlcklubGluZShoaWdoZXN0Q29udGFpbmluZ0lzb2xhdGVX
aXRoaW5Sb290KHN0YXJ0T2JqZWN0LCBjdXJyZW50Um9vdCkpOworICAgICAgICBSZW5kZXJJbmxp
bmUqIGlzb2xhdGVkSW5saW5lID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPihoaWdoZXN0Q29udGFp
bmluZ0lzb2xhdGVXaXRoaW5Sb290KHN0YXJ0T2JqZWN0LCBjdXJyZW50Um9vdCkpOwogICAgICAg
ICBBU1NFUlQoaXNvbGF0ZWRJbmxpbmUpOwogCiAgICAgICAgIElubGluZUJpZGlSZXNvbHZlciBp
c29sYXRlZFJlc29sdmVyOwpAQCAtMTQ4Nyw5ICsxNDg3LDkgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmxheW91dExpbmVCb3hlcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJl
cGFpbnQKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
Ym94LmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlIGlmIChvLmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgKG8uaXNSZW5kZXJJbmxpbmUoKSAmJiAh
d2Fsa2VyLmF0RW5kT2ZJbmxpbmUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoby5pc1JlbmRl
cklubGluZSgpKQotICAgICAgICAgICAgICAgICAgICB0b1JlbmRlcklubGluZShvKS51cGRhdGVB
bHdheXNDcmVhdGVMaW5lQm94ZXMobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0KCkpOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChvLmlzVGV4dE9yTGluZUJyZWFrKCkgfHwgKGlzPFJlbmRlcklubGlu
ZT4obykgJiYgIXdhbGtlci5hdEVuZE9mSW5saW5lKCkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzPFJlbmRlcklubGluZT4obykpCisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
cklubGluZT4obykudXBkYXRlQWx3YXlzQ3JlYXRlTGluZUJveGVzKGxheW91dFN0YXRlLmlzRnVs
bExheW91dCgpKTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0U3RhdGUuaXNGdWxsTGF5b3V0
KCkgfHwgby5zZWxmTmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAgICAgICAgICAgZGlydHlMaW5l
Qm94ZXNGb3JSZW5kZXJlcihvLCBsYXlvdXRTdGF0ZS5pc0Z1bGxMYXlvdXQoKSk7CiAgICAgICAg
ICAgICAgICAgby5jbGVhck5lZWRzTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDA1Y2NkM2E3YmE4MmE4OWQ1ZmZmMjE0YmQ0MGEyYzllNzVhYmI2MzEu
LjU3NzVkNGNlYWE0N2I0MDEyY2MwZmQ3MDk4ODQ1OGQyZTVmZGNkOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMDA3LDEwICsyMDA3LDEwIEBAIHZvaWQgUmVu
ZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUs
IFRyYW5zZm9ybVN0YXRlCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9M
b2NhbFBvaW50KG1vZGUsIHRyYW5zZm9ybVN0YXRlKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJC
b3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJC
b3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgTGF5
b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCkgY29uc3QKIHsKICAgICAvLyBB
IHJlZ2lvbiAiaGFzIiBib3hlcyBpbnNpZGUgaXQgd2l0aG91dCBiZWluZyB0aGVpciBjb250YWlu
ZXIuIAotICAgIEFTU0VSVChvID09IGNvbnRhaW5lcigpIHx8IG8tPmlzUmVuZGVyUmVnaW9uKCkp
OworICAgIEFTU0VSVChyZW5kZXJlciA9PSBjb250YWluZXIoKSB8fCBpczxSZW5kZXJSZWdpb24+
KCpyZW5kZXJlcikpOwogCiAgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7ICAgIAogICAgIGlmIChpc0lu
Rmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTIwMTksMTQgKzIwMTksMTQgQEAgTGF5b3V0U2l6ZSBSZW5k
ZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGIKICAgICBpZiAoIWlzSW5saW5lKCkgfHwgaXNSZXBsYWNlZCgpKQogICAgICAgICBv
ZmZzZXQgKz0gdG9wTGVmdExvY2F0aW9uT2Zmc2V0KCk7CiAKLSAgICBpZiAoby0+aXNCb3goKSkK
LSAgICAgICAgb2Zmc2V0IC09IHRvUmVuZGVyQm94KG8pLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQo
KTsKKyAgICBpZiAoaXM8UmVuZGVyQm94PigqcmVuZGVyZXIpKQorICAgICAgICBvZmZzZXQgLT0g
ZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpLnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwog
Ci0gICAgaWYgKHN0eWxlKCkucG9zaXRpb24oKSA9PSBBYnNvbHV0ZVBvc2l0aW9uICYmIG8tPmlz
SW5GbG93UG9zaXRpb25lZCgpICYmIG8tPmlzUmVuZGVySW5saW5lKCkpCi0gICAgICAgIG9mZnNl
dCArPSB0b1JlbmRlcklubGluZShvKS0+b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZElubGluZSh0
aGlzKTsKKyAgICBpZiAoc3R5bGUoKS5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24gJiYg
cmVuZGVyZXItPmlzSW5GbG93UG9zaXRpb25lZCgpICYmIGlzPFJlbmRlcklubGluZT4oKnJlbmRl
cmVyKSkKKyAgICAgICAgb2Zmc2V0ICs9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVy
KS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKHRoaXMpOwogCiAgICAgaWYgKG9mZnNl
dERlcGVuZHNPblBvaW50KQotICAgICAgICAqb2Zmc2V0RGVwZW5kc09uUG9pbnQgfD0gby0+aXNS
ZW5kZXJGbG93VGhyZWFkKCk7CisgICAgICAgICpvZmZzZXREZXBlbmRzT25Qb2ludCB8PSBpczxS
ZW5kZXJGbG93VGhyZWFkPigqcmVuZGVyZXIpOwogCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KQEAg
LTIxNjUsOCArMjE2NSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAgfQogCiAgICAg
Ym9vbCBjb250YWluZXJTa2lwcGVkOwotICAgIGF1dG8gbyA9IGNvbnRhaW5lcihyZXBhaW50Q29u
dGFpbmVyLCAmY29udGFpbmVyU2tpcHBlZCk7Ci0gICAgaWYgKCFvKQorICAgIGF1dG8qIHJlbmRl
cmVyID0gY29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsICZjb250YWluZXJTa2lwcGVkKTsKKyAg
ICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgRVBvc2l0aW9uIHBv
c2l0aW9uID0gc3R5bGVUb1VzZS5wb3NpdGlvbigpOwpAQCAtMjE3OCwxMCArMjE3OCwxMCBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YQogICAgIC8vIHVzIHRvIGFkZCB0aGUgaGVpZ2h0IHR3aWNl
LgogICAgIC8vIFRoZSBzYW1lIGxvZ2ljIGFwcGxpZXMgZm9yIGVsZW1lbnRzIGZsb3dlZCBkaXJl
Y3RseSBpbnRvIHRoZSBmbG93IHRocmVhZC4gVGhlaXIgdG9wTGVmdCBtZW1iZXIKICAgICAvLyB3
aWxsIGFscmVhZHkgY29udGFpbiB0aGUgcG9ydGlvbiByZWN0IG9mIHRoZSByZWdpb24uCi0gICAg
aWYgKG8tPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgpICYmIHBvc2l0aW9uICE9IEFic29s
dXRlUG9zaXRpb24gJiYgY29udGFpbmluZ0Jsb2NrKCkgIT0gZmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpKSB7CisgICAgaWYgKHJlbmRlcmVyLT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQo
KSAmJiBwb3NpdGlvbiAhPSBBYnNvbHV0ZVBvc2l0aW9uICYmIGNvbnRhaW5pbmdCbG9jaygpICE9
IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkgewogICAgICAgICBSZW5kZXJSZWdpb24qIGZp
cnN0UmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVnaW9uID0g
bnVsbHB0cjsKLSAgICAgICAgaWYgKHRvUmVuZGVyRmxvd1RocmVhZChvKS0+Z2V0UmVnaW9uUmFu
Z2VGb3JCb3godGhpcywgZmlyc3RSZWdpb24sIGxhc3RSZWdpb24pKQorICAgICAgICBpZiAoZG93
bmNhc3Q8UmVuZGVyRmxvd1RocmVhZD4oKnJlbmRlcmVyKS5nZXRSZWdpb25SYW5nZUZvckJveCh0
aGlzLCBmaXJzdFJlZ2lvbiwgbGFzdFJlZ2lvbikpCiAgICAgICAgICAgICByZWN0Lm1vdmVCeShm
aXJzdFJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubG9jYXRpb24oKSk7CiAgICAgfQog
CkBAIC0yMjAxLDggKzIyMDEsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YQogICAgIH0gZWxz
ZSBpZiAocG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbikKICAgICAgICAgZml4ZWQgPSB0cnVlOwog
Ci0gICAgaWYgKHBvc2l0aW9uID09IEFic29sdXRlUG9zaXRpb24gJiYgby0+aXNJbkZsb3dQb3Np
dGlvbmVkKCkgJiYgby0+aXNSZW5kZXJJbmxpbmUoKSkKLSAgICAgICAgdG9wTGVmdCArPSB0b1Jl
bmRlcklubGluZShvKS0+b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZElubGluZSh0aGlzKTsKKyAg
ICBpZiAocG9zaXRpb24gPT0gQWJzb2x1dGVQb3NpdGlvbiAmJiByZW5kZXJlci0+aXNJbkZsb3dQ
b3NpdGlvbmVkKCkgJiYgaXM8UmVuZGVySW5saW5lPigqcmVuZGVyZXIpKQorICAgICAgICB0b3BM
ZWZ0ICs9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKnJlbmRlcmVyKS5vZmZzZXRGb3JJbkZsb3dQ
b3NpdGlvbmVkSW5saW5lKHRoaXMpOwogICAgIGVsc2UgaWYgKHN0eWxlVG9Vc2UuaGFzSW5GbG93
UG9zaXRpb24oKSAmJiBsYXllcigpKSB7CiAgICAgICAgIC8vIEFwcGx5IHRoZSByZWxhdGl2ZSBw
b3NpdGlvbiBvZmZzZXQgd2hlbiBpbnZhbGlkYXRpbmcgYSByZWN0YW5nbGUuICBUaGUgbGF5ZXIK
ICAgICAgICAgLy8gaXMgdHJhbnNsYXRlZCwgYnV0IHRoZSByZW5kZXIgYm94IGlzbid0LCBzbyB3
ZSBuZWVkIHRvIGRvIHRoaXMgdG8gZ2V0IHRoZQpAQCAtMjIxNCwxMCArMjIxNCwxMCBAQCB2b2lk
IFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YQogICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgdGhlIGxpZ2h0d2Vp
Z2h0IGNsaXBwaW5nIHJlY3QgdGhhdCBjb250cm9scyB1c2UsIHNpbmNlIGlmIHxvfCBpcyBpbiBt
aWQtbGF5b3V0LAogICAgIC8vIGl0cyBjb250cm9sQ2xpcFJlY3Qgd2lsbCBiZSB3cm9uZy4gRm9y
IG92ZXJmbG93IGNsaXAgd2UgdXNlIHRoZSB2YWx1ZXMgY2FjaGVkIGJ5IHRoZSBsYXllci4KICAg
ICByZWN0LnNldExvY2F0aW9uKHRvcExlZnQpOwotICAgIGlmIChvLT5oYXNPdmVyZmxvd0NsaXAo
KSkgewotICAgICAgICBSZW5kZXJCb3gqIGNvbnRhaW5lckJveCA9IHRvUmVuZGVyQm94KG8pOwot
ICAgICAgICBpZiAoc2hvdWxkQXBwbHlDb250YWluZXJzQ2xpcEFuZE9mZnNldChyZXBhaW50Q29u
dGFpbmVyLCBjb250YWluZXJCb3gpKSB7Ci0gICAgICAgICAgICBjb250YWluZXJCb3gtPmFwcGx5
Q2FjaGVkQ2xpcEFuZFNjcm9sbE9mZnNldEZvclJlcGFpbnQocmVjdCk7CisgICAgaWYgKHJlbmRl
cmVyLT5oYXNPdmVyZmxvd0NsaXAoKSkgeworICAgICAgICBSZW5kZXJCb3gmIGNvbnRhaW5lckJv
eCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKHNob3VsZEFw
cGx5Q29udGFpbmVyc0NsaXBBbmRPZmZzZXQocmVwYWludENvbnRhaW5lciwgJmNvbnRhaW5lckJv
eCkpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lckJveC5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxP
ZmZzZXRGb3JSZXBhaW50KHJlY3QpOwogICAgICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjIyNSwxMiArMjIyNSwxMiBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YQogCiAgICAgaWYgKGNvbnRhaW5lclNraXBwZWQpIHsK
ICAgICAgICAgLy8gSWYgdGhlIHJlcGFpbnRDb250YWluZXIgaXMgYmVsb3cgbywgdGhlbiB3ZSBu
ZWVkIHRvIG1hcCB0aGUgcmVjdCBpbnRvIHJlcGFpbnRDb250YWluZXIncyBjb29yZGluYXRlcy4K
LSAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5v
ZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIobyk7CisgICAgICAgIExheW91dFNpemUgY29udGFp
bmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVy
KHJlbmRlcmVyKTsKICAgICAgICAgcmVjdC5tb3ZlKC1jb250YWluZXJPZmZzZXQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgby0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRD
b250YWluZXIsIHJlY3QsIGZpeGVkKTsKKyAgICByZW5kZXJlci0+Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KHJlcGFpbnRDb250YWluZXIsIHJlY3QsIGZpeGVkKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6
OnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3QmIG9sZFJlY3QpCkBA
IC0zMTA3LDExICszMTA3LDExIEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vCiAgICAgICAgIHJl
dHVybiAoYm94SW5mbykgPyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjYi5jbGllbnRMb2dpY2Fs
V2lkdGgoKSAtIChjYi5sb2dpY2FsV2lkdGgoKSAtIGJveEluZm8tPmxvZ2ljYWxXaWR0aCgpKSkg
OiBjYi5jbGllbnRMb2dpY2FsV2lkdGgoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoY29udGFpbmlu
Z0Jsb2NrLT5pc1JlbmRlcklubGluZSgpICYmIGNvbnRhaW5pbmdCbG9jay0+aXNJbkZsb3dQb3Np
dGlvbmVkKCkpOworICAgIEFTU0VSVChjb250YWluaW5nQmxvY2stPmlzSW5GbG93UG9zaXRpb25l
ZCgpKTsKIAotICAgIGNvbnN0IFJlbmRlcklubGluZSogZmxvdyA9IHRvUmVuZGVySW5saW5lKGNv
bnRhaW5pbmdCbG9jayk7Ci0gICAgSW5saW5lRmxvd0JveCogZmlyc3QgPSBmbG93LT5maXJzdExp
bmVCb3goKTsKLSAgICBJbmxpbmVGbG93Qm94KiBsYXN0ID0gZmxvdy0+bGFzdExpbmVCb3goKTsK
KyAgICBjb25zdCBhdXRvJiBmbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY29udGFpbmlu
Z0Jsb2NrKTsKKyAgICBJbmxpbmVGbG93Qm94KiBmaXJzdCA9IGZsb3cuZmlyc3RMaW5lQm94KCk7
CisgICAgSW5saW5lRmxvd0JveCogbGFzdCA9IGZsb3cubGFzdExpbmVCb3goKTsKIAogICAgIC8v
IElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGVtcHR5LCByZXR1cm4gYSB3aWR0aCBvZiAwLgog
ICAgIGlmICghZmlyc3QgfHwgIWxhc3QpCkBAIC0zMTUyLDkgKzMxNTIsOSBAQCBMYXlvdXRVbml0
IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29u
c3QgUmVuZGVyQm94TQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAgICAgCi0g
ICAgQVNTRVJUKGlzPFJlbmRlcklubGluZT4oKmNvbnRhaW5pbmdCbG9jaykgJiYgY29udGFpbmlu
Z0Jsb2NrLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgQVNTRVJUKGNvbnRhaW5pbmdCbG9j
ay0+aXNJbkZsb3dQb3NpdGlvbmVkKCkpOwogCi0gICAgY29uc3QgUmVuZGVySW5saW5lJiBmbG93
ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY29udGFpbmluZ0Jsb2NrKTsKKyAgICBjb25zdCBh
dXRvJiBmbG93ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqY29udGFpbmluZ0Jsb2NrKTsKICAg
ICBJbmxpbmVGbG93Qm94KiBmaXJzdCA9IGZsb3cuZmlyc3RMaW5lQm94KCk7CiAgICAgSW5saW5l
Rmxvd0JveCogbGFzdCA9IGZsb3cubGFzdExpbmVCb3goKTsKIApAQCAtMzUzMywxMCArMzUzMywx
MCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhM
ZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgIC8vIHBvc2l0aW9uZWQsIGlubGluZSBi
ZWNhdXNlIHJpZ2h0IG5vdywgaXQgaXMgdXNpbmcgdGhlIGxvZ2ljYWwgbGVmdCBwb3NpdGlvbgog
ICAgIC8vIG9mIHRoZSBmaXJzdCBsaW5lIGJveCB3aGVuIHJlYWxseSBpdCBzaG91bGQgdXNlIHRo
ZSBsYXN0IGxpbmUgYm94LiAgV2hlbgogICAgIC8vIHRoaXMgaXMgZml4ZWQgZWxzZXdoZXJlLCB0
aGlzIGJsb2NrIHNob3VsZCBiZSByZW1vdmVkLgotICAgIGlmIChjb250YWluZXJCbG9jay0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiAhY29udGFpbmVyQmxvY2stPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlcklubGluZSogZmxvdyA9IHRvUmVuZGVy
SW5saW5lKGNvbnRhaW5lckJsb2NrKTsKLSAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5l
ID0gZmxvdy0+Zmlyc3RMaW5lQm94KCk7Ci0gICAgICAgIElubGluZUZsb3dCb3gqIGxhc3RMaW5l
ID0gZmxvdy0+bGFzdExpbmVCb3goKTsKKyAgICBpZiAoaXM8UmVuZGVySW5saW5lPigqY29udGFp
bmVyQmxvY2spICYmICFjb250YWluZXJCbG9jay0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZmxvdyA9IGRvd25jYXN0PFJlbmRlcklubGlu
ZT4oKmNvbnRhaW5lckJsb2NrKTsKKyAgICAgICAgSW5saW5lRmxvd0JveCogZmlyc3RMaW5lID0g
Zmxvdy5maXJzdExpbmVCb3goKTsKKyAgICAgICAgSW5saW5lRmxvd0JveCogbGFzdExpbmUgPSBm
bG93Lmxhc3RMaW5lQm94KCk7CiAgICAgICAgIGlmIChmaXJzdExpbmUgJiYgbGFzdExpbmUgJiYg
Zmlyc3RMaW5lICE9IGxhc3RMaW5lKSB7CiAgICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX3Bv
c2l0aW9uID0gbG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgKyBsYXN0
TGluZS0+Ym9yZGVyTG9naWNhbExlZnQoKSArIChsYXN0TGluZS0+bG9naWNhbExlZnQoKSAtIGZp
cnN0TGluZS0+bG9naWNhbExlZnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTczLDEw
ICszOTczLDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0
aFJlcGxhY2VkKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlCiAgICAgLy8gcG9zaXRpb25lZCwg
aW5saW5lIGNvbnRhaW5pbmcgYmxvY2sgYmVjYXVzZSByaWdodCBub3csIGl0IGlzIHVzaW5nIHRo
ZSBsb2dpY2FsIGxlZnQgcG9zaXRpb24KICAgICAvLyBvZiB0aGUgZmlyc3QgbGluZSBib3ggd2hl
biByZWFsbHkgaXQgc2hvdWxkIHVzZSB0aGUgbGFzdCBsaW5lIGJveC4gIFdoZW4KICAgICAvLyB0
aGlzIGlzIGZpeGVkIGVsc2V3aGVyZSwgdGhpcyBibG9jayBzaG91bGQgYmUgcmVtb3ZlZC4KLSAg
ICBpZiAoY29udGFpbmVyQmxvY2stPmlzUmVuZGVySW5saW5lKCkgJiYgIWNvbnRhaW5lckJsb2Nr
LT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICBjb25zdCBSZW5k
ZXJJbmxpbmUqIGZsb3cgPSB0b1JlbmRlcklubGluZShjb250YWluZXJCbG9jayk7Ci0gICAgICAg
IElubGluZUZsb3dCb3gqIGZpcnN0TGluZSA9IGZsb3ctPmZpcnN0TGluZUJveCgpOwotICAgICAg
ICBJbmxpbmVGbG93Qm94KiBsYXN0TGluZSA9IGZsb3ctPmxhc3RMaW5lQm94KCk7CisgICAgaWYg
KGlzPFJlbmRlcklubGluZT4oKmNvbnRhaW5lckJsb2NrKSAmJiAhY29udGFpbmVyQmxvY2stPnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGZs
b3cgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjb250YWluZXJCbG9jayk7CisgICAgICAgIElu
bGluZUZsb3dCb3gqIGZpcnN0TGluZSA9IGZsb3cuZmlyc3RMaW5lQm94KCk7CisgICAgICAgIElu
bGluZUZsb3dCb3gqIGxhc3RMaW5lID0gZmxvdy5sYXN0TGluZUJveCgpOwogICAgICAgICBpZiAo
Zmlyc3RMaW5lICYmIGxhc3RMaW5lICYmIGZpcnN0TGluZSAhPSBsYXN0TGluZSkgewogICAgICAg
ICAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxMZWZ0VmFsdWUgKyBtYXJn
aW5Mb2dpY2FsTGVmdEFsaWFzICsgbGFzdExpbmUtPmJvcmRlckxvZ2ljYWxMZWZ0KCkgKyAobGFz
dExpbmUtPmxvZ2ljYWxMZWZ0KCkgLSBmaXJzdExpbmUtPmxvZ2ljYWxMZWZ0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNDYyNCw3ICs0NjI0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6
Om92ZXJmbG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBu
YW0KICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgICAg
IFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGZsb3dUaHJl
YWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQot
ICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnVuaXRlKG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxP
dmVyZmxvd1JlY3RGb3JCb3godGhpcykpOworICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnVuaXRl
KG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goKnRoaXMpKTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKCFtX292ZXJmbG93IHx8ICF1c2VzQ29tcG9zaXRlZFNjcm9sbGlu
ZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggNjNmNzljNmRlN2E0YjhkNjllNWQ5NGI4OWRkY2Y1ZDQ2NGEzMjVmMi4uNTA5
ZTk4NmUzNjExYjgwZmE1M2MyNzA5YTMzZGI1MTJiMjA3ZTA3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yMTMsMTMgKzIx
Myw5IEBAIHN0YXRpYyBMYXlvdXRTaXplIGFjY3VtdWxhdGVJbkZsb3dQb3NpdGlvbk9mZnNldHMo
Y29uc3QgUmVuZGVyT2JqZWN0KiBjaGlsZCkKICAgICBpZiAoIWNoaWxkLT5pc0Fub255bW91c0Js
b2NrKCkgfHwgIWNoaWxkLT5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIExh
eW91dFNpemUoKTsKICAgICBMYXlvdXRTaXplIG9mZnNldDsKLSAgICBSZW5kZXJFbGVtZW50KiBw
ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpjaGlsZCkuaW5saW5lRWxlbWVudENvbnRpbnVhdGlv
bigpOwotICAgIHdoaWxlIChpczxSZW5kZXJJbmxpbmU+KHApKSB7Ci0gICAgICAgIGlmIChwLT5p
c0luRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgUmVuZGVySW5saW5lJiByZW5kZXJJ
bmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpwKTsKLSAgICAgICAgICAgIG9mZnNldCAr
PSByZW5kZXJJbmxpbmUub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKTsKLSAgICAgICAgfQotICAg
ICAgICBwID0gcC0+cGFyZW50KCk7CisgICAgZm9yIChSZW5kZXJFbGVtZW50KiBwYXJlbnQgPSBk
b3duY2FzdDxSZW5kZXJCbG9jaz4oKmNoaWxkKS5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCk7
IGlzPFJlbmRlcklubGluZT4ocGFyZW50KTsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgewor
ICAgICAgICBpZiAocGFyZW50LT5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIG9m
ZnNldCArPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpwYXJlbnQpLm9mZnNldEZvckluRmxvd1Bv
c2l0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBvZmZzZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZjQ2ZDEwNmMxMzllZTdkMDIzN2JmNjU4
YjU5YTM0ZGRhYWE3NGJlNi4uZTZhYTNjYWYwMGI1NzdjY2YxOWJlMzEwYjE0NmYwYzFjYmFjYzc4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtOTk2
LDcgKzk5Niw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkK
ICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KHRoaXMp
OwogCiAgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpLT5jaGlsZHJl
bklubGluZSgpKQotICAgICAgICBwYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQo
dGhpcyk7CisgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhp
cyk7CiAKICAgICBpZiAoYXV0byogY29udGFpbmVyRmxvd1RocmVhZCA9IHBhcmVudCgpLT5yZW5k
ZXJOYW1lZEZsb3dUaHJlYWRXcmFwcGVyKCkpCiAgICAgICAgIGNvbnRhaW5lckZsb3dUaHJlYWQt
PnJlbW92ZUZsb3dDaGlsZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAppbmRleCBkOWNhNTY5YmEzYjk0NDU2YThkNGFjOTYxODBiMjg5N2E1MmFjN2U3Li5l
MjM2ZGRkMDEwN2VkYWRmY2RhZGRkODg5NDJhMWIwOGYyODk4ZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBob3ZlckFuY2VzdG9yKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0KikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVj
dCYpIHsgfQogCiAgICAgYm9vbCBhbmNlc3RvckxpbmVCb3hEaXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5jZXN0b3JMaW5lQm94RGlydHk7IH0KICAgICB2b2lkIHNldEFuY2VzdG9yTGluZUJveERp
cnR5KGJvb2wgZiA9IHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwCmluZGV4IDk2MTUwOTZjMjYyZWQzYjdmNWI3MjY3OTdkODEzZjY4NzRkYTQ2
ZGYuLmViOGM3NzBiZTQ5OGFkYzIxYzE3OTlmMDNlMmI3ZjE3NmE3NzVjYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTE0NDYsNyArMTQ0
Niw3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc092ZXJmbG93RnJvbUNoaWxk
KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBSCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBMYXlvdXRSZWN0IGNoaWxk
VmlzdWFsT3ZlcmZsb3dSZWN0ID0gcmVnaW9uLT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3hGb3JQ
cm9wYWdhdGlvbihjaGlsZCk7CisgICAgICAgIExheW91dFJlY3QgY2hpbGRWaXN1YWxPdmVyZmxv
d1JlY3QgPSByZWdpb24tPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKCpj
aGlsZCk7CiAgICAgICAgIGNoaWxkVmlzdWFsT3ZlcmZsb3dSZWN0Lm1vdmUoZGVsdGEpOwogICAg
ICAgICByZWdpb24tPmFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KGJveCwgY2hpbGRWaXN1YWxPdmVy
Zmxvd1JlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDljN2U0NWJjMGI3OGNmNzkyZjk0MTgxNTRmNDU2NWRjMGZlZTZiM2YuLjQ2NWJhOTA1N2Fh
NjBmMTQ4ODA2MzI3NzYxM2Q3ZDAxODRkZGIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OndpbGxCZURlc3Ryb3llZCgpCiAgICAgICAgICAgICAgICAgICAgIGJveC0+cmVtb3ZlRnJvbVBh
cmVudCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHBhcmVudCgpKSAKLSAg
ICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzKTsKKyAg
ICAgICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcyk7CiAg
ICAgfQogCiAgICAgbV9saW5lQm94ZXMuZGVsZXRlTGluZUJveGVzKCk7CkBAIC0yMTcsNyArMjE3
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZUFsd2F5c0NyZWF0ZUxpbmVCb3hlcyhib29s
IGZ1bGxMYXlvdXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9ICZwYXJlbnQoKS0+c3R5bGUoKTsKLSAgICBSZW5kZXJJbmxpbmUqIHBhcmVudFJlbmRl
cklubGluZSA9IHBhcmVudCgpLT5pc1JlbmRlcklubGluZSgpID8gdG9SZW5kZXJJbmxpbmUocGFy
ZW50KCkpIDogMDsKKyAgICBSZW5kZXJJbmxpbmUqIHBhcmVudFJlbmRlcklubGluZSA9IGlzPFJl
bmRlcklubGluZT4oKnBhcmVudCgpKSA/IGRvd25jYXN0PFJlbmRlcklubGluZT4ocGFyZW50KCkp
IDogbnVsbHB0cjsKICAgICBib29sIGNoZWNrRm9udHMgPSBkb2N1bWVudCgpLmluTm9RdWlya3NN
b2RlKCk7CiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKICAgICBib29sIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcyA9IChwYXJlbnRS
ZW5kZXJJbmxpbmUgJiYgcGFyZW50UmVuZGVySW5saW5lLT5hbHdheXNDcmVhdGVMaW5lQm94ZXMo
KSkKQEAgLTExMDcsMjcgKzExMDcsMjcgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmoKIAogICAg
IC8vIFdlIG5lZWQgdG8gYWRkIGluIHRoZSBpbi1mbG93IHBvc2l0aW9uIG9mZnNldHMgb2YgYW55
IGlubGluZXMgKGluY2x1ZGluZyB1cykgdXAgdG8gb3VyCiAgICAgLy8gY29udGFpbmluZyBibG9j
ay4KLSAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsKLSAgICBmb3IgKGNv
bnN0IFJlbmRlck9iamVjdCogaW5saW5lRmxvdyA9IHRoaXM7IGlubGluZUZsb3cgJiYgaW5saW5l
Rmxvdy0+aXNSZW5kZXJJbmxpbmUoKSAmJiBpbmxpbmVGbG93ICE9IGNiOworICAgIFJlbmRlckJs
b2NrKiBjb250YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBmb3Ig
KGNvbnN0IFJlbmRlckVsZW1lbnQqIGlubGluZUZsb3cgPSB0aGlzOyBpczxSZW5kZXJJbmxpbmU+
KGlubGluZUZsb3cpICYmIGlubGluZUZsb3cgIT0gY29udGFpbmluZ0Jsb2NrOwogICAgICAgICAg
aW5saW5lRmxvdyA9IGlubGluZUZsb3ctPnBhcmVudCgpKSB7CiAgICAgICAgICBpZiAoaW5saW5l
RmxvdyA9PSByZXBhaW50Q29udGFpbmVyKSB7CiAgICAgICAgICAgICBoaXRSZXBhaW50Q29udGFp
bmVyID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChp
bmxpbmVGbG93LT5zdHlsZSgpLmhhc0luRmxvd1Bvc2l0aW9uKCkgJiYgaW5saW5lRmxvdy0+aGFz
TGF5ZXIoKSkKLSAgICAgICAgICAgIHJlcGFpbnRSZWN0Lm1vdmUodG9SZW5kZXJJbmxpbmUoaW5s
aW5lRmxvdyktPmxheWVyKCktPm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCkpOworICAgICAgICAg
ICAgcmVwYWludFJlY3QubW92ZShkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCppbmxpbmVGbG93KS5s
YXllcigpLT5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpKTsKICAgICB9CiAKICAgICBMYXlvdXRV
bml0IG91dGxpbmVTaXplID0gc3R5bGUoKS5vdXRsaW5lU2l6ZSgpOwogICAgIHJlcGFpbnRSZWN0
LmluZmxhdGUob3V0bGluZVNpemUpOwogCi0gICAgaWYgKGhpdFJlcGFpbnRDb250YWluZXIgfHwg
IWNiKQorICAgIGlmIChoaXRSZXBhaW50Q29udGFpbmVyIHx8ICFjb250YWluaW5nQmxvY2spCiAg
ICAgICAgIHJldHVybiByZXBhaW50UmVjdDsKIAotICAgIGlmIChjYi0+aGFzT3ZlcmZsb3dDbGlw
KCkpCi0gICAgICAgIGNiLT5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxPZmZzZXRGb3JSZXBhaW50
KHJlcGFpbnRSZWN0KTsKKyAgICBpZiAoY29udGFpbmluZ0Jsb2NrLT5oYXNPdmVyZmxvd0NsaXAo
KSkKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxPZmZz
ZXRGb3JSZXBhaW50KHJlcGFpbnRSZWN0KTsKIAotICAgIGNiLT5jb21wdXRlUmVjdEZvclJlcGFp
bnQocmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QpOworICAgIGNvbnRhaW5pbmdCbG9jay0+
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0KTsKIAog
ICAgIGlmIChvdXRsaW5lU2l6ZSkgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW5PZlR5cGU8UmVuZGVyRWxlbWVudD4oKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCmluZGV4IGNlOGU1ZjI0NjQ3NDA1NzZhYzVkN2M5MTFhNTMxYjRlNTY1ODM5
MDYuLjEzNDZkZTA2YmE3ZjUyM2EyMDkwZTE1MGY3YzJkMWE3ZmRkNzcxYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gY3JlYXRlSW5s
aW5lRmxvd0JveCgpOyAvLyBTdWJjbGFzc2VkIGJ5IFJlbmRlclNWR0lubGluZQogCi0gICAgdmly
dHVhbCB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQp
IG92ZXJyaWRlIGZpbmFsIHsgbV9saW5lQm94ZXMuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQo
dGhpcywgY2hpbGQpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENo
aWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIG92ZXJyaWRlIGZpbmFsIHsgbV9saW5lQm94ZXMuZGly
dHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCiAgICAgdmlydHVhbCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKQEAgLTE4MCw4ICsx
ODAsNiBAQCBwcml2YXRlOgogICAgIFJlbmRlckxpbmVCb3hMaXN0IG1fbGluZUJveGVzOyAgIC8v
IEFsbCBvZiB0aGUgbGluZSBib3hlcyBjcmVhdGVkIGZvciB0aGlzIGlubGluZSBmbG93LiAgRm9y
IGV4YW1wbGUsIDxpPkhlbGxvPGJyPndvcmxkLjwvaT4gd2lsbCBoYXZlIHR3byA8aT4gbGluZSBi
b3hlcy4KIH07CiAKLVJFTkRFUl9PQkpFQ1RfVFlQRV9DQVNUUyhSZW5kZXJJbmxpbmUsIGlzUmVu
ZGVySW5saW5lKCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlcklubGluZSwgaXNSZW5kZXJJbmxpbmUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDQ0ZjI0MmZiNGI3Njlj
ZDMzNTRiNDBkMTM5NjZlZGJjYWQ2ZTgzMDUuLjhlOTdkMjY4MDc0YmJiNzBjODgxZWI5MzBlYzk0
ZTY4NGI5N2U5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMTE5OCw4ICsxMTk4LDggQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlv
bigpCiB7CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxQb2ludDsKICAgICBMYXlvdXRTaXplIGlubGlu
ZUJvdW5kaW5nQm94T2Zmc2V0OyAvLyBXZSBkb24ndCBwdXQgdGhpcyBpbnRvIHRoZSBSZW5kZXJM
YXllciB4L3kgZm9yIGlubGluZXMsIHNvIHdlIG5lZWQgdG8gc3VidHJhY3QgaXQgb3V0IHdoZW4g
ZG9uZS4KLSAgICBpZiAocmVuZGVyZXIoKS5pc0lubGluZSgpICYmIHJlbmRlcmVyKCkuaXNSZW5k
ZXJJbmxpbmUoKSkgewotICAgICAgICBSZW5kZXJJbmxpbmUmIGlubGluZUZsb3cgPSB0b1JlbmRl
cklubGluZShyZW5kZXJlcigpKTsKKyAgICBpZiAocmVuZGVyZXIoKS5pc0lubGluZSgpICYmIGlz
PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSkpIHsKKyAgICAgICAgYXV0byYgaW5saW5lRmxvdyA9
IGRvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIoKSk7CiAgICAgICAgIEludFJlY3QgbGlu
ZUJveCA9IGlubGluZUZsb3cubGluZXNCb3VuZGluZ0JveCgpOwogICAgICAgICBzZXRTaXplKGxp
bmVCb3guc2l6ZSgpKTsKICAgICAgICAgaW5saW5lQm91bmRpbmdCb3hPZmZzZXQgPSB0b0xheW91
dFNpemUobGluZUJveC5sb2NhdGlvbigpKTsKQEAgLTEyMzgsOCArMTIzOCw4IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgICAgICAgICAgbG9jYWxQb2ludCAt
PSBvZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChyZW5kZXJlcigpLmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCkuaXNJ
bkZsb3dQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKS5pc1JlbmRl
cklubGluZSgpKSB7Ci0gICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IHRvUmVuZGVySW5s
aW5lKHBvc2l0aW9uZWRQYXJlbnQtPnJlbmRlcmVyKCkpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9u
ZWRJbmxpbmUoJnRvUmVuZGVyQm94KHJlbmRlcmVyKCkpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVy
KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIo
KS5pc0luRmxvd1Bvc2l0aW9uZWQoKSAmJiBpczxSZW5kZXJJbmxpbmU+KHBvc2l0aW9uZWRQYXJl
bnQtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGRvd25j
YXN0PFJlbmRlcklubGluZT4ocG9zaXRpb25lZFBhcmVudC0+cmVuZGVyZXIoKSkub2Zmc2V0Rm9y
SW5GbG93UG9zaXRpb25lZElubGluZSgmdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkpOwogICAgICAg
ICAgICAgbG9jYWxQb2ludCArPSBvZmZzZXQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHBh
cmVudCgpKSB7CkBAIC01NDA4LDcgKzU0MDgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxh
dGVSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBjb25zdAog
ICAgIGlmIChpc1NlbGZQYWludGluZ0xheWVyKCkgJiYgZmxvd1RocmVhZCAmJiAhcmVuZGVyZXIo
KS5pc0luRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkgewogICAgICAgICBBU1NFUlQobmFtZWRGbG93
RnJhZ21lbnQtPmlzVmFsaWQoKSk7CiAgICAgICAgIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
JiBib3hNb2RlbE9iamVjdCA9IGRvd25jYXN0PFJlbmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJl
cigpKTsKLSAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdyA9
IG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goJmJveE1vZGVsT2Jq
ZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdyA9
IG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goYm94TW9kZWxPYmpl
Y3QpOwogCiAgICAgICAgIC8vIExheWVycyBhcmUgaW4gcGh5c2ljYWwgY29vcmRpbmF0ZXMgc28g
dGhlIG9yaWdpbiBtdXN0IGJlIG1vdmVkIHRvIHRoZSBwaHlzaWNhbCB0b3AtbGVmdCBvZiB0aGUg
Zmxvd3RocmVhZC4KICAgICAgICAgaWYgKCZib3hNb2RlbE9iamVjdCA9PSBmbG93VGhyZWFkICYm
IGZsb3dUaHJlYWQtPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgewpAQCAt
NTQ1Nyw3ICs1NDU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3Qg
Q2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgY29uc3QKICAgICAgICAgaWYgKHJl
bmRlckJveCgpLT5oYXNWaXN1YWxPdmVyZmxvdygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
RG9lcyBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGggQ1NTIHJlZ2lvbnMgeWV0LCBzaW5jZSB3
ZSBkb24ndCB5ZXQgZmFjdG9yIGluIHRoZQogICAgICAgICAgICAgLy8gaW5kaXZpZHVhbCByZWdp
b24gYm94ZXMgYXMgb3ZlcmZsb3cuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRz
V2l0aFZpc3VhbE92ZXJmbG93ID0gbmFtZWRGbG93RnJhZ21lbnQgPyBuYW1lZEZsb3dGcmFnbWVu
dC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KHJlbmRlckJveCgpKSA6IHJlbmRlckJveCgpLT52
aXN1YWxPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHNX
aXRoVmlzdWFsT3ZlcmZsb3cgPSBuYW1lZEZsb3dGcmFnbWVudCA/IG5hbWVkRmxvd0ZyYWdtZW50
LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goKnJlbmRlckJveCgpKSA6IHJlbmRlckJveCgpLT52
aXN1YWxPdmVyZmxvd1JlY3QoKTsKICAgICAgICAgICAgIHJlbmRlckJveCgpLT5mbGlwRm9yV3Jp
dGluZ01vZGUobGF5ZXJCb3VuZHNXaXRoVmlzdWFsT3ZlcmZsb3cpOyAvLyBMYXllcnMgYXJlIGlu
IHBoeXNpY2FsIGNvb3JkaW5hdGVzLCBzbyB0aGUgb3ZlcmZsb3cgaGFzIHRvIGJlIGZsaXBwZWQu
CiAgICAgICAgICAgICBsYXllckJvdW5kc1dpdGhWaXN1YWxPdmVyZmxvdy5tb3ZlKG9mZnNldEZy
b21Sb290TG9jYWwpOwogICAgICAgICAgICAgaWYgKHRoaXMgIT0gY2xpcFJlY3RzQ29udGV4dC5y
b290TGF5ZXIgfHwgY2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZsb3dDbGlwID09IFJlc3Bl
Y3RPdmVyZmxvd0NsaXApCkBAIC01NTkzLDcgKzU1OTMsNyBAQCBib29sIFJlbmRlckxheWVyOjpp
bnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3Qg
TGF5bwogICAgIC8vIHRvIHRoZSBmbG93IHRocmVhZCwgbm90IHRoZSBsYXN0IHJlZ2lvbiAoaW4g
d2hpY2ggaXQgd2lsbCBlbmQgdXAgYmVjYXVzZSBvZiBib3R0b206MHB4KQogICAgIGlmIChuYW1l
ZEZsb3dGcmFnbWVudCAmJiByZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkg
ewogICAgICAgICBMYXlvdXRSZWN0IGIgPSBsYXllckJvdW5kczsKLSAgICAgICAgYi5tb3ZlQnko
bmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveChkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oJnJlbmRlcmVyKCkpKS5sb2NhdGlvbigpKTsKKyAgICAgICAgYi5t
b3ZlQnkobmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveChkb3duY2Fz
dDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIoKSkpLmxvY2F0aW9uKCkpOwogICAgICAg
ICBiLmluZmxhdGUocmVuZGVyZXIoKS52aWV3KCkubWF4aW1hbE91dGxpbmVTaXplKCkpOwogICAg
ICAgICBpZiAoYi5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC01NjIwLDEwICs1NjIwLDEwIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmxvY2Fs
Qm91bmRpbmdCb3goQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFncyBmbGFncykgY29uc3QKICAgICAv
LyBhcyBwYXJ0IG9mIG91ciBib3VuZGluZyBib3guICBXZSBkbyB0aGlzIGJlY2F1c2Ugd2UgYXJl
IHRoZSByZXNwb25zaWJsZSBsYXllciBmb3IgYm90aCBoaXQgdGVzdGluZyBhbmQgcGFpbnRpbmcg
dGhvc2UKICAgICAvLyBmbG9hdHMuCiAgICAgTGF5b3V0UmVjdCByZXN1bHQ7Ci0gICAgaWYgKHJl
bmRlcmVyKCkuaXNJbmxpbmUoKSAmJiByZW5kZXJlcigpLmlzUmVuZGVySW5saW5lKCkpCi0gICAg
ICAgIHJlc3VsdCA9IHRvUmVuZGVySW5saW5lKHJlbmRlcmVyKCkpLmxpbmVzVmlzdWFsT3ZlcmZs
b3dCb3VuZGluZ0JveCgpOworICAgIGlmIChyZW5kZXJlcigpLmlzSW5saW5lKCkgJiYgaXM8UmVu
ZGVySW5saW5lPihyZW5kZXJlcigpKSkKKyAgICAgICAgcmVzdWx0ID0gZG93bmNhc3Q8UmVuZGVy
SW5saW5lPihyZW5kZXJlcigpKS5saW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKTsKICAg
ICBlbHNlIGlmIChpczxSZW5kZXJUYWJsZVJvdz4ocmVuZGVyZXIoKSkpIHsKLSAgICAgICAgUmVu
ZGVyVGFibGVSb3cmIHRhYmxlUm93ID0gZG93bmNhc3Q8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVy
KCkpOworICAgICAgICBhdXRvJiB0YWJsZVJvdyA9IGRvd25jYXN0PFJlbmRlclRhYmxlUm93Pihy
ZW5kZXJlcigpKTsKICAgICAgICAgLy8gT3VyIGJvdW5kaW5nIGJveCBpcyBqdXN0IHRoZSB1bmlv
biBvZiBhbGwgb2Ygb3VyIGNlbGxzJyBib3JkZXIvb3ZlcmZsb3cgcmVjdHMuCiAgICAgICAgIGZv
ciAoUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gdGFibGVSb3cuZmlyc3RDZWxsKCk7IGNlbGw7IGNl
bGwgPSBjZWxsLT5uZXh0Q2VsbCgpKSB7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IGJib3ggPSBj
ZWxsLT5ib3JkZXJCb3hSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJveExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCb3hMaXN0LmNwcAppbmRleCAwOTI3NmJiMmFjNDQwNjkxODg4OTEzY2FlNzZjNDlhNzU3
MWRiMDZhLi5jODZmZThmNjQzZTAxNzY1MzQwOGE1N2ZhY2FmMGE4NTM4YmI0MWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAgLTMxMiwy
MiArMzEyLDIyIEBAIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaXRUZXN0UmVxCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChS
ZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmVyLCBSZW5kZXJPYmplY3QqIGNoaWxkKQordm9p
ZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94
TW9kZWxPYmplY3QmIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKLSAgICBBU1NF
UlQoY29udGFpbmVyLT5pc1JlbmRlcklubGluZSgpIHx8IGNvbnRhaW5lci0+aXNSZW5kZXJCbG9j
a0Zsb3coKSk7Ci0gICAgaWYgKCFjb250YWluZXItPnBhcmVudCgpIHx8IChjb250YWluZXItPmlz
UmVuZGVyQmxvY2tGbG93KCkgJiYgY29udGFpbmVyLT5zZWxmTmVlZHNMYXlvdXQoKSkpCisgICAg
QVNTRVJUKGlzPFJlbmRlcklubGluZT4oY29udGFpbmVyKSB8fCBpczxSZW5kZXJCbG9ja0Zsb3c+
KGNvbnRhaW5lcikpOworICAgIGlmICghY29udGFpbmVyLnBhcmVudCgpIHx8IChpczxSZW5kZXJC
bG9ja0Zsb3c+KGNvbnRhaW5lcikgJiYgY29udGFpbmVyLnNlbGZOZWVkc0xheW91dCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVySW5saW5lKiBpbmxpbmVDb250YWluZXIgPSBjb250
YWluZXItPmlzUmVuZGVySW5saW5lKCkgPyB0b1JlbmRlcklubGluZShjb250YWluZXIpIDogMDsK
KyAgICBSZW5kZXJJbmxpbmUqIGlubGluZUNvbnRhaW5lciA9IGlzPFJlbmRlcklubGluZT4oY29u
dGFpbmVyKSA/ICZkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGNvbnRhaW5lcikgOiBudWxscHRyOwog
ICAgIElubGluZUJveCogZmlyc3RCb3ggPSBpbmxpbmVDb250YWluZXIgPyBpbmxpbmVDb250YWlu
ZXItPmZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSA6IGZpcnN0TGluZUJveCgpOwogCiAg
ICAgLy8gSWYgd2UgaGF2ZSBubyBmaXJzdCBsaW5lIGJveCwgdGhlbiBqdXN0IGJhaWwgZWFybHku
CiAgICAgaWYgKCFmaXJzdEJveCkgewogICAgICAgICAvLyBGb3IgYW4gZW1wdHkgaW5saW5lLCBn
byBhaGVhZCBhbmQgcHJvcGFnYXRlIHRoZSBjaGVjayB1cCB0byBvdXIgcGFyZW50LCB1bmxlc3Mg
dGhlIHBhcmVudAogICAgICAgICAvLyBpcyBhbHJlYWR5IGRpcnR5LgotICAgICAgICBpZiAoY29u
dGFpbmVyLT5pc0lubGluZSgpICYmICFjb250YWluZXItPmFuY2VzdG9yTGluZUJveERpcnR5KCkp
IHsKLSAgICAgICAgICAgIGNvbnRhaW5lci0+cGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdl
ZENoaWxkKGNvbnRhaW5lcik7Ci0gICAgICAgICAgICBjb250YWluZXItPnNldEFuY2VzdG9yTGlu
ZUJveERpcnR5KCk7IC8vIE1hcmsgdGhlIGNvbnRhaW5lciB0byBhdm9pZCBkaXJ0eWluZyB0aGUg
c2FtZSBsaW5lcyBhZ2FpbiBhY3Jvc3MgbXVsdGlwbGUgZGVzdHJveSgpIGNhbGxzIG9mIHRoZSBz
YW1lIHN1YnRyZWUuCisgICAgICAgIGlmIChjb250YWluZXIuaXNJbmxpbmUoKSAmJiAhY29udGFp
bmVyLmFuY2VzdG9yTGluZUJveERpcnR5KCkpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5wYXJl
bnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoY29udGFpbmVyKTsKKyAgICAgICAgICAg
IGNvbnRhaW5lci5zZXRBbmNlc3RvckxpbmVCb3hEaXJ0eSgpOyAvLyBNYXJrIHRoZSBjb250YWlu
ZXIgdG8gYXZvaWQgZGlydHlpbmcgdGhlIHNhbWUgbGluZXMgYWdhaW4gYWNyb3NzIG11bHRpcGxl
IGRlc3Ryb3koKSBjYWxscyBvZiB0aGUgc2FtZSBzdWJ0cmVlLgogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlz
dDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRh
aW4KICAgICAvLyBwYXJlbnQncyBmaXJzdCBsaW5lIGJveC4KICAgICBSb290SW5saW5lQm94KiBi
b3ggPSBudWxscHRyOwogICAgIFJlbmRlck9iamVjdCogY3VycmVudDsKLSAgICBmb3IgKGN1cnJl
bnQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50
LT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgIGZvciAoY3VycmVudCA9IGNoaWxkLnByZXZpb3Vz
U2libGluZygpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKICAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNvbnRhaW4KICAgICAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ29vZCBlbm91Z2gsIHNp
bmNlIHdlIHdvbid0IGxvY2F0ZSB0aGUgcm9vdCBsaW5lIGJveCB0aGF0IGVuY2xvc2VzIHRoZSBy
ZW1vdmVkCiAgICAgICAgICAgICAvLyA8YnI+LiBXZSBoYXZlIHRvIGp1c3Qgb3Zlci1pbnZhbGlk
YXRlIGEgYml0IGFuZCBnbyB1cCB0byBvdXIgcGFyZW50LgogICAgICAgICAgICAgaWYgKCFpbmxp
bmVDb250YWluZXItPmFuY2VzdG9yTGluZUJveERpcnR5KCkpIHsKLSAgICAgICAgICAgICAgICBp
bmxpbmVDb250YWluZXItPnBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChpbmxp
bmVDb250YWluZXIpOworICAgICAgICAgICAgICAgIGlubGluZUNvbnRhaW5lci0+cGFyZW50KCkt
PmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCppbmxpbmVDb250YWluZXIpOwogICAgICAgICAg
ICAgICAgIGlubGluZUNvbnRhaW5lci0+c2V0QW5jZXN0b3JMaW5lQm94RGlydHkoKTsgLy8gTWFy
ayB0aGUgY29udGFpbmVyIHRvIGF2b2lkIGRpcnR5aW5nIHRoZSBzYW1lIGxpbmVzIGFnYWluIGFj
cm9zcyBtdWx0aXBsZSBkZXN0cm95KCkgY2FsbHMgb2YgdGhlIHNhbWUgc3VidHJlZS4KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NCw5ICszOTQsOSBAQCB2b2lkIFJl
bmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGFpbgogICAgICAgICAvLyBJZiB8Y2hpbGR8IGhhcyBiZWVuIGluc2VydGVk
IGJlZm9yZSB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbGluZWJveCwgYnV0IGFmdGVyIGNvbGxh
cHNlZCBsZWFkaW5nCiAgICAgICAgIC8vIHNwYWNlLCB0aGUgc2VhcmNoIGZvciB8Y2hpbGR8J3Mg
bGluZWJveCB3aWxsIGdvIHBhc3QgdGhlIGxlYWRpbmcgc3BhY2UgdG8gdGhlIHByZXZpb3VzIGxp
bmVib3ggYW5kIHNlbGVjdCB0aGF0CiAgICAgICAgIC8vIG9uZSBhcyB8Ym94fC4gSWYgd2UgaGl0
IHRoYXQgc2l0dWF0aW9uIGhlcmUsIGRpcnR5IHRoZSB8Ym94fCBhY3R1YWxseSBjb250YWluaW5n
IHRoZSBjaGlsZCB0b28uIAotICAgICAgICBib29sIGluc2VydGVkQWZ0ZXJMZWFkaW5nU3BhY2Ug
PSBib3gtPmxpbmVCcmVha09iaigpID09IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAg
ICAgaWYgKGFkamFjZW50Qm94ICYmIChhZGphY2VudEJveC0+bGluZUJyZWFrT2JqKCkgPT0gY2hp
bGQgfHwgY2hpbGQtPmlzQlIoKSB8fCAoY3VycmVudCAmJiBjdXJyZW50LT5pc0JSKCkpCi0gICAg
ICAgICAgICB8fCBpbnNlcnRlZEFmdGVyTGVhZGluZ1NwYWNlIHx8IGlzSXNvbGF0ZWQoY29udGFp
bmVyLT5zdHlsZSgpLnVuaWNvZGVCaWRpKCkpKSkKKyAgICAgICAgYm9vbCBpbnNlcnRlZEFmdGVy
TGVhZGluZ1NwYWNlID0gYm94LT5saW5lQnJlYWtPYmooKSA9PSBjaGlsZC5wcmV2aW91c1NpYmxp
bmcoKTsKKyAgICAgICAgaWYgKGFkamFjZW50Qm94ICYmIChhZGphY2VudEJveC0+bGluZUJyZWFr
T2JqKCkgPT0gJmNoaWxkIHx8IGNoaWxkLmlzQlIoKSB8fCAoY3VycmVudCAmJiBjdXJyZW50LT5p
c0JSKCkpCisgICAgICAgICAgICB8fCBpbnNlcnRlZEFmdGVyTGVhZGluZ1NwYWNlIHx8IGlzSXNv
bGF0ZWQoY29udGFpbmVyLnN0eWxlKCkudW5pY29kZUJpZGkoKSkpKQogICAgICAgICAgICAgYWRq
YWNlbnRCb3gtPm1hcmtEaXJ0eSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmgKaW5kZXggMmMyZmE0ODc4Nzg2Nzg2NGFkYWI1NGI0ZjI5
Mjg5MjlhZDA1ZGIyZi4uN2FhMzVhMmQ5ODc3NWJiOGJkYWJlMjI2NmRhYzlhNjNhYjhlZGY4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTGluZUJveChJbmxpbmVGbG93Qm94
Kik7CiAgICAgCiAgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcygpOwotICAgIHZvaWQgZGlydHlMaW5l
c0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHBhcmVudCwgUmVuZGVyT2Jq
ZWN0KiBjaGlsZCk7CisgICAgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJC
b3hNb2RlbE9iamVjdCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKIAogICAgIHZvaWQg
cGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYpIGNvbnN0OwogICAgIGJvb2wgaGl0VGVzdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggYjIxMTg2MmNkZTY4OGI0MWVkMzRlMDgz
YmFlMjNkM2FlNTYzZjE5My4uNmVhNTYyMGQ4OWRlYzE2ZmNjMDdhNGU3OWZjZTNjMDI3MTU0YTg4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
cmVnaW9uQ2hhbmdlZFdyaXRpbmdNb2RlKFJlbmRlclJlZ2lvbiogcmVnaW9uKQogCiBMYXlvdXRS
ZWN0IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVjb3JhdGlvbnNDbGlwUmVjdEZvckJveEluTmFt
ZWRGbG93RnJhZ21lbnQoY29uc3QgUmVuZGVyQm94JiBib3gsIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50JiBmcmFnbWVudCkgY29uc3QKIHsKLSAgICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93UmVj
dCA9IGZyYWdtZW50LnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCgmYm94KTsKKyAgICBMYXlvdXRS
ZWN0IHZpc3VhbE92ZXJmbG93UmVjdCA9IGZyYWdtZW50LnZpc3VhbE92ZXJmbG93UmVjdEZvckJv
eChib3gpOwogICAgIExheW91dFVuaXQgaW5pdGlhbExvZ2ljYWxYID0gc3R5bGUoKS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gdmlzdWFsT3ZlcmZsb3dSZWN0LngoKSA6IHZpc3VhbE92ZXJm
bG93UmVjdC55KCk7CiAKICAgICAvLyBUaGUgdmlzdWFsIG92ZXJmbG93IHJlY3QgcmV0dXJuZWQg
YnkgdmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94IGlzIGFscmVhZHkgZmxpcHBlZCBidXQgdGhlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDM4N2MxYzkyMjE3
OGZiNGQxOWJiMjI2Yzc5MjUxYjM1Y2EzMDU0ODkuLmIyN2Q5MTBmMGJkNWUwYThiMzZhMDIwNjc5
ZDJhZmVhYzFkYzJiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6aW5zZXJ0ZWRJbnRv
VHJlZSgpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBBU1NFUlQoaXNSb290ZWQoKSkgaGVyZSBi
dXQgZ2VuZXJhdGVkIGNvbnRlbnQgbWFrZXMgc29tZSBvdXQtb2Ytb3JkZXIgaW5zZXJ0aW9uLgog
CiAgICAgaWYgKCFpc0Zsb2F0aW5nKCkgJiYgcGFyZW50KCktPmNoaWxkcmVuSW5saW5lKCkpCi0g
ICAgICAgIHBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCh0aGlzKTsKKyAgICAg
ICAgcGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCp0aGlzKTsKICAgICAKICAg
ICAvLyBXZSBoYXZlIHRvIHVuc2V0IHRoZSBjdXJyZW50IGxheW91dCBSZW5kZXJGbG93VGhyZWFk
IGhlcmUsIHNpbmNlIGluc2VydGVkSW50b1RyZWUoKSBjYW4gaGFwcGVuIGluCiAgICAgLy8gdGhl
IG1pZGRsZSBvZiBsYXlvdXQgYnV0IGZvciBvYmplY3RzIGluc2lkZSBhIG5lc3RlZCBmbG93IHRo
cmVhZCB0aGF0IGlzIHN0aWxsIGJlaW5nIHBvcHVsYXRlZC4gVGhpcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBjZjUzYTMwMTdjZWYwY2FkNmU4M2YxM2Vk
MzZjODMxMzBiMGEyNWFhLi5mOWRlOGNlOGNkNTYyNWJhNTBiMTcwMzcxYmFjZmIxNDJjNWUxOTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtMTU2LDcg
KzE1Niw3IEBAIExheW91dFJlY3QgUmVuZGVyUmVnaW9uOjpvdmVyZmxvd1JlY3RGb3JGbG93VGhy
ZWFkUG9ydGlvbihjb25zdCBMYXlvdXRSZWN0JiBmbG93CiAgICAgaWYgKHNob3VsZENsaXBGbG93
VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZmxvd1RocmVhZFBvcnRpb25SZWN0Owog
Ci0gICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkT3ZlcmZsb3cgPSBvdmVyZmxvd1R5cGUgPT0gVmlz
dWFsT3ZlcmZsb3cgPyB2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3gobV9mbG93VGhyZWFkKSA6IGxh
eW91dE92ZXJmbG93UmVjdEZvckJveChtX2Zsb3dUaHJlYWQpOworICAgIExheW91dFJlY3QgZmxv
d1RocmVhZE92ZXJmbG93ID0gb3ZlcmZsb3dUeXBlID09IFZpc3VhbE92ZXJmbG93ID8gdmlzdWFs
T3ZlcmZsb3dSZWN0Rm9yQm94KCptX2Zsb3dUaHJlYWQpIDogbGF5b3V0T3ZlcmZsb3dSZWN0Rm9y
Qm94KG1fZmxvd1RocmVhZCk7CiAKICAgICAvLyBXZSBhcmUgaW50ZXJlc3RlZCBhYm91dCB0aGUg
b3V0bGluZSBzaXplIG9ubHkgd2hlbiBjb21wdXRpbmcgdGhlIHZpc3VhbCBvdmVyZmxvdy4KICAg
ICBMYXlvdXRVbml0IG91dGxpbmVTaXplID0gb3ZlcmZsb3dUeXBlID09IFZpc3VhbE92ZXJmbG93
ID8gTGF5b3V0VW5pdChtYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZU91dGxpbmUpKSA6IExh
eW91dFVuaXQoKTsKQEAgLTUyMywxNiArNTIzLDE2IEBAIExheW91dFJlY3QgUmVuZGVyUmVnaW9u
OjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gpCiAgICAgcmV0
dXJuIG92ZXJmbG93LT5sYXlvdXRPdmVyZmxvd1JlY3QoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJSZWdpb246OnZpc3VhbE92ZXJmbG93UmVjdEZvckJveChjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYm94KQorTGF5b3V0UmVjdCBSZW5kZXJSZWdpb246OnZpc3VhbE92ZXJmbG93UmVjdEZv
ckJveChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgYm94KQogewotICAgIGlmIChib3gtPmlz
UmVuZGVySW5saW5lKCkpIHsKLSAgICAgICAgY29uc3QgUmVuZGVySW5saW5lKiBpbmxpbmVCb3gg
PSB0b1JlbmRlcklubGluZShib3gpOwotICAgICAgICByZXR1cm4gaW5saW5lQm94LT5saW5lc1Zp
c3VhbE92ZXJmbG93Qm91bmRpbmdCb3hJblJlZ2lvbih0aGlzKTsKKyAgICBpZiAoaXM8UmVuZGVy
SW5saW5lPihib3gpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlcklubGluZSYgaW5saW5lQm94ID0g
ZG93bmNhc3Q8UmVuZGVySW5saW5lPihib3gpOworICAgICAgICByZXR1cm4gaW5saW5lQm94Lmxp
bmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveEluUmVnaW9uKHRoaXMpOwogICAgIH0KIAotICAg
IGlmIChib3gtPmlzQm94KCkpIHsKKyAgICBpZiAoaXM8UmVuZGVyQm94Pihib3gpKSB7CiAgICAg
ICAgIFJlZlB0cjxSZW5kZXJPdmVyZmxvdz4gb3ZlcmZsb3c7Ci0gICAgICAgIGVuc3VyZU92ZXJm
bG93Rm9yQm94KHRvUmVuZGVyQm94KGJveCksIG92ZXJmbG93LCB0cnVlKTsKKyAgICAgICAgZW5z
dXJlT3ZlcmZsb3dGb3JCb3goJmRvd25jYXN0PFJlbmRlckJveD4oYm94KSwgb3ZlcmZsb3csIHRy
dWUpOwogCiAgICAgICAgIEFTU0VSVChvdmVyZmxvdyk7CiAgICAgICAgIHJldHVybiBvdmVyZmxv
dy0+dmlzdWFsT3ZlcmZsb3dSZWN0KCk7CkBAIC01NjMsNyArNTYzLDcgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJSZWdpb246OmxheW91dE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKGNvbnN0
IFJlbmRlckJveCoKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJSZWdp
b246OnZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBib3gpCitMYXlvdXRSZWN0IFJlbmRlclJlZ2lvbjo6dmlzdWFsT3ZlcmZs
b3dSZWN0Rm9yQm94Rm9yUHJvcGFnYXRpb24oY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIGJv
eCkKIHsKICAgICBMYXlvdXRSZWN0IHJlY3QgPSB2aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3goYm94
KTsKICAgICBmbG93VGhyZWFkKCktPmZsaXBGb3JXcml0aW5nTW9kZUxvY2FsQ29vcmRpbmF0ZXMo
cmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggN2VkNTEz
ZTUwZWFlMjlmMjkwYmI5Y2MzNzJiZGJmYzhiOTk1MGM5Ni4uMjlkNzlkNTJhNDM1ZDM4NjhiNGYz
Y2VmMGY1YzdhZDM3MmMyZTk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uaApAQCAtMTEzLDkgKzExMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZExheW91dE92ZXJm
bG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2b2lk
IGFkZFZpc3VhbE92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCosIGNvbnN0IExheW91dFJl
Y3QmKTsKICAgICBMYXlvdXRSZWN0IGxheW91dE92ZXJmbG93UmVjdEZvckJveChjb25zdCBSZW5k
ZXJCb3gqKTsKLSAgICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdEZvckJveChjb25zdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCopOworICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0
Rm9yQm94KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0Jik7CiAgICAgTGF5b3V0UmVjdCBsYXlv
dXRPdmVyZmxvd1JlY3RGb3JCb3hGb3JQcm9wYWdhdGlvbihjb25zdCBSZW5kZXJCb3gqKTsKLSAg
ICBMYXlvdXRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdEZvckJveEZvclByb3BhZ2F0aW9uKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0Kik7CisgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1Jl
Y3RGb3JCb3hGb3JQcm9wYWdhdGlvbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYpOwogCiAg
ICAgTGF5b3V0UmVjdCByZWN0Rmxvd1BvcnRpb25Gb3JCb3goY29uc3QgUmVuZGVyQm94KiwgY29u
c3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggOTcyMzViNzUyMjY1ODE0Yzc1NjIxYjgyMjY3MjVlZjRi
N2NkMDgwMS4uYjI3ZGYyYzViNjNlYWQ5NzNmZjlhMDZiZGFiOTUzMTg0M2ZhODI0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIFJlbmRlclJlcGxhY2VkOjp+UmVuZGVyUmVwbGFjZWQoKQogdm9pZCBSZW5kZXJSZXBsYWNl
ZDo6d2lsbEJlRGVzdHJveWVkKCkKIHsKICAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQo
KSAmJiBwYXJlbnQoKSkKLSAgICAgICAgcGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENo
aWxkKHRoaXMpOworICAgICAgICBwYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQo
KnRoaXMpOwogCiAgICAgUmVuZGVyQm94Ojp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAppbmRleCAxNDE4
NzUwMDczNDllZGZiZWU3OWY1ZDk3OWE5NjFmYTQzYjgwMDJhLi45MjBkNzUxN2JhM2EzYWRmY2Ex
ZDAyZGZlMTU4ZmM3ODg0M2ViNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW5kZXJU
ZXh0TGluZUJveGVzOjpyZW1vdmVBbGxGcm9tUGFyZW50KFJlbmRlclRleHQmIHJlbmRlcmVyKQog
ewogICAgIGlmICghbV9maXJzdCkgewogICAgICAgICBpZiAocmVuZGVyZXIucGFyZW50KCkpCi0g
ICAgICAgICAgICByZW5kZXJlci5wYXJlbnQoKS0+ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQo
JnJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJlbmRlcmVyLnBhcmVudCgpLT5kaXJ0eUxpbmVzRnJv
bUNoYW5nZWRDaGlsZChyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9y
IChhdXRvIGJveCA9IG1fZmlyc3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQpAQCAt
NjgzLDcgKzY4Myw3IEBAIGJvb2wgUmVuZGVyVGV4dExpbmVCb3hlczo6ZGlydHlSYW5nZShSZW5k
ZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgc3RhcnQsIHVuc2lnCiAgICAgCiAgICAgLy8gSWYg
dGhlIHRleHQgbm9kZSBpcyBlbXB0eSwgZGlydHkgdGhlIGxpbmUgd2hlcmUgbmV3IHRleHQgd2ls
bCBiZSBpbnNlcnRlZC4KICAgICBpZiAoIW1fZmlyc3QgJiYgcmVuZGVyZXIucGFyZW50KCkpIHsK
LSAgICAgICAgcmVuZGVyZXIucGFyZW50KCktPmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKCZy
ZW5kZXJlcik7CisgICAgICAgIHJlbmRlcmVyLnBhcmVudCgpLT5kaXJ0eUxpbmVzRnJvbUNoYW5n
ZWRDaGlsZChyZW5kZXJlcik7CiAgICAgICAgIGRpcnRpZWRMaW5lcyA9IHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBkaXJ0aWVkTGluZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKaW5kZXggZWFm
ODY5ODVhYzAxODAyZmMzYmMxYmQ5ZDZmNzc2N2FiZTFmMDRkNC4uOWFlZmZiNGEwYmRlNzdiMmI4
MjkxYzVlZDQ0ZDZkZTMyNGJlNTU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaApAQCAtMjg2
LDggKzI4Niw4IEBAIGlubGluZSBMYXlvdXRVbml0IGlubGluZUxvZ2ljYWxXaWR0aChSZW5kZXJP
YmplY3QqIGNoaWxkLCBib29sIGNoZWNrU3RhcnRFZGdlID0KICAgICB1bnNpZ25lZCBsaW5lRGVw
dGggPSAxOwogICAgIExheW91dFVuaXQgZXh0cmFXaWR0aCA9IDA7CiAgICAgUmVuZGVyRWxlbWVu
dCogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOwotICAgIHdoaWxlIChwYXJlbnQtPmlzUmVuZGVy
SW5saW5lKCkgJiYgbGluZURlcHRoKysgPCBjTWF4TGluZURlcHRoKSB7Ci0gICAgICAgIGNvbnN0
IFJlbmRlcklubGluZSYgcGFyZW50QXNSZW5kZXJJbmxpbmUgPSB0b1JlbmRlcklubGluZSgqcGFy
ZW50KTsKKyAgICB3aGlsZSAoaXM8UmVuZGVySW5saW5lPigqcGFyZW50KSAmJiBsaW5lRGVwdGgr
KyA8IGNNYXhMaW5lRGVwdGgpIHsKKyAgICAgICAgY29uc3QgYXV0byYgcGFyZW50QXNSZW5kZXJJ
bmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpwYXJlbnQpOwogICAgICAgICBpZiAoIWlz
RW1wdHlJbmxpbmUocGFyZW50QXNSZW5kZXJJbmxpbmUpKSB7CiAgICAgICAgICAgICBjaGVja1N0
YXJ0RWRnZSA9IGNoZWNrU3RhcnRFZGdlICYmIHNob3VsZEFkZEJvcmRlclBhZGRpbmdNYXJnaW4o
cHJldmlvdXNJbkZsb3dTaWJsaW5nKGNoaWxkKSk7CiAgICAgICAgICAgICBpZiAoY2hlY2tTdGFy
dEVkZ2UpCkBAIC0zNzMsNyArMzczLDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkU2tpcFdoaXRlc3Bh
Y2VBZnRlclN0YXJ0T2JqZWN0KFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIFJlbmRlck8KIAogaW5s
aW5lIHZvaWQgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVFbXB0eUlubGluZSgpCiB7Ci0gICAgUmVu
ZGVySW5saW5lJiBmbG93Qm94ID0gdG9SZW5kZXJJbmxpbmUoKm1fY3VycmVudC5yZW5kZXJlcigp
KTsKKyAgICBSZW5kZXJJbmxpbmUmIGZsb3dCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpt
X2N1cnJlbnQucmVuZGVyZXIoKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGVuZCB1cCBi
ZWluZyBjYWxsZWQgb24gZW1wdHkgaW5saW5lcwogICAgIEFTU0VSVChpc0VtcHR5SW5saW5lKGZs
b3dCb3gpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJ
bmxpbmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5l
SGVhZGVycy5oCmluZGV4IDBiMGM0NGU2ZTYwY2I1MjRmYjI5ZGY0MTQ1NDk5Yjg4YjU3MmE5NWEu
LjkwNThiM2RkYTgwZTZlYzRhZmE2YTRlYjgyNDFiOTUzOWI4MGFlYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaApAQCAtMTA1LDgg
KzEwNSw4IEBAIGlubGluZSBib29sIHJlcXVpcmVzTGluZUJveChjb25zdCBJbmxpbmVJdGVyYXRv
ciYgaXQsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbyA9CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgYm9vbCByZW5kZXJlcklzRW1wdHlJbmxpbmUgPSBmYWxzZTsKLSAgICBpZiAoaXQucmVu
ZGVyZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkgewotICAgICAgICBjb25zdCBSZW5kZXJJbmxpbmUm
IGlubGluZVJlbmRlcmVyID0gdG9SZW5kZXJJbmxpbmUoKml0LnJlbmRlcmVyKCkpOworICAgIGlm
IChpczxSZW5kZXJJbmxpbmU+KCppdC5yZW5kZXJlcigpKSkgeworICAgICAgICBjb25zdCBhdXRv
JiBpbmxpbmVSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKml0LnJlbmRlcmVyKCkp
OwogICAgICAgICBpZiAoIWFsd2F5c1JlcXVpcmVzTGluZUJveChpbmxpbmVSZW5kZXJlcikgJiYg
IXJlcXVpcmVzTGluZUJveEZvckNvbnRlbnQoaW5saW5lUmVuZGVyZXIsIGxpbmVJbmZvKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVuZGVyZXJJc0VtcHR5SW5saW5lID0g
aXNFbXB0eUlubGluZShpbmxpbmVSZW5kZXJlcik7CkBAIC0xMjYsMTIgKzEyNiwxMiBAQCBpbmxp
bmUgdm9pZCBzZXRTdGF0aWNQb3NpdGlvbnMoUmVuZGVyQmxvY2tGbG93JiBibG9jaywgUmVuZGVy
Qm94JiBjaGlsZCkKICAgICAvLyB3aWxsIHdvcmsgZm9yIHRoZSBjb21tb24gY2FzZXMKICAgICBS
ZW5kZXJFbGVtZW50KiBjb250YWluZXJCbG9jayA9IGNoaWxkLmNvbnRhaW5lcigpOwogICAgIExh
eW91dFVuaXQgYmxvY2tIZWlnaHQgPSBibG9jay5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgaWYgKGNv
bnRhaW5lckJsb2NrLT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgaWYgKGlzPFJlbmRlcklubGlu
ZT4oKmNvbnRhaW5lckJsb2NrKSkgewogICAgICAgICAvLyBBIHJlbGF0aXZlIHBvc2l0aW9uZWQg
aW5saW5lIGVuY2xvc2VzIHVzLiBJbiB0aGlzIGNhc2UsIHdlIGFsc28gaGF2ZSB0byBkZXRlcm1p
bmUgb3VyCiAgICAgICAgIC8vIHBvc2l0aW9uIGFzIHRob3VnaCB3ZSB3ZXJlIGFuIGlubGluZS4g
U2V0IHxzdGF0aWNJbmxpbmVQb3NpdGlvbnwgYW5kIHxzdGF0aWNCbG9ja1Bvc2l0aW9ufCBvbiB0
aGUgcmVsYXRpdmUgcG9zaXRpb25lZAogICAgICAgICAvLyBpbmxpbmUgc28gdGhhdCB3ZSBjYW4g
b2J0YWluIHRoZSB2YWx1ZSBsYXRlci4KLSAgICAgICAgdG9SZW5kZXJJbmxpbmUoY29udGFpbmVy
QmxvY2spLT5sYXllcigpLT5zZXRTdGF0aWNJbmxpbmVQb3NpdGlvbihibG9jay5zdGFydEFsaWdu
ZWRPZmZzZXRGb3JMaW5lKGJsb2NrSGVpZ2h0LCBmYWxzZSkpOwotICAgICAgICB0b1JlbmRlcklu
bGluZShjb250YWluZXJCbG9jayktPmxheWVyKCktPnNldFN0YXRpY0Jsb2NrUG9zaXRpb24oYmxv
Y2tIZWlnaHQpOworICAgICAgICBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjb250YWluZXJCbG9j
aykubGF5ZXIoKS0+c2V0U3RhdGljSW5saW5lUG9zaXRpb24oYmxvY2suc3RhcnRBbGlnbmVkT2Zm
c2V0Rm9yTGluZShibG9ja0hlaWdodCwgZmFsc2UpKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVy
SW5saW5lPigqY29udGFpbmVyQmxvY2spLmxheWVyKCktPnNldFN0YXRpY0Jsb2NrUG9zaXRpb24o
YmxvY2tIZWlnaHQpOwogICAgIH0KICAgICBibG9jay51cGRhdGVTdGF0aWNJbmxpbmVQb3NpdGlv
bkZvckNoaWxkKGNoaWxkLCBibG9ja0hlaWdodCk7CiAgICAgY2hpbGQubGF5ZXIoKS0+c2V0U3Rh
dGljQmxvY2tQb3NpdGlvbihibG9ja0hlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCAwYjNkN2RiN2IyNDc3NmFkZmNi
YTU1OGQ4MzA5NWNkMjU0ZTZkZGRjLi4zMGQwZWI1MjYxNzJhNDhmOGYyYjI3NzAzNTZhMzk1NjUw
N2EyOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKQEAgLTMzOCw4ICszMzgsOCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQog
ICAgIH0KIAogICAgIC8vIEZpbmFsbHksIHBhaW50IHRoZSBvdXRsaW5lIGlmIGFueS4KLSAgICBp
ZiAocmVuZGVyZXIoKS5zdHlsZSgpLmhhc091dGxpbmUoKSAmJiBwYXJlbnRSZW5kZXJlci5pc1Jl
bmRlcklubGluZSgpKQotICAgICAgICB0b1JlbmRlcklubGluZShwYXJlbnRSZW5kZXJlcikucGFp
bnRPdXRsaW5lKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIGlmIChyZW5kZXJlcigpLnN0
eWxlKCkuaGFzT3V0bGluZSgpICYmIGlzPFJlbmRlcklubGluZT4ocGFyZW50UmVuZGVyZXIpKQor
ICAgICAgICBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KHBhcmVudFJlbmRlcmVyKS5wYWludE91dGxp
bmUocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNv
dXJjZSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>