<?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>109817</bug_id>
          
          <creation_ts>2013-02-14 05:14:00 -0800</creation_ts>
          <short_desc>Stop placing std::isfinite and std::signbit inside the global scope</short_desc>
          <delta_ts>2013-02-18 09:15:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>junov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>pnormand</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832990</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-14 05:14:00 -0800</bug_when>
    <thetext>Stop placing std::isfinite and std::signbit inside the global scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832994</commentid>
    <comment_count>1</comment_count>
      <attachid>188328</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-14 05:21:47 -0800</bug_when>
    <thetext>Created attachment 188328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833150</commentid>
    <comment_count>2</comment_count>
      <attachid>188328</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-14 09:33:40 -0800</bug_when>
    <thetext>Comment on attachment 188328
Patch

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

&gt; Source/WTF/ChangeLog:12
&gt; +        On Solaris and OpenBSD platforms or when using Visual C++ the two methods
&gt; +        are now defined (as incompatibility workarounds) inside the std namespace.

So this is a compile fix for Solaris and OpenBSD?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833153</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-14 09:34:03 -0800</bug_when>
    <thetext>When did Solaris/OpenBSD break? or have they always been broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833186</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-14 09:59:41 -0800</bug_when>
    <thetext>The basic approach on this in WebKit for years has been to work around these kinds of issues in the MathExtras.h header. Please put something in that header instead of changing every single call site for isfinite and signbit.

Unless you want to change our strategy, which probably requires some webkit-dev conversation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833207</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-14 10:21:47 -0800</bug_when>
    <thetext>Mu understanding is that we agreed to qualify names with std:: in this e-mail thread: &lt;https://lists.webkit.org/pipermail/webkit-dev/2012-May/020656.html&gt;. So this seems like the right thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834281</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-15 12:43:47 -0800</bug_when>
    <thetext>Is everyone now OK with that consensus and the proposed changes or would anyone like to repeat the discussion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835546</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-02-18 09:15:00 -0800</bug_when>
    <thetext>Committed r143232: &lt;http://trac.webkit.org/changeset/143232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188328</attachid>
            <date>2013-02-14 05:21:47 -0800</date>
            <delta_ts>2013-02-15 16:32:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109817-20130214141815.patch</filename>
            <type>text/plain</type>
            <size>85887</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OWQ1OWI0ZTNiYTgxN2IzYTg2ZDczMDZkNjY1MzIwMDU4NWM4ZjJjLi5kNjFkM2ZlYmEyYjg3ZjBi
ZjY0NjRlMWFmZWJlZGQ4NDNkOTczMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxMy0wMi0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgU3RvcCBwbGFjaW5nIHN0ZDo6aXNmaW5pdGUgYW5kIHN0ZDo6c2lnbmJp
dCBpbnNpZGUgdGhlIGdsb2JhbCBzY29wZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUHJlZml4IGNhbGxzIHRvIHRoZSBpc2Zpbml0ZSBhbmQgc2lnbmJp
dCBtZXRob2RzIHdpdGggc3RkOjogYXMgdGhlIHR3bworICAgICAgICBtZXRob2RzIGFyZSBubyBs
b25nZXIgYmVpbmcgaW1wb3J0ZWQgaW50byB0aGUgZ2xvYmFsIHNjb3BlLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjpzaG91bGRCbGluZERvdWJsZSk6CisgICAgICAgICogb2ZmbGluZWFzbS9jbG9vcC5yYjoKKyAg
ICAgICAgKiBydW50aW1lL0JpZ0ludGVnZXIuaDoKKyAgICAgICAgKEpTQzo6QmlnSW50ZWdlcjo6
QmlnSW50ZWdlcik6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3REYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MpOgorICAg
ICAgICAoSlNDOjpmaWxsU3RydWN0dXJlc1VzaW5nRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpk
YXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0
WWVhcik6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0lzRmluaXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6
YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01heCk6IEFsc28gaW5jbHVkZSBhbiBvcHBv
cnR1bmlzdGljIHN0eWxlIGZpeC4KKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01pbik6IERp
dHRvLgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6dG9TdHJpbmdXaXRoUmFkaXgpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0V4
cG9uZW50aWFsKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9GaXhlZCk6CisgICAg
ICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6bnVt
YmVyUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvVWludDE2V2l0aEZyYWN0
aW9uLmg6CisgICAgICAgIChKU0M6OlVpbnQxNldpdGhGcmFjdGlvbjo6VWludDE2V2l0aEZyYWN0
aW9uKToKKwogMjAxMy0wMi0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEJldHRlciBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmMjQxMDcxZTc4NjJiNzhmMTUx
MDRjM2JjZWJlYWYxNGQ0ODVhMzEuLmY5NzIwZGFjNGZkMWZjNjIyNDU5MWRmYjU1NWE3MjA5ZTU4
YTZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTMtMDItMTQgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN0b3AgcGxhY2luZyBzdGQ6OmlzZmluaXRl
IGFuZCBzdGQ6OnNpZ25iaXQgaW5zaWRlIHRoZSBnbG9iYWwgc2NvcGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTgxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZWZpeCBjYWxscyB0byB0aGUgaXNm
aW5pdGUgYW5kIHNpZ25iaXQgbWV0aG9kcyB3aXRoIHN0ZDo6IGFzIHRoZSB0d28KKyAgICAgICAg
bWV0aG9kcyBhcmUgbm8gbG9uZ2VyIGJlaW5nIGltcG9ydGVkIGludG8gdGhlIGdsb2JhbCBzY29w
ZS4KKworICAgICAgICBPbiBTb2xhcmlzIGFuZCBPcGVuQlNEIHBsYXRmb3JtcyBvciB3aGVuIHVz
aW5nIFZpc3VhbCBDKysgdGhlIHR3byBtZXRob2RzCisgICAgICAgIGFyZSBub3cgZGVmaW5lZCAo
YXMgaW5jb21wYXRpYmlsaXR5IHdvcmthcm91bmRzKSBpbnNpZGUgdGhlIHN0ZCBuYW1lc3BhY2Uu
CisKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjp0aW1lQ2xpcCk6
CisgICAgICAgICogd3RmL0RlY2ltYWxOdW1iZXIuaDoKKyAgICAgICAgKFdURjo6RGVjaW1hbE51
bWJlcjo6RGVjaW1hbE51bWJlcik6CisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAg
ICAgKHN0ZCk6CisgICAgICAgIChzdGQ6OmlzZmluaXRlKToKKyAgICAgICAgKHN0ZDo6c2lnbmJp
dCk6CisgICAgICAgIChscmludCk6CisgICAgICAgICh3dGZfcG93KToKKyAgICAgICAgKGRlY29t
cG9zZURvdWJsZSk6CisgICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6
Ok1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKToKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6CisgICAgICAgIChXVEY6
OmR0b2EpOgorCiAyMDEzLTAyLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBUaGUgJ2dsb2JhbCBpc2luZi9pc25hbicgY29tcGlsZXIgcXVpcmsgcmVx
dWlyZWQgd2hlbiB1c2luZyBjbGFuZyB3aXRoIGxpYnN0ZGMrKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3Njhm
ZmM1NDU0MmEzMzg2NjlmZjkyYjdmMTkyOWE3MzA0MDcyZDguLmM1MmQwZDdiNzdmMTAzMWYxOTcz
NDFiMDkxOWY4ZTYyNDA0MTc5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMTMt
MDItMTQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN0
b3AgcGxhY2luZyBzdGQ6OmlzZmluaXRlIGFuZCBzdGQ6OnNpZ25iaXQgaW5zaWRlIHRoZSBnbG9i
YWwgc2NvcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTgxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFByZWZpeCBjYWxscyB0byB0aGUgaXNmaW5pdGUgYW5kIHNpZ25iaXQgbWV0aG9kcyB3aXRoIHN0
ZDo6IGFzIHRoZSB0d28KKyAgICAgICAgbWV0aG9kcyBhcmUgbm8gbG9uZ2VyIGJlaW5nIGltcG9y
dGVkIGludG8gdGhlIGdsb2JhbCBzY29wZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhl
cmUncyBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRGF0
ZU9yTnVsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpmaW5pdGVJbnQzMlZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnY4RGF0ZU9yTnVsbCk6CisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpwYXJzZVRvTnVtYmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVBc051bWJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZXRlckVsZW1lbnQ6OnNldE1pbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVt
ZW50OjpzZXRNYXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0TG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OnNldEhpZ2gpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1ldGVyRWxlbWVudDo6c2V0T3B0aW11bSk6CisgICAgICAgICogaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6
OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6Om1heCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpzZXRNYXgpOgorICAgICAgICAqIGh0bWwv
TW9udGhJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnZh
bHVlQXNEYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpkZWZhdWx0VmFs
dWVGb3JTdGVwVXApOgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJbnB1dFR5cGU6OnBhcnNlVG9O
dW1iZXIpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok51bWJlcklucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKToKKyAgICAgICAgKFdlYkNv
cmU6Ok51bWJlcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpO
dW1iZXJJbnB1dFR5cGU6Omhhc0JhZElucHV0KToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hG
b3IpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Bh
dGhNZXRob2RzOjptb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0aE1ldGhvZHM6
OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoTWV0aG9kczo6cXVhZHJhdGlj
Q3VydmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoTWV0aG9kczo6YmV6aWVyQ3Vy
dmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoTWV0aG9kczo6YXJjVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0aE1ldGhvZHM6OmFyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNQYXRoTWV0aG9kczo6cmVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0TGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd09mZnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dPZmZzZXRZKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cik6CisgICAgICAg
IChXZWJDb3JlOjpsaW5lRGFzaFNlcXVlbmNlSXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsaWRhdGVSZWN0Rm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUmFkaWFsR3JhZGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJbWFn
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpw
dXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHM6OnJlc2V0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpyZXNl
dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6
c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6
OnJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckJhc2ljVmFsdWU6OndyaXRlSlNPTik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpjdXJyZW50QWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
OjpmcmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGp1c3RXaW5kb3dSZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9u
ZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvck1vbnRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRzOjpzZXRNaWxs
aXNlY29uZHNTaW5jZU1pZG5pZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRz
OjpzZXRNb250aHNTaW5jZUVwb2NoKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVDb21wb25lbnRz
OjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayk6CisgICAgICAgICogcGxhdGZvcm0v
RGVjaW1hbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjpmcm9tRG91YmxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
RmlsZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRB
cmMpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6Y29udGFpbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRB
cmMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI6OnRpbWVUb1N0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnZnL1BhdGhPcGVuVkcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6YWRkQXJjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFVdGlscy5o
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUZsb2F0VG9Ta1NjYWxhcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6bWF4VGltZVNlZWthYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3Ry
aW5nc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlw
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIubW06CisgICAgICAgICh0aW1lVG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VEYXRlVmFsdWVJbkhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vcXQvTG9jYWxpemVk
U3RyaW5nc1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZE1lZGlhVGltZURlc2Ny
aXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJlc29sdmVGbGV4aWJsZUxlbmd0aHMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0Q2hyb21pdW1NZWRpYUNvbnRyb2xzVGltZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpmb3JtYXRNZWRpYUNvbnRyb2xzVGltZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRG
b250U2l6ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJjVG9DdWJpYyk6CisgICAgICAgICogeG1s
L1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5Sb3VuZDo6
cm91bmQpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhQYXRoOjpWYWx1ZTo6dG9TdHJpbmcpOgorCiAyMDEzLTAyLTEzICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOYXRpdmUg
TWVtb3J5IEluc3RydW1lbnRhdGlvbjogUmVwb3J0IGNoaWxkIG5vZGVzIGFzIGRpcmVjdCBtZW1i
ZXJzIG9mIGEgY29udGFpbmVyIG5vZGUgdG8gbWFrZSB0aGVtIGxvb2sgbGlrZSBhIHRyZWUgaW4g
dGhlIHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDNiYjRlNDA3NjBmODc5NzA0MmI0ODRk
M2NkNDRjNDdjNGIzZmEzYzYuLjI1YjM4NGE5MjQwMzdjZWIyMjAxZTVkOGRhMTcwOTJhODY0NjUx
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMi0xNCAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3RvcCBwbGFjaW5nIHN0
ZDo6aXNmaW5pdGUgYW5kIHN0ZDo6c2lnbmJpdCBpbnNpZGUgdGhlIGdsb2JhbCBzY29wZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlZml4IGNhbGxz
IHRvIHRoZSBpc2Zpbml0ZSBhbmQgc2lnbmJpdCBtZXRob2RzIHdpdGggc3RkOjogYXMgdGhlIHR3
bworICAgICAgICBtZXRob2RzIGFyZSBubyBsb25nZXIgYmVpbmcgaW1wb3J0ZWQgaW50byB0aGUg
Z2xvYmFsIHNjb3BlLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6
CisgICAgICAgICh0aW1lVG9TdHJpbmcpOgorCiAyMDEzLTAyLTExICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERpc2FibGUgZGVsZXRlIGJ1dHRvbiBjb250cm9s
bGVyIG9uIG5vbi1NYWMgcG9ydHMgYW5kIGRlbGV0ZSBFZGl0b3JDbGllbnQ6OnNob3VsZFNob3dE
ZWxldGVJbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCA3YzVlNWU4MDc5MGNjN2EwMDY5NTNkNDdhZDVlZWRkODVmMTA2
YWQxLi42MGE5M2RiYjA2ZDJjNjE0YTQ4MjQ1NTNmZWIzZjZhN2JjOTVkMTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC04NDcs
NyArODQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQmxpbmREb3VibGUoZG91YmxlIHZh
bHVlKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3QgdHJ1c3QgTmFOIG9yICsvLUluZmluaXR5Ci0g
ICAgICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQorICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUo
dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHNob3VsZENvbnNpZGVyQmxpbmRpbmcoKTsKIAog
ICAgICAgICAvLyBUcnkgdG8gZm9yY2Ugbm9ybWFsaXNhdGlvbiwgYW5kIGNoZWNrIHRoYXQgdGhl
cmUncyBubyBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2Nsb29wLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIK
aW5kZXggOGI0ZWU5Y2ViNjFkNDcxNWUyZTE1ZTUyMDE3ZDc2NTU1NWUwYzA1OC4uMTRjYWNiOWRl
ZmFmNjUzODk0NDM3NWU1MGE4MTE3NmJjMWJkMWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vY2xvb3AucmIKQEAgLTcwOSw3ICs3MDksNyBAQCBjbGFzcyBJbnN0cnVjdGlv
bgogICAgICAgICAgICAgJGFzbS5wdXRjICJ7IgogICAgICAgICAgICAgJGFzbS5wdXRjICIgICAg
ZG91YmxlIGQgPSAje29wZXJhbmRzWzBdLmNsVmFsdWUoOmRvdWJsZSl9OyIKICAgICAgICAgICAg
ICRhc20ucHV0YyAiICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IGludDMyX3QoZCk7IgotICAg
ICAgICAgICAgJGFzbS5wdXRjICIgICAgaWYgKGFzSW50MzIgIT0gZCB8fCAoIWFzSW50MzIgJiYg
c2lnbmJpdChkKSkpIC8vIHRydWUgZm9yIC0wLjAiCisgICAgICAgICAgICAkYXNtLnB1dGMgIiAg
ICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQzMiAmJiBzdGQ6OnNpZ25iaXQoZCkpKSAvLyB0
cnVlIGZvciAtMC4wIgogICAgICAgICAgICAgJGFzbS5wdXRjICIgICAgICAgIGdvdG8gICN7b3Bl
cmFuZHNbMl0uY0xhYmVsfTsiCiAgICAgICAgICAgICAkYXNtLnB1dGMgIiAgICAje29wZXJhbmRz
WzFdLmNsVmFsdWV9ID0gYXNJbnQzMjsiICAgICAgICAgICAgCiAgICAgICAgICAgICAkYXNtLnB1
dGMgIiAgICAje29wZXJhbmRzWzFdLmNsRHVtcH0uY2xlYXJIaWdoV29yZCgpOyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludGVnZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludGVnZXIuaAppbmRleCA4MzM4MjlkZjZjNjYzNDlh
MzdkOGMyOWZmMTk1YTExNTU1MWE0MTYxLi4wYTBjNDc3YzJkZTVkNDdjMzY5MWI0YzkyYmU5ZDk4
ZjdmZGFjNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJ
bnRlZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50ZWdlci5o
CkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEJpZ0ludGVnZXIgewogcHVibGljOgogICAgIEJpZ0lu
dGVnZXIoZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc2Zpbml0ZShudW1i
ZXIpICYmICFzaWduYml0KG51bWJlcikpOworICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShu
dW1iZXIpICYmICFzdGQ6OnNpZ25iaXQobnVtYmVyKSk7CiAgICAgICAgIEFTU0VSVChudW1iZXIg
PT0gZmxvb3IobnVtYmVyKSk7CiAKICAgICAgICAgYm9vbCBzaWduOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTg5ODYzNDc5
M2RmMzllNmEwODBkOTIyMGRkMzFkNTk4NDA2ZWVjNi4uNTZjNmExNGFhYWY5OTI0MjMwYjk3Y2Zk
M2NjNDhmNDBhYTA4MmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xMjUsMTMgKzEyNSwxMyBAQCBKU09iamVjdCogY29u
c3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IEFyZwogICAgICAgICAgICAgYXJncy5hdCg1KS50b051bWJlcihleGVjKSwgCiAgICAg
ICAgICAgICBhcmdzLmF0KDYpLnRvTnVtYmVyKGV4ZWMpCiAgICAgICAgIH07Ci0gICAgICAgIGlm
ICghaXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzBdKQotICAgICAgICAgICAgfHwgIWlzZmluaXRl
KGRvdWJsZUFyZ3VtZW50c1sxXSkKLSAgICAgICAgICAgIHx8IChudW1BcmdzID49IDMgJiYgIWlz
ZmluaXRlKGRvdWJsZUFyZ3VtZW50c1syXSkpCi0gICAgICAgICAgICB8fCAobnVtQXJncyA+PSA0
ICYmICFpc2Zpbml0ZShkb3VibGVBcmd1bWVudHNbM10pKQotICAgICAgICAgICAgfHwgKG51bUFy
Z3MgPj0gNSAmJiAhaXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzRdKSkKLSAgICAgICAgICAgIHx8
IChudW1BcmdzID49IDYgJiYgIWlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1s1XSkpCi0gICAgICAg
ICAgICB8fCAobnVtQXJncyA+PSA3ICYmICFpc2Zpbml0ZShkb3VibGVBcmd1bWVudHNbNl0pKSkK
KyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1swXSkKKyAgICAgICAg
ICAgIHx8ICFzdGQ6OmlzZmluaXRlKGRvdWJsZUFyZ3VtZW50c1sxXSkKKyAgICAgICAgICAgIHx8
IChudW1BcmdzID49IDMgJiYgIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzJdKSkKKyAg
ICAgICAgICAgIHx8IChudW1BcmdzID49IDQgJiYgIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1l
bnRzWzNdKSkKKyAgICAgICAgICAgIHx8IChudW1BcmdzID49IDUgJiYgIXN0ZDo6aXNmaW5pdGUo
ZG91YmxlQXJndW1lbnRzWzRdKSkKKyAgICAgICAgICAgIHx8IChudW1BcmdzID49IDYgJiYgIXN0
ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzVdKSkKKyAgICAgICAgICAgIHx8IChudW1Bcmdz
ID49IDcgJiYgIXN0ZDo6aXNmaW5pdGUoZG91YmxlQXJndW1lbnRzWzZdKSkpCiAgICAgICAgICAg
ICB2YWx1ZSA9IFFOYU47CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgR3JlZ29yaWFuRGF0
ZVRpbWUgdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlw
ZS5jcHAKaW5kZXggZDRmMjAxZGUyMzg2Yzk3NzRmNDEzNjY2MzU3NDM3MTMzNjZmMzdmNC4uNWEw
YjgxMGRkMmYzNTAyMGMzZTZjOWE3ZGYwNmVmMGM3MjliMTUxMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTM3NSw3ICszNzUsNyBA
QCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVj
LCBpbnQgbWF4QXJncywgZG91YmxlKiBtcwogICAgIGlmIChtYXhBcmdzID49IDQgJiYgaWR4IDwg
bnVtQXJncykgewogICAgICAgICB0LT5zZXRIb3VyKDApOwogICAgICAgICBkb3VibGUgaG91cnMg
PSBleGVjLT5hcmd1bWVudChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7Ci0gICAg
ICAgIG9rID0gaXNmaW5pdGUoaG91cnMpOworICAgICAgICBvayA9IHN0ZDo6aXNmaW5pdGUoaG91
cnMpOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gaG91cnMgKiBtc1BlckhvdXI7CiAgICAgfQog
CkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGljIGJvb2wgZmlsbFN0cnVjdHVyZXNVc2luZ1RpbWVB
cmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG1heEFyZ3MsIGRvdWJsZSogbXMKICAgICBpZiAobWF4
QXJncyA+PSAzICYmIGlkeCA8IG51bUFyZ3MgJiYgb2spIHsKICAgICAgICAgdC0+c2V0TWludXRl
KDApOwogICAgICAgICBkb3VibGUgbWludXRlcyA9IGV4ZWMtPmFyZ3VtZW50KGlkeCsrKS50b0lu
dGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKLSAgICAgICAgb2sgPSBpc2Zpbml0ZShtaW51dGVzKTsK
KyAgICAgICAgb2sgPSBzdGQ6OmlzZmluaXRlKG1pbnV0ZXMpOwogICAgICAgICBtaWxsaXNlY29u
ZHMgKz0gbWludXRlcyAqIG1zUGVyTWludXRlOwogICAgIH0KICAgICAKQEAgLTM5MSw3ICszOTEs
NyBAQCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbWF4QXJncywgZG91YmxlKiBtcwogICAgIGlmIChtYXhBcmdzID49IDIgJiYgaWR4
IDwgbnVtQXJncyAmJiBvaykgewogICAgICAgICB0LT5zZXRTZWNvbmQoMCk7CiAgICAgICAgIGRv
dWJsZSBzZWNvbmRzID0gZXhlYy0+YXJndW1lbnQoaWR4KyspLnRvSW50ZWdlclByZXNlcnZlTmFO
KGV4ZWMpOwotICAgICAgICBvayA9IGlzZmluaXRlKHNlY29uZHMpOworICAgICAgICBvayA9IHN0
ZDo6aXNmaW5pdGUoc2Vjb25kcyk7CiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBzZWNvbmRzICog
bXNQZXJTZWNvbmQ7CiAgICAgfQogICAgIApAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBib29s
IGZpbGxTdHJ1Y3R1cmVzVXNpbmdUaW1lQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBtYXhBcmdz
LCBkb3VibGUqIG1zCiAgICAgLy8gbWlsbGlzZWNvbmRzCiAgICAgaWYgKGlkeCA8IG51bUFyZ3Mp
IHsKICAgICAgICAgZG91YmxlIG1pbGxpcyA9IGV4ZWMtPmFyZ3VtZW50KGlkeCkudG9JbnRlZ2Vy
UHJlc2VydmVOYU4oZXhlYyk7Ci0gICAgICAgIG9rID0gaXNmaW5pdGUobWlsbGlzKTsKKyAgICAg
ICAgb2sgPSBzdGQ6OmlzZmluaXRlKG1pbGxpcyk7CiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBt
aWxsaXM7CiAgICAgfSBlbHNlCiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSAqbXM7CkBAIC00Mjcs
MTkgKzQyNywxOSBAQCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0dXJlc1VzaW5nRGF0ZUFyZ3MoRXhl
Y1N0YXRlICpleGVjLCBpbnQgbWF4QXJncywgZG91YmxlICptcwogICAgIC8vIHllYXJzCiAgICAg
aWYgKG1heEFyZ3MgPj0gMyAmJiBpZHggPCBudW1BcmdzKSB7CiAgICAgICAgIGRvdWJsZSB5ZWFy
cyA9IGV4ZWMtPmFyZ3VtZW50KGlkeCsrKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKLSAg
ICAgICAgb2sgPSBpc2Zpbml0ZSh5ZWFycyk7CisgICAgICAgIG9rID0gc3RkOjppc2Zpbml0ZSh5
ZWFycyk7CiAgICAgICAgIHQtPnNldFllYXIodG9JbnQzMih5ZWFycykpOwogICAgIH0KICAgICAv
LyBtb250aHMKICAgICBpZiAobWF4QXJncyA+PSAyICYmIGlkeCA8IG51bUFyZ3MgJiYgb2spIHsK
ICAgICAgICAgZG91YmxlIG1vbnRocyA9IGV4ZWMtPmFyZ3VtZW50KGlkeCsrKS50b0ludGVnZXJQ
cmVzZXJ2ZU5hTihleGVjKTsKLSAgICAgICAgb2sgPSBpc2Zpbml0ZShtb250aHMpOworICAgICAg
ICBvayA9IHN0ZDo6aXNmaW5pdGUobW9udGhzKTsKICAgICAgICAgdC0+c2V0TW9udGgodG9JbnQz
Mihtb250aHMpKTsKICAgICB9CiAgICAgLy8gZGF5cwogICAgIGlmIChpZHggPCBudW1BcmdzICYm
IG9rKSB7CiAgICAgICAgIGRvdWJsZSBkYXlzID0gZXhlYy0+YXJndW1lbnQoaWR4KyspLnRvSW50
ZWdlclByZXNlcnZlTmFOKGV4ZWMpOwotICAgICAgICBvayA9IGlzZmluaXRlKGRheXMpOworICAg
ICAgICBvayA9IHN0ZDo6aXNmaW5pdGUoZGF5cyk7CiAgICAgICAgIHQtPnNldE1vbnRoRGF5KDAp
OwogICAgICAgICAqbXMgKz0gZGF5cyAqIG1zUGVyRGF5OwogICAgIH0KQEAgLTU0Niw3ICs1NDYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OwogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0
aGlzVmFsdWUpOyAKLSAgICBpZiAoIWlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJl
cigpKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVy
KCkpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwogCiAgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRh
dGVUaW1lVVRDKGV4ZWMpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQog
CiAgICAgZG91YmxlIHllYXIgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5h
TihleGVjKTsKLSAgICBpZiAoIWlzZmluaXRlKHllYXIpKSB7CisgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKHllYXIpKSB7CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKICAgICAgICAg
dGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCByZXN1bHQp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCA5NjgyNGVk
NGQyNTI5MTZkMjg2OWMyODBkNmUzZGYxNTU5MDJkZTcyLi4wNjEyMTZjYjA4ZjJlMzQ0ODZiMTRh
MzllMTc2MjZhYmQwMjFlZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVl
KGRvdWJsZSBkKQogewogICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGQpOwotICAgIGlmIChhc0ludDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNpZ25iaXQo
ZCkpKSB7IC8vIHRydWUgZm9yIC0wLjAKKyAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQz
MiAmJiBzdGQ6OnNpZ25iaXQoZCkpKSB7IC8vIHRydWUgZm9yIC0wLjAKICAgICAgICAgKnRoaXMg
PSBKU1ZhbHVlKEVuY29kZUFzRG91YmxlLCBkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAppbmRleCA4MmUyYjRjZWM1YjU1NDIzZDUyMWMxMTcwMmE1NmFkMzE2NGU2
ZDRiLi43ODUwM2Q2MWI3YzhiMjM3ZWJkOTEyMjIxYWQ1M2U0ZjY0MzYzMjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jSXNOYU4oRXhlY1N0YXRlKiBleGVjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jSXNGaW5pdGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGRvdWJs
ZSBuID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oaXNmaW5pdGUobikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihzdGQ6OmlzZmluaXRlKG4pKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RlY29kZVVSSShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDlmZDE5ZjZj
ZjdhZjczMzEwMzEwODdjZGViZDY0ZDRlMzQzMWQ0Y2IuLjQxZjBlNTFhMWQzM2I5MWI0NjQzOGEx
MjJiMDllZjBmMDQwZTRkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCkBAIC0zODcsNyArMzg3LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJl
c3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJgog
CiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZh
bHVlLmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmICghaXNmaW5pdGUobnVtYmVyKSkKKyAgICAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIm51bGwiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IGFlYzdiOTRjYTU3NDVkMDI2
Y2EwYzg4YzFjMzhhMjQxMjZjODEyZDYuLmJmMGVkZmY3MmEyNTk3MjU2MmMwNDQzNjQzZTRmY2Fh
NGU4ZTJjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
Y3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJlc3VsdCA9IFFOYU47
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAodmFsID4gcmVzdWx0
IHx8ICh2YWwgPT0gMCAmJiByZXN1bHQgPT0gMCAmJiAhc2lnbmJpdCh2YWwpKSkKKyAgICAgICAg
aWYgKHZhbCA+IHJlc3VsdCB8fCAoIXZhbCAmJiAhcmVzdWx0ICYmICFzdGQ6OnNpZ25iaXQodmFs
KSkpCiAgICAgICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocmVzdWx0KSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWluKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIHJlc3VsdCA9IFFOYU47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBpZiAodmFsIDwgcmVzdWx0IHx8ICh2YWwgPT0gMCAmJiByZXN1bHQgPT0gMCAmJiBz
aWduYml0KHZhbCkpKQorICAgICAgICBpZiAodmFsIDwgcmVzdWx0IHx8ICghdmFsICYmICFyZXN1
bHQgJiYgc3RkOjpzaWduYml0KHZhbCkpKQogICAgICAgICAgICAgcmVzdWx0ID0gdmFsOwogICAg
IH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXgg
MjNjOWRiZmRkNWU5NWJmN2NlOTdmNjYzN2ZhM2JhN2FkMDMzY2E3Ni4uMWYwMjI3MGYwYTFiNDBj
NDAyMGZmNjE3MGYxMGIyYzUwM2QzZjI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgcmFkaXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXoiOwogCiBzdGF0aWMgY2hhciogdG9TdHJpbmdXaXRoUmFkaXgoUmFkaXhCdWZmZXIm
IGJ1ZmZlciwgZG91YmxlIG51bWJlciwgdW5zaWduZWQgcmFkaXgpCiB7Ci0gICAgQVNTRVJUKGlz
ZmluaXRlKG51bWJlcikpOworICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKG51bWJlcikpOwogICAg
IEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKIAogICAgIC8vIFBvc2l0aW9uIHRo
ZSBkZWNpbWFsIHBvaW50IGF0IHRoZSBjZW50ZXIgb2YgdGhlIHN0cmluZywgc2V0CkBAIC0xNjEs
NyArMTYxLDcgQEAgc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBi
dWZmZXIsIGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIHJhZGkKIAogICAgIC8vIEV4dHJhY3QgdGhl
IHNpZ24uCiAgICAgYm9vbCBpc05lZ2F0aXZlID0gbnVtYmVyIDwgMDsKLSAgICBpZiAoc2lnbmJp
dChudW1iZXIpKQorICAgIGlmIChzdGQ6OnNpZ25iaXQobnVtYmVyKSkKICAgICAgICAgbnVtYmVy
ID0gLW51bWJlcjsKICAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOwogCkBA
IC0xOTgsMTIgKzE5OCwxMiBAQCBzdGF0aWMgY2hhciogdG9TdHJpbmdXaXRoUmFkaXgoUmFkaXhC
dWZmZXImIGJ1ZmZlciwgZG91YmxlIG51bWJlciwgdW5zaWduZWQgcmFkaQogICAgICAgICAvLyBD
YWxjdWxhdGUgdGhlIGRlbHRhIGZyb20gdGhlIGN1cnJlbnQgbnVtYmVyIHRvIHRoZSBuZXh0ICYg
cHJldmlvdXMgcG9zc2libGUgSUVFRSBudW1iZXJzLgogICAgICAgICBkb3VibGUgbmV4dE51bWJl
ciA9IG5leHRhZnRlcihudW1iZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSk7CiAgICAgICAgIGRvdWJsZSBsYXN0TnVtYmVyID0gbmV4dGFmdGVyKG51bWJlciwgLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7Ci0gICAgICAgIEFTU0VSVChp
c2Zpbml0ZShuZXh0TnVtYmVyKSAmJiAhc2lnbmJpdChuZXh0TnVtYmVyKSk7Ci0gICAgICAgIEFT
U0VSVChpc2Zpbml0ZShsYXN0TnVtYmVyKSAmJiAhc2lnbmJpdChsYXN0TnVtYmVyKSk7CisgICAg
ICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKG5leHROdW1iZXIpICYmICFzdGQ6OnNpZ25iaXQobmV4
dE51bWJlcikpOworICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShsYXN0TnVtYmVyKSAmJiAh
c3RkOjpzaWduYml0KGxhc3ROdW1iZXIpKTsKICAgICAgICAgZG91YmxlIGRlbHRhTmV4dERvdWJs
ZSA9IG5leHROdW1iZXIgLSBudW1iZXI7CiAgICAgICAgIGRvdWJsZSBkZWx0YUxhc3REb3VibGUg
PSBudW1iZXIgLSBsYXN0TnVtYmVyOwotICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZGVsdGFOZXh0
RG91YmxlKSAmJiAhc2lnbmJpdChkZWx0YU5leHREb3VibGUpKTsKLSAgICAgICAgQVNTRVJUKGlz
ZmluaXRlKGRlbHRhTGFzdERvdWJsZSkgJiYgIXNpZ25iaXQoZGVsdGFMYXN0RG91YmxlKSk7Cisg
ICAgICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKGRlbHRhTmV4dERvdWJsZSkgJiYgIXN0ZDo6c2ln
bmJpdChkZWx0YU5leHREb3VibGUpKTsKKyAgICAgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUoZGVs
dGFMYXN0RG91YmxlKSAmJiAhc3RkOjpzaWduYml0KGRlbHRhTGFzdERvdWJsZSkpOwogCiAgICAg
ICAgIC8vIFdlIHRyYWNrIHRoZSBkZWx0YSBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvIHRoZSBu
ZXh0LCB0byB0cmFjayBob3cgbWFueSBkaWdpdHMgb2YgdGhlCiAgICAgICAgIC8vIGZyYWN0aW9u
IHdlIG5lZWQgdG8gd3JpdGUuIEZvciBleGFtcGxlLCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNvbnZl
cnRpbmcgaXMgcHJlY2lzZWx5CkBAIC0zODAsNyArMzgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAw
IGFuZCAyMCIpKSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KLSAgICBpZiAo
IWlzZmluaXRlKHgpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNN
QVNjcmlwdCh4KSkpOwogCiAgICAgLy8gUm91bmQgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB1bmRl
ZmluZWQsIGFsd2F5cyBmb3JtYXQgYXMgZXhwb25lbnRpYWwuCkBAIC00MTgsNyArNDE4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIC8vIFRoZSBjaGVjayBhYm92ZSB3aWxsIHJldHVybiBmYWxzZSBm
b3IgTmFOIG9yIEluZmluaXR5LCB0aGVzZSB3aWxsIGJlCiAgICAgLy8gaGFuZGxlZCBieSBudW1i
ZXJUb1N0cmluZy4KLSAgICBBU1NFUlQoaXNmaW5pdGUoeCkpOworICAgIEFTU0VSVChzdGQ6Omlz
ZmluaXRlKHgpKTsKIAogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZyhudW1iZXJUb0ZpeGVkV2lk
dGhTdHJpbmcoeCwgZGVjaW1hbFBsYWNlcywgYnVmZmVyKSkpKTsKQEAgLTQ0OCw3ICs0NDgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9u
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOwogCiAgICAgLy8g
SGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCi0gICAgaWYgKCFpc2Zpbml0ZSh4KSkKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUoeCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJp
bmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoeCkpKTsKIAogICAgIE51
bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTUwNyw3ICs1MDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhnbG9iYWxEYXRhLCBn
bG9iYWxEYXRhLT5udW1lcmljU3RyaW5ncy5hZGQoZG91YmxlVmFsdWUpKSk7CiAgICAgfQogCi0g
ICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRv
dWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVj
LCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKIAogICAg
IFJhZGl4QnVmZmVyIHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VaW50MTZXaXRoRnJhY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Vp
bnQxNldpdGhGcmFjdGlvbi5oCmluZGV4IDBlNWM1ZjkxY2QxY2Y1ZWQ5M2RjNmEwMzA1M2Y4ZThi
YzY5NzY0YTUuLjlhMzAxMDBlYmY2YjdiZGJjYTRkNGQ2MDViNzFhMGU4MmQzYzNlYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNldpdGhGcmFjdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNldpdGhGcmFjdGlvbi5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFVpbnQxNldpdGhGcmFjdGlvbiB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVWludDE2V2l0aEZyYWN0aW9uKGRvdWJsZSBudW1iZXIsIHVpbnQxNl90IGRp
dmlkZUJ5RXhwb25lbnQgPSAwKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG51bWJlciAmJiBpc2Zp
bml0ZShudW1iZXIpICYmICFzaWduYml0KG51bWJlcikpOworICAgICAgICBBU1NFUlQobnVtYmVy
ICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSAmJiAhc3RkOjpzaWduYml0KG51bWJlcikpOwogCiAg
ICAgICAgIC8vIENoZWNrIGZvciB2YWx1ZXMgb3V0IG9mIHVpbnQxNl90IHJhbmdlLgogICAgICAg
ICBpZiAobnVtYmVyID49IG9uZUdyZWF0ZXJUaGFuTWF4VUludDE2KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAK
aW5kZXggOTBkM2ZjYjBjNTk2ZTUwZDc0ZTk4OTVhMWE5OWEyYjNjNTViNDc2Zi4uYjk0NDY4YzYw
MTNiMTJkNzRkMDhmMDQ2Yzc5YmI4YjY3YmMxOTFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtMTA3
Miw3ICsxMDcyLDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3Rl
cnMoY29uc3QgY2hhciogZGF0ZVN0cmluZykKIAogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSB0KQog
ewotICAgIGlmICghaXNmaW5pdGUodCkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHQpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAg
ICBpZiAoZmFicyh0KSA+IG1heEVDTUFTY3JpcHRUaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0RlY2ltYWxOdW1iZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0RlY2ltYWxOdW1iZXIuaApp
bmRleCA1MjY0ZTk4ZDYxMWM5ZTVhYTg1ZWE3MzVmMjg3ZjIwYzEyNDY4OWQ5Li4xODE5MTEwNzk0
Zjg0Y2M5MWFlNDUxNGVhOWVjZWRkZjA1M2NjMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EZWNpbWFsTnVtYmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvRGVjaW1hbE51bWJlci5oCkBA
IC00MCw3ICs0MCw3IEBAIGNsYXNzIERlY2ltYWxOdW1iZXIgewogcHVibGljOgogICAgIERlY2lt
YWxOdW1iZXIoZG91YmxlIGQpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZCkpOwor
ICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShkKSk7CiAgICAgICAgIGR0b2EobV9zaWduaWZp
Y2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50LCBtX3ByZWNpc2lvbik7CiAKICAgICAgICAgQVNT
RVJUKG1fcHJlY2lzaW9uKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgRGVjaW1h
bE51bWJlcihkb3VibGUgZCwgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNUeXBlLCB1bnNpZ25l
ZCBzaWduaWZpY2FudEZpZ3VyZXMpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZCkp
OworICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShkKSk7CiAgICAgICAgIGR0b2FSb3VuZFNG
KG1fc2lnbmlmaWNhbmQsIGQsIHNpZ25pZmljYW50RmlndXJlcywgbV9zaWduLCBtX2V4cG9uZW50
LCBtX3ByZWNpc2lvbik7CiAKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oc2lnbmlmaWNhbnRGaWd1cmVzICYmIHNpZ25pZmljYW50RmlndXJlcyA8PSBzaXplb2YoRHRv
YUJ1ZmZlcikpOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKICAgICBEZWNpbWFsTnVtYmVy
KGRvdWJsZSBkLCBSb3VuZGluZ0RlY2ltYWxQbGFjZXNUeXBlLCB1bnNpZ25lZCBkZWNpbWFsUGxh
Y2VzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzZmluaXRlKGQpKTsKKyAgICAgICAgQVNTRVJU
KHN0ZDo6aXNmaW5pdGUoZCkpOwogICAgICAgICBkdG9hUm91bmREUChtX3NpZ25pZmljYW5kLCBk
LCBkZWNpbWFsUGxhY2VzLCBtX3NpZ24sIG1fZXhwb25lbnQsIG1fcHJlY2lzaW9uKTsKIAogICAg
ICAgICB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMgPSAxICsgbV9leHBvbmVudCArIGRlY2lt
YWxQbGFjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggNjgxNWFmNjNmYmNmMGJhMDE1NTZiYzY2NDRh
MWE0MGNmMjU0Y2NhMC4uYmQ2MTU1MTQxNDRjZjkzNWE3NmZiMDA5NzFiNDFhMDYzZTdjNzViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01hdGhFeHRyYXMuaApAQCAtODUsMTUgKzg1LDE0IEBAIGlubGluZSBkb3VibGUgd3RmX2Nl
aWwoZG91YmxlIHgpIHsgcmV0dXJuIGNvcHlzaWduKGNlaWwoeCksIHgpOyB9CiAKICNpZiBPUyhT
T0xBUklTKQogCituYW1lc3BhY2Ugc3RkIHsKKwogI2lmbmRlZiBpc2Zpbml0ZQogaW5saW5lIGJv
b2wgaXNmaW5pdGUoZG91YmxlIHgpIHsgcmV0dXJuIGZpbml0ZSh4KSAmJiAhaXNuYW5kKHgpOyB9
CiAjZW5kaWYKICNpZm5kZWYgc2lnbmJpdAogaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgeCkg
eyByZXR1cm4gY29weXNpZ24oMS4wLCB4KSA8IDA7IH0KICNlbmRpZgotCi1uYW1lc3BhY2Ugc3Rk
IHsKLQogI2lmbmRlZiBpc2luZgogaW5saW5lIGJvb2wgaXNpbmYoZG91YmxlIHgpIHsgcmV0dXJu
ICFmaW5pdGUoeCkgJiYgIWlzbmFuZCh4KTsgfQogI2VuZGlmCkBAIC0xMDQsNiArMTAzLDggQEAg
aW5saW5lIGJvb2wgaXNpbmYoZG91YmxlIHgpIHsgcmV0dXJuICFmaW5pdGUoeCkgJiYgIWlzbmFu
ZCh4KTsgfQogCiAjaWYgT1MoT1BFTkJTRCkKIAorbmFtZXNwYWNlIHN0ZCB7CisKICNpZm5kZWYg
aXNmaW5pdGUKIGlubGluZSBib29sIGlzZmluaXRlKGRvdWJsZSB4KSB7IHJldHVybiBmaW5pdGUo
eCk7IH0KICNlbmRpZgpAQCAtMTExLDYgKzExMiw4IEBAIGlubGluZSBib29sIGlzZmluaXRlKGRv
dWJsZSB4KSB7IHJldHVybiBmaW5pdGUoeCk7IH0KIGlubGluZSBib29sIHNpZ25iaXQoZG91Ymxl
IHgpIHsgc3RydWN0IGllZWVfZG91YmxlICpwID0gKHN0cnVjdCBpZWVlX2RvdWJsZSAqKSZ4OyBy
ZXR1cm4gcC0+ZGJsX3NpZ247IH0KICNlbmRpZgogCit9IC8vIG5hbWVzcGFjZSBzdGQKKwogI2Vu
ZGlmCiAKICNpZiBDT01QSUxFUihNU1ZDKSB8fCAoQ09NUElMRVIoUlZDVCkgJiYgIShSVkNUX1ZF
UlNJT05fQVRfTEVBU1QoMywgMCwgMCwgMCkpKQpAQCAtMTY4LDE2ICsxNzEsMTUgQEAgbmFtZXNw
YWNlIHN0ZCB7CiAKIGlubGluZSBib29sIGlzaW5mKGRvdWJsZSBudW0pIHsgcmV0dXJuICFfZmlu
aXRlKG51bSkgJiYgIV9pc25hbihudW0pOyB9CiBpbmxpbmUgYm9vbCBpc25hbihkb3VibGUgbnVt
KSB7IHJldHVybiAhIV9pc25hbihudW0pOyB9CitpbmxpbmUgYm9vbCBpc2Zpbml0ZShkb3VibGUg
eCkgeyByZXR1cm4gX2Zpbml0ZSh4KTsgfQoraW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgbnVt
KSB7IHJldHVybiBfY29weXNpZ24oMS4wLCBudW0pIDwgMDsgfQogCiB9IC8vIG5hbWVzcGFjZSBz
dGQKIAotaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgbnVtKSB7IHJldHVybiBfY29weXNpZ24o
MS4wLCBudW0pIDwgMDsgfQotCiBpbmxpbmUgZG91YmxlIG5leHRhZnRlcihkb3VibGUgeCwgZG91
YmxlIHkpIHsgcmV0dXJuIF9uZXh0YWZ0ZXIoeCwgeSk7IH0KIGlubGluZSBmbG9hdCBuZXh0YWZ0
ZXJmKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJuIHggPiB5ID8geCAtIEZMVF9FUFNJTE9OIDog
eCArIEZMVF9FUFNJTE9OOyB9CiAKIGlubGluZSBkb3VibGUgY29weXNpZ24oZG91YmxlIHgsIGRv
dWJsZSB5KSB7IHJldHVybiBfY29weXNpZ24oeCwgeSk7IH0KLWlubGluZSBpbnQgaXNmaW5pdGUo
ZG91YmxlIHgpIHsgcmV0dXJuIF9maW5pdGUoeCk7IH0KIAogLy8gV29yayBhcm91bmQgYSBidWcg
aW4gV2luLCB3aGVyZSBhdGFuMigrLWluZmluaXR5LCArLWluZmluaXR5KSB5aWVsZHMgTmFOIGlu
c3RlYWQgb2Ygc3BlY2lmaWMgdmFsdWVzLgogaW5saW5lIGRvdWJsZSB3dGZfYXRhbjIoZG91Ymxl
IHgsIGRvdWJsZSB5KQpAQCAtMjIyLDcgKzIyNCw3IEBAIGlubGluZSBsb25nIGludCBscmludChk
b3VibGUgZmx0KQogICAgICAgICBmaXN0cCBpbnRncgogICAgIH07CiAjZWxzZQotICAgIEFTU0VS
VChpc2Zpbml0ZShmbHQpKTsKKyAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShmbHQpKTsKICAgICBk
b3VibGUgcm91bmRlZCA9IHJvdW5kKGZsdCk7CiAgICAgaW50Z3IgPSBzdGF0aWNfY2FzdDxpbnQ2
NF90Pihyb3VuZGVkKTsKICAgICAvLyBJZiB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzIGV4YWN0bHkg
MC41LCB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIKQEAgLTMzOSwxMSArMzQxLDYgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgdGltZXNUaHJlZVBsdXNPbmVEaXZpZGVkQnlUd28oVCB2
YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgKyAodmFsdWUgPj4gMSkgKyAodmFsdWUgJiAxKTsKIH0K
IAotI2lmICFDT01QSUxFUihNU1ZDKSAmJiAhQ09NUElMRVIoUlZDVCkgJiYgIU9TKFNPTEFSSVMp
Ci11c2luZyBzdGQ6OmlzZmluaXRlOwotdXNpbmcgc3RkOjpzaWduYml0OwotI2VuZGlmCi0KICNp
Zm5kZWYgVUlOVDY0X0MKICNpZiBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBVSU5UNjRfQyhjKSBj
ICMjIHVpNjQKQEAgLTM1Nyw3ICszNTQsNyBAQCBpbmxpbmUgZG91YmxlIHd0Zl9wb3coZG91Ymxl
IHgsIGRvdWJsZSB5KQogewogICAgIC8vIE1pbkdXLXc2NCBoYXMgYSBjdXN0b20gaW1wbGVtZW50
YXRpb24gZm9yIHBvdy4KICAgICAvLyBUaGlzIGhhbmRsZXMgY2VydGFpbiBzcGVjaWFsIGNhc2Vz
IHRoYXQgYXJlIGRpZmZlcmVudC4KLSAgICBpZiAoKHggPT0gMC4wIHx8IHN0ZDo6aXNpbmYoeCkp
ICYmIGlzZmluaXRlKHkpKSB7CisgICAgaWYgKCh4ID09IDAuMCB8fCBzdGQ6OmlzaW5mKHgpKSAm
JiBzdGQ6OmlzZmluaXRlKHkpKSB7CiAgICAgICAgIGRvdWJsZSBmOwogICAgICAgICBpZiAobW9k
Zih5LCAmZikgIT0gMC4wKQogICAgICAgICAgICAgcmV0dXJuICgoeCA9PSAwLjApIF4gKHkgPiAw
LjApKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6IDAuMDsKQEAg
LTM4MCw5ICszNzcsOSBAQCBpbmxpbmUgZG91YmxlIHd0Zl9wb3coZG91YmxlIHgsIGRvdWJsZSB5
KQogLy8gICAgIChzaWduID8gLTEgOiAxKSAqIHBvdygyLCBleHBvbmVudCkgKiAobWFudGlzc2Eg
LyAoMSA8PCA1MikpCiBpbmxpbmUgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91YmxlIG51bWJlciwg
Ym9vbCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NF90JiBtYW50aXNzYSkKIHsKLSAg
ICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyKSk7CisgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUobnVt
YmVyKSk7CiAKLSAgICBzaWduID0gc2lnbmJpdChudW1iZXIpOworICAgIHNpZ24gPSBzdGQ6OnNp
Z25iaXQobnVtYmVyKTsKIAogICAgIHVpbnQ2NF90IGJpdHMgPSBXVEY6OmJpdHdpc2VfY2FzdDx1
aW50NjRfdD4obnVtYmVyKTsKICAgICBleHBvbmVudCA9IChzdGF0aWNfY2FzdDxpbnQzMl90Pihi
aXRzID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggY2ZkZmRk
YTIyYTZlMTI3NmZjMjM1YzQzMWYxN2MxMzRhNjQ5ZWRlNS4uNGIyZWVlODRjZTg5N2VkZjA4YmI2
MDUxNGM2MzNiOGFkY2I5NmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1l
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIGlu
dDMyX3QgdGltZVNjYWxlKQogICAgIGlmIChmbG9hdFRpbWUgIT0gZmxvYXRUaW1lKQogICAgICAg
ICByZXR1cm4gaW52YWxpZFRpbWUoKTsKICAgICBpZiAoc3RkOjppc2luZihmbG9hdFRpbWUpKQot
ICAgICAgICByZXR1cm4gc2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUo
KSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQo
ZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpOwogICAgIGlmIChmbG9hdFRpbWUgPiBudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkp
CiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmIChmbG9hdFRp
bWUgPCBudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
TWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgZG91YmxlVGltZSwg
aW50MzJfdCB0aW1lU2NhbGUpCiAgICAgaWYgKGRvdWJsZVRpbWUgIT0gZG91YmxlVGltZSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CiAgICAgaWYgKHN0ZDo6aXNpbmYoZG91YmxlVGlt
ZSkpCi0gICAgICAgIHJldHVybiBzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNp
Z25iaXQoZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZp
bml0ZVRpbWUoKTsKICAgICBpZiAoZG91YmxlVGltZSA+IG51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYg
KGRvdWJsZVRpbWUgPCBudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCmluZGV4
IGNmMWJjMmNkYWI1M2IzNjJiODA2ZmE5MDRkMTVkM2IyYzIwYzIzYzUuLmUxOGUxMGE0NDJmZTEy
MGU2ZDhjM2RjM2QwNTRiOGNjZDAxOWVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2R0
b2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCkBAIC03NDIsNyArNzQyLDcgQEAg
dm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29s
JiBzaWduT3V0LCBpbnQmIGV4cG9uZW4KICAgICAvLyByb3VuZGluZ05vbmUgb25seSBhbGxvd2Vk
IChvbmx5IHNlbnNpYmxlPykgd2l0aCBsZWZ0cmlnaHQgc2V0LgogICAgIEFTU0VSVCghcm91bmRp
bmdOb25lIHx8IGxlZnRyaWdodCk7CiAKLSAgICBBU1NFUlQoaXNmaW5pdGUoZGQpKTsKKyAgICBB
U1NFUlQoc3RkOjppc2Zpbml0ZShkZCkpOwogCiAgICAgaW50IGJiaXRzLCBiMiwgYjUsIGJlLCBk
aWcsIGksIGllcHMsIGlsaW0gPSAwLCBpbGltMCwgaWxpbTEgPSAwLAogICAgICAgICBqLCBqMSwg
aywgazAsIGtfY2hlY2ssIG0yLCBtNSwgczIsIHM1LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwCmluZGV4IGJjOWM4ZWUyOGE0Y2QzZTBkYmQyMmE1NDc4YzVhOGQxNzU5ZmNkMTAuLjI2YTBi
NDYzMDAxMDg2MjE2MmY2Y2IxZjhkNzc0MzNmYjU3NDdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REN1c3RvbS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRXZWJraXRMaW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQog
ICAgIEpTQXJyYXkqIHZhbHVlQXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmFsdWVBcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBmbG9h
dCBlbGVtID0gdmFsdWVBcnJheS0+Z2V0SW5kZXgoZXhlYywgaSkudG9GbG9hdChleGVjKTsKLSAg
ICAgICAgaWYgKGVsZW0gPD0gMCB8fCAhaXNmaW5pdGUoZWxlbSkpCisgICAgICAgIGlmIChlbGVt
IDw9IDAgfHwgIXN0ZDo6aXNmaW5pdGUoZWxlbSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgZGFzaC5hcHBlbmQoZWxlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcAppbmRleCBmNjMyOGRjODhkOTI1NmU5OWM5NDZmZTVmZDljZjhiNzgyZGIy
ZDA2Li44MWYxOWE3NjMzNjhjMDcwZGU3MzlhOGJhNzZkZWI5YzMwNzM0ZTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKIEpTVmFsdWUganNEYXRlT3JOdWxsKEV4ZWNTdGF0ZSog
ZXhlYywgZG91YmxlIHZhbHVlKQogewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQorICAgIGlm
ICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICBy
ZXR1cm4gRGF0ZUluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5kYXRlU3RydWN0dXJlKCksIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggZjNiOGU1ZTRiZGNmYzE4MmZhYWRhZDJiYWI1YmY1YmVi
NWVmNmY5Yi4uMGI2MWQ3YzNlNjNmYmU4NTVjN2Y3MTAzNTdhNjRkNGMxYjcyNDE2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI5Nyw3ICsyOTcsNyBA
QCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIGlubGluZSBpbnQzMl90IGZpbml0
ZUludDMyVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgYm9v
bCYgb2theSkKICAgICB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS50b051bWJlcihl
eGVjKTsKLSAgICAgICAgb2theSA9IGlzZmluaXRlKG51bWJlcik7CisgICAgICAgIG9rYXkgPSBz
dGQ6OmlzZmluaXRlKG51bWJlcik7CiAgICAgICAgIHJldHVybiBKU0M6OnRvSW50MzIobnVtYmVy
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYTY5
ZTkwOWU2ZmIyMjAyY2IwOWIwYTJjMTI0NDUyZmE1OWJjNDc3Ny4uMzFkMzEzM2Y3MzM3MTFmNmI5
ZmM5YTM3NTQwMDczNGE2Y2IzNDQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKQEAgLTQxOCw3ICs0MTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OERhdGVPck51bGwoZG91YmxlIHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc29sYXRlKTsKLSAgICAgICAg
cmV0dXJuIGlzZmluaXRlKHZhbHVlKSA/IHY4OjpEYXRlOjpOZXcodmFsdWUpIDogdjhOdWxsV2l0
aENoZWNrKGlzb2xhdGUpOworICAgICAgICByZXR1cm4gc3RkOjppc2Zpbml0ZSh2YWx1ZSkgPyB2
ODo6RGF0ZTo6TmV3KHZhbHVlKSA6IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICB9CiAK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVtcGxh
dGUodjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CmluZGV4IGIzY2VlMDEwYTlhMzI1YjBmYjcwYWQ5MzFhOTBlZGViYjVmYTJmNzYuLmNhYTJmNGM2
ZTBmNzgzMWNjZmQ4YjBiMzQ0NDFhOTU1NmIxMWY1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShkb3VibGUgbnVtLCBVbml0VHlwZXMgdHlwZSkKICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSB0eXBl
OwotICAgIEFTU0VSVChpc2Zpbml0ZShudW0pKTsKKyAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShu
dW0pKTsKICAgICBtX3ZhbHVlLm51bSA9IG51bTsKIH0KIApAQCAtMjk0LDcgKzI5NCw3IEBAIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShjb25zdCBMZW5ndGgmIGxlbmd0aCkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICBt
X3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1BFUkNFTlRBR0U7Ci0gICAgICAgICAgICBBU1NFUlQo
aXNmaW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOworICAgICAgICAgICAgQVNTRVJUKHN0ZDo6aXNm
aW5pdGUobGVuZ3RoLnBlcmNlbnQoKSkpOwogICAgICAgICAgICAgbV92YWx1ZS5udW0gPSBsZW5n
dGgucGVyY2VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmlld3BvcnRQ
ZXJjZW50YWdlV2lkdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5jcHAKaW5kZXggNmExOGE0NTI4NDM4MjYyMWU4MjJhOThlZTM3MWZhZDA0NTI0
MzI4Yy4uNzg4ODBmMjRjNDJkYjc3YWQ4Y2VjZmZlMTg3NmZjZDUwZDgzYTdjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIERlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvTnVt
YmVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZWNpCiAgICAgaWYgKCFwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoc291cmNlLCAmZGF0ZSkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7
CiAgICAgZG91YmxlIG1zZWMgPSBkYXRlLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBB
U1NFUlQoaXNmaW5pdGUobXNlYykpOworICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKG1zZWMpKTsK
ICAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJsZShtc2VjKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTJmNDYwM2FhY2JkOGY3NmZlNDdmMDRh
NTZlNDZiNGY5MzczNDcwZi4uYTQ5ZjA0MjdmOWQ0OGMzMmY1YjZkYWJmMWM4YzRiYTBjODRhYmJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMDYxLDcg
KzEwNjEsNyBAQCBkb3VibGUgSFRNTElucHV0RWxlbWVudDo6dmFsdWVBc051bWJlcigpIGNvbnN0
CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVBc051bWJlcihkb3VibGUgbmV3VmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZp
b3IpCiB7Ci0gICAgaWYgKCFpc2Zpbml0ZShuZXdWYWx1ZSkpIHsKKyAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUobmV3VmFsdWUpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAppbmRleCA1NjJkMjBhYTM1OGZhMzRlMzBlZWEyYTU0NDMxMWY4Y2M5YTJjNWE4Li42NWVjMWIy
ODQ2ODAwNjdkYjA4MTZkNjgwZGMxMjNjMjE0NjNkYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgZG91YmxlIEhUTUxNZXRlckVs
ZW1lbnQ6Om1pbigpIGNvbnN0CiAKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0TWluKGRvdWJs
ZSBtaW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNmaW5pdGUobWluKSkgewor
ICAgIGlmICghc3RkOjppc2Zpbml0ZShtaW4pKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDUsNyArMTA1LDcgQEAgZG91Ymxl
IEhUTUxNZXRlckVsZW1lbnQ6Om1heCgpIGNvbnN0CiAKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6
c2V0TWF4KGRvdWJsZSBtYXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNmaW5p
dGUobWF4KSkgeworICAgIGlmICghc3RkOjppc2Zpbml0ZShtYXgpKSB7CiAgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAsNyArMTIw
LDcgQEAgZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBIVE1M
TWV0ZXJFbGVtZW50OjpzZXRWYWx1ZShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmICghaXNmaW5pdGUodmFsdWUpKSB7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZh
bHVlKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTM1LDcgKzEzNSw3IEBAIGRvdWJsZSBIVE1MTWV0ZXJFbGVtZW50Ojpsb3co
KSBjb25zdAogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldExvdyhkb3VibGUgbG93LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKGxvdykpIHsKKyAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUobG93KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTUwLDcgKzE1MCw3IEBAIGRvdWJsZSBIVE1MTWV0ZXJF
bGVtZW50OjpoaWdoKCkgY29uc3QKIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRIaWdoKGRv
dWJsZSBoaWdoLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKGhpZ2gp
KSB7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGhpZ2gpKSB7CiAgICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjUsNyArMTY1LDcgQEAg
ZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om9wdGltdW0oKSBjb25zdAogCiB2b2lkIEhUTUxNZXRl
ckVsZW1lbnQ6OnNldE9wdGltdW0oZG91YmxlIG9wdGltdW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmICghaXNmaW5pdGUob3B0aW11bSkpIHsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUo
b3B0aW11bSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNz
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3Bw
CmluZGV4IGQ1NTE5MDNmMDVhYTY4MDBjNTFiNmE5NDNmYWY1MmEyOTBhMDVmMDUuLmZlOGY5OWIy
M2YyMmQ5MmYyMGUyZGQ4YTlmYjAxMDkwNGU5YzA5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMTA3LDEyICsxMDcsMTIgQEAgdm9pZCBIVE1M
UHJvZ3Jlc3NFbGVtZW50OjphdHRhY2goKQogZG91YmxlIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKIHsKICAgICBkb3VibGUgdmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShmYXN0R2V0QXR0cmlidXRlKHZhbHVlQXR0cikpOwotICAgIHJldHVybiAhaXNmaW5pdGUo
dmFsdWUpIHx8IHZhbHVlIDwgMCA/IDAgOiBzdGQ6Om1pbih2YWx1ZSwgbWF4KCkpOworICAgIHJl
dHVybiAhc3RkOjppc2Zpbml0ZSh2YWx1ZSkgfHwgdmFsdWUgPCAwID8gMCA6IHN0ZDo6bWluKHZh
bHVlLCBtYXgoKSk7CiB9CiAKIHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6c2V0VmFsdWUoZG91
YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKHZhbHVl
KSkgeworICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsKICAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMiwxMiArMTIyLDEy
IEBAIHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6c2V0VmFsdWUoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKIGRvdWJsZSBIVE1MUHJvZ3Jlc3NFbGVtZW50OjptYXgoKSBjb25zdAog
ewogICAgIGRvdWJsZSBtYXggPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1
dGUobWF4QXR0cikpOwotICAgIHJldHVybiAhaXNmaW5pdGUobWF4KSB8fCBtYXggPD0gMCA/IDEg
OiBtYXg7CisgICAgcmV0dXJuICFzdGQ6OmlzZmluaXRlKG1heCkgfHwgbWF4IDw9IDAgPyAxIDog
bWF4OwogfQogCiB2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKG1heCkpIHsKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUobWF4KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
b250aElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNw
cAppbmRleCAwOThkMDAyNzY4YzUxNDEwNmI4OWY4Y2E4MzAzN2IzNGU2YjM0NTI2Li4wM2ZlMTY3
ZDdkNjkwNzY0NzEyNDBjODI4YzI5ODk2NGRkY2E4NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01v
bnRoSW5wdXRUeXBlLmNwcApAQCAtODIsNyArODIsNyBAQCBkb3VibGUgTW9udGhJbnB1dFR5cGU6
OnZhbHVlQXNEYXRlKCkgY29uc3QKICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhlbGVt
ZW50KCktPnZhbHVlKCksICZkYXRlKSkKICAgICAgICAgcmV0dXJuIERhdGVDb21wb25lbnRzOjpp
bnZhbGlkTWlsbGlzZWNvbmRzKCk7CiAgICAgZG91YmxlIG1zZWMgPSBkYXRlLm1pbGxpc2Vjb25k
c1NpbmNlRXBvY2goKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobXNlYykpOworICAgIEFTU0VSVChz
dGQ6OmlzZmluaXRlKG1zZWMpKTsKICAgICByZXR1cm4gbXNlYzsKIH0KIApAQCAtMTA1LDcgKzEw
NSw3IEBAIERlY2ltYWwgTW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1Np
bmNlRXBvY2hGb3JNb250aChjdXJyZW50KTsKICAgICBkb3VibGUgbW9udGhzID0gZGF0ZS5tb250
aHNTaW5jZUVwb2NoKCk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG1vbnRocykpOworICAgIEFTU0VS
VChzdGQ6OmlzZmluaXRlKG1vbnRocykpOwogICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91Ymxl
KG1vbnRocyk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBEZWNpbWFsIE1vbnRoSW5wdXRUeXBl
OjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0
VgogICAgIGlmICghcGFyc2VUb0RhdGVDb21wb25lbnRzKHNyYywgJmRhdGUpKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgIGRvdWJsZSBtb250aHMgPSBkYXRlLm1vbnRoc1NpbmNl
RXBvY2goKTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobW9udGhzKSk7CisgICAgQVNTRVJUKHN0ZDo6
aXNmaW5pdGUobW9udGhzKSk7CiAgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUobW9udGhz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMzYWQw
MmIwNjBlODIxNzdjMTZkNWFkOWY2NmM1NDJhOGRlZjBiM2YuLmQzODY5NTlkNTYxNTk0OWRhOWY1
YzgzMzY4MDk5ZjAwOWY2Y2Q3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIE51bWJlcklucHV0VHlwZTo6c2V0VmFsdWVB
c0RlY2ltYWwoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogCiBib29s
IE51bWJlcklucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgIWlzZmluaXRlKHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7CisgICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkg
JiYgIXN0ZDo6aXNmaW5pdGUocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUodmFsdWUpKTsKIH0K
IAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CkBAIC0yNjEsMTMg
KzI2MSwxMyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0
cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAocHJvcG9zZWRWYWx1ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBwcm9wb3NlZFZhbHVlOwotICAgIHJldHVybiBpc2Zpbml0
ZShwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShwcm9wb3NlZFZhbHVlKSkgPyBwcm9wb3NlZFZh
bHVlIDogZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gc3RkOjppc2Zpbml0ZShwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShwcm9wb3NlZFZhbHVlKSkgPyBwcm9wb3NlZFZhbHVlIDogZW1wdHlT
dHJpbmcoKTsKIH0KIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6Omhhc0JhZElucHV0KCkgY29uc3QK
IHsKICAgICBTdHJpbmcgc3RhbmRhcmRWYWx1ZSA9IGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGVs
ZW1lbnQoKS0+aW5uZXJUZXh0VmFsdWUoKSk7Ci0gICAgcmV0dXJuICFzdGFuZGFyZFZhbHVlLmlz
RW1wdHkoKSAmJiAhaXNmaW5pdGUocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RhbmRhcmRW
YWx1ZSkpOworICAgIHJldHVybiAhc3RhbmRhcmRWYWx1ZS5pc0VtcHR5KCkgJiYgIXN0ZDo6aXNm
aW5pdGUocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RhbmRhcmRWYWx1ZSkpOwogfQogCiBT
dHJpbmcgTnVtYmVySW5wdXRUeXBlOjpiYWRJbnB1dFRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA3MWZkNTA4ZTUxZjE0ZDgzYTRjYjA5MDVhZjgz
YjA2NjA5OWI4NGQwLi45YzFjYWQ4NjQ5MjA4NzNiNWRjZjVjZjkyYTEyMWMyZDc4Y2EyMmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5l
d1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlCiAKIGJvb2wgUmFuZ2VJbnB1dFR5cGU6OnR5cGVNaXNt
YXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiAhdmFsdWUu
aXNFbXB0eSgpICYmICFpc2Zpbml0ZShwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSh2YWx1ZSkp
OworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFzdGQ6OmlzZmluaXRlKHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKHZhbHVlKSk7CiB9CiAKIGJvb2wgUmFuZ2VJbnB1dFR5cGU6OnN1
cHBvcnRzUmVxdWlyZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAK
aW5kZXggYzMwOGJkNzNlMzU2MzkyZDQyM2U0YjdiMDE3NjdiMDBiZDlkYzM0ZS4uOWYwODBkMjk5
ZTg0NTI5NTA4ZTE0YWUxYWRlZGE2MjUzMDM1ZWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJ
bnB1dFR5cGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIERlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVm
YXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAg
IGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VNaWRuaWdodChjdXJyZW50KTsKICAgICBkb3VibGUg
bWlsbGlzZWNvbmRzID0gZGF0ZS5taWxsaXNlY29uZHNTaW5jZUVwb2NoKCk7Ci0gICAgQVNTRVJU
KGlzZmluaXRlKG1pbGxpc2Vjb25kcykpOworICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKG1pbGxp
c2Vjb25kcykpOwogICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91YmxlKG1pbGxpc2Vjb25kcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhN
ZXRob2RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhNZXRob2Rz
LmNwcAppbmRleCAyNmU4MjkxZjcxNWM4NGUyZjdhM2Q2YjA5NWMwMTE2OGI1YjNmNTg5Li4wNDE1
NDFkYjhkMTAzNzMxYzQzOWU1YTMwOTU3NDJhZDU3OGY5N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OmNsb3NlUGF0aCgpCiAKIHZvaWQgQ2FudmFzUGF0aE1l
dGhvZHM6Om1vdmVUbyhmbG9hdCB4LCBmbG9hdCB5KQogewotICAgIGlmICghaXNmaW5pdGUoeCkg
fHwgIWlzZmluaXRlKHkpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zp
bml0ZSh5KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghaXNUcmFuc2Zvcm1JbnZlcnRpYmxl
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBDYW52YXNQYXRoTWV0
aG9kczo6bW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6
OmxpbmVUbyhmbG9hdCB4LCBmbG9hdCB5KQogewotICAgIGlmICghaXNmaW5pdGUoeCkgfHwgIWlz
ZmluaXRlKHkpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghaXNUcmFuc2Zvcm1JbnZlcnRpYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6
bGluZVRvKGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OnF1YWRy
YXRpY0N1cnZlVG8oZmxvYXQgY3B4LCBmbG9hdCBjcHksIGZsb2F0IHgsIGZsb2F0IHkpCiB7Ci0g
ICAgaWYgKCFpc2Zpbml0ZShjcHgpIHx8ICFpc2Zpbml0ZShjcHkpIHx8ICFpc2Zpbml0ZSh4KSB8
fCAhaXNmaW5pdGUoeSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGNweCkgfHwgIXN0ZDo6aXNm
aW5pdGUoY3B5KSB8fCAhc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghaXNUcmFuc2Zvcm1JbnZlcnRpYmxlKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6cXVhZHJh
dGljQ3VydmVUbyhmbG9hdCBjcHgsIGZsb2F0IGNweSwgZmxvYXQgeCwgZmxvYXQgeSkKIAogdm9p
ZCBDYW52YXNQYXRoTWV0aG9kczo6YmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBmbG9hdCBjcDF5
LCBmbG9hdCBjcDJ4LCBmbG9hdCBjcDJ5LCBmbG9hdCB4LCBmbG9hdCB5KQogewotICAgIGlmICgh
aXNmaW5pdGUoY3AxeCkgfHwgIWlzZmluaXRlKGNwMXkpIHx8ICFpc2Zpbml0ZShjcDJ4KSB8fCAh
aXNmaW5pdGUoY3AyeSkgfHwgIWlzZmluaXRlKHgpIHx8ICFpc2Zpbml0ZSh5KSkKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUoY3AxeCkgfHwgIXN0ZDo6aXNmaW5pdGUoY3AxeSkgfHwgIXN0ZDo6aXNm
aW5pdGUoY3AyeCkgfHwgIXN0ZDo6aXNmaW5pdGUoY3AyeSkgfHwgIXN0ZDo6aXNmaW5pdGUoeCkg
fHwgIXN0ZDo6aXNmaW5pdGUoeSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIWlzVHJhbnNm
b3JtSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBDYW52YXNQYXRoTWV0aG9kczo6YmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBmbG9hdCBjcDF5
LCBmbG9hdCBjcDJ4LCBmbG9hdAogdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6YXJjVG8oZmxvYXQg
eDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIsIGZsb2F0IHIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGVjID0gMDsKLSAgICBpZiAoIWlzZmluaXRlKHgxKSB8fCAhaXNmaW5pdGUo
eTEpIHx8ICFpc2Zpbml0ZSh4MikgfHwgIWlzZmluaXRlKHkyKSB8fCAhaXNmaW5pdGUocikpCisg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgxKSB8fCAhc3RkOjppc2Zpbml0ZSh5MSkgfHwgIXN0ZDo6
aXNmaW5pdGUoeDIpIHx8ICFzdGQ6OmlzZmluaXRlKHkyKSB8fCAhc3RkOjppc2Zpbml0ZShyKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHIgPCAwKSB7CkBAIC0xMzMsNyArMTMzLDcgQEAg
dm9pZCBDYW52YXNQYXRoTWV0aG9kczo6YXJjVG8oZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4
MiwgZmxvYXQgeTIsIGZsb2F0IHIsIEUKIHZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OmFyYyhmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9hdCBzYSwgZmxvYXQgZWEsIGJvb2wgYW50aWNsb2Nr
d2lzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIGlmICghaXNmaW5p
dGUoeCkgfHwgIWlzZmluaXRlKHkpIHx8ICFpc2Zpbml0ZShyKSB8fCAhaXNmaW5pdGUoc2EpIHx8
ICFpc2Zpbml0ZShlYSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmlu
aXRlKHkpIHx8ICFzdGQ6OmlzZmluaXRlKHIpIHx8ICFzdGQ6OmlzZmluaXRlKHNhKSB8fCAhc3Rk
Ojppc2Zpbml0ZShlYSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyIDwgMCkgewpAQCAt
MTY4LDcgKzE2OCw3IEBAIHZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OnJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICBpZiAoIWlzVHJhbnNmb3JtSW52
ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzZmluaXRlKHgpIHx8ICFp
c2Zpbml0ZSh5KSB8fCAhaXNmaW5pdGUod2lkdGgpIHx8ICFpc2Zpbml0ZShoZWlnaHQpKQorICAg
IGlmICghc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSB8fCAhc3RkOjppc2Zp
bml0ZSh3aWR0aCkgfHwgIXN0ZDo6aXNmaW5pdGUoaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA0MzY0YWNk
NTBmMzU4Njk0YzhmMGU3ODFjMzFmZmEwNmM5NjE5MDlmLi40NDJjMTllNmI1MzczYWY2N2I1NjFh
ZDJiY2JiMmEwMjA0ODNjZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTM4Myw3ICszODMsNyBAQCBm
bG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0aCgpIGNvbnN0CiAKIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRMaW5lV2lkdGgoZmxvYXQgd2lkdGgpCiB7Ci0g
ICAgaWYgKCEoaXNmaW5pdGUod2lkdGgpICYmIHdpZHRoID4gMCkpCisgICAgaWYgKCEoc3RkOjpp
c2Zpbml0ZSh3aWR0aCkgJiYgd2lkdGggPiAwKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChz
dGF0ZSgpLm1fbGluZVdpZHRoID09IHdpZHRoKQogICAgICAgICByZXR1cm47CkBAIC00NDIsNyAr
NDQyLDcgQEAgZmxvYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptaXRlckxpbWl0KCkgY29u
c3QKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldE1pdGVyTGltaXQoZmxvYXQg
bGltaXQpCiB7Ci0gICAgaWYgKCEoaXNmaW5pdGUobGltaXQpICYmIGxpbWl0ID4gMCkpCisgICAg
aWYgKCEoc3RkOjppc2Zpbml0ZShsaW1pdCkgJiYgbGltaXQgPiAwKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmIChzdGF0ZSgpLm1fbWl0ZXJMaW1pdCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDYxLDcgKzQ2MSw3IEBAIGZsb2F0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hh
ZG93T2Zmc2V0WCgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3dPZmZzZXRYKGZsb2F0IHgpCiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh4KSkKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUoeCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoc3RhdGUoKS5tX3No
YWRvd09mZnNldC53aWR0aCgpID09IHgpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCBmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNoYWRvd09mZnNldFkoKSBjb25z
dAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93T2Zmc2V0WShmbG9h
dCB5KQogewotICAgIGlmICghaXNmaW5pdGUoeSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHkp
KQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0
KCkgPT0geSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDkzLDcgKzQ5Myw3IEBAIGZsb2F0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93Qmx1cigpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dCbHVyKGZsb2F0IGJsdXIpCiB7Ci0gICAgaWYgKCEo
aXNmaW5pdGUoYmx1cikgJiYgYmx1ciA+PSAwKSkKKyAgICBpZiAoIShzdGQ6OmlzZmluaXRlKGJs
dXIpICYmIGJsdXIgPj0gMCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoc3RhdGUoKS5tX3No
YWRvd0JsdXIgPT0gYmx1cikKICAgICAgICAgcmV0dXJuOwpAQCAtNTI3LDcgKzUyNyw3IEBAIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0TGluZURhc2go
KSBjb25zdAogc3RhdGljIGJvb2wgbGluZURhc2hTZXF1ZW5jZUlzVmFsaWQoY29uc3QgVmVjdG9y
PGZsb2F0PiYgZGFzaCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhc2guc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgaWYgKCFpc2Zpbml0ZShkYXNoW2ldKSB8fCBkYXNoW2ldIDwgMCkK
KyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhc2hbaV0pIHx8IGRhc2hbaV0gPCAwKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2Niw3
ICs1NjYsNyBAQCBmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVEYXNoT2Zmc2V0
KCkgY29uc3QKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoT2Zm
c2V0KGZsb2F0IG9mZnNldCkKIHsKLSAgICBpZiAoIWlzZmluaXRlKG9mZnNldCkgfHwgc3RhdGUo
KS5tX2xpbmVEYXNoT2Zmc2V0ID09IG9mZnNldCkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUob2Zm
c2V0KSB8fCBzdGF0ZSgpLm1fbGluZURhc2hPZmZzZXQgPT0gb2Zmc2V0KQogICAgICAgICByZXR1
cm47CiAKICAgICByZWFsaXplU2F2ZXMoKTsKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KQogICAgIGlmICgh
c3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNm
aW5pdGUoc3gpIHwgIWlzZmluaXRlKHN5KSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoc3gpIHwg
IXN0ZDo6aXNmaW5pdGUoc3kpKQogICAgICAgICByZXR1cm47CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3RyYW5zZm9ybTsKQEAgLTY3Miw3ICs2NzIsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRp
YW5zKQogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghaXNmaW5pdGUoYW5nbGVJblJhZGlhbnMpKQorICAgIGlmICghc3RkOjppc2Zp
bml0ZShhbmdsZUluUmFkaWFucykpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFmZmluZVRyYW5z
Zm9ybSBuZXdUcmFuc2Zvcm0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOwpAQCAtNzAwLDcgKzcwMCw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2xhdGUoZmxvYXQgdHgsIGZs
b2F0IHR5KQogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghaXNmaW5pdGUodHgpIHwgIWlzZmluaXRlKHR5KSkKKyAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUodHgpIHwgIXN0ZDo6aXNmaW5pdGUodHkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3RyYW5zZm9ybTsK
QEAgLTcyOCw3ICs3MjgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNm
b3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0CiAgICAgaWYgKCFzdGF0
ZSgpLm1faW52ZXJ0aWJsZUNUTSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpc2Zpbml0
ZShtMTEpIHwgIWlzZmluaXRlKG0yMSkgfCAhaXNmaW5pdGUoZHgpIHwgIWlzZmluaXRlKG0xMikg
fCAhaXNmaW5pdGUobTIyKSB8ICFpc2Zpbml0ZShkeSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRl
KG0xMSkgfCAhc3RkOjppc2Zpbml0ZShtMjEpIHwgIXN0ZDo6aXNmaW5pdGUoZHgpIHwgIXN0ZDo6
aXNmaW5pdGUobTEyKSB8ICFzdGQ6OmlzZmluaXRlKG0yMikgfCAhc3RkOjppc2Zpbml0ZShkeSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0obTExLCBt
MTIsIG0yMSwgbTIyLCBkeCwgZHkpOwpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFuc2Zvcm0oZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0
IG0yMSwgZmxvCiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzZmlu
aXRlKG0xMSkgfCAhaXNmaW5pdGUobTIxKSB8ICFpc2Zpbml0ZShkeCkgfCAhaXNmaW5pdGUobTEy
KSB8ICFpc2Zpbml0ZShtMjIpIHwgIWlzZmluaXRlKGR5KSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUobTExKSB8ICFzdGQ6OmlzZmluaXRlKG0yMSkgfCAhc3RkOjppc2Zpbml0ZShkeCkgfCAhc3Rk
Ojppc2Zpbml0ZShtMTIpIHwgIXN0ZDo6aXNmaW5pdGUobTIyKSB8ICFzdGQ6OmlzZmluaXRlKGR5
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN0YXRlKCku
bV90cmFuc2Zvcm07CkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldEN1cnJlbnRQYXRoKERPTVBhdGgqIHBhdGgpCiAKIHN0YXRpYyBib29sIHZhbGlk
YXRlUmVjdEZvckNhbnZhcyhmbG9hdCYgeCwgZmxvYXQmIHksIGZsb2F0JiB3aWR0aCwgZmxvYXQm
IGhlaWdodCkKIHsKLSAgICBpZiAoIWlzZmluaXRlKHgpIHwgIWlzZmluaXRlKHkpIHwgIWlzZmlu
aXRlKHdpZHRoKSB8ICFpc2Zpbml0ZShoZWlnaHQpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh4
KSB8ICFzdGQ6OmlzZmluaXRlKHkpIHwgIXN0ZDo6aXNmaW5pdGUod2lkdGgpIHwgIXN0ZDo6aXNm
aW5pdGUoaGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCF3aWR0aCAm
JiAhaGVpZ2h0KQpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmlzUG9pbnRJblBhdGgoY29uc3QgZmxvYXQgeCwgY29uc3QgZmxvYXQgeSwgY29uc3QK
ICAgICBGbG9hdFBvaW50IHBvaW50KHgsIHkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBz
dGF0ZSgpLm1fdHJhbnNmb3JtOwogICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0
bS5pbnZlcnNlKCkubWFwUG9pbnQocG9pbnQpOwotICAgIGlmICghaXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFpc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCisgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0
cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFdpbmRS
dWxlIHdpbmRSdWxlID0gUlVMRV9OT05aRVJPOwpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZShjb25zdCBmbG9hdCB4LCBj
b25zdCBmbG9hdCB5KQogICAgIEZsb2F0UG9pbnQgcG9pbnQoeCwgeSk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtIGN0bSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgRmxvYXRQb2ludCB0cmFuc2Zv
cm1lZFBvaW50ID0gY3RtLmludmVyc2UoKS5tYXBQb2ludChwb2ludCk7Ci0gICAgaWYgKCFpc2Zp
bml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIWlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQu
eSgpKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54KCkpIHx8ICFz
dGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgQ2FudmFzU3Ryb2tlU3R5bGVBcHBsaWVyIGFwcGxpZXIodGhpcyk7CkBAIC0xMzAy
LDggKzEzMDIsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhU
TUxJbWFnZUVsZW1lbnQqIGltYWdlLCBjb25zdCBGbG9hdFJlYwogCiAgICAgZWMgPSAwOwogCi0g
ICAgaWYgKCFpc2Zpbml0ZShkc3RSZWN0LngoKSkgfHwgIWlzZmluaXRlKGRzdFJlY3QueSgpKSB8
fCAhaXNmaW5pdGUoZHN0UmVjdC53aWR0aCgpKSB8fCAhaXNmaW5pdGUoZHN0UmVjdC5oZWlnaHQo
KSkKLSAgICAgICAgfHwgIWlzZmluaXRlKHNyY1JlY3QueCgpKSB8fCAhaXNmaW5pdGUoc3JjUmVj
dC55KCkpIHx8ICFpc2Zpbml0ZShzcmNSZWN0LndpZHRoKCkpIHx8ICFpc2Zpbml0ZShzcmNSZWN0
LmhlaWdodCgpKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZHN0UmVjdC54KCkpIHx8ICFzdGQ6
OmlzZmluaXRlKGRzdFJlY3QueSgpKSB8fCAhc3RkOjppc2Zpbml0ZShkc3RSZWN0LndpZHRoKCkp
IHx8ICFzdGQ6OmlzZmluaXRlKGRzdFJlY3QuaGVpZ2h0KCkpCisgICAgICAgIHx8ICFzdGQ6Omlz
ZmluaXRlKHNyY1JlY3QueCgpKSB8fCAhc3RkOjppc2Zpbml0ZShzcmNSZWN0LnkoKSkgfHwgIXN0
ZDo6aXNmaW5pdGUoc3JjUmVjdC53aWR0aCgpKSB8fCAhc3RkOjppc2Zpbml0ZShzcmNSZWN0Lmhl
aWdodCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFkc3RSZWN0LndpZHRoKCkgfHwg
IWRzdFJlY3QuaGVpZ2h0KCkpCkBAIC0xNjgwLDcgKzE2ODAsNyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKENhbnZhc0dyYWRpZW50
KiBncmFkaQogCiBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNyZWF0ZUxpbmVhckdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEs
IGZsb2F0IHkxLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzZmluaXRlKHgwKSB8
fCAhaXNmaW5pdGUoeTApIHx8ICFpc2Zpbml0ZSh4MSkgfHwgIWlzZmluaXRlKHkxKSkgeworICAg
IGlmICghc3RkOjppc2Zpbml0ZSh4MCkgfHwgIXN0ZDo6aXNmaW5pdGUoeTApIHx8ICFzdGQ6Omlz
ZmluaXRlKHgxKSB8fCAhc3RkOjppc2Zpbml0ZSh5MSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTY5Miw3ICsxNjkyLDcg
QEAgUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVMaW5lYXJHcmFkaWVudChmbG9hdAogCiBQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBm
bG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGlmICghaXNmaW5pdGUoeDApIHx8ICFpc2Zpbml0ZSh5MCkgfHwg
IWlzZmluaXRlKHIwKSB8fCAhaXNmaW5pdGUoeDEpIHx8ICFpc2Zpbml0ZSh5MSkgfHwgIWlzZmlu
aXRlKHIxKSkgeworICAgIGlmICghc3RkOjppc2Zpbml0ZSh4MCkgfHwgIXN0ZDo6aXNmaW5pdGUo
eTApIHx8ICFzdGQ6OmlzZmluaXRlKHIwKSB8fCAhc3RkOjppc2Zpbml0ZSh4MSkgfHwgIXN0ZDo6
aXNmaW5pdGUoeTEpIHx8ICFzdGQ6OmlzZmluaXRlKHIxKSkgewogICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xODM1LDcgKzE4MzUs
NyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVh
dGVJbWFnZURhdGEoZmxvYXQgc3csIGZsb2F0CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoIWlzZmluaXRlKHN3KSB8fCAhaXNm
aW5pdGUoc2gpKSB7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHN3KSB8fCAhc3RkOjppc2Zpbml0
ZShzaCkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGkK
ICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIGlmICghaXNmaW5pdGUoc3gpIHx8ICFpc2Zpbml0ZShzeSkgfHwgIWlzZmluaXRlKHN3KSB8
fCAhaXNmaW5pdGUoc2gpKSB7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHN4KSB8fCAhc3RkOjpp
c2Zpbml0ZShzeSkgfHwgIXN0ZDo6aXNmaW5pdGUoc3cpIHx8ICFzdGQ6OmlzZmluaXRlKHNoKSkg
ewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSogZGF0YSwgSW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghaXNmaW5pdGUoZHgpIHx8ICFpc2Zpbml0ZShkeSkgfHwgIWlzZmluaXRlKGRpcnR5WCkgfHwg
IWlzZmluaXRlKGRpcnR5WSkgfHwgIWlzZmluaXRlKGRpcnR5V2lkdGgpIHx8ICFpc2Zpbml0ZShk
aXJ0eUhlaWdodCkpIHsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZHgpIHx8ICFzdGQ6OmlzZmlu
aXRlKGR5KSB8fCAhc3RkOjppc2Zpbml0ZShkaXJ0eVgpIHx8ICFzdGQ6OmlzZmluaXRlKGRpcnR5
WSkgfHwgIXN0ZDo6aXNmaW5pdGUoZGlydHlXaWR0aCkgfHwgIXN0ZDo6aXNmaW5pdGUoZGlydHlI
ZWlnaHQpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yMTczLDkgKzIxNzMsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKCFzdGF0ZSgpLm1faW52ZXJ0aWJsZUNUTSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmICghaXNmaW5pdGUoeCkgfCAhaXNmaW5pdGUoeSkpCisgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHgpIHwgIXN0ZDo6aXNmaW5pdGUoeSkpCiAgICAgICAgIHJldHVybjsK
LSAgICBpZiAodXNlTWF4V2lkdGggJiYgKCFpc2Zpbml0ZShtYXhXaWR0aCkgfHwgbWF4V2lkdGgg
PD0gMCkpCisgICAgaWYgKHVzZU1heFdpZHRoICYmICghc3RkOjppc2Zpbml0ZShtYXhXaWR0aCkg
fHwgbWF4V2lkdGggPD0gMCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIGdyYWRpZW50
IHNpemUgaXMgemVybywgdGhlbiBwYWludCBub3RoaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAyY2E5NDNlZmE3Zjg0MTA3MWQw
MDhhZGQ5NzU0ZTJjY2E5ODUxNjUzLi45NDQ3Y2ZlNmM4Yjc3N2QwMGYxOGNmODRkNmM3ZjJmYjQ5
NWRkM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCiAgICAgICAg
IHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgLy8gTmFOIGFuZCBpbmZpbml0eSBhcmUgY29u
c2lkZXJlZCB2YWxpZCBieSBTdHJpbmc6OnRvRG91YmxlLCBidXQgbm90IHZhbGlkIGhlcmUuCi0g
ICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKICAgICAvLyBOdW1iZXJzIGFyZSBjb25z
aWRlcmVkIGZpbml0ZSBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZh
bHVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAppbmRleCA0ODEzNzUwNjRlZjI2MTU2NTYyOGU3NmY0OGEyMDgzMWU5ZGQ5M2Y4
Li40YmIyN2IxZjIwYzE2YmFiMGQ3MTE1NzZmZjdlN2RjOTM2MDM1ZTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC05
NjgsNyArOTY4LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0
aW9uKGZsb2F0IGN1cnJlbnRUaW1lKQogCiB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dDo6c2V0RHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCiB7Ci0gICAgc2V0QXR0cmlidXRlKG1heEF0
dHIsIFN0cmluZzo6bnVtYmVyKGlzZmluaXRlKGR1cmF0aW9uKSA/IGR1cmF0aW9uIDogMCkpOwor
ICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihzdGQ6OmlzZmluaXRlKGR1
cmF0aW9uKSA/IGR1cmF0aW9uIDogMCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggYTViM2ZiNTkzZGM1NWJjMzY1NmE4YWI4Nzgz
MjkzMDIwMjgzZGIwZS4uMzgxNGRlZDE2YjBmMDE0N2QyYzNkY2MzYzZhN2Q2ODg4ODhmN2JlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpyZXNldCgpCiAgICAgdXBkYXRlQ3VycmVu
dFRpbWVEaXNwbGF5KCk7CiAKICAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVy
LT5kdXJhdGlvbigpOwotICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAg
ICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlz
YWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKICAgICAgICAgbV90aW1l
bGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3Np
dGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggZmVk
MWY1NmY3NjU0MjI3YjEzNjI0MTQxZTJhOTRkYTg5OGQ5NWIyMC4uOWNhMmRlNzU5MWU5NDgyYTY5
YTVkNWIwYzEwMjNlOWU1NzMyMzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBNZWRp
YUNvbnRyb2xzQXBwbGU6OnJlc2V0KCkKICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRl
KCk7CiAKICAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OwotICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlz
YWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICBpZiAoc3RkOjpp
c2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKICAgICAgICAgbV90aW1lbGluZS0+c2V0RHVy
YXRpb24oZHVyYXRpb24pOwogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zaG93KCk7CiAg
ICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50
VGltZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmNwcAppbmRleCA2OWRjZTA2MzNiYTA5NmIwNjk5YjJmZmQzZjMyZTE0
OWMzY2ExNjJjLi5mZTcxNTgzNmMwOTA3ODFmMTIyYTUzZDcyNjc0NTQ2ZDgwMzZjNzliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKIAogdm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihmbG9hdCBk
dXJhdGlvbikKIHsKLSAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNm
aW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7CisgICAgc2V0QXR0cmlidXRlKG1heEF0
dHIsIFN0cmluZzo6bnVtYmVyKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAw
KSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtOTEyLDcgKzkxMiw3IEBAIHZv
aWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlc2V0KCkKICAgICAgICAgICAgIG1fZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKICAgICB9CiAgICAgZmxvYXQgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKLSAgICBpZiAoaXNmaW5pdGUoZHVyYXRp
b24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRp
YVNsaWRlclBhcnQpKSB7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2Ut
PnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQp
KSB7CiAgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgp
OwogICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgIG1f
ZnVsbHNjcmVlblRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4IGE0NGUzZTA1ZGY0ODMwMGE2
ZWY3YmZiZjk2ZTM1OWFmNmE1MWE2MDUuLmNmYjFjY2JhYThiYjFhNWFiMWIwM2ZjZjcwZTNlYzg4
N2VmNjE2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JCYXNpY1ZhbHVlOjp3cml0ZUpT
T04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdAogICAgICAgICAgICAgb3V0cHV0LT5hcHBl
bmQoZmFsc2VTdHJpbmcsIDUpOwogICAgIH0gZWxzZSBpZiAodHlwZSgpID09IFR5cGVOdW1iZXIp
IHsKICAgICAgICAgTnVtYmVyVG9MU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICAgICAgaWYgKCFp
c2Zpbml0ZShtX2RvdWJsZVZhbHVlKSkgeworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobV9k
b3VibGVWYWx1ZSkpIHsKICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKG51bGxTdHJpbmcsIDQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA5ODU5M2IyZmZiNDFlMDg5NjgxMjE3
NDdjYjY2YTYyZWZmMjRiOTBmLi5lZGY5MWU1MWE0ZGIwYjViNGRjYjYwNWZlOTZlOTUxNDU0NGI2
MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBkb3VibGUgQ2FjaGVkUmVzb3VyY2U6OmN1cnJlbnRBZ2Uo
KSBjb25zdAogICAgIC8vIFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZv
ciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQog
ICAgIGRvdWJsZSBkYXRlVmFsdWUgPSBtX3Jlc3BvbnNlLmRhdGUoKTsKLSAgICBkb3VibGUgYXBw
YXJlbnRBZ2UgPSBpc2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIG1fcmVzcG9uc2VU
aW1lc3RhbXAgLSBkYXRlVmFsdWUpIDogMDsKKyAgICBkb3VibGUgYXBwYXJlbnRBZ2UgPSBzdGQ6
OmlzZmluaXRlKGRhdGVWYWx1ZSkgPyBzdGQ6Om1heCgwLiwgbV9yZXNwb25zZVRpbWVzdGFtcCAt
IGRhdGVWYWx1ZSkgOiAwOwogICAgIGRvdWJsZSBhZ2VWYWx1ZSA9IG1fcmVzcG9uc2UuYWdlKCk7
Ci0gICAgZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gaXNmaW5pdGUoYWdlVmFsdWUpID8g
c3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKSA6IGFwcGFyZW50QWdlOworICAgIGRvdWJs
ZSBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IHN0ZDo6aXNmaW5pdGUoYWdlVmFsdWUpID8gc3RkOjpt
YXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKSA6IGFwcGFyZW50QWdlOwogICAgIGRvdWJsZSByZXNp
ZGVudFRpbWUgPSBjdXJyZW50VGltZSgpIC0gbV9yZXNwb25zZVRpbWVzdGFtcDsKICAgICByZXR1
cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2UgKyByZXNpZGVudFRpbWU7CiB9CkBAIC00MzcsMTUgKzQz
NywxNSBAQCBkb3VibGUgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKCkgY29uc3QK
IAogICAgIC8vIFJGQzI2MTYgMTMuMi40CiAgICAgZG91YmxlIG1heEFnZVZhbHVlID0gbV9yZXNw
b25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKLSAgICBpZiAoaXNmaW5pdGUobWF4QWdlVmFsdWUp
KQorICAgIGlmIChzdGQ6OmlzZmluaXRlKG1heEFnZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIG1h
eEFnZVZhbHVlOwogICAgIGRvdWJsZSBleHBpcmVzVmFsdWUgPSBtX3Jlc3BvbnNlLmV4cGlyZXMo
KTsKICAgICBkb3VibGUgZGF0ZVZhbHVlID0gbV9yZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91Ymxl
IGNyZWF0aW9uVGltZSA9IGlzZmluaXRlKGRhdGVWYWx1ZSkgPyBkYXRlVmFsdWUgOiBtX3Jlc3Bv
bnNlVGltZXN0YW1wOwotICAgIGlmIChpc2Zpbml0ZShleHBpcmVzVmFsdWUpKQorICAgIGRvdWJs
ZSBjcmVhdGlvblRpbWUgPSBzdGQ6OmlzZmluaXRlKGRhdGVWYWx1ZSkgPyBkYXRlVmFsdWUgOiBt
X3Jlc3BvbnNlVGltZXN0YW1wOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkp
CiAgICAgICAgIHJldHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlvblRpbWU7CiAgICAgZG91Ymxl
IGxhc3RNb2RpZmllZFZhbHVlID0gbV9yZXNwb25zZS5sYXN0TW9kaWZpZWQoKTsKLSAgICBpZiAo
aXNmaW5pdGUobGFzdE1vZGlmaWVkVmFsdWUpKQorICAgIGlmIChzdGQ6OmlzZmluaXRlKGxhc3RN
b2RpZmllZFZhbHVlKSkKICAgICAgICAgcmV0dXJuIChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZp
ZWRWYWx1ZSkgKiAwLjE7CiAgICAgLy8gSWYgbm8gY2FjaGUgaGVhZGVycyBhcmUgcHJlc2VudCwg
dGhlIHNwZWNpZmljYXRpb24gbGVhdmVzIHRoZSBkZWNpc2lvbiB0byB0aGUgVUEuIE90aGVyIGJy
b3dzZXJzIHNlZW0gdG8gb3B0IGZvciAwLgogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IGRmNTNhMTVlNjA2MGVmNmNjOGNkZGM5MDk4NjY0NThlMmVmODlkMGQu
LmE5NTI3ZTFiMDRhOThhMjY1ZmEwNTAwMDYwMmY2ZTdkZWNkZjc4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTMyMSwxNCArMzIxLDE0IEBAIEZsb2F0UmVjdCBET01XaW5kb3c6
OmFkanVzdFdpbmRvd1JlY3QoUGFnZSogcGFnZSwgY29uc3QgRmxvYXRSZWN0JiBwZW5kaW5nQ2hh
bmdlCiAgICAgRmxvYXRSZWN0IHdpbmRvdyA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7
CiAKICAgICAvLyBNYWtlIHN1cmUgd2UncmUgaW4gYSB2YWxpZCBzdGF0ZSBiZWZvcmUgYWRqdXN0
aW5nIGRpbWVuc2lvbnMuCi0gICAgQVNTRVJUKGlzZmluaXRlKHNjcmVlbi54KCkpKTsKLSAgICBB
U1NFUlQoaXNmaW5pdGUoc2NyZWVuLnkoKSkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShzY3JlZW4u
d2lkdGgoKSkpOwotICAgIEFTU0VSVChpc2Zpbml0ZShzY3JlZW4uaGVpZ2h0KCkpKTsKLSAgICBB
U1NFUlQoaXNmaW5pdGUod2luZG93LngoKSkpOwotICAgIEFTU0VSVChpc2Zpbml0ZSh3aW5kb3cu
eSgpKSk7Ci0gICAgQVNTRVJUKGlzZmluaXRlKHdpbmRvdy53aWR0aCgpKSk7Ci0gICAgQVNTRVJU
KGlzZmluaXRlKHdpbmRvdy5oZWlnaHQoKSkpOworICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKHNj
cmVlbi54KCkpKTsKKyAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShzY3JlZW4ueSgpKSk7CisgICAg
QVNTRVJUKHN0ZDo6aXNmaW5pdGUoc2NyZWVuLndpZHRoKCkpKTsKKyAgICBBU1NFUlQoc3RkOjpp
c2Zpbml0ZShzY3JlZW4uaGVpZ2h0KCkpKTsKKyAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZSh3aW5k
b3cueCgpKSk7CisgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUod2luZG93LnkoKSkpOworICAgIEFT
U0VSVChzdGQ6OmlzZmluaXRlKHdpbmRvdy53aWR0aCgpKSk7CisgICAgQVNTRVJUKHN0ZDo6aXNm
aW5pdGUod2luZG93LmhlaWdodCgpKSk7CiAKICAgICAvLyBVcGRhdGUgd2luZG93IHZhbHVlcyBp
ZiBuZXcgcmVxdWVzdGVkIHZhbHVlcyBhcmUgbm90IE5hTi4KICAgICBpZiAoIXN0ZDo6aXNuYW4o
cGVuZGluZ0NoYW5nZXMueCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmNwcAppbmRleCBjN2JjNmNhNTJhMmVmODhlZDJlZWRiOGJhNTY3ZGIzMWE2MDA2ZDAzLi4w
YzBmM2Q4NGRjNjEwZDJmODAxNzhlZDRlMmZjMWQ3MDRmYjkxODEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBE
YXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVJbnRlcm5hbChk
b3VibGUgbXMpCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yRGF0ZShkb3VibGUgbXMpCiB7CiAgICAgbV90eXBlID0gSW52YWxpZDsKLSAgICBpZiAoIWlz
ZmluaXRlKG1zKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFs
KHJvdW5kKG1zKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBi
b29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShkb3Vi
bGUgbXMpCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
RGF0ZVRpbWUoZG91YmxlIG1zKQogewogICAgIG1fdHlwZSA9IEludmFsaWQ7Ci0gICAgaWYgKCFp
c2Zpbml0ZShtcykpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1zID0gcm91bmQobXMpOwogICAgIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlk
bmlnaHRJbnRlcm5hbChwb3NpdGl2ZUZtb2QobXMsIG1zUGVyRGF5KSk7CkBAIC01NjUsNyArNTY1
LDcgQEAgYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRh
dGVUaW1lTG9jYWwoZG91YmxlIG1zKQogYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNv
bmRzU2luY2VFcG9jaEZvck1vbnRoKGRvdWJsZSBtcykKIHsKICAgICBtX3R5cGUgPSBJbnZhbGlk
OwotICAgIGlmICghaXNmaW5pdGUobXMpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hG
b3JEYXRlSW50ZXJuYWwocm91bmQobXMpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc4
LDcgKzU3OCw3IEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JNb250aChkb3VibGUgbXMpCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29u
ZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSBtcykKIHsKICAgICBtX3R5cGUgPSBJbnZhbGlkOwotICAg
IGlmICghaXNmaW5pdGUobXMpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0SW50ZXJuYWwo
cG9zaXRpdmVGbW9kKHJvdW5kKG1zKSwgbXNQZXJEYXkpKTsKICAgICBtX3R5cGUgPSBUaW1lOwpA
QCAtNTg3LDcgKzU4Nyw3IEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1Np
bmNlTWlkbmlnaHQoZG91YmxlIG1zKQogCiBib29sIERhdGVDb21wb25lbnRzOjpzZXRNb250aHNT
aW5jZUVwb2NoKGRvdWJsZSBtb250aHMpCiB7Ci0gICAgaWYgKCFpc2Zpbml0ZShtb250aHMpKQor
ICAgIGlmICghc3RkOjppc2Zpbml0ZShtb250aHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgbW9udGhzID0gcm91bmQobW9udGhzKTsKICAgICBkb3VibGUgZG91YmxlTW9udGggPSBwb3Np
dGl2ZUZtb2QobW9udGhzLCAxMik7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGljIGludCBvZmZz
ZXRUbzFzdFdlZWtTdGFydChpbnQgeWVhcikKIGJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxp
c2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcykKIHsKICAgICBtX3R5cGUgPSBJbnZh
bGlkOwotICAgIGlmICghaXNmaW5pdGUobXMpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtcyA9IHJvdW5kKG1zKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCAwYjczZTMwNjQ1ZGMyYjUxZjdkZTI2ODU5MDM2MTRk
YzljMGE5ZTk1Li5hNDdjMjA3OGFkOWYzMDUwNGE2MWU2NTUyZjAzOGZiYTVhN2NhOTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtNjgwLDcgKzY4MCw3IEBAIERlY2ltYWwg
RGVjaW1hbDo6Zmxvb3IoKSBjb25zdAogCiBEZWNpbWFsIERlY2ltYWw6OmZyb21Eb3VibGUoZG91
YmxlIGRvdWJsZVZhbHVlKQogewotICAgIGlmIChpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAg
aWYgKHN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4gZnJvbVN0cmlu
ZyhTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpOwogCiAgICAg
aWYgKHN0ZDo6aXNpbmYoZG91YmxlVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3Rl
bS5oCmluZGV4IDk0M2NjN2I2MGM2NjkzYmU0ZjM0YWI5NzFjYmZkZTMxZmNiNDM5YmMuLjcxYmYz
MjdlNjA5ZTA2ZDgyMGJjNTAzMjkwNTExZDliYzQxYWM2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3lzdGVtLmgKQEAgLTE4Miw3ICsxODIsNyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmKTsKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKIGlubGluZSBkb3VibGUgaW52YWxpZEZpbGVUaW1lKCkg
eyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsgfQotaW5s
aW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRvdWJsZSB0aW1lKSB7IHJldHVybiBpc2Zpbml0ZSh0
aW1lKTsgfQoraW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRvdWJsZSB0aW1lKSB7IHJldHVy
biBzdGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFt
ZSBzaG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCiBTdHJpbmcgb3Bl
blRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCAz
MmQwNzgzZDA4OTUxZTljOTdhOGQyNDA2OGI5ZmMzYTFlZDJkZjQ4Li4zODIyYTE0NzkzYzhiOTUw
YWFhZDM5OWI1ZDM0NmQ2MjZhNmUyYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtOTEwLDcgKzkxMCw3IEBAIFN0cmluZyBsb2NhbGl6ZWRN
ZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBTdHJpbmcg
bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgdGltZSkKIHsKLSAgICBpZiAoIWlz
ZmluaXRlKHRpbWUpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKICAgICAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoImluZGVmaW5pdGUgdGltZSIsICJhY2Nlc3NpYmlsaXR5IGhlbHAg
dGV4dCBmb3IgYW4gaW5kZWZpbml0ZSBtZWRpYSBjb250cm9sbGVyIHRpbWUgdmFsdWUiKTsKIAog
ICAgIGludCBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8aW50PihmYWJzZih0aW1lKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5jcHAKaW5kZXggNjVkNzJjNWQ1MWU0MDU4YmVlMTM2YjBjNjk3ODZhMGQwOWI2NzMwYS4u
YTY3MzcxZDYzODU1MDYwMGM5ODI5MmI2OTc0YjQ3NjNlZTI1OGU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChj
YWlyb190KiBjciwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgSW50U2l6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY2Fpcm9fb3BlcmF0b3JfdCBvcCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBBdm9pZCBOYU4KLSAgICBpZiAoIWlz
ZmluaXRlKHBoYXNlLngoKSkgfHwgIWlzZmluaXRlKHBoYXNlLnkoKSkpCisgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKHBoYXNlLngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUocGhhc2UueSgpKSkKICAgICAg
ICByZXR1cm47CiAKICAgICBjYWlyb19zYXZlKGNyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmluZGV4IDVlOTQ2NTMxYWVl
NWI5Mzk3YzkzN2ViYjllODRlMWJiYWM2NmIzNzMuLjVmYWM1ZjBiOWVlMDJkN2U5Y2FhNDNiN2Fm
MjhmYThhNjY2ZGZiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUGF0aDo6
YWRkQXJjKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGZsb2F0IHIsIGZsb2F0IHN0YXJ0QW5nbGUsIGZs
b2F0IGVuZEFuZ2xlCiB7CiAgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0NDkKICAgICAvLyBjYWlyb19hcmMoKSBmdW5jdGlvbnMgaGFuZyBvciBjcmFzaCB3
aGVuIHBhc3NlZCBpbmYgYXMgcmFkaXVzIG9yIHN0YXJ0L2VuZCBhbmdsZQotICAgIGlmICghaXNm
aW5pdGUocikgfHwgIWlzZmluaXRlKHN0YXJ0QW5nbGUpIHx8ICFpc2Zpbml0ZShlbmRBbmdsZSkp
CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHIpIHx8ICFzdGQ6OmlzZmluaXRlKHN0YXJ0QW5nbGUp
IHx8ICFzdGQ6OmlzZmluaXRlKGVuZEFuZ2xlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2Fp
cm9fdCogY3IgPSBlbnN1cmVQbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpOwpAQCAtMzMwLDcgKzMz
MCw3IEBAIEZsb2F0UmVjdCBQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3QoU3Ryb2tlU3R5bGVBcHBs
aWVyKiBhcHBsaWVyKSBjb25zdAogCiBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25zdAogewotICAgIGlmIChpc051bGwoKSB8fCAh
aXNmaW5pdGUocG9pbnQueCgpKSB8fCAhaXNmaW5pdGUocG9pbnQueSgpKSkKKyAgICBpZiAoaXNO
dWxsKCkgfHwgIXN0ZDo6aXNmaW5pdGUocG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZShwb2lu
dC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9y
bVBhdGgoKS0+Y29udGV4dCgpOwogICAgIGNhaXJvX2ZpbGxfcnVsZV90IGN1ciA9IGNhaXJvX2dl
dF9maWxsX3J1bGUoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0aENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAKaW5kZXggNjFlNjgxNzY1NzZiZDk4YTk0ZjU2NzEyMDIxY2IyZjYwYjViNjRm
Ni4uMGRiYzY4M2MzOThjNzFkNzMxMmFiYTc5MjMwNjA2NDA5ZDlmYWFlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCkBAIC0yODUsNyArMjg1
LDcgQEAgdm9pZCBQYXRoOjpjbG9zZVN1YnBhdGgoKQogdm9pZCBQYXRoOjphZGRBcmMoY29uc3Qg
RmxvYXRQb2ludCYgcCwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29sIGNsb2Nrd2lz
ZSkKIHsKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTE4OTIzMz4gQ0dQ
YXRoQWRkQXJjIGhhbmdzIG9yIGNyYXNoZXMgd2hlbiBwYXNzZWQgaW5mIGFzIHN0YXJ0IG9yIGVu
ZCBhbmdsZQotICAgIGlmIChpc2Zpbml0ZShzYSkgJiYgaXNmaW5pdGUoZWEpKQorICAgIGlmIChz
dGQ6OmlzZmluaXRlKHNhKSAmJiBzdGQ6OmlzZmluaXRlKGVhKSkKICAgICAgICAgQ0dQYXRoQWRk
QXJjKGVuc3VyZVBsYXRmb3JtUGF0aCgpLCAwLCBwLngoKSwgcC55KCksIHIsIHNhLCBlYSwgY2xv
Y2t3aXNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHU3RyZWFtZXIuY3BwCmluZGV4IDA1ZTUzMTZhNTU5MTJlOTA2MmQxNDFiM2NmN2M2
NzAwZDA4YzU3MTkuLjQ3YTZhZmNhMDY2OTBlYWY1YTNkYzYyNzYyOGU3MzgyNzk5MjhjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXI6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiAKIFN0cmluZyBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkKIHsKLSAg
ICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKICAg
ICAgICAgdGltZSA9IDA7CiAgICAgaW50IHNlY29uZHMgPSBmYWJzZih0aW1lKTsKICAgICBpbnQg
aG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhdGhPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhdGhPcGVuVkcuY3BwCmluZGV4IGExZmUzNmE1ZGE3
ZGZmODVjYzEwODBmN2E4MGZjZGY3ZDBlZDhiNzYuLjkzMTRiYTc4NjVjN2YyNzY5MzNjNDE0NTVh
NDM5MGExYTcwYjgwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW52Zy9QYXRoT3BlblZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvUGF0aE9wZW5WRy5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFBh
dGg6OmFkZEFyYyhjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cywgZmxvYXQg
c3RhcnRBbmdsZSwgZmxvYQogICAgIC8vIFRoZSBPcGVuVkcgc3BlYyBzYXlzIG5vdGhpbmcgYWJv
dXQgaW5mIGFzIHJhZGl1cyBvciBzdGFydC9lbmQgYW5nbGUuCiAgICAgLy8gV2ViS2l0IHNlZW1z
IHRvIHBhc3MgdGhvc2UgKGUuZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDQ5KSwKICAgICAvLyBzbyBhYm9ydCBpbnN0ZWFkIG9mIHJpc2tpbmcgdW5kZWZpbmVk
IGJlaGF2aW9yLgotICAgIGlmICghaXNmaW5pdGUocmFkaXVzKSB8fCAhaXNmaW5pdGUoc3RhcnRB
bmdsZSkgfHwgIWlzZmluaXRlKGVuZEFuZ2xlKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUocmFk
aXVzKSB8fCAhc3RkOjppc2Zpbml0ZShzdGFydEFuZ2xlKSB8fCAhc3RkOjppc2Zpbml0ZShlbmRB
bmdsZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdGhlIEhU
TUwgNSBzcGVjIGRlZmluZXMgdGhlIGFuZ2xlIGFzIGdvaW5nIGNsb2Nrd2lzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhVXRpbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYVV0aWxzLmgKaW5kZXggMzU4
Zjg2ZDExNjk5NWQwZTMxNDRlZTQxZjgwOGYyMDQ3MjcxZGIzNi4uMjA0NmExYjViZWVmMTJjOTEz
NjIxODc1MWM3MTk0MWZmYTg1YzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhVXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1NraWFVdGlscy5oCkBAIC01NCwxMiArNTQsMTIgQEAgQ29sb3IgU2tQ
TUNvbG9yVG9XZWJDb3JlQ29sb3IoU2tQTUNvbG9yKTsKIC8vIFNraWEgaGFzIHByb2JsZW1zIHdo
ZW4gcGFzc2VkIGluZmluaXRlLCBldGMgZmxvYXRzLCBmaWx0ZXIgdGhlbSB0byAwLgogaW5saW5l
IFNrU2NhbGFyIFdlYkNvcmVGbG9hdFRvU2tTY2FsYXIoZmxvYXQgZikKIHsKLSAgICByZXR1cm4g
U2tGbG9hdFRvU2NhbGFyKGlzZmluaXRlKGYpID8gZiA6IDApOworICAgIHJldHVybiBTa0Zsb2F0
VG9TY2FsYXIoc3RkOjppc2Zpbml0ZShmKSA/IGYgOiAwKTsKIH0KIAogaW5saW5lIFNrU2NhbGFy
IFdlYkNvcmVEb3VibGVUb1NrU2NhbGFyKGRvdWJsZSBkKQogewotICAgIHJldHVybiBTa0RvdWJs
ZVRvU2NhbGFyKGlzZmluaXRlKGQpID8gZCA6IDApOworICAgIHJldHVybiBTa0RvdWJsZVRvU2Nh
bGFyKHN0ZDo6aXNmaW5pdGUoZCkgPyBkIDogMCk7CiB9CiAKIC8vIENvbXB1dGVzIHRoZSBzbWFs
bGVzdCByZWN0YW5nbGUgdGhhdCwgd2hpY2ggd2hlbiBkcmF3biB0byB0aGUgZ2l2ZW4gY2FudmFz
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuY3BwCmluZGV4IDM1YzNkNzc3ODhmODZkZTgwNDViNmNjNzBkMjg2YTdkMWYxZjBkNzAu
LmRmMTg0NzNhNmYwYzU4OGNkOGYyZmMwYmM1ZGQ5ZjE1Y2RmNDIxMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKQEAg
LTU3NCw3ICs1NzQsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmJ1ZmZlcmVkKCkgY29ucwogZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QK
IHsKICAgICAvLyBpbmZpbml0ZSBkdXJhdGlvbiBtZWFucyBsaXZlIHN0cmVhbQotICAgIHJldHVy
biAhaXNmaW5pdGUoZHVyYXRpb24oKSkgPyAwIDogbWF4VGltZUxvYWRlZCgpOworICAgIHJldHVy
biAhc3RkOjppc2Zpbml0ZShkdXJhdGlvbigpKSA/IDAgOiBtYXhUaW1lTG9hZGVkKCk7CiB9CiAK
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Om1heFRpbWVM
b2FkZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xv
Y2FsaXplZFN0cmluZ3NHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2Fs
aXplZFN0cmluZ3NHdGsuY3BwCmluZGV4IGFlM2E0ZGViZjBlYTllMDRiMDIzYTEwMTM4OTJlNWYy
MGY2Nzg0NDMuLmIwMmNhYTJmOWRmMjUyZjY5MjViYTIwMzRlNGNhNDU5MWJjMTViNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5j
cHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVu
dEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFtZSkKIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhVGlt
ZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KF8oImluZGVmaW5pdGUgdGltZSIpKTsKIAogICAgIGludCBzZWNvbmRzID0gc3RhdGljX2Nh
c3Q8aW50PihhYnModGltZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bQppbmRleCBkYzM4NTU2NDBlMWU4Y2FmZDU0ODMxNTRiNDE3MzViM2NlMThlMmY0Li5jMjY1NDg0
YTU0MWRiOTFkZDFjNWFhNGNhMjFhODM2OWU2OGNkZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVE
V2luZG93Q29udHJvbGxlci5tbQpAQCAtNTg3LDcgKzU4Nyw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
dGltZVRvU3RyaW5nKGRvdWJsZSB0aW1lKQogewogICAgIEFTU0VSVF9BUkcodGltZSwgdGltZSA+
PSAwKTsKIAotICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAgaWYgKCFzdGQ6OmlzZmluaXRl
KHRpbWUpKQogICAgICAgICB0aW1lID0gMDsKIAogICAgIGludCBzZWNvbmRzID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChhYnModGltZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBhZTQ2OTA2Mjc4
OTUzM2IzYmJhMGRlNmRiNWQ4YmI2N2EzZjA2MTNiLi45NmMxYTMxY2RmNjJhZTcxZTYwNGZhZmYx
YWI1NzAyNTM5NWMxNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHN0
YXRpYyBkb3VibGUgcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzLCBjb25zdCBBdG9taWNTCiAgICAgLy8gU3VuZGF5LCAwNi1Ob3YtOTQgMDg6NDk6Mzcg
R01UIDsgUkZDIDg1MCwgb2Jzb2xldGVkIGJ5IFJGQyAxMDM2CiAgICAgLy8gU3VuIE5vdiAgNiAw
ODo0OTozNyAxOTk0ICAgICAgIDsgQU5TSSBDJ3MgYXNjdGltZSgpIGZvcm1hdAogICAgIGRvdWJs
ZSBkYXRlSW5NaWxsaXNlY29uZHMgPSBwYXJzZURhdGUoaGVhZGVyVmFsdWUpOwotICAgIGlmICgh
aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNvbmRzKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0
ZUluTWlsbGlzZWNvbmRzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgcmV0dXJuIGRhdGVJbk1pbGxpc2Vjb25kcyAvIDEwMDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6ZWRTdHJp
bmdzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemVkU3RyaW5nc1F0
LmNwcAppbmRleCA5MTQxZjg2ODQ4MzNlNWU5ZjEzOGU5ZGM5NzgwYjExNzFiMDNlZjIxLi40MWY2
OTM5MmJhNWE4OTU5NzhjNDUyMzRmNzlhNWRmNjVmZTMwY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6ZWRTdHJpbmdzUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0xvY2FsaXplZFN0cmluZ3NRdC5jcHAKQEAgLTU4NSw3ICs1ODUs
NyBAQCBTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0
cmluZyYgbmFtZSkKIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0
IHRpbWUpCiB7Ci0gICAgaWYgKCFpc2Zpbml0ZSh0aW1lKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodGltZSkpCiAgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIkluZGVmaW5pdGUgdGltZSIsICJNZWRpYSB0aW1lIGRlc2NyaXB0aW9uIik7CiAK
ICAgICBpbnQgc2Vjb25kcyA9IChpbnQpZmFic2YodGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAwMTZhZWZlYTNiNTFlMzRmZDli
N2RhZDM3MWM1ZjhlNmU1MDQ3MjM5Li42YjNjMWI4Y2U1Mzk2MWFiY2M2ZDE2MDYwNWQ1MzU2ZmVj
OGMzNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAKQEAgLTk2MSwxMSArOTYxLDExIEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJlc29s
dmVGbGV4aWJsZUxlbmd0aHMoRmxleFNpZ24gZmxleFNpZ24sIGNvbnN0IE9yZGVyZWRGCiAgICAg
ICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZENoaWxkU2l6ZSA9IHByZWZlcnJlZE1haW5BeGlz
Q29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgICAgIExheW91dFVuaXQgY2hp
bGRTaXplID0gcHJlZmVycmVkQ2hpbGRTaXplOwogICAgICAgICAgICAgZG91YmxlIGV4dHJhU3Bh
Y2UgPSAwOwotICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgdG90YWxG
bGV4R3JvdyA+IDAgJiYgZmxleFNpZ24gPT0gUG9zaXRpdmVGbGV4aWJpbGl0eSAmJiBpc2Zpbml0
ZSh0b3RhbEZsZXhHcm93KSkKKyAgICAgICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAw
ICYmIHRvdGFsRmxleEdyb3cgPiAwICYmIGZsZXhTaWduID09IFBvc2l0aXZlRmxleGliaWxpdHkg
JiYgc3RkOjppc2Zpbml0ZSh0b3RhbEZsZXhHcm93KSkKICAgICAgICAgICAgICAgICBleHRyYVNw
YWNlID0gYXZhaWxhYmxlRnJlZVNwYWNlICogY2hpbGQtPnN0eWxlKCktPmZsZXhHcm93KCkgLyB0
b3RhbEZsZXhHcm93OwotICAgICAgICAgICAgZWxzZSBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlIDwg
MCAmJiB0b3RhbFdlaWdodGVkRmxleFNocmluayA+IDAgJiYgZmxleFNpZ24gPT0gTmVnYXRpdmVG
bGV4aWJpbGl0eSAmJiBpc2Zpbml0ZSh0b3RhbFdlaWdodGVkRmxleFNocmluaykpCisgICAgICAg
ICAgICBlbHNlIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPCAwICYmIHRvdGFsV2VpZ2h0ZWRGbGV4
U2hyaW5rID4gMCAmJiBmbGV4U2lnbiA9PSBOZWdhdGl2ZUZsZXhpYmlsaXR5ICYmIHN0ZDo6aXNm
aW5pdGUodG90YWxXZWlnaHRlZEZsZXhTaHJpbmspKQogICAgICAgICAgICAgICAgIGV4dHJhU3Bh
Y2UgPSBhdmFpbGFibGVGcmVlU3BhY2UgKiBjaGlsZC0+c3R5bGUoKS0+ZmxleFNocmluaygpICog
cHJlZmVycmVkQ2hpbGRTaXplIC8gdG90YWxXZWlnaHRlZEZsZXhTaHJpbms7Ci0gICAgICAgICAg
ICBpZiAoaXNmaW5pdGUoZXh0cmFTcGFjZSkpCisgICAgICAgICAgICBpZiAoc3RkOjppc2Zpbml0
ZShleHRyYVNwYWNlKSkKICAgICAgICAgICAgICAgICBjaGlsZFNpemUgKz0gcm91bmRlZExheW91
dFVuaXQoZXh0cmFTcGFjZSk7CiAKICAgICAgICAgICAgIExheW91dFVuaXQgYWRqdXN0ZWRDaGls
ZFNpemUgPSBhZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY2hpbGQsIGNoaWxkU2l6ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0No
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xz
Q2hyb21pdW0uY3BwCmluZGV4IGQ1MDljNDhhMDc1M2UxNDYzZWZiNTcyMjljOTg3NjFhNDkxNTg3
NDQuLmIzNDBmNTExN2E0YTM2NDYzMTYwMjI5YTU4MzBjNzdkMjUzMDhmM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21p
dW0uY3BwCkBAIC00MjEsOSArNDIxLDkgQEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21p
dW06OmFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkKIAogc3Rh
dGljIFN0cmluZyBmb3JtYXRDaHJvbWl1bU1lZGlhQ29udHJvbHNUaW1lKGZsb2F0IHRpbWUsIGZs
b2F0IGR1cmF0aW9uKQogewotICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKHRpbWUpKQogICAgICAgICB0aW1lID0gMDsKLSAgICBpZiAoIWlzZmluaXRlKGR1
cmF0aW9uKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pKQogICAgICAgICBkdXJh
dGlvbiA9IDA7CiAgICAgaW50IHNlY29uZHMgPSBzdGF0aWNfY2FzdDxpbnQ+KGZhYnNmKHRpbWUp
KTsKICAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMGRjNTJmOGUyYTk3NTM3NGI4OGYxZTI3ZjU5
MzQ0NDNiNDViZTkzMi4uNzU5NzRlNjNlYzNhMTU3NDNhYWQ2YTFiYzg5OWYyMTAxOTExOGEyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC00OTEsNyArNDkx
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLAogCiBTdHJpbmcgUmVuZGVyVGhlbWU6OmZvcm1h
dE1lZGlhQ29udHJvbHNUaW1lKGZsb2F0IHRpbWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc2Zpbml0
ZSh0aW1lKSkKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCiAgICAgICAgIHRpbWUgPSAw
OwogICAgIGludCBzZWNvbmRzID0gKGludClmYWJzZih0aW1lKTsKICAgICBpbnQgaG91cnMgPSBz
ZWNvbmRzIC8gKDYwICogNjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKaW5kZXggY2VmYzNjMTIwZTE5ODhkZWJhYTcyMTZlMTNjYTdjMDdhOTkz
NGIyMS4uNjZlNDg1NjNmNmY5YjI2NDJlN2FlMDQwOWVhOTdhZjIzNzk0MGNhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xMjkwLDgg
KzEyOTAsOCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250U2l6ZShmbG9hdCBzaXplKQogICAg
IC8vIHNpemUgbXVzdCBiZSBzcGVjaWZpZWRTaXplIGlmIFRleHQgQXV0b3NpemluZyBpcyBlbmFi
bGVkLCBidXQgY29tcHV0ZWRTaXplIGlmIHRleHQKICAgICAvLyB6b29tIGlzIGVuYWJsZWQgKGlm
IG5laXRoZXIgaXMgZW5hYmxlZCBpdCdzIGlycmVsZXZhbnQgYXMgdGhleSdyZSBwcm9iYWJseSB0
aGUgc2FtZSkuCiAKLSAgICBBU1NFUlQoaXNmaW5pdGUoc2l6ZSkpOwotICAgIGlmICghaXNmaW5p
dGUoc2l6ZSkgfHwgc2l6ZSA8IDApCisgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUoc2l6ZSkpOwor
ICAgIGlmICghc3RkOjppc2Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkKICAgICAgICAgc2l6ZSA9
IDA7CiAgICAgZWxzZQogICAgICAgICBzaXplID0gbWluKG1heGltdW1BbGxvd2VkRm9udFNpemUs
IHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCmluZGV4IGY5MDhlMGRiMzQw
ZThjZWVlM2JiNGZmZWJhMmU2ZjhlZDlmOWFlZWYuLjZmMDk3MDhmNzA5ZWE3YzdlMWRiZjQyMzZj
MmY2YTU0YzEwM2NmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAKQEAgLTQ3
Myw3ICs0NzMsNyBAQCBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMoZmxv
YXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQbwogICAgICAgICBmbG9hdCBlbmRU
aGV0YSA9IHRoZXRhMSArIChpICsgMSkgKiB0aGV0YUFyYyAvIHNlZ21lbnRzOwogCiAgICAgICAg
IGZsb2F0IHQgPSAoOCAvIDYuZikgKiB0YW5mKDAuMjVmICogKGVuZFRoZXRhIC0gc3RhcnRUaGV0
YSkpOwotICAgICAgICBpZiAoIWlzZmluaXRlKHQpKQorICAgICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZsb2F0IHNpblN0YXJ0
VGhldGEgPSBzaW5mKHN0YXJ0VGhldGEpOwogICAgICAgICBmbG9hdCBjb3NTdGFydFRoZXRhID0g
Y29zZihzdGFydFRoZXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4
IDljYmNmZjc4NGY3MTBlNmYzNGViYWZhZWY1NGE5NWE2NGUzOGNjY2EuLjZiMDk1YTg1ZTA0YzU2
MTdiZDYzN2YwNTU3NjVhOWI0NzFkZjM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rp
b25zLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIFZhbHVlIEZ1bkNlaWxpbmc6OmV2YWx1YXRlKCkg
Y29uc3QKIGRvdWJsZSBGdW5Sb3VuZDo6cm91bmQoZG91YmxlIHZhbCkKIHsKICAgICBpZiAoIXN0
ZDo6aXNuYW4odmFsKSAmJiAhc3RkOjppc2luZih2YWwpKSB7Ci0gICAgICAgIGlmIChzaWduYml0
KHZhbCkgJiYgdmFsID49IC0wLjUpCisgICAgICAgIGlmIChzdGQ6OnNpZ25iaXQodmFsKSAmJiB2
YWwgPj0gLTAuNSkKICAgICAgICAgICAgIHZhbCAqPSAwOyAvLyBuZWdhdGl2ZSB6ZXJvCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHZhbCA9IGZsb29yKHZhbCArIDAuNSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhWYWx1ZS5jcHAKaW5kZXggZjkyY2JjODFiMjE3MzBkNTExZGU4NTk2MmI3OGY5NmNiZWE2
YTg4OS4uZWQ0M2Y0OGJlZWJkYmQwZjE4NGVlYTc1N2FiZTMzNWQ0ODg0ZjlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFZhbHVlLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFN0cmluZyBWYWx1ZTo6dG9T
dHJpbmcoKSBjb25zdAogICAgICAgICAgICAgaWYgKG1fbnVtYmVyID09IDApCiAgICAgICAgICAg
ICAgICAgcmV0dXJuICIwIjsKICAgICAgICAgICAgIGlmIChzdGQ6OmlzaW5mKG1fbnVtYmVyKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmJpdChtX251bWJlcikgPyAiLUluZmluaXR5IiA6
ICJJbmZpbml0eSI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChtX251bWJl
cikgPyAiLUluZmluaXR5IiA6ICJJbmZpbml0eSI7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
OjpudW1iZXIobV9udW1iZXIpOwogICAgICAgICBjYXNlIEJvb2xlYW5WYWx1ZToKICAgICAgICAg
ICAgIHJldHVybiBtX2Jvb2wgPyAidHJ1ZSIgOiAiZmFsc2UiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA4NWEwY2E0N2EyY2QwZmYy
MWY5NGM5ZDBhNDU2MTRlNzUxMTBhYWRiLi4yNjQ2OWQwZGVmZTg1NzE1ZTZjZjdkOTg1YWM4NWVi
OGM3MmI0YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6Y3JlYXRlSFVEV2luZG93KCkKIAogc3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxv
YXQgdGltZSkKIHsKLSAgICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAgIGlmICghc3RkOjppc2Zp
bml0ZSh0aW1lKSkKICAgICAgICAgdGltZSA9IDA7CiAgICAgaW50IHNlY29uZHMgPSBmYWJzZih0
aW1lKTsgCiAgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsK
</data>
<flag name="review"
          id="208412"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>