<?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>211140</bug_id>
          
          <creation_ts>2020-04-28 12:24:57 -0700</creation_ts>
          <short_desc>[JSC] Align upon the name isCallable instead of isFunction</short_desc>
          <delta_ts>2020-04-29 15:16:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211037</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1646607</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 12:24:57 -0700</bug_when>
    <thetext>[JSC] Align upon the name isCallable instead of isFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646609</commentid>
    <comment_count>1</comment_count>
      <attachid>397868</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 12:28:07 -0700</bug_when>
    <thetext>Created attachment 397868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646615</commentid>
    <comment_count>2</comment_count>
      <attachid>397870</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 12:31:39 -0700</bug_when>
    <thetext>Created attachment 397870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646617</commentid>
    <comment_count>3</comment_count>
      <attachid>397870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-28 12:33:38 -0700</bug_when>
    <thetext>Comment on attachment 397870
Patch

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

r=me assuming the EWS confirms this compiles everywhere

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:894
&gt;      if (!isCell())
&gt;          return false;
&gt; -    return asCell()-&gt;isFunction(vm);
&gt; +    return asCell()-&gt;isCallable(vm);

I really like &amp;&amp; for functions like this:

    return isCell() &amp;&amp; asCell()-&gt;isCallable(vm);

Obviously that has nothing to do with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646671</commentid>
    <comment_count>4</comment_count>
      <attachid>397885</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-28 14:16:10 -0700</bug_when>
    <thetext>Created attachment 397885
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646685</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-28 14:51:43 -0700</bug_when>
    <thetext>Committed r260848: &lt;https://trac.webkit.org/changeset/260848&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397885.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646687</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-28 14:52:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/62548189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647166</commentid>
    <comment_count>7</comment_count>
      <attachid>397885</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-29 14:52:48 -0700</bug_when>
    <thetext>Comment on attachment 397885
Patch for landing

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:17902
&gt; +    LValue isCallable(LValue cell, SpeculatedType type = SpecFullTop)

This is wrong, this one really is &quot;isFunction&quot;.

You could rename this to &quot;isJSFunction&quot; or keep it as &quot;isFunction&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647179</commentid>
    <comment_count>8</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-29 15:16:45 -0700</bug_when>
    <thetext>Committed r260919: &lt;https://trac.webkit.org/changeset/260919&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397868</attachid>
            <date>2020-04-28 12:28:07 -0700</date>
            <delta_ts>2020-04-28 12:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211140-20200428122807.patch</filename>
            <type>text/plain</type>
            <size>49953</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmUwMjc1Zjk3OWU4M2FjMDUxNmM3NGMyYTc2ZmQxZTFjNTU3ZTc0Li42OGIwMDA2NDhjM2M1YWI3
ZTFjYjJhNmZmM2UzZTIzNjM3NDkyZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAyMC0wNC0yOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQWxpZ24gdXBvbiB0aGUgbmFtZSBpc0NhbGxhYmxlIGlu
c3RlYWQgb2YgaXNGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjExMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9sbG93LXVwIHRvIHIyNjA3MjIuIFVzYWdlIGlzIG5vdyBjbGVhbmx5IHNl
cGFyYXRlZCBiZXR3ZWVuIGlzRnVuY3Rpb24gLyBnZXRDYWxsRGF0YSwKKyAgICAgICAgYnV0IHRo
ZSBuYW1lIGlzQ2FsbGFibGUgaXMgc3RpbGwgY2xlYXJlciB0aGFuIGlzRnVuY3Rpb24gc28gbGV0
J3MgZmxpcCB0aGF0IGFmdGVyIGFsbC4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByZWZpbGxTdGFja1RE
WlZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
cHVzaFREWlZhcmlhYmxlcyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVQcm9taXNlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNPYmplY3RPck51
bGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJ1aWxkVHlwZU9m
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNDYWxsYWJsZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzRnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpv
cGVyYXRpb25UeXBlT2ZPYmplY3RBc1R5cGVvZlR5cGUpOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAo
SlNDOjplcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5n
KToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlND
OjpnZXRGdW5jdGlvblJlYWxtKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmlzQ2FsbGFibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0Z1bmN0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQ2FsbGFi
bGUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjph
cHBlbmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9G
dW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0
dGVyKToKKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpq
c1R5cGVTdHJpbmdGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlT3JOdWxs
KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9SdW50aW1lVHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OnJ1bnRpbWVUeXBlRm9yVmFsdWUpOgorICAgICAgICAqIHRvb2xzL0pTRG9s
bGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplKToKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpmdW5jdGlvblJldHVyblR5cGVGb3IpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkhhc0Jhc2lj
QmxvY2tFeGVjdXRlZCk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlv
bkNvdW50KToKKyAgICAgICAgKiB3YXNtL1dhc21JbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Okluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIpOgorICAgICAgICAqIHdhc20vV2Fz
bU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25JdGVyYXRlUmVz
dWx0cyk6CisgICAgICAgIChKU0M6Oldhc206Om9wZXJhdGlvbldhc21SZWZGdW5jKToKKyAgICAg
ICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTA0LTI4ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTnVtYmVyQ29uc3RydWN0b3Ig
c2hvdWxkIGFjY2VwdCBCaWdJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGUzZmFiYjYxNzhiMjYzZWJjZjk1
ZWM4MzYzNzc3OWZlOWEzOGQxLi40MWY4ODgyMDEyYzJjYzdjYzI0YmNlODcwZDU1NzcxYmU1ZjYy
NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDQtMjggIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEFsaWduIHVwb24g
dGhlIG5hbWUgaXNDYWxsYWJsZSBpbnN0ZWFkIG9mIGlzRnVuY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTE0MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0
ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxUPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dmVydGVyPElETFNjaGVkdWxlZEFjdGlvbj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjp3aGVu
UHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnF1ZXVlTWljcm90YXNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnF1ZXVlTWljcm90YXNrKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3Ry
ZWFtOjp0ZWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlcjo6aW52b2tlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNhbGxJbldvcmxkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlTWVk
aWFDb250cm9sc0luamVjdGVkU2NyaXB0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlck1ldGFEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvbmVBcnJheUJ1ZmZlcik6CisgICAgICAgICogd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorCiAyMDIwLTA0LTI4ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2gg
aW4gRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kIHZpYSBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVt
b3ZlTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAzNzVlMmFkY2NmZTVhZTI3YWUzNzBhYjhkZWVkNmQyZDMyNzhl
OGQ5Li5kMWNmYmFmNTgyMmViNDZjNjgwODgwMjQ2N2MwNDA1OGZlZTIxNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTI4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBBbGlnbiB1cG9uIHRoZSBuYW1lIGlzQ2FsbGFi
bGUgaW5zdGVhZCBvZiBpc0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTExNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBKU09iamVjdDo6aGFzTWV0aG9kKToKKwogMjAyMC0w
NC0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBB
ZG9wdCBrTVRTdXBwb3J0Tm90aWZpY2F0aW9uX1Nob3VsZFBsYXlIRFJWaWRlb0NoYW5nZWQgbm90
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5k
ZXggMjQwMTc5MTZlNzUxNzZiODNlMzVkOWVkMDI4ODI4MzI1MjE2Yzc1Yi4uZDY5YzMzMmMzMTUx
YWQ4ZjBlZDRjYmRjMjAwMjBiZTUyODc2NzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgSlNHbG9iYWxDb250
ZXh0U2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2soSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwg
SlNPYmplCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdG9KUyhmdW5jdGlvbik7Ci0gICAgaWYgKCFvYmplY3QtPmlzRnVuY3Rpb24odm0pKSB7
CisgICAgaWYgKCFvYmplY3QtPmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICpleGNlcHRpb24g
PSB0b1JlZihjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IGVl
OTQ0OWZlMDViN2IyOTAzZGI5ZjMwNjNhMTFiNzQ5ZjQ5ZjU2MWEuLmY3MmIwYWE3MzBiMzYxODZl
YzNhOGI3N2JiMTU5MTczZjAyZDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCkBAIC03MDYsNyArNzA2LDcgQEAgYm9vbCBKU09iamVjdElzRnVuY3Rpb24o
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICBKU0NlbGwq
IGNlbGwgPSB0b0pTKG9iamVjdCk7Ci0gICAgcmV0dXJuIGNlbGwtPmlzRnVuY3Rpb24odm0pOwor
ICAgIHJldHVybiBjZWxsLT5pc0NhbGxhYmxlKHZtKTsKIH0KIAogSlNWYWx1ZVJlZiBKU09iamVj
dENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggYzE5ZTYxYzUyODliN2MxMDVkZjdjNjlmZjU3NzQ1NWQ0OGU1MjQ4Mi4uYzJkNGFhY2EyYjQ2
NmM2M2ZlNDFiZDE3NTRiMGZmNDEwMzc5YWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NTks
NyArMTg1OSw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZh
cmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAgICAgYm9vbCBoYXNDYXB0dXJl
ZFZhcmlhYmxlcyA9IGZhbHNlOwogICAgIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxl
eGljYWxWYXJpYWJsZXMpIHsKLSAgICAgICAgICAgIEFTU0VSVChlbnRyeS52YWx1ZS5pc0xldCgp
IHx8IGVudHJ5LnZhbHVlLmlzQ29uc3QoKSB8fCBlbnRyeS52YWx1ZS5pc0Z1bmN0aW9uKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLmlzTGV0KCkgfHwgZW50cnkudmFsdWUuaXND
b25zdCgpIHx8IGVudHJ5LnZhbHVlLmlzQ2FsbGFibGUoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
IWVudHJ5LnZhbHVlLmlzVmFyKCkpOwogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBzeW1i
b2xUYWJsZUVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3NhcnksIGVudHJ5
LmtleS5nZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3ltYm9sVGFibGVFbnRyeS5pc051bGwo
KSk7CkBAIC0xOTA2LDcgKzE5MDYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJl
ZmlsbFN0YWNrVERaVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmCiAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc0ltcG9ydGVkKCkgJiYgIWVudHJ5LnZhbHVlLmlzSW1wb3J0ZWRO
YW1lc3BhY2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChlbnRyeS52
YWx1ZS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0NhbGxhYmxlKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IHN5bWJv
bFRhYmxlRW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnku
a2V5LmdldCgpKTsKQEAgLTIwNDQsNyArMjA0NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyhWYXJpYWJsZUVudmlyb25tZW50JiBlbnZp
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUgPSBmdW5jdGlvbi0+aWRlbnQoKTsKICAg
ICAgICAgYXV0byBpdGVyID0gZW52aXJvbm1lbnQuZmluZChuYW1lLmltcGwoKSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGl0ZXIgIT0gZW52aXJvbm1lbnQuZW5kKCkpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChpdGVyLT52YWx1ZS5pc0Z1bmN0aW9uKCkpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpdGVyLT52YWx1ZS5pc0NhbGxhYmxlKCkpOwogICAgICAgICAvLyBXZSBwdXJwb3NlZnVs
bHkgZG9uJ3QgaG9sZCB0aGUgc3ltYm9sIHRhYmxlIGxvY2sgYXJvdW5kIHRoaXMgbG9vcCBiZWNh
dXNlIGVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24gbWF5IEdDLgogICAgICAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldChOb0xvY2tpbmdOZWNlc3Nhcnks
IG5hbWUuaW1wbCgpKTsgCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7
CkBAIC0yODQ0LDcgKzI4NDQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFy
aWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogICAgIAogICAg
IFREWk1hcCBtYXA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGVudmlyb25tZW50KQot
ICAgICAgICBtYXAuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUuaXNGdW5jdGlvbigpID8gVERa
TmVjZXNzaXR5TGV2ZWw6Ok5vdE5lZWRlZCA6IGxldmVsKTsKKyAgICAgICAgbWFwLmFkZChlbnRy
eS5rZXksIGVudHJ5LnZhbHVlLmlzQ2FsbGFibGUoKSA/IFREWk5lY2Vzc2l0eUxldmVsOjpOb3RO
ZWVkZWQgOiBsZXZlbCk7CiAKICAgICBtX1REWlN0YWNrLmFwcGVuZChXVEZNb3ZlKG1hcCkpOwog
ICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFogPSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBhNDdkZjI4MjkxNzc4ZTU5ZjFlZTk1Njc2
YTBlYjgxYTBjYTBjYzRjLi4wNjY2MWZiZWQ0MWJiMjkwYjVmMjFiOTZhNzUzYjIwYTU3ZGMzNzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIx
NDMsNyArMjE0Myw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdElzT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiAgICAgCiAgICAgaWYgKG9i
amVjdC0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkp
CisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIxNTgsNyArMjE1OCw3IEBAIHNpemVfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9iamVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDCiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2
bSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNzMs
NyArMjE3Myw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25UeXBlT2ZPYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgCiAgICAgaWYgKG9iamVj
dC0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQog
ICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlm
IChvYmplY3QtPmlzRnVuY3Rpb24odm0pKQorICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0p
KQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CiAgICAg
cmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhMWExNmZiOWQ1YzA3MmI3
NTAyNTdjMDFlZWUyOGEwOGFmMjQwMjEyLi4xYWE5OGEzMzQxODkzODk4M2RmMDQyNjUyODhjMDdi
ZmI0YWJiYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC02OTcyLDcgKzY5NzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9j
ayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVu
Y3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1
bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlz
Q2FsbGFibGUoY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShp
c0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKIAogICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEp
OwogICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1f
aGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC03MDE3LDcgKzcwMTcs
NyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoY2FsbGVlLCB3
ZWFrUG9pbnRlcihtX25vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBnbG9iYWxPYmplY3QtPmlu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1
Y3RvcigpKSksIHVuc3VyZShmYXN0QWxsb2NhdGlvbkNhc2UpLCB1bnN1cmUoZGVyaXZlZENhc2Up
KTsKIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlcml2
ZWRDYXNlLCBpc0Z1bmN0aW9uQmxvY2spOwotICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlv
bihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rp
b25CbG9jayksIHJhcmVseShzbG93Q2FzZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNDYWxs
YWJsZShjYWxsZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVu
Y3Rpb25CbG9jayksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOwogICAgICAgICBMVmFsdWUgcmFyZURhdGFU
YWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxl
T3JSYXJlRGF0YSk7CkBAIC03MDcyLDcgKzcwNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFz
aWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNo
KGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxs
eShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKGlzQ2FsbGFibGUoY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1
YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFy
ZURhdGEpOwogICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxs
ZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC0xMTU2OCw3
ICsxMTU2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdEZ1bmN0aW9uQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGlzRnVuY3Rpb25SZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNl
KTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNGdW5jdGlvbih2YWx1ZSwg
cHJvdmVuVHlwZShjaGlsZCkpLAorICAgICAgICAgICAgaXNDYWxsYWJsZSh2YWx1ZSwgcHJvdmVu
VHlwZShjaGlsZCkpLAogICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShu
b3RGdW5jdGlvbkNhc2UpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEZ1
bmN0aW9uQ2FzZSwgb2JqZWN0Q2FzZSk7CkBAIC0xMTYyNSw3ICsxMTYyNSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2Us
IG5vdEZ1bmN0aW9uQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZ1bmN0aW9uUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAorICAg
ICAgICAgICAgaXNDYWxsYWJsZSh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAogICAgICAgICAg
ICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RGdW5jdGlvbkNhc2UpKTsKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEZ1bmN0aW9uQ2FzZSwgc2xvd1BhdGgpOwpA
QCAtMTYxOTQsNyArMTYxOTQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ob2JqZWN0Q2FzZSwgZnVuY3Rpb25DYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiBTcGVj
T2JqZWN0KSwKKyAgICAgICAgICAgIGlzQ2FsbGFibGUodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQp
ICYgU3BlY09iamVjdCksCiAgICAgICAgICAgICB1bnN1cmUoZnVuY3Rpb25DYXNlKSwgdW5zdXJl
KG5vdEZ1bmN0aW9uQ2FzZSkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZnVu
Y3Rpb25DYXNlLCBub3RGdW5jdGlvbkNhc2UpOwpAQCAtMTc4OTksNyArMTc4OTksNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1
ZSBjZWxsLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlz
Q2FsbGFibGUoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkK
ICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYg
U3BlY0NlbGwsIFNwZWNGdW5jdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYjMzOTM3OWU2
NmI3NjBjNDA3ZWI0ODQ3ZjcxNmFmZjNmZDcyMDdhZC4uOTMzZTQ3M2NjYTE4YzM3MTNiOGVkMjEz
OWEyMGFkNGYxZjkwZThkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJh
dGlvbnMuY3BwCkBAIC03MjEsNyArNzIxLDcgQEAgZXh0ZXJuICJDIiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVHlwZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWMKIAog
ICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xv
YmFsT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KFR5cGVvZlR5
cGU6OlVuZGVmaW5lZCk7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYg
KG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQz
Ml90PihUeXBlb2ZUeXBlOjpGdW5jdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMy
X3Q+KFR5cGVvZlR5cGU6Ok9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDFlMTVi
MzQ4OWU2ZDQzNTBmNDAzYWMxNzJiMTI4YzJjOGY0YmU5NTUuLjQ3ZDIxZDU3Mjc1NGNkZjg1YTlh
MzY5YzllYjU1MWY4NTk3YmQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yNDg1LDcgKzI0
ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVk
UmVqZWN0aW9uQ2FsbGJhY2soSlNHbG9iYWxPYmplYwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzRnVu
Y3Rpb24odm0pKQorICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzQ2FsbGFibGUodm0pKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAog
ICAgIGdsb2JhbE9iamVjdC0+c2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sodm0sIG9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA3MTc4YzlhMjJlOTg1OTlkOGY2MWM4ZmU3YjcxMjMzNWRmNGJhMmMyLi5iN2I4
MDIwYTIwMDRkYmIyNmFkN2YwNTc5YjdkN2EyOWIxMzA3ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMiw3ICs4MzIs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCiB7CiAgICAgQkVHSU4o
KTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXNGdW5jdGlvbj4oKTsKLSAgICBSRVRV
Uk4oanNCb29sZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpLmlzRnVuY3Rp
b24odm0pKSk7CisgICAgUkVUVVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQp
LmpzVmFsdWUoKS5pc0NhbGxhYmxlKHZtKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaW5fYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAppbmRleCBjN2JiZjYzNWRiZTMyMGNiZTUzOGUwMDdhZGFhYmY5OTFj
MTQzYTkxLi41ZmZmNzA0NjFlZGNlY2Y2YmQwOGI2MTI2NDZkMWI1ZDhjNzE4ODY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApA
QCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICBpZiAodi5pc09iamVjdCgpKSB7
CiAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZt
KSkKKyAgICAgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCktPnZhbHVlKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAppbmRleCAyYzkxNjBlNWJlNTY4ZmQwZjljNmZiZWYyZjlkNzNkMmQxMzg0ZTY5
Li5iMzlhNTM2NGUwYzIxMDdiNjk4YjRjYjk5YzMxNjVjNGIxODA5YzI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0x
NDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAodGhpc1ZhbHVl
LmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgb2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAg
ICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9i
YWxPYmplY3QsICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwg
IigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggZjg0YzU3
MzI1NGE1ODkxMDFlZGNiZThlMjljYzMwNjU2MWY5ZGNmNi4uNmMzZDkyOGFkMzQ2ZDVhYWQ3MGUw
Y2EyNmJmNTJhMjk3M2E4ODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBTdHJ1Y3R1cmUq
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRmdW5jdGlv
bnJlYWxtCiBKU0dsb2JhbE9iamVjdCogZ2V0RnVuY3Rpb25SZWFsbShWTSYgdm0sIEpTT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgQVNTRVJUKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpOworICAgIEFT
U0VSVChvYmplY3QtPmlzQ2FsbGFibGUodm0pKTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRz
PEpTQm91bmRGdW5jdGlvbj4odm0pKQogICAgICAgICByZXR1cm4gZ2V0RnVuY3Rpb25SZWFsbSh2
bSwganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPnRhcmdldEZ1bmN0aW9uKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDVkNzQ3ZWVl
ZmQ2Mjc3Yjk4MDk4MDI1MWMzZjQxNTBiNzNkN2QxODIuLjdlMzE3NTkxN2RmMzk1NDg3YmU3NGFh
MGU4YWY2MTlmOWI2ZTAyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBRdWVyeWluZyB0
aGUgdHlwZS4KICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzRnVuY3Rpb24o
Vk0mKSBjb25zdDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlz
Q29uc3RydWN0b3IoVk0mKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc051bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDA1OWU2MjZhZWMxZjU2Y2NhYTcyMTUwZjU2
ZTE4Y2NmNGVkNTA5ZGQuLmQ1ZjczZjdhMDZlMDIwMmYzYmYzODM4NGRjOGQyY2Y2ODVlMGIyYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtODg3LDExICs4ODcsMTEgQEAgaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09i
amVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBpc0Nl
bGwoKSA/IGFzQ2VsbCgpLT50b09iamVjdChnbG9iYWxPYmplY3QpIDogdG9PYmplY3RTbG93Q2Fz
ZShnbG9iYWxPYmplY3QpOwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZN
JiB2bSkgY29uc3QKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtKSBjb25z
dAogewogICAgIGlmICghaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gYXNDZWxsKCktPmlzRnVuY3Rpb24odm0pOworICAgIHJldHVybiBhc0NlbGwoKS0+aXNDYWxs
YWJsZSh2bSk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZt
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBiOGQ2ZjY1
MjI1NGRkMDdjNTIxNTEzMmZkZmFjNDE3NWIzYmQ5Y2E5Li5jNjE1ODBjMTY5YzZmYmZiOGE3MDNi
NjMzMTAwYjQwYzY1NWI1N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aApAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wg
aXNQcm94eSgpIGNvbnN0OwotICAgIGJvb2wgaXNGdW5jdGlvbihWTSYpOworICAgIGJvb2wgaXND
YWxsYWJsZShWTSYpOwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpOwogICAgIGJvb2wgaW5o
ZXJpdHMoVk0mLCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUYXJnZXQ+IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmMjYwNzMwOTgzYzNlOWNiZWM3NjM0
MjAwNDc5NmRiYmQ5ZjBmNjA2Li4wZGVhMjc1NmUxZWMzZGI3MzgzMTQ0MDYxMjMxMDYyN2YwZmY4
Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CkBAIC0yMjksNyArMjI5LDcgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QK
ICAgICByZXR1cm4gbV90eXBlID09IEltcHVyZVByb3h5VHlwZSB8fCBtX3R5cGUgPT0gUHVyZUZv
cndhcmRpbmdQcm94eVR5cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0VHlwZTsKIH0KIAotQUxX
QVlTX0lOTElORSBib29sIEpTQ2VsbDo6aXNGdW5jdGlvbihWTSYgdm0pCitBTFdBWVNfSU5MSU5F
IGJvb2wgSlNDZWxsOjppc0NhbGxhYmxlKFZNJiB2bSkKIHsKICAgICBpZiAodHlwZSgpID09IEpT
RnVuY3Rpb25UeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZGJkN2IyZTFhOTA2MjZmYjkwN2IwOWI0
ZDc1NmUzOTAyN2Q4NDIyNC4uYmNhYTdhYjNjYjhhMDg3ZDAwOTFjNTUzZjUzZDQ3ZGJkMzdmMDUx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAg
LTM4NCw3ICszODQsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVy
OjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVybiBT
dHJpbmdpZnlGYWlsZWQ7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUp
OwotICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24odm0pKSB7CisgICAgaWYgKG9iamVjdC0+aXND
YWxsYWJsZSh2bSkpIHsKICAgICAgICAgaWYgKGhvbGRlci5pc0FycmF5KCkpIHsKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ2lmeVN1Y2NlZWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAwMDlhZWZmMzQ5MTE1MjQzNWVmM2JhZGMwZDMy
ZGI3MmZiZTBiNjdkLi4zYzY4NWU2MGNiMDJiNDUzNWYxZGQwMWQxN2JiZTA5NDY0YmQwNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2MKICAgICBp
ZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0
KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgp
ICYmICFnZXQuaXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQo
KSAmJiAhZ2V0LmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iX3MpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC01NDUsNyArNTQ1LDcgQEAgYm9v
bCB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGluLCBQcm9wZXJ0eURlc2MKICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgSlNW
YWx1ZSBzZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+c2V0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAg
ICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpICYmICFzZXQuaXNGdW5jdGlvbih2bSkpIHsKKyAg
ICAgICAgaWYgKCFzZXQuaXNVbmRlZmluZWQoKSAmJiAhc2V0LmlzQ2FsbGFibGUodm0pKSB7CiAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGVyIG11
c3QgYmUgYSBmdW5jdGlvbi4iX3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAppbmRleCA2ZmQ2N2RmOThhNTIxZWFiYzJhYTA3Mzc5YzBjM2Y1ZmQ0YWNmZWVmLi5jNjFh
NWFjOGQ2NDA3Nzk0Mjg3NTJjZDVkOWRmNzgxYmFlMTg3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1NCw3ICsxNTQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOwotICAgIGlmICghZ2V0LmlzRnVuY3Rpb24odm0pKQorICAgIGlmICghZ2V0Lmlz
Q2FsbGFibGUodm0pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3MpOwogCiAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKQEAgLTE4MSw3ICsxODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBz
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGlmICghc2V0LmlzRnVuY3Rpb24odm0p
KQorICAgIGlmICghc2V0LmlzQ2FsbGFibGUodm0pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwog
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVy
dHlLZXkoZ2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAKaW5kZXggZWFjNWQzYTFlMDEzNWE1MDAzNGIyMDEyMDUxZDAyOWZmYjM4OWY1
MC4uZGZkOWM3MTVlNTViMjkxNjBjNTk2OWEzNTNjOTE4MWQ3M2NhOWJlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgLy8gYXMgbnVsbCB3aGVuIGRvaW5nIGNvbXBh
cmlzb25zLgogICAgICAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJp
bmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZt
KSkKKyAgICAgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBq
c0lzT2JqZWN0VHlwZU9yTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYpCiAgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNB
c1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7Ci0gICAgICAgIGlmIChvYmplY3Qt
PmlzRnVuY3Rpb24odm0pKQorICAgICAgICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZGE3MGJkMzgy
ZGUzMDQyNDVlN2VkZTM2MTVjYTdkMjc4ZDUyNDE4Ny4uMGU2OTdiYjFhODJjZTkzOWYxOWVlMjUx
NjA5MjQyOTYwYjU2ZDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUHJveHlPYmplY3Q6OnRvU3Ry
aW5nTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
U3RydWN0dXJlKiBQcm94eU9iamVjdDo6c3RydWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICByZXR1cm4gdGFyZ2V0LmlzRnVuY3Rpb24odm0pID8gZ2xvYmFsT2Jq
ZWN0LT5jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb3h5
T2JqZWN0U3RydWN0dXJlKCk7CisgICAgcmV0dXJuIHRhcmdldC5pc0NhbGxhYmxlKHZtKSA/IGds
b2JhbE9iamVjdC0+Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0
LT5wcm94eU9iamVjdFN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFy
Z2V0LCBKU1ZhbHVlIGhhbmRsZXIpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUHJveHlPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0CiAKICAgICBKU09iamVjdCogdGFyZ2V0QXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3Qq
Pih0YXJnZXQpOwogCi0gICAgbV9pc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzRnVuY3Rp
b24odm0pOworICAgIG1faXNDYWxsYWJsZSA9IHRhcmdldEFzT2JqZWN0LT5pc0NhbGxhYmxlKHZt
KTsKICAgICBpZiAobV9pc0NhbGxhYmxlKSB7CiAgICAgICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1
Y3R1cmUodm0pLT50eXBlSW5mbygpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLmltcGxl
bWVudHNIYXNJbnN0YW5jZSgpICYmIGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcAppbmRl
eCA3MzI4NzY1YzljNmYxNGQ2MWEwYjk0Yjc3MzdkNzI0YThhOTAzOTZjLi5kOWVhYzhiYzQwZWY1
NDEzYThhNjE2ODU5ZmYyNDBhZDAzNTE4NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SdW50aW1lVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFJ1bnRpbWVUeXBlIHJ1
bnRpbWVUeXBlRm9yVmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4g
VHlwZUJvb2xlYW47CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBU
eXBlT2JqZWN0OwotICAgIGlmICh2YWx1ZS5pc0Z1bmN0aW9uKHZtKSkKKyAgICBpZiAodmFsdWUu
aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBUeXBlRnVuY3Rpb247CiAgICAgaWYgKHZh
bHVlLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBUeXBlU3ltYm9sOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDRmMWEzYmE2ZTJjYjg0OTgwZTIy
MjIzMWJjZWRmZGI1ZGM0NTE5ZjAuLjMyMjI5NGE3MmY0ODg2M2NmODczNzE1NDRiMThmODQ5MDE1
YTEyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAg
LTIxNzgsNyArMjE3OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiSW52YWxpZCBudW1iZXIg
b2YgYXJndW1lbnRzIik7CiAgICAgSlNWYWx1ZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBKU1ZhbHVlIGFyZzEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGlmICgh
YXJnMC5pc0Z1bmN0aW9uKHZtKSkKKyAgICBpZiAoIWFyZzAuaXNDYWxsYWJsZSh2bSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiYXJnMCBz
aG91bGQgYmUgYSBmdW5jdGlvbiIpOwogICAgIGlmICghYXJnMS5pc051bWJlcigpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgImFyZzEgc2hv
dWxkIGJlIGEgbnVtYmVyIik7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbihKU0dsb2Jh
bE9iamVjdAogICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwg
ImpzYyBUZXN0aW5nIEFQSTogZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24iX3MpOwogCiAg
ICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0
aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCiAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKQEAgLTI2
MTEsNyArMjYxMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUmV0dXJuVHlwZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgdm0udHlwZVByb2Zp
bGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlv
blJldHVyblR5cGVGb3IiX3MpOwogCiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVu
Y3Rpb24odm0pKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUo
dm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSkt
PmpzRXhlY3V0YWJsZSgpOwogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gZXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KHZtKTsKQEAgLTI2NDUsNyArMjY0NSw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVk
KEpTR2xvYmFsT2JqZWN0CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxl
cigpKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxlKHZtKSk7CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+
KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUo
KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmco
KSk7CkBAIC0yNjY1LDcgKzI2NjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudChKU0dsb2JhbE9iagogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKICAgICBKU1ZhbHVlIGZ1
bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0
aW9uVmFsdWUuaXNDYWxsYWJsZSh2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0Nl
bGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKICAgICBSRUxFQVNFX0FTU0VS
VChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKaW5kZXggYTZlZDljMGIzMWVkNDBmYjc5MmQyMWYz
YjFjMTEwMmUwMDQzMzFjYS4uOTViODkyYjAwZWQ1MTU4OWM0NmJmMzZlNTRiYWIwYmYxOWE0ZjU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgSlNWYWx1ZSBJbnN0YW5jZTo6Z2V0RnVuY3Rpb25XcmFwcGVyKHVuc2ln
bmVkIGkpIGNvbnN0CiB2b2lkIEluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9vd25lcik7Ci0gICAgQVNTRVJUKHZh
bHVlLmlzRnVuY3Rpb24ob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLT52bSgpKSk7Cisg
ICAgQVNTRVJUKHZhbHVlLmlzQ2FsbGFibGUob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigp
LT52bSgpKSk7CiAgICAgQVNTRVJUKCFtX2Z1bmN0aW9uV3JhcHBlcnMuY29udGFpbnMoaSkpOwog
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigp
LT5jZWxsTG9jaygpKTsKICAgICBtX2Z1bmN0aW9uV3JhcHBlcnMuc2V0KGksIFdyaXRlQmFycmll
cjxVbmtub3duPihvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93bmVyPEpT
V2ViQXNzZW1ibHlJbnN0YW5jZT4oKSwgdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA1ZjQ5OWZmZDIxNzAzYmY3YzljN2M2OTI4
MWJkNDBmYzM1ZTIxZTk4Li41ZDA0ZWE3ZDVmYzI3YTAzYWY0ZDJhNjAzZWMzNWYxMjk3YmUwYzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBA
IC01MzksNyArNTM5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkl0ZXJhdGVSZXN1
bHRzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBJbnN0YW5jZSogaW5zdGEKICAgICAgICAgICAgICAg
ICB1bmJveGVkVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlLnRvTnVtYmVyKGds
b2JhbE9iamVjdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBG
dW5jcmVmOgotICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5jdGlvbih2bSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jcmVmIHZhbHVl
IGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBib29sIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uV2FzbVRhYmxlRmlsbChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5k
ZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtUmVmRnVuYyhJbnN0
YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90IGluZGV4KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBp
bnN0YW5jZS0+Z2V0RnVuY3Rpb25XcmFwcGVyKGluZGV4KTsKLSAgICBBU1NFUlQodmFsdWUuaXNG
dW5jdGlvbihpbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKyAgICBBU1NFUlQo
dmFsdWUuaXNDYWxsYWJsZShpbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IGRiYzhkZmJmZDIxYzk5MGZlNTNmNDA1YTNiMDU3MTRkYjM3NzhjYTcuLmJiZDEwZTQ5MjRm
NWY4MDdlZjI3NWJhYjI3YTVlMjFmNWI5MzcwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTE4
OCw3ICsxODgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZQogICAgICAgICBjYXNlIFdhc206
OkV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBm
dW5jdGlvbiBpbXBvcnQ6CiAgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZh
bHNlLCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KLSAgICAgICAgICAgIGlmICghdmFs
dWUuaXNGdW5jdGlvbih2bSkpCisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0p
KQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBv
cnQgZnVuY3Rpb24iLCAibXVzdCBiZSBjYWxsYWJsZSIpKSk7CiAKICAgICAgICAgICAgIFdhc206
Okluc3RhbmNlKiBjYWxsZWVJbnN0YW5jZSA9IG51bGxwdHI7CkBAIC0zOTIsNyArMzkyLDcgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlLCBKU09iamUKICAgICAgICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbjsK
ICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVCh3cmFwcGVyLmlzRnVuY3Rpb24odm0pKTsKKyAg
ICAgICAgQVNTRVJUKHdyYXBwZXIuaXNDYWxsYWJsZSh2bSkpOwogICAgICAgICBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLnNldEZ1bmN0aW9uV3JhcHBlcihpbmRleCwgd3JhcHBlcik7CiAKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBK
U09iamUKICAgICAgICAgICAgICAgICBpbml0aWFsQml0cyA9IG1faW5zdGFuY2UtPmluc3RhbmNl
KCkubG9hZEk2NEdsb2JhbChnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcik7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPT0gV2FzbTo6R2xv
YmFsSW5mb3JtYXRpb246OkZyb21SZWZGdW5jKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGds
b2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyIDwgbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rp
b25JbmRleFNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9u
V3JhcHBlcigiR2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVt
YmVyKS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1ha2VGdW5jdGlv
bldyYXBwZXIoIkdsb2JhbCBpbml0IGV4cHIiLCBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51
bWJlcikuaXNDYWxsYWJsZSh2bSkpOwogICAgICAgICAgICAgICAgIGluaXRpYWxCaXRzID0gSlNW
YWx1ZTo6ZW5jb2RlKG1ha2VGdW5jdGlvbldyYXBwZXIoIkdsb2JhbCBpbml0IGV4cHIiLCBnbG9i
YWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcikpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgaW5pdGlhbEJpdHMgPSBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJl
cjsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5r
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZQogICAgICAgICBz
d2l0Y2ggKGV4cC5raW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5j
dGlvbjogewogICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1ha2VGdW5jdGlvbldyYXBwZXIo
U3RyaW5nOjpmcm9tVVRGOChleHAuZmllbGQpLCBleHAua2luZEluZGV4KTsKLSAgICAgICAgICAg
IEFTU0VSVChleHBvcnRlZFZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAgICAgIEFTU0VS
VChleHBvcnRlZFZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAgICAgICAgICAgIEFTU0VSVChtYWtl
RnVuY3Rpb25XcmFwcGVyKFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJbmRl
eCkgPT0gZXhwb3J0ZWRWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4IDk1NjhlNjZkZTM0ZGRkYjAyZGZjYTRhZGIzYzIxYjYz
Mjk1NmFiNTMuLmFlYjE2ZjZiMWM3OTNhNWM0NzVjNmY1ZGZmMjNkODIyYjc0ODM4OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0ds
b2JhbE8KIHZvaWQgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwg
bGVuZ3RoLCBuYW1lLCBpbnN0YW5jZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZShmdW5j
dGlvbikuaXNGdW5jdGlvbih2bSkpOworICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWUoZnVuY3Rp
b24pLmlzQ2FsbGFibGUodm0pKTsKICAgICBtX2Z1bmN0aW9uLnNldCh2bSwgdGhpcywgZnVuY3Rp
b24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggODk3NGU2YWE3YWUyZDA3NTUx
Njc4OWE4ZTQ2MWJhMDc0NjE3YjlmNi4uMTZlMmYyMzQ2NDk0NWEwZjQ2MjAwY2Q3NzVhNDk0Njhm
ZjFhYjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJv
b2wgUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5q
ZWN0ZWQoKQogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBn
bG9iYWxPYmplY3Q7CiAgICAgCiAgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24g
PSBnbG9iYWxPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKLSAgICBpZiAocmVw
bGFjZW1lbnRGdW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkKKyAgICBpZiAocmVwbGFjZW1lbnRGdW5j
dGlvbi5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgc2Ny
aXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3Vy
Y2VDb2RlKHF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50U2NyaXB0KCkpLCB3b3JsZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeUN1c3RvbS5jcHAKaW5kZXggOTM0MmFjYjY3OWU0ZWEyNjkyZTQ0NTJlZDRiMGYyNmEx
Mjk5NzA4Ni4uMDkzNWRkOGU4Y2E0YjUyYzIzZjIyMjNjMTMwNmY5N2VlOTUwNzZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgSlNPYmplY3QqIGdl
dEN1c3RvbUVsZW1lbnRDYWxsYmFjayhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmIChj
YWxsYmFjay5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAo
IWNhbGxiYWNrLmlzRnVuY3Rpb24odm0pKSB7CisgICAgaWYgKCFjYWxsYmFjay5pc0NhbGxhYmxl
KHZtKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsICJBIGN1c3RvbSBlbGVtZW50IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiJfcyk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgKaW5kZXggYTU0YTRiM2NiYTYzMTlmNDAy
YjhhNWI0NjE4Yjg2ZWU5MWQ5MjkwNi4uZTZjYTJhZjcyN2NlOGFmN2RiMjMxZGM3MGViNDg2NDBh
ODczYzk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0Q2FsbGJhY2tzLmgKQEAgLTQwLDcgKzQwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXIK
ICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAg
IGlmICghdmFsdWUuaXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc0NhbGxh
YmxlKHZtKSkgewogICAgICAgICAgICAgZXhjZXB0aW9uVGhyb3dlcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U2NoZWR1bGVk
QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVs
ZWRBY3Rpb24uaAppbmRleCAyYzlkNTU3NWY3MmViNTE3NTc2OTQ0YTBjYjBmZmU1MzA2MzljOWNl
Li44NWE3ZmQ2YWIwZTlhYzViNzFjMjNlMDJlY2Q1N2U4MDBmMWVlNTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rp
b24uaApAQCAtMzgsNyArMzgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMU2No
ZWR1bGVkQWN0aW9uPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMU2NoZWR1bGVkQQogICAgICAgICBK
U0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgaWYgKCF2YWx1
ZS5pc0Z1bmN0aW9uKHZtKSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7
CiAgICAgICAgICAgICBhdXRvIGNvZGUgPSBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6Y29udmVy
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBTY2hlZHVsZWRBY3Rp
b246OmNyZWF0ZShnbG9iYWxPYmplY3Qud29ybGQoKSwgV1RGTW92ZShjb2RlKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAppbmRleCBlODVkNzViYjU3N2Nl
YjBmMmQ5YjFhMjAyMzk0YTBkOGNlNjVmM2MwLi4zNzdkOTJlZGUxOTJiZmIyMzdmZDhhZWMyYzIz
MGU1Y2Q2YTE2MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0
dGxlZChKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2IKICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCh0aGVuRnVu
Y3Rpb24uaXNGdW5jdGlvbih2bSkpOworICAgIEFTU0VSVCh0aGVuRnVuY3Rpb24uaXNDYWxsYWJs
ZSh2bSkpOwogCiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAg
YXJndW1lbnRzLmFwcGVuZChoYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBkY2MzNzRmOTM1ZjRlOTQ4MTczN2VhMTc0
ZDk2ZTNkMzEwOGVjNWY1Li40NjY1YmNlYjlkYTdiMGRhM2UwM2UzYzRmMzBlODU4Yjk2OWEwOGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC01NDAsNyArNTQwLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cXVldWVNaWNyb3Rh
c2soSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAogICAgIEpT
VmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpKQorICAgIGlmIChV
TkxJS0VMWSghZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxlKHZtKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJXaW5kb3ciLCAicXVldWVNaWNyb3Rh
c2siKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGIyZDQy
OWNiZDljMDQ0ZWI1NjhmMmY5ZjU2Yzk2ZDYyNDQ3MmUzNDQuLjI1ZmY2ZThhZWJkOGEyNzEwMDBj
NWIxZTYxMmRkM2NhYTE3MzIzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBj
YWxsRnJhbWUudW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgaWYgKFVOTElLRUxZKCFmdW5jdGlv
blZhbHVlLmlzRnVuY3Rpb24odm0pKSkKKyAgICBpZiAoVU5MSUtFTFkoIWZ1bmN0aW9uVmFsdWUu
aXNDYWxsYWJsZSh2bSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAi
Y2FsbGJhY2siLCAiV29ya2VyR2xvYmFsU2NvcGUiLCAicXVldWVNaWNyb3Rhc2siKSk7CiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKaW5kZXggNTdlZWI1NzI1NWQxMGUzYmUxMmQ5YzJjMzAyYWQwOTVmZjhkZWRk
My4uMTFiYmFiNmE4YmM4NGM4NmJjMjcwNTE0YjhlZmYxNGY4Yzk1NDgyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJiBzaW5rKQog
ICAgIGNvbnN0IElkZW50aWZpZXImIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJsZVN0cmVh
bVBpcGVUb1ByaXZhdGVOYW1lKCk7CiAKICAgICBhdXRvIHJlYWRhYmxlU3RyZWFtUGlwZVRvID0g
bV9nbG9iYWxPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUpOwot
ICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVBpcGVUby5pc0Z1bmN0aW9uKGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKSkpOworICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVBpcGVUby5pc0NhbGxhYmxl
KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhZGFibGVTdHJlYW0oKSk7CkBAIC05
NCw3ICs5NCw3IEBAIHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBSZWY8UmVhZGFibGVT
dHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKICAgICBjb25zdCBJZGVudGlmaWVyJiBwcml2
YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zKCkucmVhZGFibGVTdHJlYW1UZWVQcml2YXRlTmFtZSgpOwogCiAgICAg
YXV0byByZWFkYWJsZVN0cmVhbVRlZSA9IG1fZ2xvYmFsT2JqZWN0LT5nZXQoJmxleGljYWxHbG9i
YWxPYmplY3QsIHByaXZhdGVOYW1lKTsKLSAgICBBU1NFUlQocmVhZGFibGVTdHJlYW1UZWUuaXNG
dW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKTsKKyAgICBBU1NFUlQocmVhZGFibGVT
dHJlYW1UZWUuaXNDYWxsYWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHJlYWRh
YmxlU3RyZWFtKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAppbmRleCBkOTliZTg5ZmU1
NThjN2E0YWM1ZjdmNDIzMjFhYmVkNTRmMWNmNjYxLi45MDJlNjYxNWNjOTQ1ZmYyZjFjYzQzNzhj
MjhkNGUyNjMzMzNmMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcApAQCAtNTYsNyAr
NTYsNyBAQCBKU0M6OkpTVmFsdWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52
b2tlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8gZnVuY3Rpb24gPSBvYmpl
Y3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHByb3BlcnR5TmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6
SlNWYWx1ZSgpKTsKIAotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpIHsKKyAgICBp
ZiAoIWZ1bmN0aW9uLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIGlmICghZnVuY3Rpb24uaXNV
bmRlZmluZWQoKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhh
dCBpcyBub3QgY2FsbGFibGUiX3MpOwogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApp
bmRleCAxMTc4OWE5NjlmY2Y1ZGJjODA5NDY4NWYxNTdlMzM5ZGNjODQxYjhlLi5hZTI4ODVjMDMz
YmU0YWM4ZGMwMmM4MTIyNDc4YWM3Yzc0MzkwYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0CiAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rp
b25PYmplY3QuaXNGdW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICBpZiAoIWZ1bmN0aW9u
T2JqZWN0IHx8ICFmdW5jdGlvbk9iamVjdC5pc0NhbGxhYmxlKHdvcmxkLnZtKCkpKSB7CiAgICAg
ICAgICAgICBvcHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBjcmVhdGUgSmF2YVNjcmlw
dCBhc3luYyBmdW5jdGlvbiB0byBjYWxsIl9zIH0gfTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDY1NGU3ODNmNmFkYTFmM2MyMjBhNTg4ZWFkOTMyNWNhNTQ2MzJkM2Mu
LjRkYWY5NDgwNmRmNzA3NmViZWJhNWIyZWViZDBkZDM0MTgzY2I4MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNTEz
LDcgKzM1MTMsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIKICAgICAgICAgICAg
ICYkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQsICJkaXN0aW5ndWlz
aGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+dHlwZSgp
ID09IEVycm9ySW5zdGFuY2VUeXBlIik7CiAKICAgICAgICAgICAgICRvdmVybG9hZCA9IEdldE92
ZXJsb2FkVGhhdE1hdGNoZXMoJFMsICRkLCBcJiRpc09iamVjdE9yQ2FsbGJhY2tGdW5jdGlvblBh
cmFtZXRlcik7Ci0gICAgICAgICAgICAmJGdlbmVyYXRlT3ZlcmxvYWRDYWxsSWZOZWNlc3Nhcnko
JG92ZXJsb2FkLCAiZGlzdGluZ3Vpc2hpbmdBcmcuaXNGdW5jdGlvbih2bSkiKTsKKyAgICAgICAg
ICAgICYkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQsICJkaXN0aW5n
dWlzaGluZ0FyZy5pc0NhbGxhYmxlKHZtKSIpOwogCiAgICAgICAgICAgICAjIEZJWE1FOiBBdm9p
ZCBpbnZva2luZyBHZXRNZXRob2Qob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpIGFnYWluIGluIGNv
bnZlcnQ8SURMU2VxdWVuY2U8VD4+KC4uLikuCiAgICAgICAgICAgICAkb3ZlcmxvYWQgPSBHZXRP
dmVybG9hZFRoYXRNYXRjaGVzKCRTLCAkZCwgXCYkaXNTZXF1ZW5jZU9yRnJvemVuQXJyYXlQYXJh
bWV0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjli
NGJmMWIyN2JhNmRmZDdhNjc0NTYyOTUzYTg3MjE4NWM2ZDUyZS4uNGM4OGQ1OWNiNGUxNDc0MTIy
MTUxYzQ2ZmI3NGZmOWMwNzZiNTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC03MTQ3LDcgKzcxNDcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVu
c3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBn
bG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjcmVhdGVDb250cm9scyIpKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uVmFs
dWUuaXNGdW5jdGlvbih2bSkpCisgICAgICAgIGlmIChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUo
dm0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGY4YmVjOTExNjI3MzI4NmI0ZmM1MjYzYjIw
MWI3NDE3MTY0NmU0Ni4uZjExNjRhZTljMWFjM2JmMDE2ODk2YjlmNGRkZWExZmMzNGY2NzkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjI3Myw3ICsyMjczLDcgQEAg
U3RyaW5nIEludGVybmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKU1ZhbHVlIGNvZGUpCiAgICAg
ICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgaXRlcik7CiAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gaXRlci5jb2RlQmxvY2soKTsKICAgICAgICAgZXhlY3V0YWJsZSA9IGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgfSBlbHNlIGlmIChjb2RlLmlzRnVuY3Rpb24odm0p
KSB7CisgICAgfSBlbHNlIGlmIChjb2RlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmNPYmogPSBKU0M6OmpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29kZS50b09iamVjdChn
bG9iYWxPYmplY3QpKTsKICAgICAgICAgZXhlY3V0YWJsZSA9IGZ1bmNPYmotPmpzRXhlY3V0YWJs
ZSgpOwogICAgIH0gZWxzZQpAQCAtNDY0Niw3ICs0NjQ2LDcgQEAgSlNWYWx1ZSBJbnRlcm5hbHM6
OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlMKICAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBsZXhpY2FsR2xvYmFsT2JqZWN0Lm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUsIHByb3BlcnR5U2xvdCk7CiAgICAgdmFsdWUg
PSBwcm9wZXJ0eVNsb3QuZ2V0VmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QsIHByaXZhdGVOYW1l
KTsKLSAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgIEFTU0VSVCh2YWx1ZS5p
c0NhbGxhYmxlKHZtKSk7CiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmpl
Y3QoKTsKICAgICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDRkYTY4MzNiZmFjMjYzOWZiMzFmM2ZhMDVhYjJmMjRlZmIxNjljNjAuLjBk
OTU3OTI4ODI5MWJlZWZmNmYyYmE4ZjYyZThkODViOGI1MWM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lz
dGVyUGFpbnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0
b3IgaXMgYSBWb2lkRnVuY3Rpb24KLSAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzRnVuY3Rp
b24odm0pKQorICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDYWxsYWJsZSh2bSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJwYWludENvbnN0cnVjdG9yIG11c3Qg
YmUgY2FsbGFibGUiIH07CiAKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3Bw
CmluZGV4IDhmNmY3YjAyMzE2YjEwOTI5ZjQ0M2M5ZDQ1Njk5YmJhN2I1YTk0ODUuLmI1NGFjYzlk
OTBmNTE4ZTZiMDVhNzMzN2U1NzNhYzNlZWNiMjY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0x
MDksNyArMTA5LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJZGVudGlmaWVyIG1l
dGhvZE5hbWUpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fanNPYmplY3QtPmdldChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAobGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllclJlcCkpOyAgICAKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCi0g
ICAgcmV0dXJuIHZhbHVlLmlzRnVuY3Rpb24odm0pOworICAgIHJldHVybiB2YWx1ZS5pc0NhbGxh
YmxlKHZtKTsKIH0KIAogYm9vbCBOUEpTT2JqZWN0OjppbnZva2UoTlBJZGVudGlmaWVyIG1ldGhv
ZE5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50
LCBOUFZhcmlhbnQqIHJlc3VsdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397870</attachid>
            <date>2020-04-28 12:31:39 -0700</date>
            <delta_ts>2020-04-28 14:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211140-20200428123139.patch</filename>
            <type>text/plain</type>
            <size>47265</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmUwMjc1Zjk3OWU4M2FjMDUxNmM3NGMyYTc2ZmQxZTFjNTU3ZTc0Li41NzY1MjZlZTk1YTg3NmVj
NDZmYjU1NWU2M2Q4YzNmZGJkMTI0MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMC0wNC0yOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQWxpZ24gdXBvbiB0aGUgbmFtZSBpc0NhbGxhYmxlIGlu
c3RlYWQgb2YgaXNGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjExMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRm9sbG93LXVwIHRvIHIyNjA3MjIuIFVzYWdlIGlzIG5vdyBjbGVhbmx5IHNl
cGFyYXRlZCBiZXR3ZWVuIGlzRnVuY3Rpb24gLyBnZXRDYWxsRGF0YSwKKyAgICAgICAgYnV0IHRo
ZSBuYW1lIGlzQ2FsbGFibGUgaXMgc3RpbGwgY2xlYXJlciB0aGFuIGlzRnVuY3Rpb24gc28gbGV0
J3MgZmxpcCB0aGF0IGFmdGVyIGFsbC4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3Bw
OgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVu
Y3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUNyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlQ3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzT2JqZWN0T3JOdWxsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWlsZFR5cGVPZik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQ2FsbGFibGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uVHlw
ZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVu
Y3Rpb25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAg
ICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RnVuY3Rp
b25SZWFsbSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxh
YmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNGdW5jdGlvbiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0NhbGxhYmxlKToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjppc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5n
aWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdl
dHRlcik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAg
ICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5n
Rm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAg
ICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojpz
dHJ1Y3R1cmVGb3JUYXJnZXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvUnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlND
OjpydW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoK
KyAgICAgICAgKEpTQzo6ZnVuY3Rpb25DYWxsV2l0aFN0YWNrU2l6ZSk6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25S
ZXR1cm5UeXBlRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0
ZWQpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCk6Cisg
ICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0
YW5jZTo6c2V0RnVuY3Rpb25XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6b3BlcmF0aW9uSXRlcmF0ZVJlc3VsdHMpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtUmVmRnVuYyk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246
OmZpbmlzaENyZWF0aW9uKToKKwogMjAyMC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE51bWJlckNvbnN0cnVjdG9yIHNob3VsZCBhY2Nl
cHQgQmlnSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBlM2ZhYmI2MTc4YjI2M2ViY2Y5NWVjODM2Mzc3Nzlm
ZTlhMzhkMS4uNDFmODg4MjAxMmMyY2M3Y2MyNGJjZTg3MGQ1NTc3MWJlNWY2MjRhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTA0LTI4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5r
aXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBBbGlnbiB1cG9uIHRoZSBuYW1lIGlz
Q2FsbGFibGUgaW5zdGVhZCBvZiBpc0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTExNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50OjplbnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
Q29udmVydENhbGxiYWNrcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETENhbGxi
YWNrRnVuY3Rpb248VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRTY2hlZHVsZWRBY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExT
Y2hlZHVsZWRBY3Rpb24+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1Nl
dHRsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpxdWV1ZU1pY3JvdGFzayk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpxdWV1ZU1pY3JvdGFzayk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVT
dHJlYW06OnBpcGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6dGVlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omlu
dm9rZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU92
ZXJsb2FkRGlzcGF0Y2hlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJ
bmplY3RlZFNjcmlwdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEds
b2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKwogMjAyMC0wNC0yOCAgSmFjayBMZWUgIDxzaGlo
Y2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGluIEVkaXRDb21t
YW5kOjpFZGl0Q29tbWFuZCB2aWEgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMzc1ZTJhZGNjZmU1YWUyN2FlMzcwYWI4ZGVlZDZkMmQzMjc4ZThkOS4uZDFjZmJh
ZjU4MjJlYjQ2YzY4MDg4MDI0NjdjMDQwNThmZWUyMTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0wNC0yOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWxpZ24gdXBvbiB0aGUgbmFtZSBpc0NhbGxhYmxlIGluc3RlYWQg
b2YgaXNGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6Omhhc01ldGhvZCk6CisKIDIwMjAtMDQtMjggIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRvcHQga01UU3Vw
cG9ydE5vdGlmaWNhdGlvbl9TaG91bGRQbGF5SERSVmlkZW9DaGFuZ2VkIG5vdGlmaWNhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDI0MDE3OTE2
ZTc1MTc2YjgzZTM1ZDllZDAyODgyODMyNTIxNmM3NWIuLmQ2OWMzMzJjMzE1MWFkOGYwZWQ0Y2Jk
YzIwMDIwYmU1Mjg3Njc3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFVuaGFu
ZGxlZFJlamVjdGlvbkNhbGxiYWNrKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTT2JqZQogICAg
IEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlMo
ZnVuY3Rpb24pOwotICAgIGlmICghb2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkgeworICAgIGlmICgh
b2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkgewogICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlZTk0NDlmZTA1Yjdi
MjkwM2RiOWYzMDYzYTExYjc0OWY0OWY1NjFhLi5mNzJiMGFhNzMwYjM2MTg2ZWMzYThiNzdiYjE1
OTE3M2YwMmQ3NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2Jq
ZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cApAQCAtNzA2LDcgKzcwNiw3IEBAIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgSlNDZWxsKiBjZWxsID0gdG9K
UyhvYmplY3QpOwotICAgIHJldHVybiBjZWxsLT5pc0Z1bmN0aW9uKHZtKTsKKyAgICByZXR1cm4g
Y2VsbC0+aXNDYWxsYWJsZSh2bSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5j
dGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCBhNDdkZjI4MjkxNzc4ZTU5ZjFlZTk1Njc2YTBlYjgxYTBj
YTBjYzRjLi4wNjY2MWZiZWQ0MWJiMjkwYjVmMjFiOTZhNzUzYjIwYTU3ZGMzNzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxNDMsNyArMjE0
Myw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdElzT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYg
KG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTIxNTgsNyArMjE1OCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
CiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG9iamVj
dC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNzMsNyArMjE3Myw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25UeXBlT2ZPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChvYmplY3Qt
PmlzRnVuY3Rpb24odm0pKQorICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAg
ICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CiAgICAgcmV0dXJuIHZt
LnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhMWExNmZiOWQ1YzA3MmI3NTAyNTdjMDFl
ZWUyOGEwOGFmMjQwMjEyLi4xYWE5OGEzMzQxODkzODk4M2RmMDQyNjUyODhjMDdiZmI0YWJiYWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC02OTcyLDcgKzY5NzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0
aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2Fs
bGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxv
Y2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2FsbGFibGUo
Y2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9u
QmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOwogICAgICAg
ICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNG
dW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC03MDE3LDcgKzcwMTcsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoY2FsbGVlLCB3ZWFrUG9pbnRl
cihtX25vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBnbG9iYWxPYmplY3QtPmludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yKCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1Y3RvcigpKSks
IHVuc3VyZShmYXN0QWxsb2NhdGlvbkNhc2UpLCB1bnN1cmUoZGVyaXZlZENhc2UpKTsKIAogICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlcml2ZWRDYXNlLCBp
c0Z1bmN0aW9uQmxvY2spOwotICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUs
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayks
IHJhcmVseShzbG93Q2FzZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNDYWxsYWJsZShjYWxs
ZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9j
ayksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rp
b25CbG9jaywgaGFzUmFyZURhdGEpOwogICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9v
dXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0
YSk7CkBAIC03MDcyLDcgKzcwNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBz
bG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rp
b24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0
aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2Fs
bGFibGUoY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1
bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOwog
ICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVh
cHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC0xMTU2OCw3ICsxMTU2OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5k
VG8oY2VsbENhc2UsIG5vdEZ1bmN0aW9uQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlz
RnVuY3Rpb25SZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKICAgICAg
ICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlw
ZShjaGlsZCkpLAorICAgICAgICAgICAgaXNDYWxsYWJsZSh2YWx1ZSwgcHJvdmVuVHlwZShjaGls
ZCkpLAogICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RGdW5jdGlv
bkNhc2UpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEZ1bmN0aW9uQ2Fz
ZSwgb2JqZWN0Q2FzZSk7CkBAIC0xMTYyNSw3ICsxMTYyNSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdEZ1bmN0
aW9uQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZ1bmN0aW9uUmVzdWx0ID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAg
ICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAorICAgICAgICAgICAg
aXNDYWxsYWJsZSh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAogICAgICAgICAgICAgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RGdW5jdGlvbkNhc2UpKTsKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdEZ1bmN0aW9uQ2FzZSwgc2xvd1BhdGgpOwpAQCAtMTYxOTQs
NyArMTYxOTQsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
b2JqZWN0Q2FzZSwgZnVuY3Rpb25DYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAg
ICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT2JqZWN0KSwK
KyAgICAgICAgICAgIGlzQ2FsbGFibGUodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY09i
amVjdCksCiAgICAgICAgICAgICB1bnN1cmUoZnVuY3Rpb25DYXNlKSwgdW5zdXJlKG5vdEZ1bmN0
aW9uQ2FzZSkpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZnVuY3Rpb25DYXNl
LCBub3RGdW5jdGlvbkNhc2UpOwpAQCAtMTc4OTksNyArMTc4OTksNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1ZSBjZWxsLCBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzQ2FsbGFibGUo
TFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAg
ICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGws
IFNwZWNGdW5jdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYjMzOTM3OWU2NmI3NjBjNDA3
ZWI0ODQ3ZjcxNmFmZjNmZDcyMDdhZC4uOTMzZTQ3M2NjYTE4YzM3MTNiOGVkMjEzOWEyMGFkNGYx
ZjkwZThkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3Bw
CkBAIC03MjEsNyArNzIxLDcgQEAgZXh0ZXJuICJDIiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHlwZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWMKIAogICAgIGlmIChv
YmplY3QtPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KFR5cGVvZlR5cGU6OlVuZGVm
aW5lZCk7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+
aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihUeXBl
b2ZUeXBlOjpGdW5jdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KFR5cGVv
ZlR5cGU6Ok9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDFlMTViMzQ4OWU2ZDQz
NTBmNDAzYWMxNzJiMTI4YzJjOGY0YmU5NTUuLjQ3ZDIxZDU3Mjc1NGNkZjg1YTlhMzY5YzllYjU1
MWY4NTk3YmQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9u
Q2FsbGJhY2soSlNHbG9iYWxPYmplYwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLmdldE9iamVjdCgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzRnVuY3Rpb24odm0p
KQorICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGdsb2Jh
bE9iamVjdC0+c2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sodm0sIG9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCA3MTc4YzlhMjJlOTg1OTlkOGY2MWM4ZmU3YjcxMjMzNWRmNGJhMmMyLi5iN2I4MDIwYTIwMDRk
YmIyNmFkN2YwNTc5YjdkN2EyOWIxMzA3ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMiw3ICs4MzIsNyBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCiB7CiAgICAgQkVHSU4oKTsKICAgICBh
dXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXNGdW5jdGlvbj4oKTsKLSAgICBSRVRVUk4oanNCb29s
ZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpLmlzRnVuY3Rpb24odm0pKSk7
CisgICAgUkVUVVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUo
KS5pc0NhbGxhYmxlKHZtKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlf
dmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcAppbmRleCBjN2JiZjYzNWRiZTMyMGNiZTUzOGUwMDdhZGFhYmY5OTFjMTQzYTkxLi41
ZmZmNzA0NjFlZGNlY2Y2YmQwOGI2MTI2NDZkMWI1ZDhjNzE4ODY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkKKyAgICAg
ICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAppbmRleCAyYzkxNjBlNWJlNTY4ZmQwZjljNmZiZWYyZjlkNzNkMmQxMzg0ZTY5Li5iMzlhNTM2
NGUwYzIxMDdiNjk4YjRjYjk5YzMxNjVjNGIxODA5YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAg
ICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmVJ
RCgpKTsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgICAgIGlmIChv
YmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3Qs
ICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAg
ICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggZjg0YzU3MzI1NGE1ODkx
MDFlZGNiZThlMjljYzMwNjU2MWY5ZGNmNi4uNmMzZDkyOGFkMzQ2ZDVhYWQ3MGUwY2EyNmJmNTJh
Mjk3M2E4ODU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBTdHJ1Y3R1cmUqIEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRmdW5jdGlvbnJlYWxtCiBK
U0dsb2JhbE9iamVjdCogZ2V0RnVuY3Rpb25SZWFsbShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
CiB7Ci0gICAgQVNTRVJUKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpOworICAgIEFTU0VSVChvYmpl
Y3QtPmlzQ2FsbGFibGUodm0pKTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQm91bmRG
dW5jdGlvbj4odm0pKQogICAgICAgICByZXR1cm4gZ2V0RnVuY3Rpb25SZWFsbSh2bSwganNDYXN0
PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPnRhcmdldEZ1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDVkNzQ3ZWVlZmQ2Mjc3Yjk4
MDk4MDI1MWMzZjQxNTBiNzNkN2QxODIuLjdlMzE3NTkxN2RmMzk1NDg3YmU3NGFhMGU4YWY2MTlm
OWI2ZTAyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgK
QEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4K
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25z
dDsKKyAgICBib29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ29uc3RydWN0
b3IoVk0mKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c051bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCmluZGV4IDA1OWU2MjZhZWMxZjU2Y2NhYTcyMTUwZjU2ZTE4Y2NmNGVk
NTA5ZGQuLmQ1ZjczZjdhMDZlMDIwMmYzYmYzODM4NGRjOGQyY2Y2ODVlMGIyYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAt
ODg3LDExICs4ODcsMTEgQEAgaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT50b09iamVjdChnbG9iYWxPYmplY3QpIDogdG9PYmplY3RTbG93Q2FzZShnbG9iYWxP
YmplY3QpOwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29u
c3QKK2lubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtKSBjb25zdAogewogICAg
IGlmICghaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYXNDZWxs
KCktPmlzRnVuY3Rpb24odm0pOworICAgIHJldHVybiBhc0NlbGwoKS0+aXNDYWxsYWJsZSh2bSk7
CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZtKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBiOGQ2ZjY1MjI1NGRkMDdj
NTIxNTEzMmZkZmFjNDE3NWIzYmQ5Y2E5Li5jNjE1ODBjMTY5YzZmYmZiOGE3MDNiNjMzMTAwYjQw
YzY1NWI1N2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTA3
LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0OwogICAgIGJvb2wgaXNQcm94eSgp
IGNvbnN0OwotICAgIGJvb2wgaXNGdW5jdGlvbihWTSYpOworICAgIGJvb2wgaXNDYWxsYWJsZShW
TSYpOwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcihWTSYpOwogICAgIGJvb2wgaW5oZXJpdHMoVk0m
LCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+
IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmMjYwNzMwOTgzYzNlOWNiZWM3NjM0MjAwNDc5NmRi
YmQ5ZjBmNjA2Li4wZGVhMjc1NmUxZWMzZGI3MzgzMTQ0MDYxMjMxMDYyN2YwZmY4Y2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yMjks
NyArMjI5LDcgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QKICAgICByZXR1
cm4gbV90eXBlID09IEltcHVyZVByb3h5VHlwZSB8fCBtX3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQ
cm94eVR5cGUgfHwgbV90eXBlID09IFByb3h5T2JqZWN0VHlwZTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIEpTQ2VsbDo6aXNGdW5jdGlvbihWTSYgdm0pCitBTFdBWVNfSU5MSU5FIGJvb2wgSlND
ZWxsOjppc0NhbGxhYmxlKFZNJiB2bSkKIHsKICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25U
eXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKaW5kZXggZGJkN2IyZTFhOTA2MjZmYjkwN2IwOWI0ZDc1NmUzOTAy
N2Q4NDIyNC4uYmNhYTdhYjNjYjhhMDg3ZDAwOTFjNTUzZjUzZDQ3ZGJkMzdmMDUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM4NCw3ICsz
ODQsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRT
dHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlG
YWlsZWQ7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIGlm
IChvYmplY3QtPmlzRnVuY3Rpb24odm0pKSB7CisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2
bSkpIHsKICAgICAgICAgaWYgKGhvbGRlci5pc0FycmF5KCkpIHsKICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1
Y2NlZWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAppbmRleCAwMDlhZWZmMzQ5MTE1MjQzNWVmM2JhZGMwZDMyZGI3MmZiZTBi
NjdkLi4zYzY4NWU2MGNiMDJiNDUzNWYxZGQwMWQxN2JiZTA5NDY0YmQwNmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBA
IC01MzIsNyArNTMyLDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2MKICAgICBpZiAoaGFzUHJv
cGVydHkpIHsKICAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpICYmICFnZXQu
aXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSAmJiAhZ2V0
LmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iX3MpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC01NDUsNyArNTQ1LDcgQEAgYm9vbCB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQ
cm9wZXJ0eURlc2MKICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgSlNWYWx1ZSBzZXQg
PSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBpZiAo
IXNldC5pc1VuZGVmaW5lZCgpICYmICFzZXQuaXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgaWYg
KCFzZXQuaXNVbmRlZmluZWQoKSAmJiAhc2V0LmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGVyIG11c3QgYmUgYSBm
dW5jdGlvbi4iX3MpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRl
eCA2ZmQ2N2RmOThhNTIxZWFiYzJhYTA3Mzc5YzBjM2Y1ZmQ0YWNmZWVmLi5jNjFhNWFjOGQ2NDA3
Nzk0Mjg3NTJjZDVkOWRmNzgxYmFlMTg3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwotICAgIGlmICghZ2V0LmlzRnVuY3Rpb24odm0pKQorICAgIGlmICghZ2V0LmlzQ2FsbGFibGUo
dm0pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3MpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE4
MSw3ICsxODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGlmICghc2V0LmlzRnVuY3Rpb24odm0pKQorICAgIGlm
ICghc2V0LmlzQ2FsbGFibGUodm0pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwogCiAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xv
YmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKaW5kZXggZWFjNWQzYTFlMDEzNWE1MDAzNGIyMDEyMDUxZDAyOWZmYjM4OWY1MC4uZGZkOWM3
MTVlNTViMjkxNjBjNTk2OWEzNTNjOTE4MWQ3M2NhOWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdikKICAgICAgICAgLy8gYXMgbnVsbCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgog
ICAgICAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVm
aW5lZFN0cmluZygpOwotICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkKKyAgICAg
ICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiB2bS5zbWFsbFN0
cmluZ3Mub2JqZWN0U3RyaW5nKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBqc0lzT2JqZWN0
VHlwZU9yTnVsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCiAgICAg
ICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChnbG9iYWxPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7Ci0gICAgICAgIGlmIChvYmplY3QtPmlzRnVuY3Rp
b24odm0pKQorICAgICAgICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggZGE3MGJkMzgyZGUzMDQyNDVl
N2VkZTM2MTVjYTdkMjc4ZDUyNDE4Ny4uMGU2OTdiYjFhODJjZTkzOWYxOWVlMjUxNjA5MjQyOTYw
YjU2ZDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgUHJveHlPYmplY3Q6OnRvU3RyaW5nTmFtZShj
b25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogU3RydWN0dXJl
KiBQcm94eU9iamVjdDo6c3RydWN0dXJlRm9yVGFyZ2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKLSAgICByZXR1cm4gdGFyZ2V0LmlzRnVuY3Rpb24odm0pID8gZ2xvYmFsT2JqZWN0LT5jYWxs
YWJsZVByb3h5T2JqZWN0U3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb3h5T2JqZWN0U3Ry
dWN0dXJlKCk7CisgICAgcmV0dXJuIHRhcmdldC5pc0NhbGxhYmxlKHZtKSA/IGdsb2JhbE9iamVj
dC0+Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5wcm94eU9i
amVjdFN0cnVjdHVyZSgpOwogfQogCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFyZ2V0LCBKU1Zh
bHVlIGhhbmRsZXIpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0CiAK
ICAgICBKU09iamVjdCogdGFyZ2V0QXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQp
OwogCi0gICAgbV9pc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzRnVuY3Rpb24odm0pOwor
ICAgIG1faXNDYWxsYWJsZSA9IHRhcmdldEFzT2JqZWN0LT5pc0NhbGxhYmxlKHZtKTsKICAgICBp
ZiAobV9pc0NhbGxhYmxlKSB7CiAgICAgICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0p
LT50eXBlSW5mbygpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLmltcGxlbWVudHNIYXNJ
bnN0YW5jZSgpICYmIGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcAppbmRleCA3MzI4NzY1
YzljNmYxNGQ2MWEwYjk0Yjc3MzdkNzI0YThhOTAzOTZjLi5kOWVhYzhiYzQwZWY1NDEzYThhNjE2
ODU5ZmYyNDBhZDAzNTE4NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SdW50aW1lVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UnVudGltZVR5cGUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBl
Rm9yVmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICByZXR1cm4gVHlwZUJvb2xl
YW47CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBUeXBlT2JqZWN0
OwotICAgIGlmICh2YWx1ZS5pc0Z1bmN0aW9uKHZtKSkKKyAgICBpZiAodmFsdWUuaXNDYWxsYWJs
ZSh2bSkpCiAgICAgICAgIHJldHVybiBUeXBlRnVuY3Rpb247CiAgICAgaWYgKHZhbHVlLmlzU3lt
Ym9sKCkpCiAgICAgICAgIHJldHVybiBUeXBlU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDRmMWEzYmE2ZTJjYjg0OTgwZTIyMjIzMWJjZWRm
ZGI1ZGM0NTE5ZjAuLjMyMjI5NGE3MmY0ODg2M2NmODczNzE1NDRiMThmODQ5MDE1YTEyZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTIxNzgsNyAr
MjE3OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2Fs
bFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiSW52YWxpZCBudW1iZXIgb2YgYXJndW1l
bnRzIik7CiAgICAgSlNWYWx1ZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBK
U1ZhbHVlIGFyZzEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGlmICghYXJnMC5pc0Z1
bmN0aW9uKHZtKSkKKyAgICBpZiAoIWFyZzAuaXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiYXJnMCBzaG91bGQgYmUg
YSBmdW5jdGlvbiIpOwogICAgIGlmICghYXJnMS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgImFyZzEgc2hvdWxkIGJlIGEg
bnVtYmVyIik7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbihKU0dsb2JhbE9iamVjdAog
ICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgImpzYyBUZXN0
aW5nIEFQSTogZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24iX3MpOwogCiAgICAgSlNWYWx1
ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICBSRUxFQVNFX0FTU0VSVChm
dW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUu
YXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCiAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKQEAgLTI2MTEsNyArMjYx
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmV0dXJu
VHlwZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCkt
PnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5
cGVGb3IiX3MpOwogCiAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKLSAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0p
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0
YWJsZSgpOwogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0KHZtKTsKQEAgLTI2NDUsNyArMjY0NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSGFzQmFzaWNCbG9ja0V4ZWN1dGVkKEpTR2xvYmFs
T2JqZWN0CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKIAog
ICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxlKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5j
dGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAg
IFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CkBAIC0y
NjY1LDcgKzI2NjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudChKU0dsb2JhbE9iagogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9u
VmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUu
aXNDYWxsYWJsZSh2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0
T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbnN0YW5jZS5jcHAKaW5kZXggYTZlZDljMGIzMWVkNDBmYjc5MmQyMWYzYjFjMTEwMmUw
MDQzMzFjYS4uOTViODkyYjAwZWQ1MTU4OWM0NmJmMzZlNTRiYWIwYmYxOWE0ZjU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgSlNWYWx1ZSBJbnN0YW5jZTo6Z2V0RnVuY3Rpb25XcmFwcGVyKHVuc2lnbmVkIGkpIGNv
bnN0CiB2b2lkIEluc3RhbmNlOjpzZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9vd25lcik7Ci0gICAgQVNTRVJUKHZhbHVlLmlzRnVu
Y3Rpb24ob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLT52bSgpKSk7CisgICAgQVNTRVJU
KHZhbHVlLmlzQ2FsbGFibGUob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLT52bSgpKSk7
CiAgICAgQVNTRVJUKCFtX2Z1bmN0aW9uV3JhcHBlcnMuY29udGFpbnMoaSkpOwogICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob3duZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPigpLT5jZWxsTG9j
aygpKTsKICAgICBtX2Z1bmN0aW9uV3JhcHBlcnMuc2V0KGksIFdyaXRlQmFycmllcjxVbmtub3du
Pihvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCksIG93bmVyPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZT4oKSwgdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PcGVyYXRpb25zLmNwcAppbmRleCA1ZjQ5OWZmZDIxNzAzYmY3YzljN2M2OTI4MWJkNDBmYzM1
ZTIxZTk4Li41ZDA0ZWE3ZDVmYzI3YTAzYWY0ZDJhNjAzZWMzNWYxMjk3YmUwYzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC01MzksNyAr
NTM5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkl0ZXJhdGVSZXN1bHRzKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBJbnN0YW5jZSogaW5zdGEKICAgICAgICAgICAgICAgICB1bmJveGVk
VmFsdWUgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVj
dCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBGdW5jcmVmOgot
ICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGdW5jcmVmIHZhbHVlIGlzIG5vdCBh
IGZ1bmN0aW9uIl9zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBib29sIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2Fz
bVRhYmxlRmlsbChJbnN0YW5jZSogaW5zdGFuY2UsIHVuc2lnbmVkIHRhYmxlSW5kZQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtUmVmRnVuYyhJbnN0YW5jZSogaW5z
dGFuY2UsIHVpbnQzMl90IGluZGV4KQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBpbnN0YW5jZS0+
Z2V0RnVuY3Rpb25XcmFwcGVyKGluZGV4KTsKLSAgICBBU1NFUlQodmFsdWUuaXNGdW5jdGlvbihp
bnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKyAgICBBU1NFUlQodmFsdWUuaXND
YWxsYWJsZShpbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGRiYzhk
ZmJmZDIxYzk5MGZlNTNmNDA1YTNiMDU3MTRkYjM3NzhjYTcuLmJiZDEwZTQ5MjRmNWY4MDdlZjI3
NWJhYjI3YTVlMjFmNWI5MzcwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTE4OCw3ICsxODgs
NyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFs
S2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBp
bXBvcnQ6CiAgICAgICAgICAgICAvLyBpLiBJZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJv
dyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNGdW5j
dGlvbih2bSkpCisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKQogICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihn
bG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnQgZnVuY3Rp
b24iLCAibXVzdCBiZSBjYWxsYWJsZSIpKSk7CiAKICAgICAgICAgICAgIFdhc206Okluc3RhbmNl
KiBjYWxsZWVJbnN0YW5jZSA9IG51bGxwdHI7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlLCBKU09iamUKICAgICAgICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbjsKICAgICAgICAg
fQogCi0gICAgICAgIEFTU0VSVCh3cmFwcGVyLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAgQVNT
RVJUKHdyYXBwZXIuaXNDYWxsYWJsZSh2bSkpOwogICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5j
ZSgpLnNldEZ1bmN0aW9uV3JhcHBlcihpbmRleCwgd3JhcHBlcik7CiAKICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBKU09iamUKICAg
ICAgICAgICAgICAgICBpbml0aWFsQml0cyA9IG1faW5zdGFuY2UtPmluc3RhbmNlKCkubG9hZEk2
NEdsb2JhbChnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcik7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGdsb2JhbC5pbml0aWFsaXphdGlvblR5cGUgPT0gV2FzbTo6R2xvYmFsSW5mb3Jt
YXRpb246OkZyb21SZWZGdW5jKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGdsb2JhbC5pbml0
aWFsQml0c09ySW1wb3J0TnVtYmVyIDwgbW9kdWxlSW5mb3JtYXRpb24uZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3JhcHBlcigi
R2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKS5pc0Z1
bmN0aW9uKHZtKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1ha2VGdW5jdGlvbldyYXBwZXIo
Ikdsb2JhbCBpbml0IGV4cHIiLCBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcikuaXND
YWxsYWJsZSh2bSkpOwogICAgICAgICAgICAgICAgIGluaXRpYWxCaXRzID0gSlNWYWx1ZTo6ZW5j
b2RlKG1ha2VGdW5jdGlvbldyYXBwZXIoIkdsb2JhbCBpbml0IGV4cHIiLCBnbG9iYWwuaW5pdGlh
bEJpdHNPckltcG9ydE51bWJlcikpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgaW5pdGlhbEJpdHMgPSBnbG9iYWwuaW5pdGlhbEJpdHNPckltcG9ydE51bWJlcjsKQEAgLTQ0
NCw3ICs0NDQsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZQogICAgICAgICBzd2l0Y2ggKGV4
cC5raW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5jdGlvbjogewog
ICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1ha2VGdW5jdGlvbldyYXBwZXIoU3RyaW5nOjpm
cm9tVVRGOChleHAuZmllbGQpLCBleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgIEFTU0VSVChl
eHBvcnRlZFZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICAgICAgICAgIEFTU0VSVChleHBvcnRl
ZFZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAgICAgICAgICAgIEFTU0VSVChtYWtlRnVuY3Rpb25X
cmFwcGVyKFN0cmluZzo6ZnJvbVVURjgoZXhwLmZpZWxkKSwgZXhwLmtpbmRJbmRleCkgPT0gZXhw
b3J0ZWRWYWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24uY3BwCmluZGV4IDk1NjhlNjZkZTM0ZGRkYjAyZGZjYTRhZGIzYzIxYjYzMjk1NmFiNTMu
LmFlYjE2ZjZiMWM3OTNhNWM0NzVjNmY1ZGZmMjNkODIyYjc0ODM4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24q
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE8KIHZv
aWQgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5j
ZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lLCBpbnN0YW5jZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZShmdW5jdGlvbikuaXNG
dW5jdGlvbih2bSkpOworICAgIFJFTEVBU0VfQVNTRVJUKEpTVmFsdWUoZnVuY3Rpb24pLmlzQ2Fs
bGFibGUodm0pKTsKICAgICBtX2Z1bmN0aW9uLnNldCh2bSwgdGhpcywgZnVuY3Rpb24pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggODk3NGU2YWE3YWUyZDA3NTUxNjc4OWE4ZTQ2
MWJhMDc0NjE3YjlmNi4uMTZlMmYyMzQ2NDk0NWEwZjQ2MjAwY2Q3NzVhNDk0NjhmZjFhYjhjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmVuc3VyZVJlcGxhY2VtZW50U2NyaXB0SW5qZWN0ZWQoKQog
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmpl
Y3Q7CiAgICAgCiAgICAgSlNDOjpKU1ZhbHVlIHJlcGxhY2VtZW50RnVuY3Rpb24gPSBnbG9iYWxP
YmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJjcmVhdGVQbHVnaW5SZXBsYWNlbWVudCIpKTsKLSAgICBpZiAocmVwbGFjZW1lbnRG
dW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkKKyAgICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbi5pc0Nh
bGxhYmxlKHZtKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgc2NyaXB0Q29udHJv
bGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50U2NyaXB0KCkpLCB3b3JsZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1
c3RvbS5jcHAKaW5kZXggOTM0MmFjYjY3OWU0ZWEyNjkyZTQ0NTJlZDRiMGYyNmExMjk5NzA4Ni4u
MDkzNWRkOGU4Y2E0YjUyYzIzZjIyMjNjMTMwNmY5N2VlOTUwNzZjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEN1c3RvbUVs
ZW1lbnRDYWxsYmFjayhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSgogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmIChjYWxsYmFjay5p
c1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWNhbGxiYWNr
LmlzRnVuY3Rpb24odm0pKSB7CisgICAgaWYgKCFjYWxsYmFjay5pc0NhbGxhYmxlKHZtKSkgewog
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJBIGN1
c3RvbSBlbGVtZW50IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiJfcyk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0Q2FsbGJhY2tzLmgKaW5kZXggYTU0YTRiM2NiYTYzMTlmNDAyYjhhNWI0NjE4
Yjg2ZWU5MWQ5MjkwNi4uZTZjYTJhZjcyN2NlOGFmN2RiMjMxZGM3MGViNDg2NDBhODczYzk2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJh
Y2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJh
Y2tzLmgKQEAgLTQwLDcgKzQwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZl
cnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXIKICAgICAgICAg
SlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGlmICghdmFs
dWUuaXNGdW5jdGlvbih2bSkpIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc0NhbGxhYmxlKHZtKSkg
ewogICAgICAgICAgICAgZXhjZXB0aW9uVGhyb3dlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U2NoZWR1bGVkQWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24u
aAppbmRleCAyYzlkNTU3NWY3MmViNTE3NTc2OTQ0YTBjYjBmZmU1MzA2MzljOWNlLi44NWE3ZmQ2
YWIwZTlhYzViNzFjMjNlMDJlY2Q1N2U4MDBmMWVlNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24uaApAQCAt
MzgsNyArMzgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMU2NoZWR1bGVkQWN0
aW9uPiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMU2NoZWR1bGVkQQogICAgICAgICBKU0M6OlZNJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0
aW9uKHZtKSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAg
ICAgICBhdXRvIGNvZGUgPSBDb252ZXJ0ZXI8SURMRE9NU3RyaW5nPjo6Y29udmVydChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBTY2hlZHVsZWRBY3Rpb246OmNyZWF0
ZShnbG9iYWxPYmplY3Qud29ybGQoKSwgV1RGTW92ZShjb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAppbmRleCBlODVkNzViYjU3N2NlYjBmMmQ5YjFh
MjAyMzk0YTBkOGNlNjVmM2MwLi4zNzdkOTJlZGUxOTJiZmIyMzdmZDhhZWMyYzIzMGU1Y2Q2YTE2
MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2IKICAgICBpZiAoc2NvcGUuZXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCh0aGVuRnVuY3Rpb24uaXNG
dW5jdGlvbih2bSkpOworICAgIEFTU0VSVCh0aGVuRnVuY3Rpb24uaXNDYWxsYWJsZSh2bSkpOwog
CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRz
LmFwcGVuZChoYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAppbmRleCBkY2MzNzRmOTM1ZjRlOTQ4MTczN2VhMTc0ZDk2ZTNkMzEw
OGVjNWY1Li40NjY1YmNlYjlkYTdiMGRhM2UwM2UzYzRmMzBlODU4Yjk2OWEwOGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01
NDAsNyArNTQwLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cXVldWVNaWNyb3Rhc2soSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmEKICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QpKTsKIAogICAgIEpTVmFsdWUgZnVu
Y3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBpZiAoVU5M
SUtFTFkoIWZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpKQorICAgIGlmIChVTkxJS0VMWSgh
ZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxlKHZtKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUodGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJXaW5kb3ciLCAicXVldWVNaWNyb3Rhc2siKSk7CiAK
ICAgICBzY29wZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGIyZDQyOWNiZDljMDQ0
ZWI1NjhmMmY5ZjU2Yzk2ZDYyNDQ3MmUzNDQuLjI1ZmY2ZThhZWJkOGEyNzEwMDBjNWIxZTYxMmRk
M2NhYTE3MzIzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpTVmFsdWUg
SlNXb3JrZXJHbG9iYWxTY29wZTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUu
dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgaWYgKFVOTElLRUxZKCFmdW5jdGlvblZhbHVlLmlz
RnVuY3Rpb24odm0pKSkKKyAgICBpZiAoVU5MSUtFTFkoIWZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJs
ZSh2bSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiV29ya2VyR2xvYmFsU2NvcGUiLCAicXVldWVNaWNyb3Rhc2siKSk7CiAKICAgICBzY29wZS5y
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5j
cHAKaW5kZXggNTdlZWI1NzI1NWQxMGUzYmUxMmQ5YzJjMzAyYWQwOTVmZjhkZWRkMy4uMTFiYmFi
NmE4YmM4NGM4NmJjMjcwNTE0YjhlZmYxNGY4Yzk1NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJl
YWRhYmxlU3RyZWFtOjpwaXBlVG8oUmVhZGFibGVTdHJlYW1TaW5rJiBzaW5rKQogICAgIGNvbnN0
IElkZW50aWZpZXImIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJsZVN0cmVhbVBpcGVUb1By
aXZhdGVOYW1lKCk7CiAKICAgICBhdXRvIHJlYWRhYmxlU3RyZWFtUGlwZVRvID0gbV9nbG9iYWxP
YmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUpOwotICAgIEFTU0VS
VChyZWFkYWJsZVN0cmVhbVBpcGVUby5pc0Z1bmN0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0o
KSkpOworICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVBpcGVUby5pc0NhbGxhYmxlKGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKSkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhZGFibGVTdHJlYW0oKSk7CkBAIC05NCw3ICs5NCw3
IEBAIHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBSZWY8UmVhZGFibGVTdHJlYW0+PiBS
ZWFkYWJsZVN0cmVhbTo6dGVlKCkKICAgICBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFtZSA9
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zKCkucmVhZGFibGVTdHJlYW1UZWVQcml2YXRlTmFtZSgpOwogCiAgICAgYXV0byByZWFk
YWJsZVN0cmVhbVRlZSA9IG1fZ2xvYmFsT2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IHByaXZhdGVOYW1lKTsKLSAgICBBU1NFUlQocmVhZGFibGVTdHJlYW1UZWUuaXNGdW5jdGlvbihs
ZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKTsKKyAgICBBU1NFUlQocmVhZGFibGVTdHJlYW1UZWUu
aXNDYWxsYWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHJlYWRhYmxlU3RyZWFt
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAppbmRleCBkOTliZTg5ZmU1NThjN2E0YWM1
ZjdmNDIzMjFhYmVkNTRmMWNmNjYxLi45MDJlNjYxNWNjOTQ1ZmYyZjFjYzQzNzhjMjhkNGUyNjMz
MzNmMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBK
U0M6OkpTVmFsdWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tlKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8gZnVuY3Rpb24gPSBvYmplY3QuZ2V0KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHByb3Bl
cnR5TmFtZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNWYWx1ZSgp
KTsKIAotICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbih2bSkpIHsKKyAgICBpZiAoIWZ1bmN0
aW9uLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIGlmICghZnVuY3Rpb24uaXNVbmRlZmluZWQo
KSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3Qg
Y2FsbGFibGUiX3MpOwogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxMTc4
OWE5NjlmY2Y1ZGJjODA5NDY4NWYxNTdlMzM5ZGNjODQxYjhlLi5hZTI4ODVjMDMzYmU0YWM4ZGMw
MmM4MTIyNDc4YWM3Yzc0MzkwYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIFZhbHVlT3JFeGNlcHRp
b24gU2NyaXB0Q29udHJvbGxlcjo6Y2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0CiAgICAgICAgIGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgaWYgKCFmdW5jdGlvbk9iamVjdCB8fCAhZnVuY3Rpb25PYmplY3Qu
aXNGdW5jdGlvbih3b3JsZC52bSgpKSkgeworICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0IHx8
ICFmdW5jdGlvbk9iamVjdC5pc0NhbGxhYmxlKHdvcmxkLnZtKCkpKSB7CiAgICAgICAgICAgICBv
cHRpb25hbERldGFpbHMgPSB7IHsgIlVuYWJsZSB0byBjcmVhdGUgSmF2YVNjcmlwdCBhc3luYyBm
dW5jdGlvbiB0byBjYWxsIl9zIH0gfTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDY1NGU3ODNmNmFkYTFmM2MyMjBhNTg4ZWFkOTMyNWNhNTQ2MzJkM2MuLjRkYWY5NDgw
NmRmNzA3NmViZWJhNWIyZWViZDBkZDM0MTgzY2I4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNTEzLDcgKzM1MTMs
NyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIKICAgICAgICAgICAgICYkZ2VuZXJh
dGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQsICJkaXN0aW5ndWlzaGluZ0FyZy5p
c09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+dHlwZSgpID09IEVycm9y
SW5zdGFuY2VUeXBlIik7CiAKICAgICAgICAgICAgICRvdmVybG9hZCA9IEdldE92ZXJsb2FkVGhh
dE1hdGNoZXMoJFMsICRkLCBcJiRpc09iamVjdE9yQ2FsbGJhY2tGdW5jdGlvblBhcmFtZXRlcik7
Ci0gICAgICAgICAgICAmJGdlbmVyYXRlT3ZlcmxvYWRDYWxsSWZOZWNlc3NhcnkoJG92ZXJsb2Fk
LCAiZGlzdGluZ3Vpc2hpbmdBcmcuaXNGdW5jdGlvbih2bSkiKTsKKyAgICAgICAgICAgICYkZ2Vu
ZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQsICJkaXN0aW5ndWlzaGluZ0Fy
Zy5pc0NhbGxhYmxlKHZtKSIpOwogCiAgICAgICAgICAgICAjIEZJWE1FOiBBdm9pZCBpbnZva2lu
ZyBHZXRNZXRob2Qob2JqZWN0LCBTeW1ib2wuaXRlcmF0b3IpIGFnYWluIGluIGNvbnZlcnQ8SURM
U2VxdWVuY2U8VD4+KC4uLikuCiAgICAgICAgICAgICAkb3ZlcmxvYWQgPSBHZXRPdmVybG9hZFRo
YXRNYXRjaGVzKCRTLCAkZCwgXCYkaXNTZXF1ZW5jZU9yRnJvemVuQXJyYXlQYXJhbWV0ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjliNGJmMWIyN2Jh
NmRmZDdhNjc0NTYyOTUzYTg3MjE4NWM2ZDUyZS4uNGM4OGQ1OWNiNGUxNDc0MTIyMTUxYzQ2ZmI3
NGZmOWMwNzZiNTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC03MTQ3LDcgKzcxNDcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlh
Q29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRvIGZ1bmN0aW9uVmFsdWUgPSBnbG9iYWxPYmpl
Y3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjcmVhdGVDb250cm9scyIpKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNGdW5j
dGlvbih2bSkpCisgICAgICAgIGlmIChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggMGY4YmVjOTExNjI3MzI4NmI0ZmM1MjYzYjIwMWI3NDE3MTY0
NmU0Ni4uZjExNjRhZTljMWFjM2JmMDE2ODk2YjlmNGRkZWExZmMzNGY2NzkwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjI3Myw3ICsyMjczLDcgQEAgU3RyaW5nIElu
dGVybmFsczo6cGFyc2VyTWV0YURhdGEoSlNDOjpKU1ZhbHVlIGNvZGUpCiAgICAgICAgIGNhbGxG
cmFtZS0+aXRlcmF0ZSh2bSwgaXRlcik7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
aXRlci5jb2RlQmxvY2soKTsKICAgICAgICAgZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCk7Ci0gICAgfSBlbHNlIGlmIChjb2RlLmlzRnVuY3Rpb24odm0pKSB7CisgICAg
fSBlbHNlIGlmIChjb2RlLmlzQ2FsbGFibGUodm0pKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1
bmNPYmogPSBKU0M6OmpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29kZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgZXhlY3V0YWJsZSA9IGZ1bmNPYmotPmpzRXhlY3V0YWJsZSgpOwogICAg
IH0gZWxzZQpAQCAtNDY0Niw3ICs0NjQ2LDcgQEAgSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJy
YXlCdWZmZXIoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlMKICAg
ICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0KTsKICAgICBsZXhpY2FsR2xvYmFsT2JqZWN0Lm1ldGhvZFRhYmxlKHZt
KS0+Z2V0T3duUHJvcGVydHlTbG90KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcHJpdmF0ZU5hbWUsIHByb3BlcnR5U2xvdCk7CiAgICAgdmFsdWUgPSBwcm9wZXJ0
eVNsb3QuZ2V0VmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lKTsKLSAgICBB
U1NFUlQodmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgIEFTU0VSVCh2YWx1ZS5pc0NhbGxhYmxl
KHZtKSk7CiAKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAg
ICBhdXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IDRkYTY4MzNiZmFjMjYzOWZiMzFmM2ZhMDVhYjJmMjRlZmIxNjljNjAuLjBkOTU3OTI4ODI5
MWJlZWZmNmYyYmE4ZjYyZThkODViOGI1MWM3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgZ2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICAvLyBWYWxpZGF0ZSB0aGF0IHBhaW50Q29uc3RydWN0b3IgaXMgYSBW
b2lkRnVuY3Rpb24KLSAgICBpZiAoIXBhaW50Q29uc3RydWN0b3ItPmlzRnVuY3Rpb24odm0pKQor
ICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJwYWludENvbnN0cnVjdG9yIG11c3QgYmUgY2FsbGFi
bGUiIH07CiAKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4IDhm
NmY3YjAyMzE2YjEwOTI5ZjQ0M2M5ZDQ1Njk5YmJhN2I1YTk0ODUuLmI1NGFjYzlkOTBmNTE4ZTZi
MDVhNzMzN2U1NzNhYzNlZWNiMjY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUp
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fanNPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAobGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRp
ZmllclJlcCkpOyAgICAKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwogCi0gICAgcmV0dXJu
IHZhbHVlLmlzRnVuY3Rpb24odm0pOworICAgIHJldHVybiB2YWx1ZS5pc0NhbGxhYmxlKHZtKTsK
IH0KIAogYm9vbCBOUEpTT2JqZWN0OjppbnZva2UoTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUsIGNv
bnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOUFZhcmlh
bnQqIHJlc3VsdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397885</attachid>
            <date>2020-04-28 14:16:10 -0700</date>
            <delta_ts>2020-04-28 14:51:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211140-20200428141609.patch</filename>
            <type>text/plain</type>
            <size>47492</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmUwMjc1Zjk3OWU4M2FjMDUxNmM3NGMyYTc2ZmQxZTFjNTU3ZTc0Li4wNzk4OGFjOTg5NWVlNmVl
YzU2MTc3OGNiMTBjN2M4NDkxMjNiZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMC0wNC0yOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0pTQ10gQWxpZ24gdXBvbiB0aGUgbmFtZSBpc0NhbGxhYmxlIGlu
c3RlYWQgb2YgaXNGdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjExMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgRm9sbG93LXVwIHRvIHIyNjA3MjIuIFVzYWdlIGlzIG5vdyBjbGVhbmx5IHNlcGFy
YXRlZCBiZXR3ZWVuIGlzRnVuY3Rpb24gLyBnZXRDYWxsRGF0YSwKKyAgICAgICAgYnV0IHRoZSBu
YW1lIGlzQ2FsbGFibGUgaXMgc3RpbGwgY2xlYXJlciB0aGFuIGlzRnVuY3Rpb24gc28gbGV0J3Mg
ZmxpcCB0aGF0IGFmdGVyIGFsbC4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rp
b24pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ3JlYXRlUHJvbWlzZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzT2JqZWN0T3JOdWxsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWlsZFR5cGVPZik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzQ2FsbGFibGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBm
dGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uVHlwZU9m
T2JqZWN0QXNUeXBlb2ZUeXBlKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rp
b25TZXRVbmhhbmRsZWRSZWplY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JEZXNj
cmlwdGlvbkZvclZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RnVuY3Rpb25S
ZWFsbSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNGdW5jdGlvbiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0NhbGxhYmxlKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjppc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
T05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdldHRl
cik6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAgICAg
ICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9y
VmFsdWUpOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZU9yTnVsbCk6CisgICAgICAgICog
cnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpzdHJ1
Y3R1cmVGb3JUYXJnZXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvUnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlNDOjpy
dW50aW1lVHlwZUZvclZhbHVlKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZnVuY3Rpb25DYWxsV2l0aFN0YWNrU2l6ZSk6CisgICAgICAgIChKU0M6OmZ1
bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25SZXR1
cm5UeXBlRm9yKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkJhc2ljQmxvY2tFeGVjdXRpb25Db3VudCk6CisgICAg
ICAgICogd2FzbS9XYXNtSW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5j
ZTo6c2V0RnVuY3Rpb25XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6b3BlcmF0aW9uSXRlcmF0ZVJlc3VsdHMpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtUmVmRnVuYyk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKToKKwogMjAyMC0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIE51bWJlckNvbnN0cnVjdG9yIHNob3VsZCBhY2NlcHQg
QmlnSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzBlM2ZhYmI2MTc4YjI2M2ViY2Y5NWVjODM2Mzc3NzlmZTlh
MzhkMS4uYzg3ZGQ2YmRhNWMzM2I1ZDczNzE2OTVjYmE3N2Y1ZDMzMGQ2YWE1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTA0LTI4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBBbGlnbiB1cG9uIHRoZSBuYW1lIGlzQ2Fs
bGFibGUgaW5zdGVhZCBvZiBpc0Z1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTExNDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Ojpl
bnN1cmVSZXBsYWNlbWVudFNjcmlwdEluamVjdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRD
dXN0b21FbGVtZW50Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dENhbGxiYWNrcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETENhbGxiYWNrRnVu
Y3Rpb248VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRT
Y2hlZHVsZWRBY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExTY2hlZHVs
ZWRBY3Rpb24+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpxdWV1ZU1pY3JvdGFzayk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlOjpxdWV1ZU1pY3JvdGFzayk6CisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OnBpcGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6dGVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2Fk
RGlzcGF0Y2hlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3Rl
ZFNjcmlwdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OmNsb25lQXJyYXlCdWZmZXIpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNj
b3BlOjpyZWdpc3RlclBhaW50KToKKwogMjAyMC0wNC0yOCAgSmFjayBMZWUgIDxzaGloY2hpZWhf
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGluIEVkaXRDb21tYW5kOjpF
ZGl0Q29tbWFuZCB2aWEgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMzc1ZTJhZGNjZmU1YWUyN2FlMzcwYWI4ZGVlZDZkMmQzMjc4ZThkOS4uNTc0YzdkNjgyMzM3
YzVkYmJiY2NiNTIxYmY1ODQzNzBmMTg0MTQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMC0wNC0yOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQWxpZ24gdXBvbiB0aGUgbmFtZSBpc0NhbGxhYmxlIGluc3RlYWQgb2YgaXNG
dW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjExMTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5QSlNPYmplY3Q6Omhhc01ldGhvZCk6CisKIDIwMjAtMDQtMjggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRvcHQga01UU3VwcG9ydE5vdGlm
aWNhdGlvbl9TaG91bGRQbGF5SERSVmlkZW9DaGFuZ2VkIG5vdGlmaWNhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDI0MDE3OTE2ZTc1MTc2Yjgz
ZTM1ZDllZDAyODgyODMyNTIxNmM3NWIuLmQ2OWMzMzJjMzE1MWFkOGYwZWQ0Y2JkYzIwMDIwYmU1
Mjg3Njc3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
QEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldFVuaGFuZGxlZFJlamVj
dGlvbkNhbGxiYWNrKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIEpTT2JqZQogICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlMoZnVuY3Rpb24p
OwotICAgIGlmICghb2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkgeworICAgIGlmICghb2JqZWN0LT5p
c0NhbGxhYmxlKHZtKSkgewogICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBlZTk0NDlmZTA1YjdiMjkwM2RiOWYz
MDYzYTExYjc0OWY0OWY1NjFhLi5mNzJiMGFhNzMwYjM2MTg2ZWMzYThiNzdiYjE1OTE3M2YwMmQ3
NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtNzA2
LDcgKzcwNiw3IEBAIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCkKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgSlNDZWxsKiBjZWxsID0gdG9KUyhvYmplY3Qp
OwotICAgIHJldHVybiBjZWxsLT5pc0Z1bmN0aW9uKHZtKTsKKyAgICByZXR1cm4gY2VsbC0+aXND
YWxsYWJsZSh2bSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCBhNDdkZjI4MjkxNzc4ZTU5ZjFlZTk1Njc2YTBlYjgxYTBjYTBjYzRjLi4w
NjY2MWZiZWQ0MWJiMjkwYjVmMjFiOTZhNzUzYjIwYTU3ZGMzNzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIxNDMsNyArMjE0Myw3IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdElzT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZt
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+
aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTIxNTgsNyArMjE1OCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiAgICAgCiAg
ICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9i
YWxPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG9iamVjdC0+aXNGdW5j
dGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNzMsNyArMjE3Myw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25UeXBlT2ZPYmplY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsCiAgICAgCiAgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm4gdm0u
c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgIGlmIChvYmplY3QtPmlzRnVuY3Rp
b24odm0pKQorICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CiAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5vYmplY3RTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCBhMWExNmZiOWQ1YzA3MmI3NTAyNTdjMDFlZWUyOGEwOGFm
MjQwMjEyLi4xYWE5OGEzMzQxODkzODk4M2RmMDQyNjUyODhjMDdiZmI0YWJiYWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02OTcyLDcg
KzY5NzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92
ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJl
bHkoc2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2FsbGFibGUoY2FsbGVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCBy
YXJlbHkoc2xvd1BhdGgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOwogICAgICAgICBMVmFsdWUg
cmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9l
eGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC03MDE3LDcgKzcwMTcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoY2FsbGVlLCB3ZWFrUG9pbnRlcihtX25vZGUt
PmlzSW50ZXJuYWxQcm9taXNlKCkgPyBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yKCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1Y3RvcigpKSksIHVuc3VyZShm
YXN0QWxsb2NhdGlvbkNhc2UpLCB1bnN1cmUoZGVyaXZlZENhc2UpKTsKIAogICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlcml2ZWRDYXNlLCBpc0Z1bmN0aW9u
QmxvY2spOwotICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5
cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShz
bG93Q2FzZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNDYWxsYWJsZShjYWxsZWUsIHByb3Zl
blR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVs
eShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywg
aGFzUmFyZURhdGEpOwogICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0
cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC03
MDcyLDcgKzcwNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVl
LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2sp
LCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2FsbGFibGUoY2Fs
bGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxv
Y2spLCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOwogICAgICAgICBM
VmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5j
dGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CkBAIC0xMTU2OCw3ICsxMTU2OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENh
c2UsIG5vdEZ1bmN0aW9uQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzRnVuY3Rpb25S
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKTsKICAgICAgICAgbV9vdXQu
YnJhbmNoKAotICAgICAgICAgICAgaXNGdW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkp
LAorICAgICAgICAgICAgaXNDYWxsYWJsZSh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAogICAg
ICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RGdW5jdGlvbkNhc2UpKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEZ1bmN0aW9uQ2FzZSwgb2JqZWN0
Q2FzZSk7CkBAIC0xMTYyNSw3ICsxMTYyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdEZ1bmN0aW9uQ2FzZSk7
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZ1bmN0aW9uUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNG
dW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAorICAgICAgICAgICAgaXNDYWxsYWJs
ZSh2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkpLAogICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVh
dGlvbiksIHVuc3VyZShub3RGdW5jdGlvbkNhc2UpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdEZ1bmN0aW9uQ2FzZSwgc2xvd1BhdGgpOwpAQCAtMTYxOTQsNyArMTYxOTQs
NyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8ob2JqZWN0Q2Fz
ZSwgZnVuY3Rpb25DYXNlKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNG
dW5jdGlvbih2YWx1ZSwgcHJvdmVuVHlwZShjaGlsZCkgJiBTcGVjT2JqZWN0KSwKKyAgICAgICAg
ICAgIGlzQ2FsbGFibGUodmFsdWUsIHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY09iamVjdCksCiAg
ICAgICAgICAgICB1bnN1cmUoZnVuY3Rpb25DYXNlKSwgdW5zdXJlKG5vdEZ1bmN0aW9uQ2FzZSkp
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZnVuY3Rpb25DYXNlLCBub3RGdW5j
dGlvbkNhc2UpOwpAQCAtMTc4OTksNyArMTc4OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1ZSBjZWxsLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCisgICAgTFZhbHVlIGlzQ2FsbGFibGUoTFZhbHVlIGNl
bGwsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlICYgU3BlY0NlbGwsIFNwZWNGdW5j
dGlvbikpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggYjMzOTM3OWU2NmI3NjBjNDA3ZWI0ODQ3Zjcx
NmFmZjNmZDcyMDdhZC4uOTMzZTQ3M2NjYTE4YzM3MTNiOGVkMjEzOWEyMGFkNGYxZjkwZThkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC03MjEs
NyArNzIxLDcgQEAgZXh0ZXJuICJDIiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlw
ZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWMKIAogICAgIGlmIChvYmplY3QtPnN0
cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KFR5cGVvZlR5cGU6OlVuZGVmaW5lZCk7Ci0g
ICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgaWYgKG9iamVjdC0+aXNDYWxsYWJs
ZSh2bSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihUeXBlb2ZUeXBlOjpG
dW5jdGlvbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KFR5cGVvZlR5cGU6Ok9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDFlMTViMzQ4OWU2ZDQzNTBmNDAzYWMx
NzJiMTI4YzJjOGY0YmU5NTUuLjQ3ZDIxZDU3Mjc1NGNkZjg1YTlhMzY5YzllYjU1MWY4NTk3YmQ5
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2so
SlNHbG9iYWxPYmplYwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLmdldE9iamVjdCgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzRnVuY3Rpb24odm0pKQorICAgIGlm
ICghb2JqZWN0IHx8ICFvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGdsb2JhbE9iamVjdC0+
c2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sodm0sIG9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3MTc4Yzlh
MjJlOTg1OTlkOGY2MWM4ZmU3YjcxMjMzNWRmNGJhMmMyLi5iN2I4MDIwYTIwMDRkYmIyNmFkN2Yw
NTc5YjdkN2EyOWIxMzA3ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMiw3ICs4MzIsNyBAQCBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wSXNGdW5jdGlvbj4oKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKEdFVF9D
KGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpLmlzRnVuY3Rpb24odm0pKSk7CisgICAgUkVU
VVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS5pc0NhbGxh
YmxlKHZtKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlfdmFsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApp
bmRleCBjN2JiZjYzNWRiZTMyMGNiZTUzOGUwMDdhZGFhYmY5OTFjMTQzYTkxLi41ZmZmNzA0NjFl
ZGNlY2Y2YmQwOGI2MTI2NDZkMWI1ZDhjNzE4ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtOTUsNyArOTUsNyBAQCBT
dHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdikKICAgICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkKKyAgICAgICAgaWYgKG9i
amVjdC0+aXNDYWxsYWJsZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LmZ1bmN0aW9uU3RyaW5nKCktPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBK
U09iamVjdDo6Y2FsY3VsYXRlZENsYXNzTmFtZShvYmplY3QpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAy
YzkxNjBlNWJlNTY4ZmQwZjljNmZiZWYyZjlkNzNkMmQxMzg0ZTY5Li5iMzlhNTM2NGUwYzIxMDdi
Njk4YjRjYjk5YzMxNjVjNGIxODA5YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAg
ICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKLSAg
ICAgICAgaWYgKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpCisgICAgICAgIGlmIChvYmplY3QtPmlz
Q2FsbGFibGUodm0pKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlv
biAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59IikpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggZjg0YzU3MzI1NGE1ODkxMDFlZGNiZThl
MjljYzMwNjU2MWY5ZGNmNi4uNmMzZDkyOGFkMzQ2ZDVhYWQ3MGUwY2EyNmJmNTJhMjk3M2E4ODU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBTdHJ1Y3R1cmUqIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRmdW5jdGlvbnJlYWxtCiBKU0dsb2JhbE9i
amVjdCogZ2V0RnVuY3Rpb25SZWFsbShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
QVNTRVJUKG9iamVjdC0+aXNGdW5jdGlvbih2bSkpOworICAgIEFTU0VSVChvYmplY3QtPmlzQ2Fs
bGFibGUodm0pKTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4o
dm0pKQogICAgICAgICByZXR1cm4gZ2V0RnVuY3Rpb25SZWFsbSh2bSwganNDYXN0PEpTQm91bmRG
dW5jdGlvbio+KG9iamVjdCktPnRhcmdldEZ1bmN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDVkNzQ3ZWVlZmQ2Mjc3Yjk4MDk4MDI1MWMz
ZjQxNTBiNzNkN2QxODIuLjdlMzE3NTkxN2RmMzk1NDg3YmU3NGFhMGU4YWY2MTlmOWI2ZTAyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKQEAgLTIzMCw3
ICsyMzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzRnVuY3Rpb24oVk0mKSBjb25zdDsKKyAgICBi
b29sIGlzQ2FsbGFibGUoVk0mKSBjb25zdDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKSBj
b25zdDsKICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCmluZGV4IDA1OWU2MjZhZWMxZjU2Y2NhYTcyMTUwZjU2ZTE4Y2NmNGVkNTA5ZGQuLmIw
OTExNjIyNDNiMGMwNDA1MTk4YWFiNzNhZGQwYzY2MTBlMjIwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtODg3LDE4ICs4
ODcsMTQgQEAgaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT50
b09iamVjdChnbG9iYWxPYmplY3QpIDogdG9PYmplY3RTbG93Q2FzZShnbG9iYWxPYmplY3QpOwog
fQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Z1bmN0aW9uKFZNJiB2bSkgY29uc3QKK2lubGlu
ZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZtKSBjb25zdAogewotICAgIGlmICghaXND
ZWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYXNDZWxsKCktPmlzRnVu
Y3Rpb24odm0pOworICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNDYWxsYWJsZSh2
bSk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZtKSBjb25z
dAogewotICAgIGlmICghaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gYXNDZWxsKCktPmlzQ29uc3RydWN0b3Iodm0pOworICAgIHJldHVybiBpc0NlbGwoKSAmJiBh
c0NlbGwoKS0+aXNDb25zdHJ1Y3Rvcih2bSk7CiB9CiAKIC8vIHRoaXMgbWV0aG9kIGlzIGhlcmUg
dG8gYmUgYWZ0ZXIgdGhlIGlubGluZSBkZWNsYXJhdGlvbiBvZiBKU0NlbGw6OmluaGVyaXRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IGI4ZDZmNjUyMjU0ZGQwN2M1
MjE1MTMyZmRmYWM0MTc1YjNiZDljYTkuLmM2MTU4MGMxNjljNmZiZmI4YTcwM2I2MzMxMDBiNDBj
NjU1YjU3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBAIC0xMDcs
NyArMTA3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKICAg
ICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Byb3h5KCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc0Z1bmN0aW9uKFZNJik7CisgICAgYm9vbCBpc0NhbGxhYmxlKFZN
Jik7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKFZNJik7CiAgICAgYm9vbCBpbmhlcml0cyhWTSYs
IGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4g
Ym9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGYyNjA3MzA5ODNjM2U5Y2JlYzc2MzQyMDA0Nzk2ZGJi
ZDlmMGY2MDYuLjBkZWEyNzU2ZTFlYzNkYjczODMxNDQwNjEyMzEwNjI3ZjBmZjhjYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTIyOSw3
ICsyMjksNyBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdAogICAgIHJldHVy
biBtX3R5cGUgPT0gSW1wdXJlUHJveHlUeXBlIHx8IG1fdHlwZSA9PSBQdXJlRm9yd2FyZGluZ1By
b3h5VHlwZSB8fCBtX3R5cGUgPT0gUHJveHlPYmplY3RUeXBlOwogfQogCi1BTFdBWVNfSU5MSU5F
IGJvb2wgSlNDZWxsOjppc0Z1bmN0aW9uKFZNJiB2bSkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU0Nl
bGw6OmlzQ2FsbGFibGUoVk0mIHZtKQogewogICAgIGlmICh0eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAppbmRleCBkYmQ3YjJlMWE5MDYyNmZiOTA3YjA5YjRkNzU2ZTM5MDI3
ZDg0MjI0Li5iY2FhN2FiM2NiOGEwODdkMDA5MWM1NTNmNTNkNDdkYmQzN2YwNTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMzg0LDcgKzM4
NCw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0
cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZh
aWxlZDsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgaWYg
KG9iamVjdC0+aXNGdW5jdGlvbih2bSkpIHsKKyAgICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZt
KSkgewogICAgICAgICBpZiAoaG9sZGVyLmlzQXJyYXkoKSkgewogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJudWxsIik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3Vj
Y2VlZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCmluZGV4IDAwOWFlZmYzNDkxMTUyNDM1ZWYzYmFkYzBkMzJkYjcyZmJlMGI2
N2QuLjNjNjg1ZTYwY2IwMmI0NTM1ZjFkZDAxZDE3YmJlMDk0NjRiZDA2YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAg
LTUzMiw3ICs1MzIsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgIGlmIChoYXNQcm9w
ZXJ0eSkgewogICAgICAgICBKU1ZhbHVlIGdldCA9IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGlmICghZ2V0LmlzVW5kZWZpbmVkKCkgJiYgIWdldC5p
c0Z1bmN0aW9uKHZtKSkgeworICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpICYmICFnZXQu
aXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiJfcyk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTU0NSw3ICs1NDUsNyBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFBy
b3BlcnR5RGVzYwogICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICBKU1ZhbHVlIHNldCA9
IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIGlmICgh
c2V0LmlzVW5kZWZpbmVkKCkgJiYgIXNldC5pc0Z1bmN0aW9uKHZtKSkgeworICAgICAgICBpZiAo
IXNldC5pc1VuZGVmaW5lZCgpICYmICFzZXQuaXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1
bmN0aW9uLiJfcyk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4
IDZmZDY3ZGY5OGE1MjFlYWJjMmFhMDczNzljMGMzZjVmZDRhY2ZlZWYuLmM2MWE1YWM4ZDY0MDc3
OTQyODc1MmNkNWQ5ZGY3ODFiYWUxODc2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
Ci0gICAgaWYgKCFnZXQuaXNGdW5jdGlvbih2bSkpCisgICAgaWYgKCFnZXQuaXNDYWxsYWJsZSh2
bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJpbnZhbGlkIGdldHRlciB1c2FnZSJfcyk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMTgx
LDcgKzE4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5j
RGVmaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKCFzZXQuaXNGdW5jdGlvbih2bSkpCisgICAgaWYg
KCFzZXQuaXNDYWxsYWJsZSh2bSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHNldHRlciB1c2FnZSJfcyk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAppbmRleCBlYWM1ZDNhMWUwMTM1YTUwMDM0YjIwMTIwNTFkMDI5ZmZiMzg5ZjUwLi5kZmQ5Yzcx
NWU1NWIyOTE2MGM1OTY5YTM1M2M5MTgxZDczY2E5YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtOTksNyArOTksNyBAQCBKU1ZhbHVlIGpz
VHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2KQogICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCiAg
ICAgICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
Z2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCk7Ci0gICAgICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24odm0pKQorICAgICAg
ICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgICAgIHJldHVybiB2bS5zbWFs
bFN0cmluZ3MuZnVuY3Rpb25TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5vYmplY3RTdHJpbmcoKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIGpzSXNPYmplY3RU
eXBlT3JOdWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAg
ICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKLSAgICAgICAgaWYgKG9iamVjdC0+aXNGdW5jdGlv
bih2bSkpCisgICAgICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCBkYTcwYmQzODJkZTMwNDI0NWU3
ZWRlMzYxNWNhN2QyNzhkNTI0MTg3Li4wZTY5N2JiMWE4MmNlOTM5ZjE5ZWUyNTE2MDkyNDI5NjBi
NTZkMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBQcm94eU9iamVjdDo6dG9TdHJpbmdOYW1lKGNv
bnN0IEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiBTdHJ1Y3R1cmUq
IFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JUYXJnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB0YXJnZXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIHJldHVybiB0YXJnZXQuaXNGdW5jdGlvbih2bSkgPyBnbG9iYWxPYmplY3QtPmNhbGxh
YmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+cHJveHlPYmplY3RTdHJ1
Y3R1cmUoKTsKKyAgICByZXR1cm4gdGFyZ2V0LmlzQ2FsbGFibGUodm0pID8gZ2xvYmFsT2JqZWN0
LT5jYWxsYWJsZVByb3h5T2JqZWN0U3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb3h5T2Jq
ZWN0U3RydWN0dXJlKCk7CiB9CiAKIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0YXJnZXQsIEpTVmFs
dWUgaGFuZGxlcikKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHQKIAog
ICAgIEpTT2JqZWN0KiB0YXJnZXRBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCk7
CiAKLSAgICBtX2lzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVjdC0+aXNGdW5jdGlvbih2bSk7Cisg
ICAgbV9pc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPmlzQ2FsbGFibGUodm0pOwogICAgIGlm
IChtX2lzQ2FsbGFibGUpIHsKICAgICAgICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSh2bSkt
PnR5cGVJbmZvKCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8uaW1wbGVtZW50c0hhc0lu
c3RhbmNlKCkgJiYgaW5mby5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCmluZGV4IDczMjg3NjVj
OWM2ZjE0ZDYxYTBiOTRiNzczN2Q3MjRhOGE5MDM5NmMuLmQ5ZWFjOGJjNDBlZjU0MTNhOGE2MTY4
NTlmZjI0MGFkMDM1MTg0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1J1bnRpbWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
dW50aW1lVHlwZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUnVudGltZVR5cGUgcnVudGltZVR5cGVG
b3JWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiBUeXBlQm9vbGVh
bjsKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIFR5cGVPYmplY3Q7
Ci0gICAgaWYgKHZhbHVlLmlzRnVuY3Rpb24odm0pKQorICAgIGlmICh2YWx1ZS5pc0NhbGxhYmxl
KHZtKSkKICAgICAgICAgcmV0dXJuIFR5cGVGdW5jdGlvbjsKICAgICBpZiAodmFsdWUuaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIFR5cGVTeW1ib2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNGYxYTNiYTZlMmNiODQ5ODBlMjIyMjMxYmNlZGZk
YjVkYzQ1MTlmMC4uMzIyMjk0YTcyZjQ4ODYzY2Y4NzM3MTU0NGIxOGY4NDkwMTVhMTJmNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjE3OCw3ICsy
MTc4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DYWxs
V2l0aFN0YWNrU2l6ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVu
dHMiKTsKICAgICBKU1ZhbHVlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpT
VmFsdWUgYXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKCFhcmcwLmlzRnVu
Y3Rpb24odm0pKQorICAgIGlmICghYXJnMC5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJhcmcwIHNob3VsZCBiZSBh
IGZ1bmN0aW9uIik7CiAgICAgaWYgKCFhcmcxLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiYXJnMSBzaG91bGQgYmUgYSBu
dW1iZXIiKTsKQEAgLTI1OTEsNyArMjU5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uKEpTR2xvYmFsT2JqZWN0CiAg
ICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3Rp
bmcgQVBJOiBmdW5jdGlvbkZpbmRUeXBlRm9yRXhwcmVzc2lvbiJfcyk7CiAKICAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIFJFTEVBU0VfQVNT
RVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2bSkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZS5h
c0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRhYmxlKCk7CiAKICAgICBSRUxFQVNFX0FT
U0VSVChjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwpAQCAtMjYxMSw3ICsyNjEx
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZXR1cm5U
eXBlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+
cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uUmV0dXJuVHlw
ZUZvciJfcyk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwotICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNGdW5jdGlvbih2bSkp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2bSkpOwogICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rp
b24qPih2bSwgZnVuY3Rpb25WYWx1ZS5hc0NlbGwoKS0+Z2V0T2JqZWN0KCkpKS0+anNFeGVjdXRh
YmxlKCk7CiAKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQodm0pOwpAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25IYXNCYXNpY0Jsb2NrRXhlY3V0ZWQoSlNHbG9iYWxP
YmplY3QKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpOwogCiAg
ICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChmdW5jdGlvblZhbHVlLmlzRnVuY3Rpb24odm0pKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKTsKICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSAoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0
aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCiAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1N0cmluZygpKTsKQEAgLTI2
NjUsNyArMjY2NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEpTR2xvYmFsT2JqCiAgICAgUkVMRUFTRV9BU1NF
UlQodm0uY29udHJvbEZsb3dQcm9maWxlcigpKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25W
YWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5p
c0NhbGxhYmxlKHZtKSk7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRP
YmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUluc3RhbmNlLmNwcAppbmRleCBhNmVkOWMwYjMxZWQ0MGZiNzkyZDIxZjNiMWMxMTAyZTAw
NDMzMWNhLi45NWI4OTJiMDBlZDUxNTg5YzQ2YmYzNmU1NGJhYjBiZjE5YTRmNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTEwOCw3ICsxMDgs
NyBAQCBKU1ZhbHVlIEluc3RhbmNlOjpnZXRGdW5jdGlvbldyYXBwZXIodW5zaWduZWQgaSkgY29u
c3QKIHZvaWQgSW5zdGFuY2U6OnNldEZ1bmN0aW9uV3JhcHBlcih1bnNpZ25lZCBpLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIEFTU0VSVChtX293bmVyKTsKLSAgICBBU1NFUlQodmFsdWUuaXNGdW5j
dGlvbihvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCkpKTsKKyAgICBBU1NFUlQo
dmFsdWUuaXNDYWxsYWJsZShvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPnZtKCkpKTsK
ICAgICBBU1NFUlQoIW1fZnVuY3Rpb25XcmFwcGVycy5jb250YWlucyhpKSk7CiAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvd25lcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+KCktPmNlbGxMb2Nr
KCkpOwogICAgIG1fZnVuY3Rpb25XcmFwcGVycy5zZXQoaSwgV3JpdGVCYXJyaWVyPFVua25vd24+
KG93bmVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4oKS0+dm0oKSwgb3duZXI8SlNXZWJBc3NlbWJs
eUluc3RhbmNlPigpLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9wZXJhdGlvbnMuY3BwCmluZGV4IDVmNDk5ZmZkMjE3MDNiZjdjOWM3YzY5MjgxYmQ0MGZjMzVl
MjFlOTguLjVkMDRlYTdkNWZjMjdhMDNhZjRkMmE2MDNlYzM1ZjEyOTdiZTBjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTUzOSw3ICs1
MzksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXRlcmF0ZVJlc3VsdHMoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEluc3RhbmNlKiBpbnN0YQogICAgICAgICAgICAgICAgIHVuYm94ZWRW
YWx1ZSA9IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4odmFsdWUudG9OdW1iZXIoZ2xvYmFsT2JqZWN0
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEZ1bmNyZWY6Ci0g
ICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKHZtKSkgeworICAgICAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZ1bmNyZWYgdmFsdWUgaXMgbm90IGEg
ZnVuY3Rpb24iX3MpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNzI4LDcgKzcyOCw3IEBAIGJvb2wgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNt
VGFibGVGaWxsKEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWduZWQgdGFibGVJbmRlCiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21SZWZGdW5jKEluc3RhbmNlKiBpbnN0
YW5jZSwgdWludDMyX3QgaW5kZXgpCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGluc3RhbmNlLT5n
ZXRGdW5jdGlvbldyYXBwZXIoaW5kZXgpOwotICAgIEFTU0VSVCh2YWx1ZS5pc0Z1bmN0aW9uKGlu
c3RhbmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSkpOworICAgIEFTU0VSVCh2YWx1ZS5pc0Nh
bGxhYmxlKGluc3RhbmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggZGJjOGRm
YmZkMjFjOTkwZmU1M2Y0MDVhM2IwNTcxNGRiMzc3OGNhNy4uYmJkMTBlNDkyNGY1ZjgwN2VmMjc1
YmFiMjdhNWUyMWY1YjkzNzBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtMTg4LDcgKzE4OCw3
IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplCiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxL
aW5kOjpGdW5jdGlvbjogewogICAgICAgICAgICAgLy8gNC4gSWYgaSBpcyBhIGZ1bmN0aW9uIGlt
cG9ydDoKICAgICAgICAgICAgIC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRocm93
IGEgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0
aW9uKHZtKSkKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDYWxsYWJsZSh2bSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGds
b2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydCBmdW5jdGlv
biIsICJtdXN0IGJlIGNhbGxhYmxlIikpKTsKIAogICAgICAgICAgICAgV2FzbTo6SW5zdGFuY2Uq
IGNhbGxlZUluc3RhbmNlID0gbnVsbHB0cjsKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUsIEpTT2JqZQogICAgICAgICAgICAgd3JhcHBlciA9IGZ1bmN0aW9uOwogICAgICAgICB9
CiAKLSAgICAgICAgQVNTRVJUKHdyYXBwZXIuaXNGdW5jdGlvbih2bSkpOworICAgICAgICBBU1NF
UlQod3JhcHBlci5pc0NhbGxhYmxlKHZtKSk7CiAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNl
KCkuc2V0RnVuY3Rpb25XcmFwcGVyKGluZGV4LCB3cmFwcGVyKTsKIAogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZQogICAg
ICAgICAgICAgICAgIGluaXRpYWxCaXRzID0gbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTY0
R2xvYmFsKGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZ2xvYmFsLmluaXRpYWxpemF0aW9uVHlwZSA9PSBXYXNtOjpHbG9iYWxJbmZvcm1h
dGlvbjo6RnJvbVJlZkZ1bmMpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2xvYmFsLmluaXRp
YWxCaXRzT3JJbXBvcnROdW1iZXIgPCBtb2R1bGVJbmZvcm1hdGlvbi5mdW5jdGlvbkluZGV4U3Bh
Y2VTaXplKCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChtYWtlRnVuY3Rpb25XcmFwcGVyKCJH
bG9iYWwgaW5pdCBleHByIiwgZ2xvYmFsLmluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIpLmlzRnVu
Y3Rpb24odm0pKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobWFrZUZ1bmN0aW9uV3JhcHBlcigi
R2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyKS5pc0Nh
bGxhYmxlKHZtKSk7CiAgICAgICAgICAgICAgICAgaW5pdGlhbEJpdHMgPSBKU1ZhbHVlOjplbmNv
ZGUobWFrZUZ1bmN0aW9uV3JhcHBlcigiR2xvYmFsIGluaXQgZXhwciIsIGdsb2JhbC5pbml0aWFs
Qml0c09ySW1wb3J0TnVtYmVyKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICBpbml0aWFsQml0cyA9IGdsb2JhbC5pbml0aWFsQml0c09ySW1wb3J0TnVtYmVyOwpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplCiAgICAgICAgIHN3aXRjaCAoZXhw
LmtpbmQpIHsKICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiB7CiAg
ICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbWFrZUZ1bmN0aW9uV3JhcHBlcihTdHJpbmc6OmZy
b21VVEY4KGV4cC5maWVsZCksIGV4cC5raW5kSW5kZXgpOwotICAgICAgICAgICAgQVNTRVJUKGV4
cG9ydGVkVmFsdWUuaXNGdW5jdGlvbih2bSkpOworICAgICAgICAgICAgQVNTRVJUKGV4cG9ydGVk
VmFsdWUuaXNDYWxsYWJsZSh2bSkpOwogICAgICAgICAgICAgQVNTRVJUKG1ha2VGdW5jdGlvbldy
YXBwZXIoU3RyaW5nOjpmcm9tVVRGOChleHAuZmllbGQpLCBleHAua2luZEluZGV4KSA9PSBleHBv
cnRlZFZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbi5jcHAKaW5kZXggOTU2OGU2NmRlMzRkZGRiMDJkZmNhNGFkYjNjMjFiNjMyOTU2YWI1My4u
YWViMTZmNmIxYzc5M2E1YzQ3NWM2ZjVkZmYyM2Q4MjJiNzQ4Mzg4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBAQCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiog
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsTwogdm9p
ZCBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRp
dmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSlNPYmplY3QqIGZ1bmN0aW9uLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5h
bWUsIGluc3RhbmNlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlKGZ1bmN0aW9uKS5pc0Z1
bmN0aW9uKHZtKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoSlNWYWx1ZShmdW5jdGlvbikuaXNDYWxs
YWJsZSh2bSkpOwogICAgIG1fZnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbQppbmRleCA4OTc0ZTZhYTdhZTJkMDc1NTE2Nzg5YThlNDYx
YmEwNzQ2MTdiOWY2Li4xNmUyZjIzNDY0OTQ1YTBmNDYyMDBjZDc3NWE0OTQ2OGZmMWFiOGNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudDo6ZW5zdXJlUmVwbGFjZW1lbnRTY3JpcHRJbmplY3RlZCgpCiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVj
dDsKICAgICAKICAgICBKU0M6OkpTVmFsdWUgcmVwbGFjZW1lbnRGdW5jdGlvbiA9IGdsb2JhbE9i
amVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNyZWF0ZVBsdWdpblJlcGxhY2VtZW50IikpOwotICAgIGlmIChyZXBsYWNlbWVudEZ1
bmN0aW9uLmlzRnVuY3Rpb24odm0pKQorICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uLmlzQ2Fs
bGFibGUodm0pKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBzY3JpcHRDb250cm9s
bGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUocXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnRTY3JpcHQoKSksIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3Vz
dG9tLmNwcAppbmRleCA5MzQyYWNiNjc5ZTRlYTI2OTJlNDQ1MmVkNGIwZjI2YTEyOTk3MDg2Li4w
OTM1ZGQ4ZThjYTRiNTJjMjNmMjIyM2MxMzA2Zjk3ZWU5NTA3NmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlD
dXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxl
bWVudENhbGxiYWNrKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKGNhbGxiYWNrLmlz
VW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghY2FsbGJhY2su
aXNGdW5jdGlvbih2bSkpIHsKKyAgICBpZiAoIWNhbGxiYWNrLmlzQ2FsbGFibGUodm0pKSB7CiAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIkEgY3Vz
dG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIl9zKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRDYWxsYmFja3MuaAppbmRleCBhNTRhNGIzY2JhNjMxOWY0MDJiOGE1YjQ2MThi
ODZlZTkxZDkyOTA2Li5lNmNhMmFmNzI3Y2U4YWY3ZGIyMzFkYzcwZWI0ODY0MGE4NzNjOTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFj
a3MuaApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVy
dGVyPElETENhbGxiYWNrRnVuY3Rpb248VD4+IDogRGVmYXVsdENvbnZlcnRlcgogICAgICAgICBK
U0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgaWYgKCF2YWx1
ZS5pc0Z1bmN0aW9uKHZtKSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzQ2FsbGFibGUodm0pKSB7
CiAgICAgICAgICAgICBleGNlcHRpb25UaHJvd2VyKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTY2hlZHVsZWRBY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5o
CmluZGV4IDJjOWQ1NTc1ZjcyZWI1MTc1NzY5NDRhMGNiMGZmZTUzMDYzOWM5Y2UuLjg1YTdmZDZh
YjBlOWFjNWI3MWMyM2UwMmVjZDU3ZTgwMGYxZWU1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oCkBAIC0z
OCw3ICszOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExTY2hlZHVsZWRBY3Rp
b24+IDogRGVmYXVsdENvbnZlcnRlcjxJRExTY2hlZHVsZWRBCiAgICAgICAgIEpTQzo6Vk0mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rp
b24odm0pKSB7CisgICAgICAgIGlmICghdmFsdWUuaXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAg
ICAgIGF1dG8gY29kZSA9IENvbnZlcnRlcjxJRExET01TdHJpbmc+Ojpjb252ZXJ0KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRl
KGdsb2JhbE9iamVjdC53b3JsZCgpLCBXVEZNb3ZlKGNvZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmluZGV4IGU4NWQ3NWJiNTc3Y2ViMGYyZDliMWEy
MDIzOTRhMGQ4Y2U2NWYzYzAuLjM3N2Q5MmVkZTE5MmJmYjIzN2ZkOGFlYzJjMjMwZTVjZDZhMTYx
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcApAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIERPTVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0bGVkKEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYgogICAgIGlmIChzY29wZS5leGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHRoZW5GdW5jdGlvbi5pc0Z1
bmN0aW9uKHZtKSk7CisgICAgQVNTRVJUKHRoZW5GdW5jdGlvbi5pc0NhbGxhYmxlKHZtKSk7CiAK
ICAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMu
YXBwZW5kKGhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IGRjYzM3NGY5MzVmNGU5NDgxNzM3ZWExNzRkOTZlM2QzMTA4
ZWM1ZjUuLjQ2NjViY2ViOWRhN2IwZGEzZTAzZTNjNGYzMGU4NThiOTY5YTA4YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTU0
MCw3ICs1NDAsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpxdWV1ZU1pY3JvdGFzayhKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYQogICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogCiAgICAgSlNWYWx1ZSBmdW5j
dGlvblZhbHVlID0gY2FsbEZyYW1lLnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGlmIChVTkxJ
S0VMWSghZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0aW9uKHZtKSkpCisgICAgaWYgKFVOTElLRUxZKCFm
dW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIldpbmRvdyIsICJxdWV1ZU1pY3JvdGFzayIpKTsKIAog
ICAgIHNjb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKaW5kZXggYjJkNDI5Y2JkOWMwNDRl
YjU2OGYyZjlmNTZjOTZkNjI0NDcyZTM0NC4uMjVmZjZlOGFlYmQ4YTI3MTAwMGM1YjFlNjEyZGQz
Y2FhMTczMjMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgSlNWYWx1ZSBK
U1dvcmtlckdsb2JhbFNjb3BlOjpxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmxleGljYWxH
bG9iYWxPYmplY3QpKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS51
bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBpZiAoVU5MSUtFTFkoIWZ1bmN0aW9uVmFsdWUuaXNG
dW5jdGlvbih2bSkpKQorICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxl
KHZtKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJXb3JrZXJHbG9iYWxTY29wZSIsICJxdWV1ZU1pY3JvdGFzayIpKTsKIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNw
cAppbmRleCA1N2VlYjU3MjU1ZDEwZTNiZTEyZDljMmMzMDJhZDA5NWZmOGRlZGQzLi4xMWJiYWI2
YThiYzg0Yzg2YmMyNzA1MTRiOGVmZjE0ZjhjOTU0ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVh
ZGFibGVTdHJlYW06OnBpcGVUbyhSZWFkYWJsZVN0cmVhbVNpbmsmIHNpbmspCiAgICAgY29uc3Qg
SWRlbnRpZmllciYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
cmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3RyZWFtUGlwZVRvUHJp
dmF0ZU5hbWUoKTsKIAogICAgIGF1dG8gcmVhZGFibGVTdHJlYW1QaXBlVG8gPSBtX2dsb2JhbE9i
amVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcml2YXRlTmFtZSk7Ci0gICAgQVNTRVJU
KHJlYWRhYmxlU3RyZWFtUGlwZVRvLmlzRnVuY3Rpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
KSk7CisgICAgQVNTRVJUKHJlYWRhYmxlU3RyZWFtUGlwZVRvLmlzQ2FsbGFibGUobGV4aWNhbEds
b2JhbE9iamVjdC52bSgpKSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZChyZWFkYWJsZVN0cmVhbSgpKTsKQEAgLTk0LDcgKzk0LDcg
QEAgc3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+IFJl
YWRhYmxlU3RyZWFtOjp0ZWUoKQogICAgIGNvbnN0IElkZW50aWZpZXImIHByaXZhdGVOYW1lID0g
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMoKS5yZWFkYWJsZVN0cmVhbVRlZVByaXZhdGVOYW1lKCk7CiAKICAgICBhdXRvIHJlYWRh
YmxlU3RyZWFtVGVlID0gbV9nbG9iYWxPYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
cHJpdmF0ZU5hbWUpOwotICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVRlZS5pc0Z1bmN0aW9uKGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKSkpOworICAgIEFTU0VSVChyZWFkYWJsZVN0cmVhbVRlZS5p
c0NhbGxhYmxlKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSkpOwogCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQocmVhZGFibGVTdHJlYW0o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5OWJlODlmZTU1OGM3YTRhYzVm
N2Y0MjMyMWFiZWQ1NGYxY2Y2NjEuLjkwMmU2NjE1Y2M5NDVmZjJmMWNjNDM3OGMyOGQ0ZTI2MzMz
M2YyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEpT
Qzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZva2UoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhCiAgICAgYXV0byBmdW5jdGlvbiA9IG9iamVjdC5nZXQoJmxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcHJvcGVy
dHlOYW1lKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkp
OwogCi0gICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKHZtKSkgeworICAgIGlmICghZnVuY3Rp
b24uaXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAgaWYgKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgp
KQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBj
YWxsYWJsZSJfcyk7CiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDExNzg5
YTk2OWZjZjVkYmM4MDk0Njg1ZjE1N2UzMzlkY2M4NDFiOGUuLmFlMjg4NWMwMzNiZTRhYzhkYzAy
YzgxMjI0NzhhYzdjNzQzOTBjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02NTksNyArNjU5LDcgQEAgVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpjYWxsSW5Xb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXQKICAgICAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCiAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICBpZiAoIWZ1bmN0aW9uT2JqZWN0IHx8ICFmdW5jdGlvbk9iamVjdC5p
c0Z1bmN0aW9uKHdvcmxkLnZtKCkpKSB7CisgICAgICAgIGlmICghZnVuY3Rpb25PYmplY3QgfHwg
IWZ1bmN0aW9uT2JqZWN0LmlzQ2FsbGFibGUod29ybGQudm0oKSkpIHsKICAgICAgICAgICAgIG9w
dGlvbmFsRGV0YWlscyA9IHsgeyAiVW5hYmxlIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IGFzeW5jIGZ1
bmN0aW9uIHRvIGNhbGwiX3MgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggNjU0ZTc4M2Y2YWRhMWYzYzIyMGE1ODhlYWQ5MzI1Y2E1NDYzMmQzYy4uNGRhZjk0ODA2
ZGY3MDc2ZWJlYmE1YjJlZWJkMGRkMzQxODNjYjgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM1MTMsNyArMzUxMyw3
IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcgogICAgICAgICAgICAgJiRnZW5lcmF0
ZU92ZXJsb2FkQ2FsbElmTmVjZXNzYXJ5KCRvdmVybG9hZCwgImRpc3Rpbmd1aXNoaW5nQXJnLmlz
T2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT50eXBlKCkgPT0gRXJyb3JJ
bnN0YW5jZVR5cGUiKTsKIAogICAgICAgICAgICAgJG92ZXJsb2FkID0gR2V0T3ZlcmxvYWRUaGF0
TWF0Y2hlcygkUywgJGQsIFwmJGlzT2JqZWN0T3JDYWxsYmFja0Z1bmN0aW9uUGFyYW1ldGVyKTsK
LSAgICAgICAgICAgICYkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSgkb3ZlcmxvYWQs
ICJkaXN0aW5ndWlzaGluZ0FyZy5pc0Z1bmN0aW9uKHZtKSIpOworICAgICAgICAgICAgJiRnZW5l
cmF0ZU92ZXJsb2FkQ2FsbElmTmVjZXNzYXJ5KCRvdmVybG9hZCwgImRpc3Rpbmd1aXNoaW5nQXJn
LmlzQ2FsbGFibGUodm0pIik7CiAKICAgICAgICAgICAgICMgRklYTUU6IEF2b2lkIGludm9raW5n
IEdldE1ldGhvZChvYmplY3QsIFN5bWJvbC5pdGVyYXRvcikgYWdhaW4gaW4gY29udmVydDxJRExT
ZXF1ZW5jZTxUPj4oLi4uKS4KICAgICAgICAgICAgICRvdmVybG9hZCA9IEdldE92ZXJsb2FkVGhh
dE1hdGNoZXMoJFMsICRkLCBcJiRpc1NlcXVlbmNlT3JGcm96ZW5BcnJheVBhcmFtZXRlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2OWI0YmYxYjI3YmE2
ZGZkN2E2NzQ1NjI5NTNhODcyMTg1YzZkNTJlLi40Yzg4ZDU5Y2I0ZTE0NzQxMjIxNTFjNDZmYjc0
ZmY5YzA3NmI1NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTcxNDcsNyArNzE0Nyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlTWVkaWFD
b250cm9sc0luamVjdGVkU2NyaXB0KCkKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgICAgIGF1dG8gZnVuY3Rpb25WYWx1ZSA9IGdsb2JhbE9iamVj
dC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNyZWF0ZUNvbnRyb2xzIikpOwotICAgICAgICBpZiAoZnVuY3Rpb25WYWx1ZS5pc0Z1bmN0
aW9uKHZtKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2bSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAwZjhiZWM5MTE2MjczMjg2YjRmYzUyNjNiMjAxYjc0MTcxNjQ2
ZTQ2Li5mMTE2NGFlOWMxYWMzYmYwMTY4OTZiOWY0ZGRlYTFmYzM0ZjY3OTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMjczLDcgKzIyNzMsNyBAQCBTdHJpbmcgSW50
ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShKU0M6OkpTVmFsdWUgY29kZSkKICAgICAgICAgY2FsbEZy
YW1lLT5pdGVyYXRlKHZtLCBpdGVyKTsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBp
dGVyLmNvZGVCbG9jaygpOwogICAgICAgICBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKTsKLSAgICB9IGVsc2UgaWYgKGNvZGUuaXNGdW5jdGlvbih2bSkpIHsKKyAgICB9
IGVsc2UgaWYgKGNvZGUuaXNDYWxsYWJsZSh2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y09iaiA9IEpTQzo6anNDYXN0PEpTRnVuY3Rpb24qPihjb2RlLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCkpOwogICAgICAgICBleGVjdXRhYmxlID0gZnVuY09iai0+anNFeGVjdXRhYmxlKCk7CiAgICAg
fSBlbHNlCkBAIC00NjQ2LDcgKzQ2NDYsNyBAQCBKU1ZhbHVlIEludGVybmFsczo6Y2xvbmVBcnJh
eUJ1ZmZlcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKUwogICAg
IFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXQpOwogICAgIGxleGljYWxHbG9iYWxPYmplY3QubWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eVNsb3QoJmxleGljYWxHbG9iYWxPYmplY3QsICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwcml2YXRlTmFtZSwgcHJvcGVydHlTbG90KTsKICAgICB2YWx1ZSA9IHByb3BlcnR5
U2xvdC5nZXRWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJpdmF0ZU5hbWUpOwotICAgIEFT
U0VSVCh2YWx1ZS5pc0Z1bmN0aW9uKHZtKSk7CisgICAgQVNTRVJUKHZhbHVlLmlzQ2FsbGFibGUo
dm0pKTsKIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IHZhbHVlLmdldE9iamVjdCgpOwogICAg
IGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5k
ZXggNGRhNjgzM2JmYWMyNjM5ZmIzMWYzZmEwNWFiMmYyNGVmYjE2OWM2MC4uMGQ5NTc5Mjg4Mjkx
YmVlZmY2ZjJiYThmNjJlOGQ4NWI4YjUxYzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIFZhbGlkYXRlIHRoYXQgcGFpbnRDb25zdHJ1Y3RvciBpcyBhIFZv
aWRGdW5jdGlvbgotICAgIGlmICghcGFpbnRDb25zdHJ1Y3Rvci0+aXNGdW5jdGlvbih2bSkpCisg
ICAgaWYgKCFwYWludENvbnN0cnVjdG9yLT5pc0NhbGxhYmxlKHZtKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgInBhaW50Q29uc3RydWN0b3IgbXVzdCBiZSBjYWxsYWJs
ZSIgfTsKIAogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKaW5kZXggOGY2
ZjdiMDIzMTZiMTA5MjlmNDQzYzlkNDU2OTliYmE3YjVhOTQ4NS4uYjU0YWNjOWQ5MGY1MThlNmIw
NWE3MzM3ZTU3M2FjM2VlY2IyNjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBib29sIE5QSlNPYmplY3Q6Omhhc01ldGhvZChOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkK
ICAgICBKU1ZhbHVlIHZhbHVlID0gbV9qc09iamVjdC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlm
aWVyUmVwKSk7ICAgIAogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKLSAgICByZXR1cm4g
dmFsdWUuaXNGdW5jdGlvbih2bSk7CisgICAgcmV0dXJuIHZhbHVlLmlzQ2FsbGFibGUodm0pOwog
fQogCiBib29sIE5QSlNPYmplY3Q6Omludm9rZShOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29u
c3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFu
dCogcmVzdWx0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>