<?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>175037</bug_id>
          
          <creation_ts>2017-08-01 11:10:29 -0700</creation_ts>
          <short_desc>Baseline JIT should do caging</short_desc>
          <delta_ts>2017-08-08 16:41:10 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          <blocked>174917</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1333859</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-01 11:10:29 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336167</commentid>
    <comment_count>1</comment_count>
      <attachid>317476</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-07 15:17:47 -0700</bug_when>
    <thetext>Created attachment 317476
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336172</commentid>
    <comment_count>2</comment_count>
      <attachid>317479</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-07 15:24:52 -0700</bug_when>
    <thetext>Created attachment 317479
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336186</commentid>
    <comment_count>3</comment_count>
      <attachid>317486</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-07 15:32:39 -0700</bug_when>
    <thetext>Created attachment 317486
more

Hopefully fixes things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336201</commentid>
    <comment_count>4</comment_count>
      <attachid>317486</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-07 16:12:34 -0700</bug_when>
    <thetext>Comment on attachment 317486
more

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

r=me with suggestions.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1322
&gt; +        if (!Gigacage::shouldBeEnabled())
&gt; +            return;
&gt; +        
&gt; +#if GIGACAGE_ENABLED
&gt; +        andPtr(TrustedImmPtr(static_cast&lt;size_t&gt;(GIGACAGE_MASK)), storage);
&gt; +        addPtr(TrustedImmPtr(Gigacage::basePtr(kind)), storage);
&gt; +#endif

You can move the #if GIGACAGE_ENABLED before the &quot;if (!Gigacage::shouldBeEnabled())&quot; check.  Need to add UNUSED_PARAM for kind and storage in the #else case though.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1339
&gt; +        if (!Gigacage::shouldBeEnabled())
&gt; +            return;
&gt; +        
&gt; +        if (kind != Gigacage::Primitive || Gigacage::isDisablingPrimitiveGigacageDisabled())
&gt; +            return cage(kind, storage);
&gt; +        
&gt; +        loadPtr(Gigacage::basePtr(kind), scratch);
&gt; +        Jump done = branchTestPtr(Zero, scratch);
&gt; +#if GIGACAGE_ENABLED
&gt; +        andPtr(TrustedImmPtr(static_cast&lt;size_t&gt;(GIGACAGE_MASK)), storage);
&gt; +        addPtr(scratch, storage);
&gt; +#endif
&gt; +        done.link(this);

You can move the #if GIGACAGE_ENABLED before the &quot;if (!Gigacage::shouldBeEnabled())&quot; check.  Need to add UNUSED_PARAM for kind, storage, and scratch in the #else case though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336202</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-07 16:13:35 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #4)
&gt; Comment on attachment 317486 [details]
&gt; more
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317486&amp;action=review
&gt; 
&gt; r=me with suggestions.
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1322
&gt; &gt; +        if (!Gigacage::shouldBeEnabled())
&gt; &gt; +            return;
&gt; &gt; +        
&gt; &gt; +#if GIGACAGE_ENABLED
&gt; &gt; +        andPtr(TrustedImmPtr(static_cast&lt;size_t&gt;(GIGACAGE_MASK)), storage);
&gt; &gt; +        addPtr(TrustedImmPtr(Gigacage::basePtr(kind)), storage);
&gt; &gt; +#endif
&gt; 
&gt; You can move the #if GIGACAGE_ENABLED before the &quot;if
&gt; (!Gigacage::shouldBeEnabled())&quot; check.  Need to add UNUSED_PARAM for kind
&gt; and storage in the #else case though.
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:1339
&gt; &gt; +        if (!Gigacage::shouldBeEnabled())
&gt; &gt; +            return;
&gt; &gt; +        
&gt; &gt; +        if (kind != Gigacage::Primitive || Gigacage::isDisablingPrimitiveGigacageDisabled())
&gt; &gt; +            return cage(kind, storage);
&gt; &gt; +        
&gt; &gt; +        loadPtr(Gigacage::basePtr(kind), scratch);
&gt; &gt; +        Jump done = branchTestPtr(Zero, scratch);
&gt; &gt; +#if GIGACAGE_ENABLED
&gt; &gt; +        andPtr(TrustedImmPtr(static_cast&lt;size_t&gt;(GIGACAGE_MASK)), storage);
&gt; &gt; +        addPtr(scratch, storage);
&gt; &gt; +#endif
&gt; &gt; +        done.link(this);
&gt; 
&gt; You can move the #if GIGACAGE_ENABLED before the &quot;if
&gt; (!Gigacage::shouldBeEnabled())&quot; check.  Need to add UNUSED_PARAM for kind,
&gt; storage, and scratch in the #else case though.

SGTM, I&apos;ll make those changes.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336225</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-07 16:30:35 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/220368/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336227</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-07 16:31:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/33764948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336494</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-08-08 09:00:11 -0700</bug_when>
    <thetext>Reverted r220368 for reason:

This change caused WK1 tests to exit early with crashes.

Committed r220404: &lt;http://trac.webkit.org/changeset/220404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336495</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-08-08 09:01:15 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #8)
&gt; Reverted r220368 for reason:
&gt; 
&gt; This change caused WK1 tests to exit early with crashes.
&gt; 
&gt; Committed r220404: &lt;http://trac.webkit.org/changeset/220404&gt;
Link to test run that exhibits the crashes:

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK1%20%28Tests%29/builds/3717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336595</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-08 12:44:55 -0700</bug_when>
    <thetext>Relanded in after fixing cageConditionally() for non-WK2/jsc: https://trac.webkit.org/changeset/220416/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336759</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-08 16:41:10 -0700</bug_when>
    <thetext>Relanded in after fixing cageConditionally() for non-WK2/jsc: https://trac.webkit.org/changeset/220416/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317476</attachid>
            <date>2017-08-07 15:17:47 -0700</date>
            <delta_ts>2017-08-07 15:24:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19268</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhIEFzc2VtYmx5SGVscGVyczo6Y2Fn
ZSBhbmQgY2FnZUNvbmRpdGlvbmFsbHkuIFVzZXMgaXQgaW4gdGhlIGJhc2VsaW5lIEpJVC4KKyAg
ICAgICAgCisgICAgICAgIEFsc28gbW9kaWZpZXMgRlRMIGNhZ2luZyB0byBiZSBtb3JlIGRlZmVu
c2l2ZSB3aGVuIGNhZ2luZyBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWdlZCk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmNhZ2UpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25k
aXRpb25hbGx5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXREb3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29u
dGlndW91c0xvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQpOiBEZWxldGVkLgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVzIGFuZCBKU1ZhbHVlIGF1eGlsaWFy
aWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODAyLDEyICszODAyLDYgQEAgaW50IHJ1bkpTQyhDb21tYW5kTGlu
ZSBvcHRpb25zLCBib29sIGlzVwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lk
IHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQodm9pZCopCi17Ci0gICAgZGF0YUxvZygiUHJpbWl0
aXZlIGdpZ2FjYWdlIGRpc2FibGVkISBBYm9ydGluZy5cbiIpOwotICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwotfQotCiBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
CiAgICAgLy8gTmVlZCB0byBvdmVycmlkZSBhbmQgZW5hYmxlIHJlc3RyaWN0ZWQgb3B0aW9ucyBi
ZWZvcmUgd2Ugc3RhcnQgcGFyc2luZyBvcHRpb25zIGJlbG93LgpAQCAtMzgyNiw4ICszODIwLDcg
QEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkoKTsKICNlbmRpZgotICAgIGlm
IChHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCi0gICAgICAgIEdpZ2FjYWdlOjphZGRQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCwgbnVsbHB0cik7
CisgICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYm1saW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3Vs
ZEJlRW5hYmxlZCgpOwogCiAgICAgaW50IHJlc3VsdDsKICAgICByZXN1bHQgPSBydW5KU0MoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjE2LDcgKzExNjE2LDEwIEBAIHByaXZhdGU6
CiAgICAgCiAgICAgTFZhbHVlIGNhZ2VkKEdpZ2FjYWdlOjpLaW5kIGtpbmQsIExWYWx1ZSBwdHIp
CiAgICAgewotICAgICAgICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7CisgICAg
ICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHB0cjsKKyAgICAgICAgCisgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUg
JiYgR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpKSB7CiAgICAgICAg
ICAgICBpZiAodm0oKS5wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKS5pc1N0aWxsVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHZtKCkucHJp
bWl0aXZlR2lnYWNhZ2VFbmFibGVkKCkpOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyMjAzNTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzExLDYgKzEzMTEsMzQgQEAgcHVibGljOgogICAgICAgICBvay5saW5rKHRo
aXMpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNhZ2UoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BS
UmVnIHN0b3JhZ2UpCisgICAgeworICAgICAgICBpZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVuYWJs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisjaWYgR0lHQUNBR0VfRU5BQkxF
RAorICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FD
QUdFX01BU0spKSwgc3RvcmFnZSk7CisgICAgICAgIGFkZFB0cihBYnNvbHV0ZUFkZHJlc3MoR2ln
YWNhZ2U6OmJhc2VQdHIoa2luZCkpLCBzdG9yYWdlKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9y
YWdlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICB7CisgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3Vs
ZEJlRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYg
KGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZURpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gY2FnZShraW5kLCBz
dG9yYWdlKTsKKyAgICAgICAgCisgICAgICAgIGxvYWRQdHIoR2lnYWNhZ2U6OmJhc2VQdHIoa2lu
ZCksIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHNj
cmF0Y2gpOworI2lmIEdJR0FDQUdFX0VOQUJMRUQKKyAgICAgICAgYW5kUHRyKFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihHSUdBQ0FHRV9NQVNLKSksIHN0b3JhZ2UpOworICAgICAg
ICBhZGRQdHIoc2NyYXRjaCwgc3RvcmFnZSk7CisjZW5kaWYKKyAgICAgICAgZG9uZS5saW5rKHRo
aXMpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN0b3JlQnV0dGVyZmx5KFZNJiB2bSwgR1BSUmVn
IGJ1dHRlcmZseSwgR1BSUmVnIG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4NigpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkocmV2aXNpb24gMjIwMzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOCBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoSW5zdHJ1CiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDIsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOwotICAgIC8vIEZJWE1FOiBTaG91bGQgZG8g
Y2FnaW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUwMzcKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHJlZ1QyKTsKKyAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCByZWdUMik7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJl
Z1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZERvdWJs
ZShCYXNlSW5kZXgocmVnVDIsIHJlZ1QxLCBUaW1lc0VpZ2h0KSwgZnBSZWdUMCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnBS
ZWdUMCwgZnBSZWdUMCkpOwpAQCAtMTg3LDkgKzE4Niw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0Q29udGlndW91c0xvYWQoSW4KICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMy
KGV4cGVjdGVkU2hhcGUpKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7
CisgICAgY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWQ2NChCYXNlSW5kZXgocmVnVDIs
IHJlZ1QxLCBUaW1lc0VpZ2h0KSwgcmVnVDApOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
VGVzdDY0KFplcm8sIHJlZ1QwKSk7CkBAIC0yMDQsOSArMjAyLDggQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlT
dG9yYWdlU2hhcGUpLCByZWdUMiwgcmVnVDMpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgcmVnVDMsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUg
LSBBcnJheVN0b3JhZ2VTaGFwZSkpOwogCi0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcu
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
cmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHJlZ1QyKTsKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFy
cmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICBsb2FkNjQoQmFzZUlu
ZGV4KHJlZ1QyLCByZWdUMSwgVGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQo
KSksIHJlZ1QwKTsKQEAgLTM1Myw5ICszNTAsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzCiAKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOwogICAgIAotICAgIC8vIEZJ
WE1FOiBTaG91bGQgZG8gY2FnaW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUwMzcKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVl
LCByZWdUMik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkp
OwogCiAgICAgTGFiZWwgc3RvcmVSZXN1bHQgPSBsYWJlbCgpOwpAQCAtNDEwLDkgKzQwNiw4IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnkKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Ci0gICAgLy8gRklYTUU6
IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHJl
Z1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEs
IEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAK
ICAgICBKdW1wIGVtcHR5ID0gYnJhbmNoVGVzdDY0KFplcm8sIEJhc2VJbmRleChyZWdUMiwgcmVn
VDEsIFRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKTsKQEAgLTkyMyw5
ICs5MTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjCiAgICAg
ICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVE9mZnNldElzTm90T3V0T2ZMaW5lKTsKICAg
ICAgICAgICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRj
aCk7CisgICAgICAgICAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCBzY3JhdGNoKTsKICAgICAg
ICAgICAgIG5lZzMyKG9mZnNldCk7CiAgICAgICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihvZmZz
ZXQsIG9mZnNldCk7CiAgICAgICAgICAgICBsb2FkNjQoQmFzZUluZGV4KHNjcmF0Y2gsIG9mZnNl
dCwgVGltZXNFaWdodCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgcmVzdWx0KTsKQEAgLTEwNjYsOSArMTA2MCw4IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF90b19zY29wZShJbnN0cnVjdGkKICAgICAgICAgICAgIGVtaXRMb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKHNjb3BlLCBzdHJ1Y3R1cmVTbG90KTsgLy8gU3RydWN0dXJlIGNoZWNrIGNvdmVy
cyB2YXIgaW5qZWN0aW9uLgogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGRv
IGNhZ2luZy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUwMzcKICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDApOworICAgICAgICAgICAgY2FnZShHaWdhY2Fn
ZTo6SlNWYWx1ZSwgcmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihvcGVyYW5kU2xvdCwgcmVn
VDEpOwogICAgICAgICAgICAgbmVnUHRyKHJlZ1QxKTsKICAgICAgICAgICAgIHN0b3JlUHRyKHJl
Z1QyLCBCYXNlSW5kZXgocmVnVDAsIHJlZ1QxLCBUaW1lc0VpZ2h0LCAoZmlyc3RPdXRPZkxpbmVP
ZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKQEAgLTE1NzYsMTIgKzE1Njks
MTQgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIFJlZ2lz
dGVySUQgcHJvcGVydHkgPSByZWdUMTsKICAgICBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQgPSBy
ZWdUMDsKICAgICBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsKKyAgICBSZWdpc3RlcklEIHNj
cmF0Y2gyID0gcmVnVDQ7CiAjZWxzZQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwogICAg
IFJlZ2lzdGVySUQgcHJvcGVydHkgPSByZWdUMjsKICAgICBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQgPSByZWdUMDsKICAgICBSZWdpc3RlcklEIHJlc3VsdFRhZyA9IHJlZ1QxOwogICAgIFJlZ2lz
dGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSByZWdUNDsK
ICNlbmRpZgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTE1ODksOSArMTU4NCw4
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJ
bW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBj
YWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHNjcmF0Y2gpOworICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAKICAgICBzd2l0Y2ggKGVsZW1lbnRT
aXplKHR5cGUpKSB7CiAgICAgY2FzZSAxOgpAQCAtMTY0OSwxMiArMTY0MywxNCBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0
eSA9IHJlZ1QxOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCA9IHJlZ1QwOwogICAgIFJl
Z2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSByZWdU
NDsKICNlbHNlCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CiAgICAgUmVnaXN0ZXJJRCBw
cm9wZXJ0eSA9IHJlZ1QyOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCA9IHJlZ1QwOwog
ICAgIFJlZ2lzdGVySUQgcmVzdWx0VGFnID0gcmVnVDE7CiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNo
ID0gcmVnVDM7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoMiA9IHJlZ1Q0OwogI2VuZGlmCiAgICAg
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTY2Miw5ICsxNjU4LDggQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZQogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwg
c2NyYXRjaCk7CisgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2Ny
YXRjaCwgc2NyYXRjaDIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6CkBAIC0xNzA1LDExICsxNzAwLDEzIEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEIKICAgICBSZWdpc3RlcklEIHByb3BlcnR5ID0gcmVnVDE7CiAg
ICAgUmVnaXN0ZXJJRCBlYXJseVNjcmF0Y2ggPSByZWdUMzsKICAgICBSZWdpc3RlcklEIGxhdGVT
Y3JhdGNoID0gcmVnVDI7CisgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRjaDIgPSByZWdUNDsKICNl
bHNlCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0
eSA9IHJlZ1QyOwogICAgIFJlZ2lzdGVySUQgZWFybHlTY3JhdGNoID0gcmVnVDM7CiAgICAgUmVn
aXN0ZXJJRCBsYXRlU2NyYXRjaCA9IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gy
ID0gcmVnVDQ7CiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xNzMx
LDkgKzE3MjgsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCCiAg
ICAgCiAgICAgLy8gV2Ugd291bGQgYmUgbG9hZGluZyB0aGlzIGludG8gYmFzZSBhcyBpbiBnZXRf
YnlfdmFsLCBleGNlcHQgdGhhdCB0aGUgc2xvdwogICAgIC8vIHBhdGggZXhwZWN0cyB0aGUgYmFz
ZSB0byBiZSB1bmNsb2JiZXJlZC4KLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3Rvcigp
KSwgbGF0ZVNjcmF0Y2gpOworICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGxhdGVTY3JhdGNoLCBsYXRlU2NyYXRjaDIpOwogICAgIAogICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOwpAQCAtMTc3
NywxMSArMTc3MywxMyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1
CiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0eSA9IHJlZ1QxOwogICAgIFJlZ2lzdGVySUQgZWFybHlT
Y3JhdGNoID0gcmVnVDM7CiAgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRjaCA9IHJlZ1QyOworICAg
IFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gyID0gcmVnVDQ7CiAjZWxzZQogICAgIFJlZ2lzdGVySUQg
YmFzZSA9IHJlZ1QwOwogICAgIFJlZ2lzdGVySUQgcHJvcGVydHkgPSByZWdUMjsKICAgICBSZWdp
c3RlcklEIGVhcmx5U2NyYXRjaCA9IHJlZ1QzOwogICAgIFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gg
PSByZWdUMTsKKyAgICBSZWdpc3RlcklEIGxhdGVTY3JhdGNoMiA9IHJlZ1Q0OwogI2VuZGlmCiAg
ICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTgxNiw5ICsxODE0LDggQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogICAgIC8vIFdlIHdvdWxk
IGJlIGxvYWRpbmcgdGhpcyBpbnRvIGJhc2UgYXMgaW4gZ2V0X2J5X3ZhbCwgZXhjZXB0IHRoYXQg
dGhlIHNsb3cKICAgICAvLyBwYXRoIGV4cGVjdHMgdGhlIGJhc2UgdG8gYmUgdW5jbG9iYmVyZWQu
Ci0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIGxhdGVTY3JhdGNoKTsKKyAg
ICBjYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBsYXRlU2NyYXRjaCwgbGF0
ZVNjcmF0Y2gyKTsKICAgICAKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAg
Y2FzZSA0OgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNlbGluZSBKSVQgc2hvdWxkIGRvIGNh
Z2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6aXNEaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjppc1By
aW1pdGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpj
YW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQpOgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVzIGFu
ZCBKU1ZhbHVlIGF1eGlsaWFyaWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJbmRl
eDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMiBAQCBpbmxpbmUgYm9vbCBzaG91bGRC
ZUVuYWJsZWQoKSB7IHJldHVybiBmCiBpbmxpbmUgdm9pZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2Fs
bGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9CiBpbmxpbmUgdm9pZCByZW1vdmVQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9CiAKK2lubGlu
ZSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVk
KCkgeyB9CisKK2lubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxl
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc1ByaW1pdGl2ZUdpZ2FjYWdlUGVy
bWFuZW50bHlFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGNhblByaW1p
dGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJuIHRydWU7IH0KKwogQUxXQVlTX0lOTElO
RSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVXNlIGEgYmV0dGVyIEFQSSB0byBkaXNhYmxlIGRpc2FibGluZyB0aGUgcHJpbWl0aXZlIGdp
Z2FjYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojpw
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkKTogRGVsZXRlZC4KKwogMjAxNy0wOC0wNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFByaW1pdGl2ZSBhdXhpbGlhcmll
cyBhbmQgSlNWYWx1ZSBhdXhpbGlhcmllcyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBnaWdhY2FnZXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIy
MDM1MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2LDExICsxNDYsNiBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBub25WaXNp
YmxlUHJvY2Vzc0NsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBwcmltaXRp
dmVHaWdhY2FnZURpc2FibGVkKHZvaWQqKQotewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotfQotCiBXZWJQcm9jZXNzJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKQogewogICAgIHN0
YXRpYyBXZWJQcm9jZXNzJiBwcm9jZXNzID0gKm5ldyBXZWJQcm9jZXNzOwpAQCAtMjAyLDggKzE5
Nyw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsK
ICAgICB9KTsKIAotICAgIGlmIChHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCi0gICAgICAg
IEdpZ2FjYWdlOjphZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCwgbnVsbHB0cik7CisgICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYm1saW5nUHJpbWl0
aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpOwogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJv
Y2VzcygpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjAzNTUpCisrKyBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wOC0wNyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEJhc2VsaW5lIEpJVCBz
aG91bGQgZG8gY2FnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2VudHJhbGl6ZXMgdGhlIG5vdGlvbiBvZiBwZXJtYW5lbnRs
eSBlbmFibGluZyB0aGUgcHJpbWl0aXZlIGdpZ2FjYWdlLCB3aGljaCB3ZSBvbmx5IGRvIGluIGpz
YworICAgICAgICBhbmQgV2ViUHJvY2Vzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgc2F2ZXMg
dGhlIGJhc2VsaW5lIEpJVCBmcm9tIGVtaXR0aW5nIHNvbWUgY29kZS4gT3RoZXJ3aXNlIGl0IHdv
dWxkIGFsd2F5cyBoYXZlIHRvIGVtaXQgZW5hYmxlZAorICAgICAgICBjaGVja3Mgb24gZWFjaCB0
eXBlZCBhcnJheSBhY2Nlc3MuCisKKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmNwcDoKKyAg
ICAgICAgKEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKToKKyAgICAgICAgKEdp
Z2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxl
ZCk6CisgICAgICAgIChHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkKToKKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6
aXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKToKKwogMjAxNy0wOC0wNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFByaW1pdGl2ZSBhdXhpbGlhcmll
cyBhbmQgSlNWYWx1ZSBhdXhpbGlhcmllcyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBnaWdhY2FnZXMK
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyMjAzNTIpCisr
KyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIEdpZ2Fj
YWdlIHsKIAorc3RhdGljIGJvb2wgc19pc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQ7CisKIHN0cnVjdCBDYWxsYmFjayB7CiAgICAgQ2FsbGJhY2soKSB7IH0KICAgICAKQEAgLTEz
MSw2ICsxMzMsMjggQEAgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZAog
ICAgIH0KIH0KIAorc3RhdGljIGJvb2wgRmFsc2U7CisKK3N0YXRpYyB2b2lkIHByaW1pdGl2ZUdp
Z2FjYWdlRGlzYWJsZWQodm9pZCopCit7CisgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogUHJp
bWl0aXZlIGdpZ2FjYWdlIGRpc2FibGVkLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0IGluIHRoaXMg
cHJvY2Vzc1xuIik7CisgICAgaWYgKCFGYWxzZSkKKyAgICAgICAgQkNSQVNIKCk7Cit9CisKK3Zv
aWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKQor
eworICAgIGlmIChzaG91bGRCZUVuYWJsZWQoKSkgeworICAgICAgICBhZGRQcmltaXRpdmVEaXNh
YmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCwgbnVsbHB0cik7CisgICAgICAg
IHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkID0gdHJ1ZTsKKyAgICB9Cit9
CisKK2Jvb2wgaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKK3sKKyAgICBy
ZXR1cm4gc19pc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQ7Cit9CisKIGJvb2wg
c2hvdWxkQmVFbmFibGVkKCkKIHsKICAgICByZXR1cm4gR0lHQUNBR0VfRU5BQkxFRCAmJiAhUGVy
UHJvY2VzczxFbnZpcm9ubWVudD46OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKTsKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsMTIg
QEAgQkVYUE9SVCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpOwogQkVYUE9SVCB2b2lk
IGFkZFByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKTsKIEJF
WFBPUlQgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCop
LCB2b2lkKik7CiAKK0JFWFBPUlQgdm9pZCBkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VJZlNob3VsZEJlRW5hYmxlZCgpOworCitCRVhQT1JUIGJvb2wgaXNEaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZURpc2FibGVkKCk7CitpbmxpbmUgYm9vbCBpc1ByaW1pdGl2ZUdpZ2FjYWdlUGVy
bWFuZW50bHlFbmFibGVkKCkgeyByZXR1cm4gaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURp
c2FibGVkKCk7IH0KK2lubGluZSBib29sIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgp
IHsgcmV0dXJuICFpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsgfQorCiBC
SU5MSU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317479</attachid>
            <date>2017-08-07 15:24:52 -0700</date>
            <delta_ts>2017-08-07 15:32:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24342</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhIEFzc2VtYmx5SGVscGVyczo6Y2Fn
ZSBhbmQgY2FnZUNvbmRpdGlvbmFsbHkuIFVzZXMgaXQgaW4gdGhlIGJhc2VsaW5lIEpJVC4KKyAg
ICAgICAgCisgICAgICAgIEFsc28gbW9kaWZpZXMgRlRMIGNhZ2luZyB0byBiZSBtb3JlIGRlZmVu
c2l2ZSB3aGVuIGNhZ2luZyBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWdlZCk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmNhZ2UpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25k
aXRpb25hbGx5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXREb3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29u
dGlndW91c0xvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQpOiBEZWxldGVkLgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVzIGFuZCBKU1ZhbHVlIGF1eGlsaWFy
aWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODAyLDEyICszODAyLDYgQEAgaW50IHJ1bkpTQyhDb21tYW5kTGlu
ZSBvcHRpb25zLCBib29sIGlzVwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lk
IHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQodm9pZCopCi17Ci0gICAgZGF0YUxvZygiUHJpbWl0
aXZlIGdpZ2FjYWdlIGRpc2FibGVkISBBYm9ydGluZy5cbiIpOwotICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwotfQotCiBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
CiAgICAgLy8gTmVlZCB0byBvdmVycmlkZSBhbmQgZW5hYmxlIHJlc3RyaWN0ZWQgb3B0aW9ucyBi
ZWZvcmUgd2Ugc3RhcnQgcGFyc2luZyBvcHRpb25zIGJlbG93LgpAQCAtMzgyNiw4ICszODIwLDcg
QEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkoKTsKICNlbmRpZgotICAgIGlm
IChHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCi0gICAgICAgIEdpZ2FjYWdlOjphZGRQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCwgbnVsbHB0cik7
CisgICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxk
QmVFbmFibGVkKCk7CiAKICAgICBpbnQgcmVzdWx0OwogICAgIHJlc3VsdCA9IHJ1bkpTQygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJl
dmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDYgKzUyNyw4IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cigK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIGxv
YWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRG8gY2FnaW5nIQorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyOTUKICAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gbG9hZGVkVmFsdWVHUFI7CiAgICAg
ICAgICAgICB9CiAKQEAgLTg3Nyw2ICs4NzksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaGFkIG91dC1v
Zi1saW5lIHByb3BlcnR5IHN0b3JhZ2UpLgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyBj
YWdpbmchCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUyOTUKIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHNj
cmF0Y2hHUFIgPSBuZXcgc3RvcmFnZSwgc2NyYXRjaEdQUjMgPSBvbGQgc3RvcmFnZSwKICAgICAg
ICAgICAgICAgICAgICAgLy8gc2NyYXRjaEdQUjIgPSBhdmFpbGFibGUKQEAgLTk1NSw4ICs5NTks
MTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKwogICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIWFsbG9jYXRpbmcpCisg
ICAgICAgICAgICBpZiAoIWFsbG9jYXRpbmcpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1Mjk1CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAg
ICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihK
U1ZhbHVlKSkpOwpAQCAtOTkyLDYgKzk5OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmUKICAgICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIEZJWE1FOiBEbyBjYWdp
bmchCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyOTUKICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBz
dGF0ZS5mYWlsQW5kSWdub3JlLmFwcGVuZCgKICAgICAgICAgICAgIGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6Okxlc3NUaGFuLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigwKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIyMDM1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBA
IHZvaWQgSW5saW5lQWNjZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXMKICAgICAgICAgaml0LnBh
dGNoYWJsZUJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgdmFs
dWUsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKElzQXJyYXkgfCBDb250aWd1b3VzU2hhcGUp
KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IERvIGNh
Z2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTI5NQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh2YWx1ZSwg
QXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHZhbHVlKTsKICAgICAgICAgaml0LmJveElu
dDMyKHNjcmF0Y2hHUFIsIHJlZ3MpOwogCkBAIC03Myw2ICs3NSw4IEBAIHZvaWQgSW5saW5lQWNj
ZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXMKICAgICAgICAgaml0LmxvYWRQdHIoCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwKICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEK
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI5
NQogICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHZhbHVlOwogICAgICAgICBqaXQubG9hZFZh
bHVlKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIDB4MDAw
YWIyMWNhKSwgcmVncyk7CkBAIC0xMTYsNiArMTIwLDggQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OmR1
bXBDYWNoZVNpemVzQW5kQ3JhcwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigweDAwMGFiMjFjYSkpOwogCiAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlKTsKKyAg
ICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI5NQogICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAg
ICAgICAgICAgIHJlZ3MsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
LCAxMjAzNDIpKTsKQEAgLTE3MCw2ICsxNzYsOCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJh
dGVTZWxmUHJvcGVydHlBCiAgICAgICAgIHN0b3JhZ2UgPSBiYXNlOwogICAgIGVsc2UgewogICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgdmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICAgICAgLy8gRklYTUU6
IERvIGNhZ2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTI5NQogICAgICAgICBzdG9yYWdlID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAg
IH0KICAgICAKQEAgLTIzMSw2ICsyMzksOCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVT
ZWxmUHJvcGVydHlSCiAgICAgICAgIHN0b3JhZ2UgPSBnZXRTY3JhdGNoUmVnaXN0ZXIoc3R1Yklu
Zm8pOwogICAgICAgICBBU1NFUlQoc3RvcmFnZSAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHN0b3JhZ2UpOworICAgICAgICAvLyBGSVhNRTogRG8gY2FnaW5nIQorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mjk1CiAg
ICAgfQogCiAgICAgaml0LnN0b3JlVmFsdWUoCkBAIC0yNjksNiArMjc5LDggQEAgYm9vbCBJbmxp
bmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoUwogICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0
aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYXJyYXktPmluZGV4aW5nVHlw
ZSgpKSk7CiAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgLy8gRklY
TUU6IERvIGNhZ2luZyEKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1Mjk1CiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModmFsdWUu
cGF5bG9hZEdQUigpLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSwgdmFsdWUucGF5bG9h
ZEdQUigpKTsKICAgICBqaXQuYm94SW50MzIodmFsdWUucGF5bG9hZEdQUigpLCB2YWx1ZSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2MTYsNyArMTE2MTYsMTAgQEAgcHJpdmF0
ZToKICAgICAKICAgICBMVmFsdWUgY2FnZWQoR2lnYWNhZ2U6OktpbmQga2luZCwgTFZhbHVlIHB0
cikKICAgICB7Ci0gICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKKyAg
ICAgICAgaWYgKCFHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gcHRyOworICAgICAgICAKKyAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2
ZSAmJiBHaWdhY2FnZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkpIHsKICAgICAg
ICAgICAgIGlmICh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCgpLmlzU3RpbGxWYWxpZCgp
KQogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0oKS5w
cmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDIyMDM1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMTEsNiArMTMxMSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIG9rLmxpbmso
dGhpcyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY2FnZShHaWdhY2FnZTo6S2luZCBraW5kLCBH
UFJSZWcgc3RvcmFnZSkKKyAgICB7CisgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5h
YmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyNpZiBHSUdBQ0FHRV9FTkFC
TEVECisgICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oR0lH
QUNBR0VfTUFTSykpLCBzdG9yYWdlKTsKKyAgICAgICAgYWRkUHRyKEFic29sdXRlQWRkcmVzcyhH
aWdhY2FnZTo6YmFzZVB0cihraW5kKSksIHN0b3JhZ2UpOworI2VuZGlmCisgICAgfQorICAgIAor
ICAgIHZvaWQgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0
b3JhZ2UsIEdQUlJlZyBzY3JhdGNoKQorICAgIHsKKyAgICAgICAgaWYgKCFHaWdhY2FnZTo6c2hv
dWxkQmVFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBp
ZiAoa2luZCAhPSBHaWdhY2FnZTo6UHJpbWl0aXZlIHx8IEdpZ2FjYWdlOjppc0Rpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBjYWdlKGtpbmQs
IHN0b3JhZ2UpOworICAgICAgICAKKyAgICAgICAgbG9hZFB0cihHaWdhY2FnZTo6YmFzZVB0cihr
aW5kKSwgc2NyYXRjaCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaFRlc3RQdHIoWmVybywg
c2NyYXRjaCk7CisjaWYgR0lHQUNBR0VfRU5BQkxFRAorICAgICAgICBhbmRQdHIoVHJ1c3RlZElt
bVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FDQUdFX01BU0spKSwgc3RvcmFnZSk7CisgICAg
ICAgIGFkZFB0cihzY3JhdGNoLCBzdG9yYWdlKTsKKyNlbmRpZgorICAgICAgICBkb25lLmxpbmso
dGhpcyk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3RvcmVCdXR0ZXJmbHkoVk0mIHZtLCBHUFJS
ZWcgYnV0dGVyZmx5LCBHUFJSZWcgb2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKGlzWDg2KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCShyZXZpc2lvbiAyMjAzNTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDkgKzE3Miw4IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0RG91YmxlTG9hZChJbnN0cnUKICAgICBKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgCiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKERvdWJsZVNoYXBlKSk7Ci0gICAgLy8gRklYTUU6IFNob3VsZCBk
byBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHJlZ1QyKTsKICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3Mo
cmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICBsb2FkRG91
YmxlKEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVzRWlnaHQpLCBmcFJlZ1QwKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBm
cFJlZ1QwLCBmcFJlZ1QwKSk7CkBAIC0xODcsOSArMTg2LDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRDb250aWd1b3VzTG9hZChJbgogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QyLCBUcnVzdGVkSW1t
MzIoZXhwZWN0ZWRTaGFwZSkpOwotICAgIC8vIEZJWE1FOiBTaG91bGQgZG8gY2FnaW5nLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwMzcKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1Qy
KTsKKyAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCByZWdUMik7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBCdXR0ZXJm
bHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZDY0KEJhc2VJbmRleChyZWdU
MiwgcmVnVDEsIFRpbWVzRWlnaHQpLCByZWdUMCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hUZXN0NjQoWmVybywgcmVnVDApKTsKQEAgLTIwNCw5ICsyMDIsOCBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEFycmF5U3RvcmFnZUxvYWQoCiAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKC1BcnJh
eVN0b3JhZ2VTaGFwZSksIHJlZ1QyLCByZWdUMyk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKEFib3ZlLCByZWdUMywgVHJ1c3RlZEltbTMyKFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlKSk7CiAKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2lu
Zy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkp
LCByZWdUMik7CisgICAgY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgcmVnVDIpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwg
QXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIAogICAgIGxvYWQ2NChCYXNl
SW5kZXgocmVnVDIsIHJlZ1QxLCBUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZlY3Rvck9mZnNl
dCgpKSwgcmVnVDApOwpAQCAtMzUzLDkgKzM1MCw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
R2VuZXJpY0NvbnRpZ3VvdXMKIAogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgcmVnVDIsIFRydXN0ZWRJbW0zMihpbmRleGluZ1NoYXBlKSk7CiAgICAgCi0gICAgLy8g
RklYTUU6IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFs
dWUsIHJlZ1QyKTsKICAgICBKdW1wIG91dE9mQm91bmRzID0gYnJhbmNoMzIoQWJvdmVPckVxdWFs
LCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSk7CiAKICAgICBMYWJlbCBzdG9yZVJlc3VsdCA9IGxhYmVsKCk7CkBAIC00MTAsOSArNDA2LDgg
QEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeQogICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICAKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKLSAgICAvLyBGSVhN
RTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CisgICAgY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwg
cmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdU
MSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsK
IAogICAgIEp1bXAgZW1wdHkgPSBicmFuY2hUZXN0NjQoWmVybywgQmFzZUluZGV4KHJlZ1QyLCBy
ZWdUMSwgVGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSkpOwpAQCAtOTIz
LDkgKzkxOCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWMKICAg
ICAgICAgICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUpOwog
ICAgICAgICAgICAgICAgIGlzT3V0T2ZMaW5lLmxpbmsodGhpcyk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwMzcKICAgICAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzY3Jh
dGNoKTsKKyAgICAgICAgICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHNjcmF0Y2gpOwogICAg
ICAgICAgICAgbmVnMzIob2Zmc2V0KTsKICAgICAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKG9m
ZnNldCwgb2Zmc2V0KTsKICAgICAgICAgICAgIGxvYWQ2NChCYXNlSW5kZXgoc2NyYXRjaCwgb2Zm
c2V0LCBUaW1lc0VpZ2h0LCAoZmlyc3RPdXRPZkxpbmVPZmZzZXQgLSAyKSAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLCByZXN1bHQpOwpAQCAtMTA2Niw5ICsxMDYwLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aQogICAgICAgICAgICAgZW1pdExvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soc2NvcGUsIHN0cnVjdHVyZVNsb3QpOyAvLyBTdHJ1Y3R1cmUgY2hlY2sgY292
ZXJzIHZhciBpbmplY3Rpb24uCiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZh
bHVlLCByZWdUMik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
ZG8gY2FnaW5nLgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTAzNwogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMCk7CisgICAgICAgICAgICBjYWdlKEdpZ2Fj
YWdlOjpKU1ZhbHVlLCByZWdUMCk7CiAgICAgICAgICAgICBsb2FkUHRyKG9wZXJhbmRTbG90LCBy
ZWdUMSk7CiAgICAgICAgICAgICBuZWdQdHIocmVnVDEpOwogICAgICAgICAgICAgc3RvcmVQdHIo
cmVnVDIsIEJhc2VJbmRleChyZWdUMCwgcmVnVDEsIFRpbWVzRWlnaHQsIChmaXJzdE91dE9mTGlu
ZU9mZnNldCAtIDIpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwpAQCAtMTU3NiwxMiArMTU2
OSwxNCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRCCiAgICAgUmVn
aXN0ZXJJRCBwcm9wZXJ0eSA9IHJlZ1QxOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCA9
IHJlZ1QwOwogICAgIFJlZ2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIFJlZ2lzdGVySUQg
c2NyYXRjaDIgPSByZWdUNDsKICNlbHNlCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CiAg
ICAgUmVnaXN0ZXJJRCBwcm9wZXJ0eSA9IHJlZ1QyOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5
bG9hZCA9IHJlZ1QwOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0VGFnID0gcmVnVDE7CiAgICAgUmVn
aXN0ZXJJRCBzY3JhdGNoID0gcmVnVDM7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoMiA9IHJlZ1Q0
OwogI2VuZGlmCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTU4OSw5ICsxNTg0
LDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIGxvYWQ4
KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOwog
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRv
IGNhZ2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1MDM3CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgc2NyYXRjaCk7CisgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVu
dFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CkBAIC0xNjQ5LDEyICsxNjQzLDE0IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5R2UKICAgICBSZWdpc3RlcklEIHByb3Bl
cnR5ID0gcmVnVDE7CiAgICAgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkID0gcmVnVDA7CiAgICAg
UmVnaXN0ZXJJRCBzY3JhdGNoID0gcmVnVDM7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoMiA9IHJl
Z1Q0OwogI2Vsc2UKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKICAgICBSZWdpc3RlcklE
IHByb3BlcnR5ID0gcmVnVDI7CiAgICAgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkID0gcmVnVDA7
CiAgICAgUmVnaXN0ZXJJRCByZXN1bHRUYWcgPSByZWdUMTsKICAgICBSZWdpc3RlcklEIHNjcmF0
Y2ggPSByZWdUMzsKKyAgICBSZWdpc3RlcklEIHNjcmF0Y2gyID0gcmVnVDQ7CiAjZW5kaWYKICAg
ICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xNjYyLDkgKzE2NTgsOCBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAgICAgbG9hZDgoQWRkcmVzcyhiYXNl
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CiAgICAgYmFkVHlwZSA9
IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZv
clR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSkpOwotICAgIC8vIEZJWE1FOiBTaG91bGQgZG8gY2FnaW5nLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwMzcKICAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
LCBzY3JhdGNoKTsKKyAgICBjYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBz
Y3JhdGNoLCBzY3JhdGNoMik7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkg
ewogICAgIGNhc2UgNDoKQEAgLTE3MDUsMTEgKzE3MDAsMTMgQEAgSklUOjpKdW1wTGlzdCBKSVQ6
OmVtaXRJbnRUeXBlZEFycmF5UHV0QgogICAgIFJlZ2lzdGVySUQgcHJvcGVydHkgPSByZWdUMTsK
ICAgICBSZWdpc3RlcklEIGVhcmx5U2NyYXRjaCA9IHJlZ1QzOwogICAgIFJlZ2lzdGVySUQgbGF0
ZVNjcmF0Y2ggPSByZWdUMjsKKyAgICBSZWdpc3RlcklEIGxhdGVTY3JhdGNoMiA9IHJlZ1Q0Owog
I2Vsc2UKICAgICBSZWdpc3RlcklEIGJhc2UgPSByZWdUMDsKICAgICBSZWdpc3RlcklEIHByb3Bl
cnR5ID0gcmVnVDI7CiAgICAgUmVnaXN0ZXJJRCBlYXJseVNjcmF0Y2ggPSByZWdUMzsKICAgICBS
ZWdpc3RlcklEIGxhdGVTY3JhdGNoID0gcmVnVDE7CisgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRj
aDIgPSByZWdUNDsKICNlbmRpZgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTE3
MzEsOSArMTcyOCw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIK
ICAgICAKICAgICAvLyBXZSB3b3VsZCBiZSBsb2FkaW5nIHRoaXMgaW50byBiYXNlIGFzIGluIGdl
dF9ieV92YWwsIGV4Y2VwdCB0aGF0IHRoZSBzbG93CiAgICAgLy8gcGF0aCBleHBlY3RzIHRoZSBi
YXNlIHRvIGJlIHVuY2xvYmJlcmVkLgotICAgIC8vIEZJWE1FOiBTaG91bGQgZG8gY2FnaW5nLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwMzcKICAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9y
KCkpLCBsYXRlU2NyYXRjaCk7CisgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1p
dGl2ZSwgbGF0ZVNjcmF0Y2gsIGxhdGVTY3JhdGNoMik7CiAgICAgCiAgICAgaWYgKGlzQ2xhbXBl
ZCh0eXBlKSkgewogICAgICAgICBBU1NFUlQoZWxlbWVudFNpemUodHlwZSkgPT0gMSk7CkBAIC0x
Nzc3LDExICsxNzczLDEzIEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5
UHUKICAgICBSZWdpc3RlcklEIHByb3BlcnR5ID0gcmVnVDE7CiAgICAgUmVnaXN0ZXJJRCBlYXJs
eVNjcmF0Y2ggPSByZWdUMzsKICAgICBSZWdpc3RlcklEIGxhdGVTY3JhdGNoID0gcmVnVDI7Cisg
ICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRjaDIgPSByZWdUNDsKICNlbHNlCiAgICAgUmVnaXN0ZXJJ
RCBiYXNlID0gcmVnVDA7CiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0eSA9IHJlZ1QyOwogICAgIFJl
Z2lzdGVySUQgZWFybHlTY3JhdGNoID0gcmVnVDM7CiAgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRj
aCA9IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gyID0gcmVnVDQ7CiAjZW5kaWYK
ICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xODE2LDkgKzE4MTQsOCBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1CiAgICAgCiAgICAgLy8gV2Ugd291
bGQgYmUgbG9hZGluZyB0aGlzIGludG8gYmFzZSBhcyBpbiBnZXRfYnlfdmFsLCBleGNlcHQgdGhh
dCB0aGUgc2xvdwogICAgIC8vIHBhdGggZXhwZWN0cyB0aGUgYmFzZSB0byBiZSB1bmNsb2JiZXJl
ZC4KLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgbGF0ZVNjcmF0Y2gpOwor
ICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGxhdGVTY3JhdGNoLCBs
YXRlU2NyYXRjaDIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAg
ICBjYXNlIDQ6CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzUyKQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wOC0wNyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEJhc2VsaW5lIEpJVCBzaG91bGQgZG8g
Y2FnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9HaWdhY2FnZS5oOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjppc0Rp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6Omlz
UHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6
OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCk6CisKIDIwMTctMDgtMDYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmltaXRpdmUgYXV4aWxpYXJpZXMg
YW5kIEpTVmFsdWUgYXV4aWxpYXJpZXMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgZ2lnYWNhZ2VzCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9XVEYvd3RmL0dpZ2Fj
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDEyIEBAIGlubGluZSBib29sIHNob3Vs
ZEJlRW5hYmxlZCgpIHsgcmV0dXJuIGYKIGlubGluZSB2b2lkIGFkZFByaW1pdGl2ZURpc2FibGVD
YWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIGlubGluZSB2b2lkIHJlbW92ZVBy
aW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIAoraW5s
aW5lIHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJs
ZWQoKSB7IH0KKworaW5saW5lIGJvb2wgaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGlzUHJpbWl0aXZlR2lnYWNhZ2VQ
ZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgY2FuUHJp
bWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQorCiBBTFdBWVNfSU5M
SU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNlbGluZSBKSVQgc2hvdWxkIGRvIGNh
Z2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBVc2UgYSBiZXR0ZXIgQVBJIHRvIGRpc2FibGUgZGlzYWJsaW5nIHRoZSBwcmltaXRpdmUg
Z2lnYWNhZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjptX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcik6CisgICAgICAgIChXZWJLaXQ6
OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOiBEZWxldGVkLgorCiAyMDE3LTA4LTA2ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFy
aWVzIGFuZCBKU1ZhbHVlIGF1eGlsaWFyaWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdl
cwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MjIwMzUyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsMTEgKzE0Niw2IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIG5vblZp
c2libGVQcm9jZXNzQ2wKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkIHByaW1p
dGl2ZUdpZ2FjYWdlRGlzYWJsZWQodm9pZCopCi17Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7Ci19Ci0KIFdlYlByb2Nlc3MmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpCiB7CiAgICAg
c3RhdGljIFdlYlByb2Nlc3MmIHByb2Nlc3MgPSAqbmV3IFdlYlByb2Nlc3M7CkBAIC0yMDIsOCAr
MTk3LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDAp
OwogICAgIH0pOwogCi0gICAgaWYgKEdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQoKSkKLSAgICAg
ICAgR2lnYWNhZ2U6OmFkZFByaW1pdGl2ZURpc2FibGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2Fn
ZURpc2FibGVkLCBudWxscHRyKTsKKyAgICBHaWdhY2FnZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlBy
b2Nlc3MoKQpJbmRleDogU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzU1KQorKysgU291cmNlL2JtYWxs
b2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDgtMDcg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNlbGluZSBKSVQg
c2hvdWxkIGRvIGNhZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGNlbnRyYWxpemVzIHRoZSBub3Rpb24gb2YgcGVybWFuZW50
bHkgZW5hYmxpbmcgdGhlIHByaW1pdGl2ZSBnaWdhY2FnZSwgd2hpY2ggd2Ugb25seSBkbyBpbiBq
c2MKKyAgICAgICAgYW5kIFdlYlByb2Nlc3MuCisgICAgICAgIAorICAgICAgICBUaGlzIHNhdmVz
IHRoZSBiYXNlbGluZSBKSVQgZnJvbSBlbWl0dGluZyBzb21lIGNvZGUuIE90aGVyd2lzZSBpdCB3
b3VsZCBhbHdheXMgaGF2ZSB0byBlbWl0IGVuYWJsZWQKKyAgICAgICAgY2hlY2tzIG9uIGVhY2gg
dHlwZWQgYXJyYXkgYWNjZXNzLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6Cisg
ICAgICAgIChHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCk6CisgICAgICAgIChH
aWdhY2FnZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJs
ZWQpOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNh
YmxlZCk6CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAoR2lnYWNhZ2U6
OmlzUHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQpOgorICAgICAgICAoR2lnYWNh
Z2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCk6CisKIDIwMTctMDgtMDYgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmltaXRpdmUgYXV4aWxpYXJp
ZXMgYW5kIEpTVmFsdWUgYXV4aWxpYXJpZXMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgZ2lnYWNhZ2Vz
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkocmV2aXNpb24gMjIwMzUyKQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDggQEAgdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSBHaWdh
Y2FnZSB7CiAKK3N0YXRpYyBib29sIHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2Fi
bGVkOworCiBzdHJ1Y3QgQ2FsbGJhY2sgewogICAgIENhbGxiYWNrKCkgeyB9CiAgICAgCkBAIC0x
MzEsNiArMTMzLDI4IEBAIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQK
ICAgICB9CiB9CiAKK3N0YXRpYyBib29sIEZhbHNlOworCitzdGF0aWMgdm9pZCBwcmltaXRpdmVH
aWdhY2FnZURpc2FibGVkKHZvaWQqKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiRkFUQUw6IFBy
aW1pdGl2ZSBnaWdhY2FnZSBkaXNhYmxlZCwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdCBpbiB0aGlz
IHByb2Nlc3NcbiIpOworICAgIGlmICghRmFsc2UpCisgICAgICAgIEJDUkFTSCgpOworfQorCit2
b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCkK
K3sKKyAgICBpZiAoc2hvdWxkQmVFbmFibGVkKCkpIHsKKyAgICAgICAgYWRkUHJpbWl0aXZlRGlz
YWJsZUNhbGxiYWNrKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQsIG51bGxwdHIpOworICAgICAg
ICBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCA9IHRydWU7CisgICAgfQor
fQorCitib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCit7CisgICAg
cmV0dXJuIHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOworfQorCiBib29s
IHNob3VsZEJlRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIEdJR0FDQUdFX0VOQUJMRUQgJiYgIVBl
clByb2Nlc3M8RW52aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCk7CkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDEy
IEBAIEJFWFBPUlQgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIEJFWFBPUlQgdm9p
ZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKik7CiBC
RVhQT1JUIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQq
KSwgdm9pZCopOwogCitCRVhQT1JUIHZvaWQgZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlSWZTaG91bGRCZUVuYWJsZWQoKTsKKworQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOworaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBl
cm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCgpOyB9CitpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQo
KSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0KKwog
QklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQp
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317486</attachid>
            <date>2017-08-07 15:32:39 -0700</date>
            <delta_ts>2017-08-07 16:12:34 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24340</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkcyBhIEFzc2VtYmx5SGVscGVyczo6Y2Fn
ZSBhbmQgY2FnZUNvbmRpdGlvbmFsbHkuIFVzZXMgaXQgaW4gdGhlIGJhc2VsaW5lIEpJVC4KKyAg
ICAgICAgCisgICAgICAgIEFsc28gbW9kaWZpZXMgRlRMIGNhZ2luZyB0byBiZSBtb3JlIGRlZmVu
c2l2ZSB3aGVuIGNhZ2luZyBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWdlZCk6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmNhZ2UpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25k
aXRpb25hbGx5KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXREb3VibGVMb2FkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Q29u
dGlndW91c0xvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQpOiBEZWxldGVkLgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVzIGFuZCBKU1ZhbHVlIGF1eGlsaWFy
aWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODAyLDEyICszODAyLDYgQEAgaW50IHJ1bkpTQyhDb21tYW5kTGlu
ZSBvcHRpb25zLCBib29sIGlzVwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lk
IHByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQodm9pZCopCi17Ci0gICAgZGF0YUxvZygiUHJpbWl0
aXZlIGdpZ2FjYWdlIGRpc2FibGVkISBBYm9ydGluZy5cbiIpOwotICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOwotfQotCiBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
CiAgICAgLy8gTmVlZCB0byBvdmVycmlkZSBhbmQgZW5hYmxlIHJlc3RyaWN0ZWQgb3B0aW9ucyBi
ZWZvcmUgd2Ugc3RhcnQgcGFyc2luZyBvcHRpb25zIGJlbG93LgpAQCAtMzgyNiw4ICszODIwLDcg
QEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKICAgICBKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkoKTsKICNlbmRpZgotICAgIGlm
IChHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCi0gICAgICAgIEdpZ2FjYWdlOjphZGRQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCwgbnVsbHB0cik7
CisgICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxk
QmVFbmFibGVkKCk7CiAKICAgICBpbnQgcmVzdWx0OwogICAgIHJlc3VsdCA9IHJ1bkpTQygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJl
dmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3ND
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDYgKzUyNyw4IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cigK
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NH
UFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIGxv
YWRlZFZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogRG8gY2FnaW5nIQorICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyOTUKICAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gbG9hZGVkVmFsdWVHUFI7CiAgICAg
ICAgICAgICB9CiAKQEAgLTg3Nyw2ICs4NzksOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lCiAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaGFkIG91dC1v
Zi1saW5lIHByb3BlcnR5IHN0b3JhZ2UpLgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCBzY3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyBj
YWdpbmchCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUyOTUKIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHNj
cmF0Y2hHUFIgPSBuZXcgc3RvcmFnZSwgc2NyYXRjaEdQUjMgPSBvbGQgc3RvcmFnZSwKICAgICAg
ICAgICAgICAgICAgICAgLy8gc2NyYXRjaEdQUjIgPSBhdmFpbGFibGUKQEAgLTk1NSw4ICs5NTks
MTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKwogICAgICAgICAg
ICAgICAgICAgICBvZmZzZXRJbklubGluZVN0b3JhZ2UobV9vZmZzZXQpICogc2l6ZW9mKEpTVmFs
dWUpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIWFsbG9jYXRpbmcpCisg
ICAgICAgICAgICBpZiAoIWFsbG9jYXRpbmcpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEK
KyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1Mjk1CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAg
ICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIG9mZnNldEluQnV0dGVyZmx5KG1fb2Zmc2V0KSAqIHNpemVvZihK
U1ZhbHVlKSkpOwpAQCAtOTkyLDYgKzk5OSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKEFjY2Vzc0dlbmUKICAgICAgICAgCiAgICAgY2FzZSBBcnJheUxlbmd0aDogewogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIC8vIEZJWE1FOiBEbyBjYWdp
bmchCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUyOTUKICAgICAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQ
UiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBz
dGF0ZS5mYWlsQW5kSWdub3JlLmFwcGVuZCgKICAgICAgICAgICAgIGppdC5icmFuY2gzMihDQ2Fs
bEhlbHBlcnM6Okxlc3NUaGFuLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigwKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGlu
ZUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIyMDM1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBA
IHZvaWQgSW5saW5lQWNjZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXMKICAgICAgICAgaml0LnBh
dGNoYWJsZUJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgdmFs
dWUsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKElzQXJyYXkgfCBDb250aWd1b3VzU2hhcGUp
KTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IERvIGNh
Z2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTI5NQogICAgICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh2YWx1ZSwg
QXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHZhbHVlKTsKICAgICAgICAgaml0LmJveElu
dDMyKHNjcmF0Y2hHUFIsIHJlZ3MpOwogCkBAIC03Myw2ICs3NSw4IEBAIHZvaWQgSW5saW5lQWNj
ZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXMKICAgICAgICAgaml0LmxvYWRQdHIoCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwKICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEK
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI5
NQogICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHZhbHVlOwogICAgICAgICBqaXQubG9hZFZh
bHVlKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIDB4MDAw
YWIyMWNhKSwgcmVncyk7CkBAIC0xMTYsNiArMTIwLDggQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OmR1
bXBDYWNoZVNpemVzQW5kQ3JhcwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigweDAwMGFiMjFjYSkpOwogCiAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlKTsKKyAg
ICAgICAgLy8gRklYTUU6IERvIGNhZ2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI5NQogICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAg
ICAgICAgICAgIHJlZ3MsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
LCAxMjAzNDIpKTsKQEAgLTE3MCw2ICsxNzYsOCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJh
dGVTZWxmUHJvcGVydHlBCiAgICAgICAgIHN0b3JhZ2UgPSBiYXNlOwogICAgIGVsc2UgewogICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgdmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICAgICAgLy8gRklYTUU6
IERvIGNhZ2luZyEKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTI5NQogICAgICAgICBzdG9yYWdlID0gdmFsdWUucGF5bG9hZEdQUigpOwogICAg
IH0KICAgICAKQEAgLTIzMSw2ICsyMzksOCBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVT
ZWxmUHJvcGVydHlSCiAgICAgICAgIHN0b3JhZ2UgPSBnZXRTY3JhdGNoUmVnaXN0ZXIoc3R1Yklu
Zm8pOwogICAgICAgICBBU1NFUlQoc3RvcmFnZSAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHN0b3JhZ2UpOworICAgICAgICAvLyBGSVhNRTogRG8gY2FnaW5nIQorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mjk1CiAg
ICAgfQogCiAgICAgaml0LnN0b3JlVmFsdWUoCkBAIC0yNjksNiArMjc5LDggQEAgYm9vbCBJbmxp
bmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoUwogICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0
aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYXJyYXktPmluZGV4aW5nVHlw
ZSgpKSk7CiAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgLy8gRklY
TUU6IERvIGNhZ2luZyEKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1Mjk1CiAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModmFsdWUu
cGF5bG9hZEdQUigpLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSwgdmFsdWUucGF5bG9h
ZEdQUigpKTsKICAgICBqaXQuYm94SW50MzIodmFsdWUucGF5bG9hZEdQUigpLCB2YWx1ZSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2MTYsNyArMTE2MTYsMTAgQEAgcHJpdmF0
ZToKICAgICAKICAgICBMVmFsdWUgY2FnZWQoR2lnYWNhZ2U6OktpbmQga2luZCwgTFZhbHVlIHB0
cikKICAgICB7Ci0gICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpIHsKKyAg
ICAgICAgaWYgKCFHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gcHRyOworICAgICAgICAKKyAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlByaW1pdGl2
ZSAmJiBHaWdhY2FnZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkpIHsKICAgICAg
ICAgICAgIGlmICh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCgpLmlzU3RpbGxWYWxpZCgp
KQogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0oKS5w
cmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDIyMDM1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMTEsNiArMTMxMSwzNCBAQCBwdWJsaWM6CiAgICAgICAgIG9rLmxpbmso
dGhpcyk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY2FnZShHaWdhY2FnZTo6S2luZCBraW5kLCBH
UFJSZWcgc3RvcmFnZSkKKyAgICB7CisgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5h
YmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyNpZiBHSUdBQ0FHRV9FTkFC
TEVECisgICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oR0lH
QUNBR0VfTUFTSykpLCBzdG9yYWdlKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIoR2ln
YWNhZ2U6OmJhc2VQdHIoa2luZCkpLCBzdG9yYWdlKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9y
YWdlLCBHUFJSZWcgc2NyYXRjaCkKKyAgICB7CisgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3Vs
ZEJlRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYg
KGtpbmQgIT0gR2lnYWNhZ2U6OlByaW1pdGl2ZSB8fCBHaWdhY2FnZTo6aXNEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZURpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gY2FnZShraW5kLCBz
dG9yYWdlKTsKKyAgICAgICAgCisgICAgICAgIGxvYWRQdHIoR2lnYWNhZ2U6OmJhc2VQdHIoa2lu
ZCksIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHNj
cmF0Y2gpOworI2lmIEdJR0FDQUdFX0VOQUJMRUQKKyAgICAgICAgYW5kUHRyKFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8c2l6ZV90PihHSUdBQ0FHRV9NQVNLKSksIHN0b3JhZ2UpOworICAgICAg
ICBhZGRQdHIoc2NyYXRjaCwgc3RvcmFnZSk7CisjZW5kaWYKKyAgICAgICAgZG9uZS5saW5rKHRo
aXMpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN0b3JlQnV0dGVyZmx5KFZNJiB2bSwgR1BSUmVn
IGJ1dHRlcmZseSwgR1BSUmVnIG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4NigpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkocmV2aXNpb24gMjIwMzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw5ICsxNzIsOCBAQCBKSVQ6
Okp1bXBMaXN0IEpJVDo6ZW1pdERvdWJsZUxvYWQoSW5zdHJ1CiAgICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIAogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgcmVn
VDIsIFRydXN0ZWRJbW0zMihEb3VibGVTaGFwZSkpOwotICAgIC8vIEZJWE1FOiBTaG91bGQgZG8g
Y2FnaW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzUwMzcKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHJlZ1QyKTsKKyAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCByZWdUMik7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJl
Z1QyLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgbG9hZERvdWJs
ZShCYXNlSW5kZXgocmVnVDIsIHJlZ1QxLCBUaW1lc0VpZ2h0KSwgZnBSZWdUMCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgZnBS
ZWdUMCwgZnBSZWdUMCkpOwpAQCAtMTg3LDkgKzE4Niw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0Q29udGlndW91c0xvYWQoSW4KICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCiAgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMiwgVHJ1c3RlZEltbTMy
KGV4cGVjdGVkU2hhcGUpKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7
CisgICAgY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgcmVnVDIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIGxvYWQ2NChCYXNlSW5kZXgocmVnVDIs
IHJlZ1QxLCBUaW1lc0VpZ2h0KSwgcmVnVDApOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNo
VGVzdDY0KFplcm8sIHJlZ1QwKSk7CkBAIC0yMDQsOSArMjAyLDggQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRBcnJheVN0b3JhZ2VMb2FkKAogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigtQXJyYXlT
dG9yYWdlU2hhcGUpLCByZWdUMiwgcmVnVDMpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2gzMihBYm92ZSwgcmVnVDMsIFRydXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUg
LSBBcnJheVN0b3JhZ2VTaGFwZSkpOwogCi0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcu
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
cmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHJlZ1QyKTsKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFy
cmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICBsb2FkNjQoQmFzZUlu
ZGV4KHJlZ1QyLCByZWdUMSwgVGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQo
KSksIHJlZ1QwKTsKQEAgLTM1Myw5ICszNTAsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzCiAKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QyLCBUcnVzdGVkSW1tMzIoaW5kZXhpbmdTaGFwZSkpOwogICAgIAotICAgIC8vIEZJ
WE1FOiBTaG91bGQgZG8gY2FnaW5nLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUwMzcKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVl
LCByZWdUMik7CiAgICAgSnVtcCBvdXRPZkJvdW5kcyA9IGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cmVnVDEsIEFkZHJlc3MocmVnVDIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkp
OwogCiAgICAgTGFiZWwgc3RvcmVSZXN1bHQgPSBsYWJlbCgpOwpAQCAtNDEwLDkgKzQwNiw4IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0QnkKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAgICAgCiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMiwgVHJ1c3RlZEltbTMyKEFycmF5U3RvcmFnZVNoYXBlKSk7Ci0gICAgLy8gRklYTUU6
IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOworICAgIGNhZ2UoR2lnYWNhZ2U6OkpTVmFsdWUsIHJl
Z1QyKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEs
IEFkZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAK
ICAgICBKdW1wIGVtcHR5ID0gYnJhbmNoVGVzdDY0KFplcm8sIEJhc2VJbmRleChyZWdUMiwgcmVn
VDEsIFRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKTsKQEAgLTkyMyw5
ICs5MTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjCiAgICAg
ICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVE9mZnNldElzTm90T3V0T2ZMaW5lKTsKICAg
ICAgICAgICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRj
aCk7CisgICAgICAgICAgICBjYWdlKEdpZ2FjYWdlOjpKU1ZhbHVlLCBzY3JhdGNoKTsKICAgICAg
ICAgICAgIG5lZzMyKG9mZnNldCk7CiAgICAgICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihvZmZz
ZXQsIG9mZnNldCk7CiAgICAgICAgICAgICBsb2FkNjQoQmFzZUluZGV4KHNjcmF0Y2gsIG9mZnNl
dCwgVGltZXNFaWdodCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSwgcmVzdWx0KTsKQEAgLTEwNjYsOSArMTA2MCw4IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF90b19zY29wZShJbnN0cnVjdGkKICAgICAgICAgICAgIGVtaXRMb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKHNjb3BlLCBzdHJ1Y3R1cmVTbG90KTsgLy8gU3RydWN0dXJlIGNoZWNrIGNvdmVy
cyB2YXIgaW5qZWN0aW9uLgogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGRv
IGNhZ2luZy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzUwMzcKICAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDApOworICAgICAgICAgICAgY2FnZShHaWdhY2Fn
ZTo6SlNWYWx1ZSwgcmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihvcGVyYW5kU2xvdCwgcmVn
VDEpOwogICAgICAgICAgICAgbmVnUHRyKHJlZ1QxKTsKICAgICAgICAgICAgIHN0b3JlUHRyKHJl
Z1QyLCBCYXNlSW5kZXgocmVnVDAsIHJlZ1QxLCBUaW1lc0VpZ2h0LCAoZmlyc3RPdXRPZkxpbmVP
ZmZzZXQgLSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKQEAgLTE1NzYsMTIgKzE1Njks
MTQgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIFJlZ2lz
dGVySUQgcHJvcGVydHkgPSByZWdUMTsKICAgICBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQgPSBy
ZWdUMDsKICAgICBSZWdpc3RlcklEIHNjcmF0Y2ggPSByZWdUMzsKKyAgICBSZWdpc3RlcklEIHNj
cmF0Y2gyID0gcmVnVDQ7CiAjZWxzZQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwogICAg
IFJlZ2lzdGVySUQgcHJvcGVydHkgPSByZWdUMjsKICAgICBSZWdpc3RlcklEIHJlc3VsdFBheWxv
YWQgPSByZWdUMDsKICAgICBSZWdpc3RlcklEIHJlc3VsdFRhZyA9IHJlZ1QxOwogICAgIFJlZ2lz
dGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSByZWdUNDsK
ICNlbmRpZgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTE1ODksOSArMTU4NCw4
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJ
bW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7Ci0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBj
YWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZWZWN0b3IoKSksIHNjcmF0Y2gpOworICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKTsKICAgICAKICAgICBzd2l0Y2ggKGVsZW1lbnRT
aXplKHR5cGUpKSB7CiAgICAgY2FzZSAxOgpAQCAtMTY0OSwxMiArMTY0MywxNCBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0
eSA9IHJlZ1QxOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCA9IHJlZ1QwOwogICAgIFJl
Z2lzdGVySUQgc2NyYXRjaCA9IHJlZ1QzOworICAgIFJlZ2lzdGVySUQgc2NyYXRjaDIgPSByZWdU
NDsKICNlbHNlCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CiAgICAgUmVnaXN0ZXJJRCBw
cm9wZXJ0eSA9IHJlZ1QyOwogICAgIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9hZCA9IHJlZ1QwOwog
ICAgIFJlZ2lzdGVySUQgcmVzdWx0VGFnID0gcmVnVDE7CiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNo
ID0gcmVnVDM7CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoMiA9IHJlZ1Q0OwogI2VuZGlmCiAgICAg
CiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTY2Miw5ICsxNjU4LDggQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZQogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JU
eXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpKTsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwg
c2NyYXRjaCk7CisgICAgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2Ny
YXRjaCwgc2NyYXRjaDIpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsK
ICAgICBjYXNlIDQ6CkBAIC0xNzA1LDExICsxNzAwLDEzIEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0SW50VHlwZWRBcnJheVB1dEIKICAgICBSZWdpc3RlcklEIHByb3BlcnR5ID0gcmVnVDE7CiAg
ICAgUmVnaXN0ZXJJRCBlYXJseVNjcmF0Y2ggPSByZWdUMzsKICAgICBSZWdpc3RlcklEIGxhdGVT
Y3JhdGNoID0gcmVnVDI7CisgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRjaDIgPSByZWdUNDsKICNl
bHNlCiAgICAgUmVnaXN0ZXJJRCBiYXNlID0gcmVnVDA7CiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0
eSA9IHJlZ1QyOwogICAgIFJlZ2lzdGVySUQgZWFybHlTY3JhdGNoID0gcmVnVDM7CiAgICAgUmVn
aXN0ZXJJRCBsYXRlU2NyYXRjaCA9IHJlZ1QxOworICAgIFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gy
ID0gcmVnVDQ7CiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xNzMx
LDkgKzE3MjgsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCCiAg
ICAgCiAgICAgLy8gV2Ugd291bGQgYmUgbG9hZGluZyB0aGlzIGludG8gYmFzZSBhcyBpbiBnZXRf
YnlfdmFsLCBleGNlcHQgdGhhdCB0aGUgc2xvdwogICAgIC8vIHBhdGggZXhwZWN0cyB0aGUgYmFz
ZSB0byBiZSB1bmNsb2JiZXJlZC4KLSAgICAvLyBGSVhNRTogU2hvdWxkIGRvIGNhZ2luZy4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDM3CiAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3Rvcigp
KSwgbGF0ZVNjcmF0Y2gpOworICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRp
dmUsIGxhdGVTY3JhdGNoLCBsYXRlU2NyYXRjaDIpOwogICAgIAogICAgIGlmIChpc0NsYW1wZWQo
dHlwZSkpIHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnRTaXplKHR5cGUpID09IDEpOwpAQCAtMTc3
NywxMSArMTc3MywxMyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1
CiAgICAgUmVnaXN0ZXJJRCBwcm9wZXJ0eSA9IHJlZ1QxOwogICAgIFJlZ2lzdGVySUQgZWFybHlT
Y3JhdGNoID0gcmVnVDM7CiAgICAgUmVnaXN0ZXJJRCBsYXRlU2NyYXRjaCA9IHJlZ1QyOworICAg
IFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gyID0gcmVnVDQ7CiAjZWxzZQogICAgIFJlZ2lzdGVySUQg
YmFzZSA9IHJlZ1QwOwogICAgIFJlZ2lzdGVySUQgcHJvcGVydHkgPSByZWdUMjsKICAgICBSZWdp
c3RlcklEIGVhcmx5U2NyYXRjaCA9IHJlZ1QzOwogICAgIFJlZ2lzdGVySUQgbGF0ZVNjcmF0Y2gg
PSByZWdUMTsKKyAgICBSZWdpc3RlcklEIGxhdGVTY3JhdGNoMiA9IHJlZ1Q0OwogI2VuZGlmCiAg
ICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMTgxNiw5ICsxODE0LDggQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogICAgIC8vIFdlIHdvdWxk
IGJlIGxvYWRpbmcgdGhpcyBpbnRvIGJhc2UgYXMgaW4gZ2V0X2J5X3ZhbCwgZXhjZXB0IHRoYXQg
dGhlIHNsb3cKICAgICAvLyBwYXRoIGV4cGVjdHMgdGhlIGJhc2UgdG8gYmUgdW5jbG9iYmVyZWQu
Ci0gICAgLy8gRklYTUU6IFNob3VsZCBkbyBjYWdpbmcuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAzNwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIGxhdGVTY3JhdGNoKTsKKyAg
ICBjYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBsYXRlU2NyYXRjaCwgbGF0
ZVNjcmF0Y2gyKTsKICAgICAKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAg
Y2FzZSA0OgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDM1MikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMDcgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBCYXNlbGluZSBKSVQgc2hvdWxkIGRvIGNh
Z2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCk6CisgICAgICAgIChHaWdhY2FnZTo6aXNEaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjppc1By
aW1pdGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpj
YW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQpOgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVzIGFu
ZCBKU1ZhbHVlIGF1eGlsaWFyaWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJbmRl
eDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5oCShyZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMiBAQCBpbmxpbmUgYm9vbCBzaG91bGRC
ZUVuYWJsZWQoKSB7IHJldHVybiBmCiBpbmxpbmUgdm9pZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2Fs
bGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9CiBpbmxpbmUgdm9pZCByZW1vdmVQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9CiAKK2lubGlu
ZSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVk
KCkgeyB9CisKK2lubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxl
ZCgpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBpc1ByaW1pdGl2ZUdpZ2FjYWdlUGVy
bWFuZW50bHlFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIGNhblByaW1p
dGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJuIHRydWU7IH0KKwogQUxXQVlTX0lOTElO
RSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjAzNTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTAz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVXNlIGEgYmV0dGVyIEFQSSB0byBkaXNhYmxlIGRpc2FibGluZyB0aGUgcHJpbWl0aXZlIGdp
Z2FjYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIpOgorICAgICAgICAoV2ViS2l0Ojpw
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkKTogRGVsZXRlZC4KKwogMjAxNy0wOC0wNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFByaW1pdGl2ZSBhdXhpbGlhcmll
cyBhbmQgSlNWYWx1ZSBhdXhpbGlhcmllcyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBnaWdhY2FnZXMK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIy
MDM1MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2LDExICsxNDYsNiBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBub25WaXNp
YmxlUHJvY2Vzc0NsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCBwcmltaXRp
dmVHaWdhY2FnZURpc2FibGVkKHZvaWQqKQotewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOwotfQotCiBXZWJQcm9jZXNzJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKQogewogICAgIHN0
YXRpYyBXZWJQcm9jZXNzJiBwcm9jZXNzID0gKm5ldyBXZWJQcm9jZXNzOwpAQCAtMjAyLDggKzE5
Nyw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsK
ICAgICB9KTsKIAotICAgIGlmIChHaWdhY2FnZTo6c2hvdWxkQmVFbmFibGVkKCkpCi0gICAgICAg
IEdpZ2FjYWdlOjphZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2socHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCwgbnVsbHB0cik7CisgICAgR2lnYWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRp
dmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCk7CiB9CiAKIFdlYlByb2Nlc3M6On5XZWJQcm9j
ZXNzKCkKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDM1NSkKKysrIFNvdXJjZS9ibWFsbG9j
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA4LTA3ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQmFzZWxpbmUgSklUIHNo
b3VsZCBkbyBjYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBjZW50cmFsaXplcyB0aGUgbm90aW9uIG9mIHBlcm1hbmVudGx5
IGVuYWJsaW5nIHRoZSBwcmltaXRpdmUgZ2lnYWNhZ2UsIHdoaWNoIHdlIG9ubHkgZG8gaW4ganNj
CisgICAgICAgIGFuZCBXZWJQcm9jZXNzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBzYXZlcyB0
aGUgYmFzZWxpbmUgSklUIGZyb20gZW1pdHRpbmcgc29tZSBjb2RlLiBPdGhlcndpc2UgaXQgd291
bGQgYWx3YXlzIGhhdmUgdG8gZW1pdCBlbmFibGVkCisgICAgICAgIGNoZWNrcyBvbiBlYWNoIHR5
cGVkIGFycmF5IGFjY2Vzcy4KKworICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAg
ICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQpOgorICAgICAgICAoR2ln
YWNhZ2U6OmRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVk
KToKKyAgICAgICAgKEdpZ2FjYWdlOjppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpp
c1ByaW1pdGl2ZUdpZ2FjYWdlUGVybWFuZW50bHlFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQpOgorCiAyMDE3LTA4LTA2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbWl0aXZlIGF1eGlsaWFyaWVz
IGFuZCBKU1ZhbHVlIGF1eGlsaWFyaWVzIHNob3VsZCBoYXZlIHNlcGFyYXRlIGdpZ2FjYWdlcwpJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDIyMDM1MikKKysr
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw2ICs0MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogCiBuYW1lc3BhY2UgR2lnYWNh
Z2UgewogCitzdGF0aWMgYm9vbCBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxl
ZDsKKwogc3RydWN0IENhbGxiYWNrIHsKICAgICBDYWxsYmFjaygpIHsgfQogICAgIApAQCAtMTMx
LDYgKzEzMywyOCBAQCB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkCiAg
ICAgfQogfQogCitzdGF0aWMgYm9vbCBGYWxzZTsKKworc3RhdGljIHZvaWQgcHJpbWl0aXZlR2ln
YWNhZ2VEaXNhYmxlZCh2b2lkKikKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBQcmlt
aXRpdmUgZ2lnYWNhZ2UgZGlzYWJsZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQgaW4gdGhpcyBw
cm9jZXNzXG4iKTsKKyAgICBpZiAoIUZhbHNlKQorICAgICAgICBCQ1JBU0goKTsKK30KKwordm9p
ZCBkaXNhYmxlRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpCit7
CisgICAgaWYgKHNob3VsZEJlRW5hYmxlZCgpKSB7CisgICAgICAgIGFkZFByaW1pdGl2ZURpc2Fi
bGVDYWxsYmFjayhwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkLCBudWxscHRyKTsKKyAgICAgICAg
c19pc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQgPSB0cnVlOworICAgIH0KK30K
KworYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKQoreworICAgIHJl
dHVybiBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKK30KKwogYm9vbCBz
aG91bGRCZUVuYWJsZWQoKQogewogICAgIHJldHVybiBHSUdBQ0FHRV9FTkFCTEVEICYmICFQZXJQ
cm9jZXNzPEVudmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpOwpJbmRleDog
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjIwMzUyKQorKysgU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMiBA
QCBCRVhQT1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCk7CiBCRVhQT1JUIHZvaWQg
YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopOwogQkVY
UE9SVCB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiks
IHZvaWQqKTsKIAorQkVYUE9SVCB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZUlmU2hvdWxkQmVFbmFibGVkKCk7CisKK0JFWFBPUlQgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2
ZUdpZ2FjYWdlRGlzYWJsZWQoKTsKK2lubGluZSBib29sIGlzUHJpbWl0aXZlR2lnYWNhZ2VQZXJt
YW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlz
YWJsZWQoKTsgfQoraW5saW5lIGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkg
eyByZXR1cm4gIWlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CisKIEJJ
TkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7
Cg==
</data>
<flag name="review"
          id="338037"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>