<?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>137199</bug_id>
          
          <creation_ts>2014-09-28 16:11:15 -0700</creation_ts>
          <short_desc>Use the new is&lt;&gt;() / downcast&lt;&gt;() for ShadowRoot and StyledElement</short_desc>
          <delta_ts>2014-09-29 10:35:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>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>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037807</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-28 16:11:15 -0700</bug_when>
    <thetext>Use the new is&lt;&gt;() / downcast&lt;&gt;() for ShadowRoot and StyledElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037813</commentid>
    <comment_count>1</comment_count>
      <attachid>238830</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-28 16:26:18 -0700</bug_when>
    <thetext>Created attachment 238830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037836</commentid>
    <comment_count>2</comment_count>
      <attachid>238830</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-28 17:56:47 -0700</bug_when>
    <thetext>Comment on attachment 238830
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:391
&gt; +    m_styledElement = element &amp;&amp; is&lt;StyledElement&gt;(element) ? downcast&lt;StyledElement&gt;(element) : nullptr;

I’m not going to comment on every one, since this is the same issue as in other patches. There is no need for the null check here since the is&lt;StyledElement&gt; function works fine on null, returning false. And the downcast should be done on *element, with a &amp; before downcast. This pattern repeats throughout this patch in variants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037982</commentid>
    <comment_count>3</comment_count>
      <attachid>238830</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 10:35:34 -0700</bug_when>
    <thetext>Comment on attachment 238830
Patch

Clearing flags on attachment: 238830

Committed r174069: &lt;http://trac.webkit.org/changeset/174069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037983</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-29 10:35:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238830</attachid>
            <date>2014-09-28 16:26:18 -0700</date>
            <delta_ts>2014-09-29 10:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137199-20140928162618.patch</filename>
            <type>text/plain</type>
            <size>39704</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJkYjAxNWE1NWFkMmE4
YzQ3ODg3N2MyODQ0N2IxMjgwMTk0OWRjMC4uNDNmNDJmY2IxNjkwNWJmOGJjM2M3ZDczYjU4Mzhi
NmU4OTNhMTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE0LTA5LTI4ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG5ldyBp
czw+KCkgLyBkb3duY2FzdDw+KCkgZm9yIFNoYWRvd1Jvb3QgYW5kIFN0eWxlZEVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzE5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0aGUgbmV3
IGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgU2hhZG93Um9vdCBhbmQgU3R5bGVkRWxlbWVudCBh
bmQKKyAgICAgICAgbW92ZSB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIHRoZSBOT0RFX1RZUEVfQ0FT
VFMoKSBtYWNyby4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3Rh
dGU6OmluaXRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRl
Ojppbml0Rm9yU3R5bGVSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmxvY2F0ZUNvdXNpbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Zmlu
ZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcpOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF0dHI6OnN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAqIGRv
bS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWxhdGVkTm9k
ZVJlc29sdmVyOjptb3ZlVG9QYXJlbnRPclNoYWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRSZWxhdGVkTm9kZVJlc29sdmVyOjpmaW5kSG9zdE9mVHJlZVNjb3BlSW5UYXJnZXRUcmVl
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVudFBhdGgpOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbnRhaW5pbmdTaGFkb3dS
b290KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGVQYXRoRm9yVGhpcyk6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRP
clNoYWRvd0hvc3ROb2RlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTdHlsZWRFbGVtZW50KToKKyAgICAgICAgKiBkb20vVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1NWR1NoYWRvd1RleHQpOgorICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpmb2N1c2VkRWxlbWVu
dCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjpyZW1vdmVFbWJlZGRpbmdVcFRvRW5jbG9zaW5nQmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2Rl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0aW5nU3R5bGU6OndyYXBwaW5nU3R5bGVGb3JTZXJpYWxpemF0aW9uKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGx5RWRp
dGluZ1N0eWxlVG9FbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpy
ZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2Fj
aGVzOjppbmxpbmVTdHlsZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZEVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRy
aWJ1dGVzU3R5bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxlSW5wdXQp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c05hdmlnYXRpb25TY29wZTo6
b3duZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6
ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxlbWVudDo6dGl0bGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNoYWRvd1Jvb3RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aW5jbHVkZXJGb3IpOgorCiAyMDE0LTA5LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBNb3ZlIFJlbmRlclRoZW1lR3Rr
LmggZnJvbSBwbGF0Zm9ybS9ndGsgdG8gcmVuZGVyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggYzI3MzA0ODJiNzk5NjRlMzBiMjE1N2FlYmNh
MDU2YjMwN2FkYmMxOC4uM2FhMmJiYWJiMjJhNzYzZjk4ZWJlNjliNWYyNTVmNGI0MWY1YmE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0zODgs
OCArMzg4LDggQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBbGxSdWxlcyhib29s
IG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmMKICAgICAgICAgbWF0Y2hVc2VyUnVs
ZXMoZmFsc2UpOwogCiAgICAgLy8gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVnaW5uaW5nIGZp
cnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBtYXBwZWQgZnJvbSBIVE1MLgotICAg
IGlmIChtX2VsZW1lbnQuaXNTdHlsZWRFbGVtZW50KCkpIHsKLSAgICAgICAgU3R5bGVkRWxlbWVu
dCYgc3R5bGVkRWxlbWVudCA9IHRvU3R5bGVkRWxlbWVudChtX2VsZW1lbnQpOworICAgIGlmIChp
czxTdHlsZWRFbGVtZW50PihtX2VsZW1lbnQpKSB7CisgICAgICAgIFN0eWxlZEVsZW1lbnQmIHN0
eWxlZEVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihtX2VsZW1lbnQpOwogICAgICAg
ICBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKHN0eWxlZEVsZW1lbnQucHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUoKSk7CiAKICAgICAgICAgLy8gTm93IHdlIGNoZWNrIGFkZGl0aW9uYWwgbWFw
cGVkIGRlY2xhcmF0aW9ucy4KQEAgLTQwOSw4ICs0MDksOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEFsbFJ1bGVzKGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzLCBib29s
IGluYwogICAgIGlmIChtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgICAgIG1hdGNoQXV0
aG9yUnVsZXMoZmFsc2UpOwogCi0gICAgaWYgKG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyAmJiBt
X2VsZW1lbnQuaXNTdHlsZWRFbGVtZW50KCkpIHsKLSAgICAgICAgU3R5bGVkRWxlbWVudCYgc3R5
bGVkRWxlbWVudCA9IHRvU3R5bGVkRWxlbWVudChtX2VsZW1lbnQpOworICAgIGlmIChtYXRjaEF1
dGhvckFuZFVzZXJTdHlsZXMgJiYgaXM8U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KSkgeworICAg
ICAgICBTdHlsZWRFbGVtZW50JiBzdHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVu
dD4obV9lbGVtZW50KTsKICAgICAgICAgLy8gTm93IGNoZWNrIG91ciBpbmxpbmUgc3R5bGUgYXR0
cmlidXRlLgogICAgICAgICBpZiAoc3R5bGVkRWxlbWVudC5pbmxpbmVTdHlsZSgpKSB7CiAgICAg
ICAgICAgICAvLyBJbmxpbmUgc3R5bGUgaXMgaW1tdXRhYmxlIGFzIGxvbmcgYXMgdGhlcmUgaXMg
bm8gQ1NTT00gd3JhcHBlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4
ZmNiMzc5NjUyZDYzMzIwM2Y3NzVlZTc2ZDMyNzc1ZjJlMWQxMTRhLi4zZDc1NmQ1MDQ3MDU2NDg5
YmI0MTMyNzJkN2MzYjllNGQ3YzVjOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC0zODUsMTEgKzM4NSwxMSBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0
ZTo6dXBkYXRlQ29udmVyc2lvbkRhdGEoKQogICAgIG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEobV9zdHlsZS5nZXQoKSwgbV9yb290RWxlbWVu
dFN0eWxlLCBtX2VsZW1lbnQgPyBkb2N1bWVudCgpLnJlbmRlclZpZXcoKSA6IG51bGxwdHIpOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEVsZW1lbnQoRWxlbWVu
dCogZSkKK2lubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjppbml0RWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQogewotICAgIG1fZWxlbWVudCA9IGU7Ci0gICAgbV9zdHlsZWRFbGVtZW50
ID0gZSAmJiBlLT5pc1N0eWxlZEVsZW1lbnQoKSA/IHRvU3R5bGVkRWxlbWVudChlKSA6IG51bGxw
dHI7Ci0gICAgbV9lbGVtZW50TGlua1N0YXRlID0gZSA/IGUtPmRvY3VtZW50KCkudmlzaXRlZExp
bmtTdGF0ZSgpLmRldGVybWluZUxpbmtTdGF0ZSgqZSkgOiBOb3RJbnNpZGVMaW5rOworICAgIG1f
ZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgbV9zdHlsZWRFbGVtZW50ID0gZWxlbWVudCAmJiBpczxT
dHlsZWRFbGVtZW50PihlbGVtZW50KSA/IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQp
IDogbnVsbHB0cjsKKyAgICBtX2VsZW1lbnRMaW5rU3RhdGUgPSBlbGVtZW50ID8gZWxlbWVudC0+
ZG9jdW1lbnQoKS52aXNpdGVkTGlua1N0YXRlKCkuZGV0ZXJtaW5lTGlua1N0YXRlKCplbGVtZW50
KSA6IE5vdEluc2lkZUxpbms7CiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKIH0KIApAQCAt
NDA5LDcgKzQwOSw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjppbml0Rm9y
U3R5bGVSZXNvbHZlKERvY3VtZW50JiBkb2N1bWVudCwgRWxlbWVuCiAgICAgbV9yZWdpb25Gb3JT
dHlsaW5nID0gcmVnaW9uRm9yU3R5bGluZzsKIAogICAgIGlmIChlKSB7Ci0gICAgICAgIGJvb2wg
cmVzZXRTdHlsZUluaGVyaXRhbmNlID0gaGFzU2hhZG93Um9vdFBhcmVudCgqZSkgJiYgdG9TaGFk
b3dSb290KGUtPnBhcmVudE5vZGUoKSktPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworICAgICAg
ICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSA9IGhhc1NoYWRvd1Jvb3RQYXJlbnQoKmUpICYm
IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCplLT5wYXJlbnROb2RlKCkpLnJlc2V0U3R5bGVJbmhlcml0
YW5jZSgpOwogICAgICAgICBtX3BhcmVudFN0eWxlID0gcmVzZXRTdHlsZUluaGVyaXRhbmNlID8g
bnVsbHB0ciA6IHBhcmVudFN0eWxlOwogICAgIH0gZWxzZQogICAgICAgICBtX3BhcmVudFN0eWxl
ID0gcGFyZW50U3R5bGU7CkBAIC00NDUsOSArNDQ1LDkgQEAgTm9kZSogU3R5bGVSZXNvbHZlcjo6
bG9jYXRlQ291c2luTGlzdChFbGVtZW50KiBwYXJlbnQsIHVuc2lnbmVkJiB2aXNpdGVkTm9kZUNv
dW4KIHsKICAgICBpZiAodmlzaXRlZE5vZGVDb3VudCA+PSBjU3R5bGVTZWFyY2hUaHJlc2hvbGQg
KiBjU3R5bGVTZWFyY2hMZXZlbFRocmVzaG9sZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC0+aXNTdHlsZWRFbGVtZW50KCkpCisgICAgaWYgKCFw
YXJlbnQgfHwgIWlzPFN0eWxlZEVsZW1lbnQ+KHBhcmVudCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZFBhcmVudCA9IHRvU3R5bGVkRWxlbWVudChw
YXJlbnQpOworICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZFBhcmVudCA9IGRvd25jYXN0PFN0eWxl
ZEVsZW1lbnQ+KHBhcmVudCk7CiAgICAgaWYgKHN0eWxlZFBhcmVudC0+aW5saW5lU3R5bGUoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KHN0eWxlZFBh
cmVudCkgJiYgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnN0eWxlZFBhcmVudCkuYW5pbWF0ZWRTTUlM
U3R5bGVQcm9wZXJ0aWVzKCkpCkBAIC02NjcsMTQgKzY2NywxNCBAQCBib29sIFN0eWxlUmVzb2x2
ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25z
dAogaW5saW5lIFN0eWxlZEVsZW1lbnQqIFN0eWxlUmVzb2x2ZXI6OmZpbmRTaWJsaW5nRm9yU3R5
bGVTaGFyaW5nKE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKIHsKICAgICBmb3Ig
KDsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmICgh
bm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpCisgICAgICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4o
bm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGNhblNoYXJlU3R5bGVX
aXRoRWxlbWVudCh0b1N0eWxlZEVsZW1lbnQobm9kZSkpKQorICAgICAgICBpZiAoY2FuU2hhcmVT
dHlsZVdpdGhFbGVtZW50KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KG5vZGUpKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBpZiAoY291bnQrKyA9PSBjU3R5bGVTZWFyY2hUaHJlc2hvbGQp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gdG9TdHlsZWRFbGVtZW50KG5vZGUpOworICAgIHJldHVybiBkb3duY2Fz
dDxTdHlsZWRFbGVtZW50Pihub2RlKTsKIH0KIAogUmVuZGVyU3R5bGUqIFN0eWxlUmVzb2x2ZXI6
OmxvY2F0ZVNoYXJlZFN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCAzNDEzYzhhOGIzZmU0ODA2
ZGM2NjJmMTc0NjFkMjUwZmE1MDg3YWQ0Li4xNzJmY2M3NmQ0YTRhYjg3OGI2MGFhY2FmNjIwMGRj
MTk1MmViYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xODgsMTAgKzE4OCwxMCBAQCBib29sIEF0
dHI6OmlzSWQoKSBjb25zdAogQ1NTU3R5bGVEZWNsYXJhdGlvbiogQXR0cjo6c3R5bGUoKQogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gb25seSBleGlzdHMgdG8gc3VwcG9ydCB0aGUgT2JqLUMgYmlu
ZGluZ3MuCi0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIW1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50
KCkpCisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIWlzPFN0eWxlZEVsZW1lbnQ+KG1fZWxlbWVudCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1fc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpjcmVhdGUoKTsKLSAgICB0b1N0eWxlZEVsZW1lbnQobV9lbGVtZW50KS0+Y29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSwg
Km1fc3R5bGUpOworICAgIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCptX2VsZW1lbnQpLmNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKCks
ICptX3N0eWxlKTsKICAgICByZXR1cm4gbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNmE5Zjg3MDk4ZTZkNDcwNWU2NWJk
MTQ4NDRjMmQ0YWIzNWUzYjAxYi4uMmZhZjI0OGJmODAxMTU1YmJjMWZiYWNkNDQ5YmE0YzJmMGE4
ZTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTgyNSw4ICsxODI1LDggQEAgYm9vbCBF
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIEF0
b21pY1N0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKCp0aGlzKSA/
IG5hbWUubG93ZXIoKSA6IG5hbWU7CiAgICAgdW5zaWduZWQgaW5kZXggPSBlbGVtZW50RGF0YSgp
LT5maW5kQXR0cmlidXRlSW5kZXhCeU5hbWUobG9jYWxOYW1lLCBmYWxzZSk7CiAgICAgaWYgKGlu
ZGV4ID09IEVsZW1lbnREYXRhOjphdHRyaWJ1dGVOb3RGb3VuZCkgewotICAgICAgICBpZiAoVU5M
SUtFTFkobG9jYWxOYW1lID09IHN0eWxlQXR0cikgJiYgZWxlbWVudERhdGEoKS0+c3R5bGVBdHRy
aWJ1dGVJc0RpcnR5KCkgJiYgaXNTdHlsZWRFbGVtZW50KCkpCi0gICAgICAgICAgICB0b1N0eWxl
ZEVsZW1lbnQodGhpcyktPnJlbW92ZUFsbElubGluZVN0eWxlUHJvcGVydGllcygpOworICAgICAg
ICBpZiAoVU5MSUtFTFkobG9jYWxOYW1lID09IHN0eWxlQXR0cikgJiYgZWxlbWVudERhdGEoKS0+
c3R5bGVBdHRyaWJ1dGVJc0RpcnR5KCkgJiYgaXM8U3R5bGVkRWxlbWVudD4oKnRoaXMpKQorICAg
ICAgICAgICAgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnRoaXMpLnJlbW92ZUFsbElubGluZVN0
eWxlUHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IGY3NmI5MjQzYzBiZDhhZjQ5YzM2NTY3
NDIzYjZjNzQ1MjU5ZGY3ZDYuLjVhMGRiNGVmOTZlMzQ3Y2QzYzExYzc4ZjNhYTk1ZGI4MGNhYWFj
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xNDMsOCArMTQz
LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fcmVsYXRlZE5vZGVJbkN1cnJlbnRU
cmVlU2NvcGU7CiAKICAgICAgICAgaWYgKG1fY3VycmVudFRyZWVTY29wZSkgewotICAgICAgICAg
ICAgQVNTRVJUKG1fY3VycmVudFRyZWVTY29wZS0+cm9vdE5vZGUoKS5pc1NoYWRvd1Jvb3QoKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoJm5ld1RhcmdldCA9PSB0b1NoYWRvd1Jvb3QobV9jdXJyZW50
VHJlZVNjb3BlLT5yb290Tm9kZSgpKS5ob3N0RWxlbWVudCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VChpczxTaGFkb3dSb290PihtX2N1cnJlbnRUcmVlU2NvcGUtPnJvb3ROb2RlKCkpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCgmbmV3VGFyZ2V0ID09IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KG1fY3VycmVu
dFRyZWVTY29wZS0+cm9vdE5vZGUoKSkuaG9zdEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NF
UlQobV9jdXJyZW50VHJlZVNjb3BlLT5wYXJlbnRUcmVlU2NvcGUoKSA9PSAmbmV3VHJlZVNjb3Bl
KTsKICAgICAgICAgfQogCkBAIC0xODQsOCArMTg0LDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZwcmV2aW91c0hvc3QtPnRyZWVT
Y29wZSgpID09ICZ0YXJnZXRTY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3Vz
SG9zdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzY29wZS0+cm9vdE5vZGUoKS5p
c1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgICAgICBwcmV2aW91c0hvc3QgPSB0b1NoYWRvd1Jv
b3Qoc2NvcGUtPnJvb3ROb2RlKCkpLmhvc3RFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoaXM8
U2hhZG93Um9vdD4oc2NvcGUtPnJvb3ROb2RlKCkpKQorICAgICAgICAgICAgICAgIHByZXZpb3Vz
SG9zdCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHNjb3BlLT5yb290Tm9kZSgpKS5ob3N0RWxlbWVu
dCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFzY29wZS0+cGFyZW50VHJlZVNjb3BlKCkpOwogICAgICAgICB9CkBA
IC0yMTcsNyArMjE3LDcgQEAgaW5saW5lIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldFJlc3BlY3Rp
bmdUYXJnZXRSdWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogICAgIC8vIFNwZWM6IFRoZSBldmVu
dCBoYW5kbGluZyBmb3IgdGhlIG5vbi1leHBvc2VkIHRyZWUgd29ya3MgYXMgaWYgdGhlIHJlZmVy
ZW5jZWQgZWxlbWVudCBoYWQgYmVlbiB0ZXh0dWFsbHkgaW5jbHVkZWQKICAgICAvLyBhcyBhIGRl
ZXBseSBjbG9uZWQgY2hpbGQgb2YgdGhlICd1c2UnIGVsZW1lbnQsIGV4Y2VwdCB0aGF0IGV2ZW50
cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGUgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdHMKICAgICBh
dXRvJiByb290Tm9kZSA9IHJlZmVyZW5jZU5vZGUudHJlZVNjb3BlKCkucm9vdE5vZGUoKTsKLSAg
ICBFbGVtZW50KiBzaGFkb3dIb3N0RWxlbWVudCA9IHJvb3ROb2RlLmlzU2hhZG93Um9vdCgpID8g
dG9TaGFkb3dSb290KHJvb3ROb2RlKS5ob3N0RWxlbWVudCgpIDogbnVsbHB0cjsKKyAgICBFbGVt
ZW50KiBzaGFkb3dIb3N0RWxlbWVudCA9IGlzPFNoYWRvd1Jvb3Q+KHJvb3ROb2RlKSA/IGRvd25j
YXN0PFNoYWRvd1Jvb3Q+KHJvb3ROb2RlKS5ob3N0RWxlbWVudCgpIDogbnVsbHB0cjsKICAgICAv
LyBBdCB0aGlzIHRpbWUsIFNWRyBub2RlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBub24tPHVzZT4g
c2hhZG93IHRyZWVzLgogICAgIGlmICghc2hhZG93SG9zdEVsZW1lbnQgfHwgIXNoYWRvd0hvc3RF
bGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKQogICAgICAgICByZXR1cm4gcmVm
ZXJlbmNlTm9kZTsKQEAgLTQ0NywxMiArNDQ3LDEyIEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKE5v
ZGUmIHRhcmdldE5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICBtX3BhdGguYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pihub2RlLCAmY3VycmVudFRhcmdldCwg
dGFyZ2V0KSk7CiAgICAgICAgICAgICBpZiAoIWluRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAg
ICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KG5vZGUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGlmICghbm9kZSB8fCAhc2hvdWxkRXZlbnRDcm9zc1NoYWRvd0JvdW5k
YXJ5KGV2ZW50LCAqdG9TaGFkb3dSb290KG5vZGUpLCAqdGFyZ2V0KSkKKyAgICAgICAgaWYgKCFu
b2RlIHx8ICFzaG91bGRFdmVudENyb3NzU2hhZG93Qm91bmRhcnkoZXZlbnQsIGRvd25jYXN0PFNo
YWRvd1Jvb3Q+KCpub2RlKSwgKnRhcmdldCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG5vZGUgPSB0b1NoYWRvd1Jvb3Qobm9kZSktPmhvc3RFbGVtZW50KCk7CisgICAgICAgIG5vZGUg
PSBkb3duY2FzdDxTaGFkb3dSb290Pigqbm9kZSkuaG9zdEVsZW1lbnQoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCAzZWM1YmNhYmUyNWEzZjExNTQ3YzJhZjRiZmFkM2MxYjEwMzYy
NGRmLi4yZWRjY2ZmZjcwNDEzNjhlOWQxNGMzZWY5YjQ1MjUyNjk3NGEzMjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC05NzQsNyArOTc0LDcgQEAgTm9kZSogTm9kZTo6ZGVwcmVjYXRlZFNoYWRvd0Fu
Y2VzdG9yTm9kZSgpIGNvbnN0CiBTaGFkb3dSb290KiBOb2RlOjpjb250YWluaW5nU2hhZG93Um9v
dCgpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdCA9IHRyZWVTY29wZSgpLnJvb3RO
b2RlKCk7Ci0gICAgcmV0dXJuIHJvb3QuaXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QoJnJv
b3QpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4ocm9vdCkgPyBkb3duY2Fz
dDxTaGFkb3dSb290Pigmcm9vdCkgOiBudWxscHRyOwogfQogCiBOb2RlKiBOb2RlOjpub25Cb3Vu
ZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpCkBAIC0xMDAyLDEzICsxMDAyLDEzIEBAIEVsZW1lbnQq
IE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSBjb25zdAogewogICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudCA9IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKICAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYg
KHBhcmVudC0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiB0b1NoYWRvd1Jvb3QocGFy
ZW50KS0+aG9zdEVsZW1lbnQoKTsKKyAgICBpZiAoaXM8U2hhZG93Um9vdD4ocGFyZW50KSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHBhcmVudCktPmhvc3RFbGVtZW50KCk7
CiAKICAgICBpZiAoIXBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCk7
CiB9CkBAIC0xNTcyLDkgKzE1NzIsOSBAQCB2b2lkIE5vZGU6OnNob3dOb2RlUGF0aEZvclRoaXMo
KSBjb25zdAogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gY2hhaW4uc2l6ZSgpOyBp
bmRleCA+IDA7IC0taW5kZXgpIHsKICAgICAgICAgY29uc3QgTm9kZSogbm9kZSA9IGNoYWluW2lu
ZGV4IC0gMV07Ci0gICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBp
ZiAoaXM8U2hhZG93Um9vdD4obm9kZSkpIHsKICAgICAgICAgICAgIGludCBjb3VudCA9IDA7Ci0g
ICAgICAgICAgICBmb3IgKGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jv
b3Qobm9kZSk7IHNoYWRvd1Jvb3QgJiYgc2hhZG93Um9vdCAhPSBub2RlOyBzaGFkb3dSb290ID0g
c2hhZG93Um9vdC0+c2hhZG93Um9vdCgpKQorICAgICAgICAgICAgZm9yIChjb25zdCBTaGFkb3dS
b290KiBzaGFkb3dSb290ID0gZG93bmNhc3Q8U2hhZG93Um9vdD4obm9kZSk7IHNoYWRvd1Jvb3Qg
JiYgc2hhZG93Um9vdCAhPSBub2RlOyBzaGFkb3dSb290ID0gc2hhZG93Um9vdC0+c2hhZG93Um9v
dCgpKQogICAgICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIi8jc2hhZG93LXJvb3RbJWRdIiwgY291bnQpOwogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKaW5kZXggOGE1
OTc4MmYwNjkyNjlmNmJkMGJiNzY2ZGI2MzU2NjczM2Y3ZTdlNC4uNWFmYjhkZDYxOTI1Y2U5YmYy
NTE1YTFlODdjNDY2Y2EzOGMwNjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIGVudW0gU2hhZG93Um9vdENy
b3NzaW5nIHsgQ3Jvc3NTaGFkb3dSb290LCBEb250Q3Jvc3NTaGFkb3dSb290IH07CiBzdGF0aWMg
Q29udGFpbmVyTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgU2hhZG93Um9v
dENyb3NzaW5nIHNoYWRvd1Jvb3RDcm9zc2luZykKIHsKICAgICBpZiAoc2hhZG93Um9vdENyb3Nz
aW5nID09IERvbnRDcm9zc1NoYWRvd1Jvb3QgICYmIG5vZGUtPmlzU2hhZG93Um9vdCgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobm9kZUNh
bkJlRGlzdHJpYnV0ZWQobm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludE9mKG5vZGUpKQpAQCAtMTMyLDggKzEzMiw4
IEBAIHN0YXRpYyBDb250YWluZXJOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2Rl
LCBTaGFkb3dSb290Q3Jvc3Npbmcgc2hhZG93CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpCi0gICAgICAg
IHJldHVybiBzaGFkb3dSb290Q3Jvc3NpbmcgPT0gQ3Jvc3NTaGFkb3dSb290ID8gdG9TaGFkb3dS
b290KHBhcmVudCktPmhvc3RFbGVtZW50KCkgOiBwYXJlbnQ7CisgICAgaWYgKGlzPFNoYWRvd1Jv
b3Q+KHBhcmVudCkpCisgICAgICAgIHJldHVybiBzaGFkb3dSb290Q3Jvc3NpbmcgPT0gQ3Jvc3NT
aGFkb3dSb290ID8gZG93bmNhc3Q8U2hhZG93Um9vdD4ocGFyZW50KS0+aG9zdEVsZW1lbnQoKSA6
IHBhcmVudDsKIAogICAgIGlmIChwYXJlbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSkgewogICAgICAg
ICBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50
KHBhcmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkYWYxOWNhNTg0MWNmYzBkMDlh
ZWE3ZDMyYjM3NDJmOWZlNTFjNjkwLi43MGQxMmY4OTk4YmNkYzVhZTg2YTkzNjY4MGQwN2I3MjZm
NTBiY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTk1LDIyICs5NSwyMiBAQCBpbmxp
bmUgRWxlbWVudCogU2hhZG93Um9vdDo6YWN0aXZlRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IHRyZWVTY29wZSgpLmZvY3VzZWRFbGVtZW50KCk7CiB9CiAKLWlubGluZSBib29sIGlzU2hhZG93
Um9vdChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU2hhZG93Um9vdCgpOyB9Ci0K
LU5PREVfVFlQRV9DQVNUUyhTaGFkb3dSb290KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJ
TihTaGFkb3dSb290KQorICAgIHN0YXRpYyBib29sIGlzU2hhZG93Um9vdChjb25zdCBOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLmlzU2hhZG93Um9vdCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCiAKIGlubGluZSBTaGFkb3dSb290KiBOb2RlOjpzaGFkb3dSb290KCkgY29uc3QK
IHsKICAgICBpZiAoIWlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB0b0VsZW1lbnQodGhpcyktPnNoYWRvd1Jvb3Qo
KTsKIH0KIAogaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpOwotICAg
IGlmIChpc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIHRvU2hhZG93Um9vdCh0aGlzKS0+
aG9zdEVsZW1lbnQoKTsKKyAgICBpZiAoaXM8U2hhZG93Um9vdD4odGhpcykpCisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxTaGFkb3dSb290PigqdGhpcykuaG9zdEVsZW1lbnQoKTsKICAgICByZXR1
cm4gcGFyZW50Tm9kZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCBh
ZmNlYmY5NmMyNDlhZDM0YzlmZWFmNGI4M2MwZjU4NGJhYWQ0OGFjLi40MDliYzAzODE1NjE4MjMw
NDRlYTZjYTY5MWE5NWE1OWQ5ZDk5YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgK
QEAgLTEwMCwxNSArMTAwLDE1IEBAIGlubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OmludmFsaWRh
dGVTdHlsZUF0dHJpYnV0ZSgpCiBpbmxpbmUgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBTdHlsZWRF
bGVtZW50OjpwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiB7CiAgICAgaWYgKCFlbGVtZW50
RGF0YSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
aWYgKGVsZW1lbnREYXRhKCktPnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eSgpKQog
ICAgICAgICByZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKICAgICByZXR1cm4g
ZWxlbWVudERhdGEoKS0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKIH0KIAotaW5saW5l
IGJvb2wgaXNTdHlsZWRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNT
dHlsZWRFbGVtZW50KCk7IH0KLQotTk9ERV9UWVBFX0NBU1RTKFN0eWxlZEVsZW1lbnQpCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFN0eWxlZEVsZW1lbnQpCisgICAgc3RhdGljIGJvb2wg
aXNTdHlsZWRFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTdHlsZWRF
bGVtZW50KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogfSAvL25hbWVzcGFj
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKaW5kZXggNDA1MzNjMzQzOTYzZGU3OTQwYjI3OWFhYzkwNjYwMTYx
MmViNDZlZC4uZGU5YzA2ZTAyNmEyMTkwOGZlOWJjOGVjNGQ4NjVlYzU5Y2VmYzVkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gVGV4dDo6Y2xv
bmVOb2RlKGJvb2wgLypkZWVwKi8pCiBzdGF0aWMgYm9vbCBpc1NWR1NoYWRvd1RleHQoVGV4dCog
dGV4dCkKIHsKICAgICBOb2RlKiBwYXJlbnROb2RlID0gdGV4dC0+cGFyZW50Tm9kZSgpOwotICAg
IHJldHVybiBwYXJlbnROb2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiB0b1NoYWRvd1Jvb3QocGFyZW50
Tm9kZSktPmhvc3RFbGVtZW50KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpOworICAg
IHJldHVybiBpczxTaGFkb3dSb290PihwYXJlbnROb2RlKSAmJiBkb3duY2FzdDxTaGFkb3dSb290
PigqcGFyZW50Tm9kZSkuaG9zdEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dHJlZlRh
Zyk7CiB9CiAKIHN0YXRpYyBib29sIGlzU1ZHVGV4dChUZXh0KiB0ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcAppbmRleCBlMjNlMjZlNGYzMzI4MTZlNGZlMzVkODEyMDIyZjE1OWQwZTQ4NDIz
Li5hOTI0OWQ2ZDA5ZWVmODhiNjQ2ZTZiYTUyZWYwNjYwYTE1MWQwMWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Zm9j
dXNlZEVsZW1lbnQoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBUcmVlU2NvcGUqIHRy
ZWVTY29wZSA9ICZlbGVtZW50LT50cmVlU2NvcGUoKTsKICAgICB3aGlsZSAodHJlZVNjb3BlICE9
IHRoaXMgJiYgdHJlZVNjb3BlICE9ICZkb2N1bWVudCkgewotICAgICAgICBlbGVtZW50ID0gdG9T
aGFkb3dSb290KHRyZWVTY29wZS0+cm9vdE5vZGUoKSkuaG9zdEVsZW1lbnQoKTsKKyAgICAgICAg
ZWxlbWVudCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KHRyZWVTY29wZS0+cm9vdE5vZGUoKSkuaG9z
dEVsZW1lbnQoKTsKICAgICAgICAgdHJlZVNjb3BlID0gJmVsZW1lbnQtPnRyZWVTY29wZSgpOwog
ICAgIH0KICAgICBpZiAodGhpcyAhPSB0cmVlU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlQWRvcHRlci5jcHAKaW5kZXggOTcyMzFkNGQ2YTIwMDk3ZWNmYWEwZDZmZDU4YzNiNGJiMzhi
MTlhOC4uNjQxMGYyYzBhNmVmODZiMjhkN2JmY2E2ODlhNzEyMGNiYWNmYjJlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtMTI0LDggKzEyNCw4IEBAIGlubGlu
ZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlKiBub2Rl
LCBEb2N1bWVudCogb2xkRG9jCiAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICBvbGREb2N1
bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsK
IAotICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgdG9TaGFkb3dSb290KG5v
ZGUpLT5zZXREb2N1bWVudFNjb3BlKG5ld0RvY3VtZW50KTsKKyAgICBpZiAoaXM8U2hhZG93Um9v
dD4obm9kZSkpCisgICAgICAgIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCpub2RlKS5zZXREb2N1bWVu
dFNjb3BlKG5ld0RvY3VtZW50KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBkaWRNb3ZlVG9OZXdE
b2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAppbmRleCBlOTAyNDljOTE3MTZkYWI0M2RkYTcyNjEzNzc0OTU4Yzdj
NmRhNzlkLi41NjU1MDRlMjJjZDUyODVhMWY0OWM1NTcyOWYwN2QyODdkNDYxODUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtNTAyLDE0ICs1
MDIsMTQgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xv
c2luZ0Jsb2NrKE5vZGUqIG5vZGUsIE5vZGUqIHVuc3AKICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBOb2RlKiBwYXJlbnQgPSAwOwotICAgIGZvciAoTm9kZSogbiA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsgbiAhPSBibG9jayAmJiBuICE9IHVuc3BsaXRBbmNlc3RvcjsgbiA9
IHBhcmVudCkgewotICAgICAgICBwYXJlbnQgPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlm
ICghbi0+aXNTdHlsZWRFbGVtZW50KCkpCisgICAgTm9kZSogcGFyZW50ID0gbnVsbHB0cjsKKyAg
ICBmb3IgKE5vZGUqIGFuY2VzdG9yID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBhbmNlc3RvciAhPSBi
bG9jayAmJiBhbmNlc3RvciAhPSB1bnNwbGl0QW5jZXN0b3I7IGFuY2VzdG9yID0gcGFyZW50KSB7
CisgICAgICAgIHBhcmVudCA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCk7CisgICAgICAgIGlmICgh
aXM8U3R5bGVkRWxlbWVudD4oYW5jZXN0b3IpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHRvU3R5bGVkRWxlbWVudChuKTsKLSAgICAg
ICAgaW50IHVuaWNvZGVCaWRpID0gdG9JZGVudGlmaWVyKENvbXB1dGVkU3R5bGVFeHRyYWN0b3Io
ZWxlbWVudCkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKSk7CisgICAgICAg
IFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqYW5jZXN0
b3IpOworICAgICAgICBpbnQgdW5pY29kZUJpZGkgPSB0b0lkZW50aWZpZXIoQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvcigmZWxlbWVudCkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
KSk7CiAgICAgICAgIGlmICghdW5pY29kZUJpZGkgfHwgdW5pY29kZUJpZGkgPT0gQ1NTVmFsdWVO
b3JtYWwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTE3LDE3ICs1MTcsMTcgQEAgdm9p
ZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlRW1iZWRkaW5nVXBUb0VuY2xvc2luZ0Jsb2NrKE5v
ZGUqIG5vZGUsIE5vZGUqIHVuc3AKICAgICAgICAgLy8gYW5kIGFsbCBtYXRjaGluZyBzdHlsZSBy
dWxlcyBpbiBvcmRlciB0byBkZXRlcm1pbmUgaG93IHRvIGJlc3Qgc2V0IHRoZSB1bmljb2RlLWJp
ZGkgcHJvcGVydHkgdG8gJ25vcm1hbCcuCiAgICAgICAgIC8vIEZvciBub3csIGl0IGFzc3VtZXMg
dGhhdCBpZiB0aGUgJ2RpcicgYXR0cmlidXRlIGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZpbmcgaXQg
d2lsbCBzdWZmaWNlLCBhbmQKICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNldHMgdGhlIHByb3Bl
cnR5IGluIHRoZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24uCi0gICAgICAgIGlmIChlbGVtZW50
LT5mYXN0SGFzQXR0cmlidXRlKGRpckF0dHIpKSB7CisgICAgICAgIGlmIChlbGVtZW50LmZhc3RI
YXNBdHRyaWJ1dGUoZGlyQXR0cikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIGlz
IGEgQkRPIGVsZW1lbnQsIHdlIHNob3VsZCBwcm9iYWJseSBqdXN0IHJlbW92ZSBpdCBpZiBpdCBo
YXMgbm8KICAgICAgICAgICAgIC8vIG90aGVyIGF0dHJpYnV0ZXMsIGxpa2Ugd2UgKHNob3VsZCkg
ZG8gd2l0aCBCIGFuZCBJIGVsZW1lbnRzLgotICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0
ZShlbGVtZW50LCBkaXJBdHRyKTsKKyAgICAgICAgICAgIHJlbW92ZU5vZGVBdHRyaWJ1dGUoJmVs
ZW1lbnQsIGRpckF0dHIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IGlubGluZVN0eWxlID0gY29weVN0eWxlT3JDcmVhdGVFbXB0
eShlbGVtZW50LT5pbmxpbmVTdHlsZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzPiBpbmxpbmVTdHlsZSA9IGNvcHlTdHlsZU9yQ3JlYXRlRW1wdHkoZWxlbWVu
dC5pbmxpbmVTdHlsZSgpKTsKICAgICAgICAgICAgIGlubGluZVN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgICAgICBpbmxp
bmVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOwotICAgICAgICAg
ICAgc2V0Tm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5hc1Rl
eHQoKSk7Ci0gICAgICAgICAgICBpZiAoaXNTcGFuV2l0aG91dEF0dHJpYnV0ZXNPclVuc3R5bGVk
U3R5bGVTcGFuKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5n
Q2hpbGRyZW4oZWxlbWVudCk7CisgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKCZlbGVtZW50
LCBzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5hc1RleHQoKSk7CisgICAgICAgICAgICBpZiAoaXNT
cGFuV2l0aG91dEF0dHJpYnV0ZXNPclVuc3R5bGVkU3R5bGVTcGFuKCZlbGVtZW50KSkKKyAgICAg
ICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKCZlbGVtZW50KTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTEwNDAsOCArMTA0MCw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1h
bmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSogc3R5bGUsIE5v
ZGUqCiAgICAgICAgIGdldENoaWxkTm9kZXMoKmN1cnJlbnQuZ2V0KCksIGN1cnJlbnRDaGlsZHJl
bik7CiAKICAgICAgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IHN0eWxlZEVsZW1lbnQ7Ci0gICAg
ICAgIGlmIChjdXJyZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBpc1N0eWxlZElubGluZUVsZW1l
bnRUb1JlbW92ZSh0b0VsZW1lbnQoY3VycmVudC5nZXQoKSkpKSB7Ci0gICAgICAgICAgICBzdHls
ZWRFbGVtZW50ID0gdG9TdHlsZWRFbGVtZW50KGN1cnJlbnQuZ2V0KCkpOworICAgICAgICBpZiAo
aXM8U3R5bGVkRWxlbWVudD4oKmN1cnJlbnQpICYmIGlzU3R5bGVkSW5saW5lRWxlbWVudFRvUmVt
b3ZlKHRvRWxlbWVudChjdXJyZW50LmdldCgpKSkpIHsKKyAgICAgICAgICAgIHN0eWxlZEVsZW1l
bnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihjdXJyZW50LmdldCgpKTsKICAgICAgICAgICAg
IGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQoKnN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBhOWQ2ZTYxZjkzYWU2
YzA2NDY5ZWE4ODlkNWJjODlhZDAzOGJmZmVkLi5jMDlhY2EyYjFhOTdmMjNkNjRiY2Y4YzBiODg4
ZjUzZDVmYWM3ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBA
IC0xMDM2LDggKzEwMzYsOCBAQCBQYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxl
Ojp3cmFwcGluZ1N0eWxlRm9yU2VyaWFsaXphdGlvbihOb2RlKiBjb250ZQogCiAgICAgLy8gV2hl
biBub3QgYW5ub3RhdGluZyBmb3IgaW50ZXJjaGFuZ2UsIHdlIG9ubHkgcHJlc2VydmUgaW5saW5l
IHN0eWxlIGRlY2xhcmF0aW9ucy4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250ZXh0OyBub2Rl
ICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7
Ci0gICAgICAgIGlmIChub2RlLT5pc1N0eWxlZEVsZW1lbnQoKSAmJiAhaXNNYWlsQmxvY2txdW90
ZShub2RlKSkgewotICAgICAgICAgICAgd3JhcHBpbmdTdHlsZS0+bWVyZ2VJbmxpbmVBbmRJbXBs
aWNpdFN0eWxlT2ZFbGVtZW50KHRvU3R5bGVkRWxlbWVudChub2RlKSwgRWRpdGluZ1N0eWxlOjpE
b05vdE92ZXJyaWRlVmFsdWVzLAorICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVudD4obm9kZSkg
JiYgIWlzTWFpbEJsb2NrcXVvdGUobm9kZSkpIHsKKyAgICAgICAgICAgIHdyYXBwaW5nU3R5bGUt
Pm1lcmdlSW5saW5lQW5kSW1wbGljaXRTdHlsZU9mRWxlbWVudChkb3duY2FzdDxTdHlsZWRFbGVt
ZW50Pihub2RlKSwgRWRpdGluZ1N0eWxlOjpEb05vdE92ZXJyaWRlVmFsdWVzLAogICAgICAgICAg
ICAgICAgIEVkaXRpbmdTdHlsZTo6RWRpdGluZ1Byb3BlcnRpZXNJbkVmZmVjdCk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggOTlhMWE5Zjg3OGFkY2Yw
YWM5MzZhOWM1MWNmNTFkY2Y4N2M0M2Q1NC4uZDEyN2RkNWVmNjhjMzllYTA5ZTEyMWM1NTk3ZDYz
MDNlYmM0MDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzEwNywxMiArMzEw
NywxMiBAQCB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBBU1NFUlQoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpOwotICAgIGlmICghZWxlbWVudC0+
aXNTdHlsZWRFbGVtZW50KCkpCisgICAgQVNTRVJUKGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQp
KTsKKyAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBz
YW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlID0gdG9TdHlsZWRFbGVtZW50KGVsZW1lbnQpLT5zdHlsZSgpOworICAgIENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVsZW1lbnQpLnN0
eWxlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3Jh
cCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFs
c2UsIElHTk9SRV9FWENFUFRJT04pOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSwgSUdO
T1JFX0VYQ0VQVElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDA3ZjFjNTAxMjM4ZDliNzAyZTY0ZmIwNDA0NTVkZTYw
MzA1NzU3MGMuLjcyZjdjNzA2YTc5NTU4YzQ1MjczNmE2MDY1YjEwOWIyZDZkZTNlYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC00ODAsMTAgKzQ4MCwxMCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogICAgICAgICAv
LyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+IFN0eWxlIHJ1bGVzIHRoYXQgbWF0Y2gg
cGFzdGVkIGNvbnRlbnQgY2FuIGNoYW5nZSBpdCdzIGFwcGVhcmFuY2UKIAogICAgICAgICBuZXh0
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLmdldCgpKTsKLSAgICAgICAgaWYgKCFub2RlLT5p
c1N0eWxlZEVsZW1lbnQoKSkKKyAgICAgICAgaWYgKCFpczxTdHlsZWRFbGVtZW50Pigqbm9kZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50
ID0gdG9TdHlsZWRFbGVtZW50KG5vZGUuZ2V0KCkpOworICAgICAgICBTdHlsZWRFbGVtZW50KiBl
bGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAKICAgICAgICAg
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxl
KCk7CiAgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUpOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNw
YW5JbmxpbmUoSW5zZXJ0CiAgICAgICAgICAgICAgICAgaWYgKG5ld0lubGluZVN0eWxlLT5jb25m
bGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudCgmaHRtbEVsZW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIGUuZy4gPGIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7Ij4gaXMg
Y29udmVydGVkIHRvIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUgPSByZXBsYWNlRWxlbWVudFdpdGhTcGFuUHJlc2VydmluZ0NoaWxk
cmVuQW5kQXR0cmlidXRlcygmaHRtbEVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gdG9TdHlsZWRFbGVtZW50KG5vZGUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGluc2VydGVkTm9kZXMuZGlkUmVwbGFjZU5vZGUoJmh0bWxFbGVtZW50LCBub2Rl
LmdldCgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5leHRy
YWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKCZodG1sRWxlbWVudCwgRWRp
dGluZ1N0eWxlOjpQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sIDAsIGF0dHJpYnV0ZXMsCiAgICAg
ICAgICAgICAgICAgICAgIEVkaXRpbmdTdHlsZTo6RG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRl
eCA4MmI1OWNmNTEwYjM5YTk2NDVhZGNmYWU4Y2QwMmJlY2ZlM2I3MTM2Li5kNDhkYTBlNjQ5ZGU5
OTZlNzhjMDNiZDM3NThmZTZiNmZlODNmMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC03MDksOSArNzA5LDkgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxl
bWVudChFbGVtZW4KIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6
aW5saW5lU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlkKQogewotICAgIGlmIChwcm9wZXJ0eUlkID09IENTU1Byb3BlcnR5SW52
YWxpZCB8fCAhZWxlbWVudC5pc1N0eWxlZEVsZW1lbnQoKSkKKyAgICBpZiAocHJvcGVydHlJZCA9
PSBDU1NQcm9wZXJ0eUludmFsaWQgfHwgIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIHByb3BlcnRp
ZXMgPSB0b1N0eWxlZEVsZW1lbnQoZWxlbWVudCkuaW5saW5lU3R5bGUoKTsKKyAgICBjb25zdCBT
dHlsZVByb3BlcnRpZXMqIHByb3BlcnRpZXMgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihlbGVt
ZW50KS5pbmxpbmVTdHlsZSgpOwogICAgIGlmICghcHJvcGVydGllcykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJv
cGVydHlJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMDk3ZTMyYmY3YTkxY2Jl
MjEzMTRjOTgxMjY2Nzk5OWJmYTkzZmY4YS4uOTRhNzk3YjU3MjdkMTZhMWNlMzE2OWY0YWMxYWQ0
OGE5NmNiOTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMzIyLDggKzMyMiw4
IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQoU3RyaW5nQnVp
bGRlciYgb3V0LCBjb25zdCBFbGVtZW50JiBlCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogCi0gICAgICAgIGlmIChl
bGVtZW50LmlzU3R5bGVkRWxlbWVudCgpICYmIHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS5pbmxp
bmVTdHlsZSgpKQotICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPm92ZXJyaWRlV2l0aFN0eWxl
KHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS5pbmxpbmVTdHlsZSgpKTsKKyAgICAgICAgaWYgKGlz
PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1l
bnQpLmlubGluZVN0eWxlKCkpCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+b3ZlcnJpZGVX
aXRoU3R5bGUoZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkuaW5saW5lU3R5bGUoKSk7
CiAKICAgICAgICAgaWYgKHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZEFubm90YXRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAyYzczZGI5ZmQ0YmVjZGE0NDRkZTlmM2I4MDM3ODc2
YWEyOGE3MzdiLi42OTFmYjA0Y2ZkZmE0NGFhNTVkN2FlNWExYTA3MDk2M2VhM2NhNWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTEw
ODYsMTEgKzEwODYsMTEgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3AKIAogUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAo
IWVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQorICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4o
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IFVnbGlu
ZXNzIGJlbG93LgotICAgIFN0eWxlUHJvcGVydGllcyogYXR0cmlidXRlU3R5bGUgPSBjb25zdF9j
YXN0PFN0eWxlUHJvcGVydGllcyo+KHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS0+cHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKSk7CisgICAgU3R5bGVQcm9wZXJ0aWVzKiBhdHRyaWJ1dGVTdHls
ZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzKj4oZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4o
ZWxlbWVudCktPnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOwogICAgIGlmICghYXR0cmli
dXRlU3R5bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggYzQxYjA0YzQ2YTM0NTFlNWU4NThl
MjJlOTcyZDhjNGQyYTQ3YjQ1ZS4uZTI1N2YxYTZhNzMxZDYxMmM0MWFmZGE3MjE4MDgxZjlmNjYz
ZWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cApAQCAtNjg2LDkgKzY4Niw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQogICAgIGVsZW1lbnRJbmZvLT5z
ZXRTdHJpbmcoInRhZ05hbWUiLCBpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1l
bnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CiAgICAgZWxlbWVudEluZm8tPnNldFN0cmluZygiaWRW
YWx1ZSIsIGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkpOwogICAgIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiB1c2VkQ2xhc3NOYW1lczsKLSAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVt
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkgeworICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYm
IGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY2xh
c3NOYW1lczsKLSAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmlu
ZyA9IHRvU3R5bGVkRWxlbWVudChlbGVtZW50KS0+Y2xhc3NOYW1lcygpOworICAgICAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gZG93bmNhc3Q8U3R5bGVkRWxl
bWVudD4oKmVsZW1lbnQpLmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNv
dW50ID0gY2xhc3NOYW1lc1N0cmluZy5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgewogICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3RyaW5nW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCBhYzQwNTg5Nzk4N2Q2MGY2YTA4ZDI4YjEyNTUxMTk4OGE0
MTYwZmM3Li5lMWFkZTQ0MDc2NzhhNjQ1YjhkZjgxYjlmOWMxNmI1NjBiODI3Nzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjczLDggKzI3Myw4IEBAIHN0YXRp
YyBIVE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBub2RlKQogICAgIEhUTUxJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CiAKICAgICAv
LyBJZiB0aGlzIGlzIGEgYnV0dG9uIGluc2lkZSBvZiB0aGUgYSBmaWxlIGlucHV0LCBtb3ZlIHVw
IHRvIHRoZSBmaWxlIGlucHV0LgotICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50
LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCku
aXNTaGFkb3dSb290KCkpCi0gICAgICAgIGlucHV0RWxlbWVudCA9IHRvU2hhZG93Um9vdChpbnB1
dEVsZW1lbnQtPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpLmhvc3RFbGVtZW50KCktPnRvSW5wdXRF
bGVtZW50KCk7CisgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4dEJ1
dHRvbigpICYmIGlzPFNoYWRvd1Jvb3Q+KGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCkucm9vdE5v
ZGUoKSkpCisgICAgICAgIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KGlucHV0
RWxlbWVudC0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuaG9zdEVsZW1lbnQoKS0+dG9JbnB1dEVs
ZW1lbnQoKTsKIAogICAgIHJldHVybiBpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc0Zp
bGVVcGxvYWQoKSA/IGlucHV0RWxlbWVudCA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggYmJkZTc0MzYzZTQxZjQ0MWQ1ZjkwNGYxZmNjOWUzNjUyMzgxNmNlZi4u
NWQ5MTBmMzI2YjFkYjYzZTczMjVlNjFhNGE5MDA4MzJjNzViNjBhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTc2MCw3ICsxNzYwLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2UKICAgICAgICAgLy8gSWYgYSBtb3VzZSBldmVudCBoYW5kbGVyIGNoYW5nZXMgdGhl
IGlucHV0IGVsZW1lbnQgdHlwZSB0byBvbmUgdGhhdCBoYXMgYSB3aWRnZXQgYXNzb2NpYXRlZCwK
ICAgICAgICAgLy8gd2UnZCBsaWtlIHRvIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50IHRvIHBhc3MgdGhlIGV2ZW50IHRvIHRoZSB3aWRnZXQgYW5kIHRodXMgdGhlCiAgICAgICAg
IC8vIGV2ZW50IHRhcmdldCBub2RlIGNhbid0IHN0aWxsIGJlIHRoZSBzaGFkb3cgbm9kZS4KLSAg
ICAgICAgaWYgKG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpczxI
VE1MSW5wdXRFbGVtZW50Pih0b1NoYWRvd1Jvb3QobW91c2VFdmVudC50YXJnZXROb2RlKCkpLT5o
b3N0RWxlbWVudCgpKSkKKyAgICAgICAgaWYgKGlzPFNoYWRvd1Jvb3Q+KG1vdXNlRXZlbnQudGFy
Z2V0Tm9kZSgpKSAmJiBpczxIVE1MSW5wdXRFbGVtZW50Pihkb3duY2FzdDxTaGFkb3dSb290Pigq
bW91c2VFdmVudC50YXJnZXROb2RlKCkpLmhvc3RFbGVtZW50KCkpKQogICAgICAgICAgICAgbW91
c2VFdmVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQoSGl0VGVzdFJl
cXVlc3QoKSwgZG9jdW1lbnRQb2ludCwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKIAogICAgICAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAppbmRleCBkYjQyYjg3YWY0MzMyYjQxZWQ3MjNiMjA0MmZlZWFmNjgwY2Nj
NTNhLi5iMTc2MzE2NzEwYWU4MWIwMDc0NWQxMDVjZjc0ZmVkNmZiOWRmMGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC04MiwxMSArODIsMTEgQEAgQ29udGFp
bmVyTm9kZSogRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnJvb3ROb2RlKCkgY29uc3QKIEVsZW1lbnQq
IEZvY3VzTmF2aWdhdGlvblNjb3BlOjpvd25lcigpIGNvbnN0CiB7CiAgICAgQ29udGFpbmVyTm9k
ZSogcm9vdCA9IHJvb3ROb2RlKCk7Ci0gICAgaWYgKHJvb3QtPmlzU2hhZG93Um9vdCgpKQotICAg
ICAgICByZXR1cm4gdG9TaGFkb3dSb290KHJvb3QpLT5ob3N0RWxlbWVudCgpOworICAgIGlmIChp
czxTaGFkb3dSb290Pihyb290KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNoYWRvd1Jvb3Q+
KCpyb290KS5ob3N0RWxlbWVudCgpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSByb290LT5kb2N1
bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmcmFtZS0+b3duZXJFbGVtZW50KCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEZvY3VzTmF2aWdhdGlvblNj
b3BlIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKE5vZGUqIG5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDA5NmVlMWUxMjQ0
MzdjOTY4MDIxMWUzMzg1MGU2ZTc1ZTllN2EyMjAuLmY2MTM0ZWRkZDUyNGY0MmMwMDBlMDNlMzRj
YjVkMjg2MDUyODk1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBA
IC0yMjUsMjUgKzIyNSwyNSBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShG
cmFtZSogZnJhbWUpCiAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChu
b2RlKTsKKyAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IHRvRWxlbWVudCgqbm9kZSk7CiAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gcHJvY2VzcyBpbi1saW5lIHN0eWxlIGFzIGl0IG1pZ2h0IGNvbnRh
aW4gc29tZSByZXNvdXJjZXMgKHR5cGljYWxseSBiYWNrZ3JvdW5kIGltYWdlcykuCi0gICAgICAg
IGlmIChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHJpZXZlUmVz
b3VyY2VzRm9yUHJvcGVydGllcyh0b1N0eWxlZEVsZW1lbnQoZWxlbWVudCktPmlubGluZVN0eWxl
KCksIGRvY3VtZW50KTsKKyAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQor
ICAgICAgICAgICAgcmV0cmlldmVSZXNvdXJjZXNGb3JQcm9wZXJ0aWVzKGRvd25jYXN0PFN0eWxl
ZEVsZW1lbnQ+KGVsZW1lbnQpLmlubGluZVN0eWxlKCksIGRvY3VtZW50KTsKIAogICAgICAgICBp
ZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgICAgIEhUTUxJbWFn
ZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVt
ZW50KTsKKyAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGltYWdlRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICAgICAgVVJMIHVybCA9IGRv
Y3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZUVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnNyY0F0dHIpKTsKICAgICAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGlt
YWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNl
cyhjYWNoZWRJbWFnZSwgaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCksIHVybCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXM8SFRNTExpbmtFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRN
TExpbmtFbGVtZW50JiBsaW5rRWxlbWVudCA9IGRvd25jYXN0PEhUTUxMaW5rRWxlbWVudD4oKmVs
ZW1lbnQpOworICAgICAgICAgICAgSFRNTExpbmtFbGVtZW50JiBsaW5rRWxlbWVudCA9IGRvd25j
YXN0PEhUTUxMaW5rRWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoQ1NTU3R5bGVT
aGVldCogc2hlZXQgPSBsaW5rRWxlbWVudC5zaGVldCgpKSB7CiAgICAgICAgICAgICAgICAgVVJM
IHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChsaW5rRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpocmVmQXR0cikpOwogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoc2hlZXQsIHVybCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VVUkxzLmNv
bnRhaW5zKHVybCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzPEhUTUxT
dHlsZUVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBpZiAoQ1NTU3R5bGVTaGVldCog
c2hlZXQgPSBkb3duY2FzdDxIVE1MU3R5bGVFbGVtZW50PigqZWxlbWVudCkuc2hlZXQoKSkKKyAg
ICAgICAgICAgIGlmIChDU1NTdHlsZVNoZWV0KiBzaGVldCA9IGRvd25jYXN0PEhUTUxTdHlsZUVs
ZW1lbnQ+KGVsZW1lbnQpLnNoZWV0KCkpCiAgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5
bGVTaGVldChzaGVldCwgVVJMKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTNlZmFmNTQ1YmZhYmM1N2NkYjMzMzEyZWJh
MjJiZDJmNDgzMTRkOC4uZDlkNTkzM2FmMmM2MzJjYjI5ZmQxZjA0ZGQ4NTg3MDBhYzFjZTVlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNTY5LDcgKzI1
NjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQsIGNvbnN0IExheW91dFNpemUmIG9sZE9mZgogICAgIAogICAgIExheW91dFNpemUgZGlm
ZmVyZW5jZSA9IChjdXJyZW50U2l6ZSArIG5ld09mZnNldCAtIGFkanVzdGVkT2xkT2Zmc2V0KS5l
eHBhbmRlZFRvKG1pbmltdW1TaXplKSAtIGN1cnJlbnRTaXplOwogCi0gICAgU3R5bGVkRWxlbWVu
dCogc3R5bGVkRWxlbWVudCA9IHRvU3R5bGVkRWxlbWVudChlbGVtZW50KTsKKyAgICBTdHlsZWRF
bGVtZW50KiBzdHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCk7
CiAgICAgYm9vbCBpc0JveFNpemluZ0JvcmRlciA9IHJlbmRlcmVyLT5zdHlsZSgpLmJveFNpemlu
ZygpID09IEJPUkRFUl9CT1g7CiAKICAgICBFUmVzaXplIHJlc2l6ZSA9IHJlbmRlcmVyLT5zdHls
ZSgpLnJlc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGIyMzEzZTZmNzMx
MTcxYzZlNmM0YTNhN2E2NzA1MTNhMDE3ZDM4MjcuLjUyM2E3NTZjMTQ2MDBjYzY0ZmFiOWFlYjBk
MTdkNWM0OGQ2YjJkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTk1Nyw3ICs5
NTcsNyBAQCBTdHJpbmcgU1ZHRWxlbWVudDo6dGl0bGUoKSBjb25zdAogCiAgICAgLy8gV2FsayB1
cCB0aGUgdHJlZSwgdG8gZmluZCBvdXQgd2hldGhlciB3ZSdyZSBpbnNpZGUgYSA8dXNlPiBzaGFk
b3cgdHJlZSwgdG8gZmluZCB0aGUgcmlnaHQgdGl0bGUuCiAgICAgaWYgKGlzSW5TaGFkb3dUcmVl
KCkpIHsKLSAgICAgICAgRWxlbWVudCogc2hhZG93SG9zdEVsZW1lbnQgPSB0b1NoYWRvd1Jvb3Qo
dHJlZVNjb3BlKCkucm9vdE5vZGUoKSkuaG9zdEVsZW1lbnQoKTsKKyAgICAgICAgRWxlbWVudCog
c2hhZG93SG9zdEVsZW1lbnQgPSBkb3duY2FzdDxTaGFkb3dSb290Pih0cmVlU2NvcGUoKS5yb290
Tm9kZSgpKS5ob3N0RWxlbWVudCgpOwogICAgICAgICAvLyBBdCB0aGlzIHRpbWUsIFNWRyBub2Rl
cyBhcmUgbm90IGFsbG93ZWQgaW4gbm9uLTx1c2U+IHNoYWRvdyB0cmVlcywgc28gYW55IHNoYWRv
dyByb290IHdlIGRvCiAgICAgICAgIC8vIGhhdmUgc2hvdWxkIGJlIGEgdXNlLiBUaGUgYXNzZXJ0
IGFuZCBmb2xsb3dpbmcgdGVzdCBpcyBoZXJlIHRvIGNhdGNoIGZ1dHVyZSBzaGFkb3cgRE9NIGNo
YW5nZXMKICAgICAgICAgLy8gdGhhdCBkbyBlbmFibGUgU1ZHIGluIGEgc2hhZG93IHRyZWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWEzYTcxNDdmZjI1YzIxYzU1NTA0
NGZmODg2ZTk3NjhlZTk2ZTMxNS4uODhhY2QxZjExZjY0ZTI5ZDc2MmNiMzQyYTE1NzA1MzgwZGEy
MjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTc0LDE5ICs1NzQs
MTkgQEAgTm9kZSogSW50ZXJuYWxzOjpzaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmICghaG9zdCkgewogICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdCgpOwogfQogCiBTdHJpbmcgSW50ZXJuYWxz
OjpzaGFkb3dSb290VHlwZShjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKLSAgICBpZiAoIXJvb3QgfHwgIXJvb3QtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgaWYg
KCFyb290IHx8ICFpczxTaGFkb3dSb290Pihyb290KSkgewogICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHN3aXRj
aCAodG9TaGFkb3dSb290KHJvb3QpLT50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PFNo
YWRvd1Jvb3Q+KCpyb290KS50eXBlKCkpIHsKICAgICBjYXNlIFNoYWRvd1Jvb3Q6OlVzZXJBZ2Vu
dFNoYWRvd1Jvb3Q6CiAgICAgICAgIHJldHVybiBTdHJpbmcoIlVzZXJBZ2VudFNoYWRvd1Jvb3Qi
KTsKICAgICBkZWZhdWx0OgpAQCAtNTk4LDcgKzU5OCw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnNo
YWRvd1Jvb3RUeXBlKGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
RWxlbWVudCogSW50ZXJuYWxzOjppbmNsdWRlckZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnNoYWRvd1BzZXVkb0lkKEVsZW1l
bnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>