<?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>214067</bug_id>
          
          <creation_ts>2020-07-07 19:13:04 -0700</creation_ts>
          <short_desc>Add a way to return early from detected infinite loops to aid the fuzzer</short_desc>
          <delta_ts>2020-07-08 09:43:16 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>jsc32</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tuomas.webkit</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1669637</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 19:13:04 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669650</commentid>
    <comment_count>1</comment_count>
      <attachid>403753</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 20:33:29 -0700</bug_when>
    <thetext>Created attachment 403753
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669653</commentid>
    <comment_count>2</comment_count>
      <attachid>403753</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-07 20:44:51 -0700</bug_when>
    <thetext>Comment on attachment 403753
patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14718
&gt; +        patchpoint-&gt;effects.writesLocalState = true;

patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters()); is required.

&gt; Source/JavaScriptCore/runtime/VM.cpp:1562
&gt; +        uint64_t* ptr = static_cast&lt;uint64_t*&gt;(fastMalloc(sizeof(uint64_t)));
&gt; +        *ptr = 0;
&gt; +        addResult.iterator-&gt;value.second = ptr;

How about using `std::unique_ptr&lt;uint64_t&gt;` &amp; `makeUnique&lt;uint64_t&gt;()`?

&gt; Source/JavaScriptCore/runtime/VM.cpp:1582
&gt; +        fastFree(iter-&gt;value.second);

Then, we can remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669656</commentid>
    <comment_count>3</comment_count>
      <attachid>403753</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 20:50:03 -0700</bug_when>
    <thetext>Comment on attachment 403753
patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:14718
&gt;&gt; +        patchpoint-&gt;effects.writesLocalState = true;
&gt; 
&gt; patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters()); is required.

Actually I tried to not make it so that we use them. I added AllowMacroScratxh RAII before I refactored the code. I will remove the RAII

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:1562
&gt;&gt; +        addResult.iterator-&gt;value.second = ptr;
&gt; 
&gt; How about using `std::unique_ptr&lt;uint64_t&gt;` &amp; `makeUnique&lt;uint64_t&gt;()`?

Sounds good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669657</commentid>
    <comment_count>4</comment_count>
      <attachid>403753</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-07 21:05:02 -0700</bug_when>
    <thetext>Comment on attachment 403753
patch

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

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:468
&gt; +        *ptr += codeBlock-&gt;llintExecuteCounter().m_activeThreshold;

Why inc by m_activeThreshold here and only by 1 in the JITs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669658</commentid>
    <comment_count>5</comment_count>
      <attachid>403753</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 21:07:04 -0700</bug_when>
    <thetext>Comment on attachment 403753
patch

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

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:468
&gt;&gt; +        *ptr += codeBlock-&gt;llintExecuteCounter().m_activeThreshold;
&gt; 
&gt; Why inc by m_activeThreshold here and only by 1 in the JITs?

this is just a heuristic of how much we&apos;ve executed. This is actually slightly higher than what we&apos;ve executed. It&apos;s because I don&apos;t want to change the LLInt&apos;s runtime code. But changing the JITs is trivial, since it&apos;s controlled behind a runtime option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669660</commentid>
    <comment_count>6</comment_count>
      <attachid>403757</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 21:20:30 -0700</bug_when>
    <thetext>Created attachment 403757
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669661</commentid>
    <comment_count>7</comment_count>
      <attachid>403753</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-07 21:23:06 -0700</bug_when>
    <thetext>Comment on attachment 403753
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:468
&gt;&gt;&gt; +        *ptr += codeBlock-&gt;llintExecuteCounter().m_activeThreshold;
&gt;&gt; 
&gt;&gt; Why inc by m_activeThreshold here and only by 1 in the JITs?
&gt; 
&gt; this is just a heuristic of how much we&apos;ve executed. This is actually slightly higher than what we&apos;ve executed. It&apos;s because I don&apos;t want to change the LLInt&apos;s runtime code. But changing the JITs is trivial, since it&apos;s controlled behind a runtime option.

OK, I understand now.  The detail to note is that this function (llint_loop_osr) is only called once after the loop_hint has been visited m_activeThreshold times.  It is not called on every loop_hint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669666</commentid>
    <comment_count>8</comment_count>
      <attachid>403758</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-07-07 22:42:39 -0700</bug_when>
    <thetext>Created attachment 403758
patch for landing

Now skipping this for builtin functions, since we rely on some of those not early returning out of loops for the integrity of data structures we create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669780</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-08 09:42:59 -0700</bug_when>
    <thetext>Committed r264105: &lt;https://trac.webkit.org/changeset/264105&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403758.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669781</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-08 09:43:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/65227843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403753</attachid>
            <date>2020-07-07 20:33:29 -0700</date>
            <delta_ts>2020-07-07 21:20:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>20516</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHdheSB0byByZXR1cm4gZWFybHkgZnJvbSBkZXRlY3RlZCBpbmZpbml0ZSBsb29wcyB0
byBhaWQgdGhlIGZ1enplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSXQncyB1c2VmdWwgZm9yIHRoZSBmdXp6ZXIgdG8gbm90IGdldCBzdHVjayBpbiBp
bmZpbml0ZSBsb29wcyBzbyBpdHMKKyAgICAgICAgdGVzdCBjYXNlcyBjYW4gbWFrZSBmb3J3YXJk
IHByb2dyZXNzIHRyeWluZyB0byBmaW5kIGJ1Z3MuIFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBh
IG5ldyBtZWNoYW5pc20gd2hlcmUgd2UgY2FuIGVhcmx5IHJldHVybiBpZiB3ZSd2ZSBleGNlZWRl
ZCBhIHRvdGFsCisgICAgICAgIGV4ZWN1dGlvbiBjb3VudCBmb3IgYSBzdGF0aWMgbG9vcCBpbiBi
eXRlY29kZS4gTm90ZTogdGhpcyBpcyBub3Qgb24gYQorICAgICAgICBwZXItZnJhbWUgYmFzaXMs
IGJ1dCBpdCdzIGEgd2F5IHRvIGltcGxlbWVudCB0aGlzIGluIGEgbm9uLWludmFzaXZlIHdheQor
ICAgICAgICB3aGljaCBpcyBhbHNvIHByYWN0aWNhbCBmb3IgdGhlIGZ1enplciB0byB1c2UuCisK
KyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRl
Q29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkNvZGU6OmVtaXRFcGlsb2d1ZSk6CisgICAgICAgICogYjMvYWlyL0Fp
ckNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpnZW5lcmF0ZVdpdGhBbHJlYWR5QWxsb2NhdGVkUmVnaXN0ZXJzKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVMb29wSGludCk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bG9vcF9oaW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vbWlwcy5yYjoKKyAgICAgICAgKiBy
dW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAg
IChKU0M6OlZNOjphZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpW
TTo6Z2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6Vk06OnJlbW92
ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIwLTA3LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gU2hvdWxkIG5vdCBwYXNzIEV4Y2VwdGlvbiB0byBKU1Byb21pc2U6OnJlamVjdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0
YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3Bw
CShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03ODcsMTIgKzc4Nyw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6
Z2VuZXIKIAogICAgICAgICAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgcmVwcmVz
ZW50IHRoZSBmdWxsIGVwaWxvZ3VlIGluIEFpciwgc28gd2UgbmVlZCB0bwogICAgICAgICAgICAg
ICAgICAgICAvLyBoYXZlIHRoaXMgb3ZlcnJpZGUuCi0gICAgICAgICAgICAgICAgICAgIGlmICht
X2NvZGUuZnJhbWVTaXplKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LT5lbWl0
UmVzdG9yZShtX2NvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRG
dW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9q
aXQtPnJldCgpOworICAgICAgICAgICAgICAgICAgICBtX2NvZGUuZW1pdEVwaWxvZ3VlKCptX2pp
dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChuZWVkc1RvR2VuZXJhdGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxNiBAQCB2
b2lkIENvZGU6OmVtaXREZWZhdWx0UHJvbG9ndWUoQ0NhbGxIZWxwCiAgICAgZGVmYXVsdFByb2xv
Z3VlR2VuZXJhdG9yKGppdCwgKnRoaXMpOwogfQogCit2b2lkIENvZGU6OmVtaXRFcGlsb2d1ZShD
Q2FsbEhlbHBlcnMmIGppdCkKK3sKKyAgICBpZiAoZnJhbWVTaXplKCkpIHsKKyAgICAgICAgaml0
LmVtaXRSZXN0b3JlKGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgfSBlbHNlCisgICAgICAgIGppdC5lbWl0
RnVuY3Rpb25FcGlsb2d1ZVdpdGhFbXB0eUZyYW1lKCk7CisgICAgaml0LnJldCgpOworfQorCiB2
b2lkIENvZGU6OnNldFJlZ3NJblByaW9yaXR5T3JkZXIoQmFuayBiYW5rLCBjb25zdCBWZWN0b3I8
UmVnPiYgcmVncykKIHsKICAgICByZWdzSW5Qcmlvcml0eU9yZGVySW1wbChiYW5rKSA9IHJlZ3M7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkocmV2aXNpb24gMjY0
MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0Niw2ICszNDYsNyBAQCBwdWJsaWM6CiAgICAgV2Vha1JhbmRvbSYgd2Vha1Jh
bmRvbSgpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbTsgfQogCiAgICAgdm9pZCBlbWl0RGVmYXVsdFBy
b2xvZ3VlKENDYWxsSGVscGVycyYpOworICAgIHZvaWQgZW1pdEVwaWxvZ3VlKENDYWxsSGVscGVy
cyYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+
IG1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZpc2lvbiAyNjQwMzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcwLDEyICsyNzAsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVdpdGhBbHJlYWR5
QWxsb2NhdGVkCiAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgcmVwcmVzZW50IHRo
ZSBmdWxsIHByb2xvZ3VlL2VwaWxvZ3VlIGluIEFpciwgc28gd2UgbmVlZCB0bwogICAgICAgICAg
ICAgLy8gaGF2ZSB0aGlzIG92ZXJyaWRlLgogICAgICAgICAgICAgYXV0byBzdGFydCA9IGppdC5s
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKLSAgICAgICAgICAgIGlmIChjb2RlLmZyYW1lU2l6
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlKGNvZGUuY2FsbGVlU2F2ZVJl
Z2lzdGVyQXRPZmZzZXRMaXN0KCkpOwotICAgICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKLSAgICAgICAgICAgIGppdC5yZXQoKTsK
KyAgICAgICAgICAgIGNvZGUuZW1pdEVwaWxvZ3VlKGppdCk7CiAgICAgICAgICAgICBhZGRJdGVt
KGJsb2NrLT5sYXN0KCkpOwogICAgICAgICAgICAgYXV0byBlbmQgPSBqaXQubGFiZWxJZ25vcmlu
Z1dhdGNocG9pbnRzKCk7CiAgICAgICAgICAgICBpZiAoZGlzYXNzZW1ibGVyKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lv
biAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg5LDYgKzEzODksNyBAQCBvcCA6bGxpbnRfaW50ZXJu
YWxfZnVuY3Rpb25fY2FsbF90cmFtcG9sCiBvcCA6bGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29u
c3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9j
YWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUKK29wIDpm
dXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6aGFuZGxlVW5jYXVnaHRFeGNl
cHRpb24KIG9wIDpvcF9jYWxsX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2NvbnN0cnVjdF9yZXR1
cm5fbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY4LDYgKzc2OCwxMiBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251
bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7Cisg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1
enppbmcoKSkKKyAgICAgICAgICAgICAgICB2bS5hZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIo
aW5zdHJ1Y3Rpb24ucHRyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTgxMSw2ICs4MTcs
MTMgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICAgICBWTSYgdm0gPSAqbV92bTsKIAor
ICAgIGlmIChPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZygp
ICYmIEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUoKSkpIHsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBpbnN0cnVjdGlvbiA6IGluc3RydWN0aW9ucygpKSB7CisgICAgICAgICAgICBp
ZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wTG9vcEhpbnQ+KCkpCisgICAgICAgICAgICAgICAgdm0ucmVt
b3ZlTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uLnB0cigpKTsKKyAgICAgICAg
fQorICAgIH0KKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIFRoZSBKSVRDb2RlIChhbmQg
aXRzIGNvcnJlc3BvbmRpbmcgREZHOjpDb21tb25EYXRhKSBtYXkgb3V0bGl2ZSB0aGUgQ29kZUJs
b2NrIGJ5CiAgICAgLy8gYSBzaG9ydCBhbW91bnQgb2YgdGltZSBhZnRlciB0aGUgQ29kZUJsb2Nr
IGlzIGRlc3RydWN0ZWQuIEZvciBleGFtcGxlLCB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzE3LDYgKzMxNyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBj
YXNlIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uOgorICAgIGNhc2UgZnV6emVyX3JldHVybl9lYXJs
eV9mcm9tX2xvb3BfaGludDoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0
aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2Fz
ZSBvcF9jYWxsX3JldHVybl9sb2NhdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDk2Myw3ICs0OTYzLDM0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgUGhhbnRv
bUxvY2FsOgorICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AuCisgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgTG9vcEhpbnQ6CisgICAgICAgIGlmIChP
cHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZygpKSB7CisgICAg
ICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuZ3JhcGgoKS5iYXNl
bGluZUNvZGVCbG9ja0Zvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2Rl
SW5kZXgoKTsKKyAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJh
c2VsaW5lQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgp
KS5wdHIoKTsKKworICAgICAgICAgICAgdWludDY0X3QqIHB0ciA9IHZtKCkuZ2V0TG9vcEhpbnRF
eGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9uKTsKKworICAgICAgICAgICAgbV9qaXQucHVzaFRv
U2F2ZShHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBtX2ppdC5sb2FkNjQocHRyLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgICAgICBhdXRvIHNraXBFYXJseVJldHVybiA9IG1faml0LmJy
YW5jaDY0KENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJlZ1QwLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW02NChPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQo
KSkpOworCisgICAgICAgICAgICBtX2ppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
ICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgICAgICAgICBtX2pp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgbV9qaXQucmV0KCk7CisKKyAg
ICAgICAgICAgIHNraXBFYXJseVJldHVybi5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBtX2pp
dC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgbV9qaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgcHRyKTsKKyAgICAgICAg
ICAgIG1faml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBUaGlzIGlzIGEgbm8tb3AuCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyMCw4ICsxNjIwLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlRGF0YVZpZXdTZXQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogCisgICAgICAgIGNhc2UgTG9vcEhpbnQ6IHsKKyAgICAgICAgICAgIGNvbXBpbGVM
b29wSGludCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IFBoYW50b21Mb2NhbDoKLSAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZI
aW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgIGNhc2UgRXhpdE9LOgpAQCAt
MTQ2OTcsNiArMTQ3MDEsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVMb29w
SGludCgpCisgICAgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmlu
aXRlTG9vcHNGb3JGdXp6aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXggPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCk7CisgICAgICAg
IGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKyAgICAgICAgdWlu
dDY0X3QqIHB0ciA9IHZtKCkuZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9u
KTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgp
OworICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAg
ICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc0xvY2FsU3RhdGUgPSB0cnVlOworICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3B0cl0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dN
YWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAg
ICBhdXRvIHJlc3RvcmUgPSBbJl0geworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUo
R1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDEpOwor
ICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChPcHRpb25zOjplYXJseVJldHVy
bkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIGF1dG8gc2tpcEVhcmx5UmV0
dXJuID0gaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpyZWdUMik7CisKKyAgICAgICAgICAgIHJlc3RvcmUoKTsKKyAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIHBhcmFtcy5j
b2RlKCkuZW1pdEVwaWxvZ3VlKGppdCk7IAorCisgICAgICAgICAgICBza2lwRWFybHlSZXR1cm4u
bGluaygmaml0KTsKKyAgICAgICAgICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigxKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5m
bzo6cmVnVDEsIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAg
ICAgICAgcmVzdG9yZSgpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBlbWl0
U3dpdGNoRm9yTXVsdGlCeU9mZnNldChMVmFsdWUgYmFzZSwgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tl
ZCwgVmVjdG9yPFN3aXRjaENhc2UsIDI+JiBjYXNlcywgTEJhc2ljQmxvY2sgZXhpdCkKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNjAsOCArMTE2MCwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
aW5zdGFuY2VvZl9jdXN0b20oCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRf
b3BfbG9vcF9oaW50KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGlmIChPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3Bz
Rm9yRnV6emluZygpKSB7CisgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50
RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbik7CisgICAgICAgIGxvYWQ2NChwdHIsIHJlZ1Qw
KTsKKyAgICAgICAgYXV0byBza2lwRWFybHlSZXR1cm4gPSBicmFuY2g2NChCZWxvdywgcmVnVDAs
IFRydXN0ZWRJbW02NChPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQo
KSkpOworCisgICAgICAgIG1vdmVWYWx1ZShqc1VuZGVmaW5lZCgpLCBKU1ZhbHVlUmVncyB7IEdQ
UkluZm86OnJldHVyblZhbHVlR1BSIH0pOworICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdu
bWVudCgpOworICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIGVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgIHJldCgpOworCisgICAgICAgIHNraXBFYXJseVJl
dHVybi5saW5rKHRoaXMpOworICAgICAgICBhZGQ2NChUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsK
KyAgICAgICAgc3RvcmU2NChyZWdUMCwgcHRyKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIEVt
aXQgdGhlIEpJVCBvcHRpbWl6YXRpb24gY2hlY2s6IAogICAgIGlmIChjYW5CZU9wdGltaXplZCgp
KSB7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKFBvc2l0aXZlT3JaZXJvLCBUcnVz
dGVkSW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AoKSksCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0NjIsMTQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9T
UigpLAogICAgICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4
ZWN1dGVDb3VudGVyID0gIiwKICAgICAgICAgICAgIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291
bnRlcigpKTsKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZp
bml0ZUxvb3BzRm9yRnV6emluZygpKSkgeworICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0
TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKHBjKTsKKyAgICAgICAgKnB0ciArPSBjb2RlQmxvY2st
PmxsaW50RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKKyAgICAgICAgaWYgKCpw
dHIgPj0gT3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCisgICAg
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCks
IGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICB9CisgICAgCiAgICAgCiAgICAgYXV0byBs
b29wT1NSRW50cnlCeXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KHBjKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQwMzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjcwMiwzICsyNzAyLDggQEAgbGxpbnRPcChvcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbCwgT3BMbwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKQogICAgIGRpc3BhdGNoKCkKIGVuZCkKKworCitv
cChmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCBtYWNybyAoKQorICAgIG5vdFN1
cHBvcnRlZCgpCitlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjY0MDMzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTI5NDQsMyArMjk0NCw5IEBAIGVuZCkKIGxsaW50T3BXaXRoUmV0dXJuKG9w
X2luX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3BlcnR5LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChz
aXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2luX3N0cnVjdHVyZV9wcm9w
ZXJ0eSkKIGVuZCkKKworb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFj
cm8gKCkKKyAgICBtb3ZlIFZhbHVlVW5kZWZpbmVkLCByMAorICAgIGRvUmV0dXJuKCkKK2VuZCkK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCShyZXZpc2lv
biAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCSh3
b3JraW5nIGNvcHkpCkBAIC02ODQsNyArNjg0LDcgQEAgZGVmIG1pcHNBZGRQSUNDb2RlKGxpc3Qp
CiAgICAgICAgICAgICAjIEZJWE1FOiBbSlNDXSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5s
aW5lZF9jYWxsX3RyYW1wb2xpbmUgaXMgYSByZXR1cm4gbG9jYXRpb24KICAgICAgICAgICAgICMg
YW5kIHdlIHNob3VsZCBuYW1lIGl0IHByb3Blcmx5LgogICAgICAgICAgICAgIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjM2Ci0gICAgICAgICAgICBpZiBub2Rl
Lm5hbWUgPX4gL14uKl9yZXR1cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9y
IG5vZGUubmFtZS5zdGFydF93aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVk
X2NhbGxfdHJhbXBvbGluZSIpCisgICAgICAgICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9yZXR1
cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFydF93
aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSIp
IG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2Z1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29w
X2hpbnQiKQogICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBjYXNl
IGZvciByZXR1cm4gbG9jYXRpb24gbGFiZWxzIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzCiAgICAg
ICAgICAgICAgICAgIyByZWFjaGVkIGZyb20gYSBgcmV0YCBpbnN0cnVjdGlvbi4gSW4gdGhpcyBj
YXNlLCB3ZSBuZWVkIHRvIHByb3BlciByZWNvbmZpZ3VyZSBgJGdwYAogICAgICAgICAgICAgICAg
ICMgdXNpbmcgYCRyYWAgaW5zdGVhZCBvZiB1c2luZyBgJHQ5YC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjY0MDMzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEwLDYgKzUxMCw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW4KICAgICB2KEJvb2wsIGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNh
YmxlIGJvdGggdGhlIHNhbXBsaW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwK
ICAgICB2KEJvb2wsIGFsbG93VW5zdXBwb3J0ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRy
dWUsIHdlIHdpbGwgbm90IGRpc2FibGUgREZHIG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBm
ZWF0dXJlIGlzIGVuYWJsZWQuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRz
LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJp
dmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCByZXR1cm5F
YXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAorICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0LCAxMzAwMDAw
MDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5n
IGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29w
IGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJldHVybmluZy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0
aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGluZmluaXRlIGxvb3BzLiIpIFwK
IAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Miw0ICsx
NTUyLDM2IEBAIHZvaWQgVk06OnNldENyYXNoT25WTUNyZWF0aW9uKGJvb2wgc2hvdWwKICAgICB2
bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAordm9pZCBWTTo6YWRkTG9v
cEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sK
KyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2sp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5hZGQoaW5z
dHJ1Y3Rpb24sIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdWludDY0X3QqPigwLCBudWxscHRyKSk7Cisg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIHVpbnQ2NF90KiBwdHIgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOworICAg
ICAgICAqcHRyID0gMDsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZWNvbmQg
PSBwdHI7CisgICAgfQorICAgICsrYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdDsKK30K
KwordWludDY0X3QqIFZNOjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb29w
SGludEV4ZWN1dGlvbkNvdW50TG9jayk7CisgICAgYXV0byBpdGVyID0gbV9sb29wSGludEV4ZWN1
dGlvbkNvdW50cy5maW5kKGluc3RydWN0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9
IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMuZW5kKCkpOworICAgIHJldHVybiBpdGVyLT52YWx1
ZS5zZWNvbmQ7Cit9CisKK3ZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrKTsKKyAgICBhdXRvIGl0ZXIgPSBtX2xv
b3BIaW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOworICAgIFJFTEVBU0VfQVNT
RVJUKCEhaXRlci0+dmFsdWUuZmlyc3QpOworICAgIC0taXRlci0+dmFsdWUuZmlyc3Q7CisgICAg
aWYgKCFpdGVyLT52YWx1ZS5maXJzdCkgeworICAgICAgICBmYXN0RnJlZShpdGVyLT52YWx1ZS5z
ZWNvbmQpOworICAgICAgICBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRzLnJlbW92ZShpdGVyKTsK
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk5LDYgKzEwOTksMTAgQEAgcHVibGljOgog
ICAgICAgICBTZXRGb3JTY29wZTxFeGNlcHRpb24qPiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAg
ICB9OwogCisgICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKKyAgICB1aW50NjRfdCogZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgdm9pZCByZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCkBAIC0xMjI0LDYgKzEyMjgsOSBAQCBwcml2YXRlOgogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZChWTSYpPiBtX29uRWFjaE1pY3JvdGFza1RpY2s7CiAgICAgdWludHB0
cl90IG1fY3VycmVudFdlYWtSZWZWZXJzaW9uIHsgMCB9OwogCisgICAgTG9jayBtX2xvb3BIaW50
RXhlY3V0aW9uQ291bnRMb2NrOworICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90Kj4+IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHM7CisK
ICAgICBWTSogbV9wcmV2OyAvLyBSZXF1aXJlZCBieSBEb3VibHlMaW5rZWRMaXN0Tm9kZS4KICAg
ICBWTSogbV9uZXh0OyAvLyBSZXF1aXJlZCBieSBEb3VibHlMaW5rZWRMaXN0Tm9kZS4KIAo=
</data>
<flag name="review"
          id="419135"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403757</attachid>
            <date>2020-07-07 21:20:30 -0700</date>
            <delta_ts>2020-07-07 22:42:39 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>20441</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHdheSB0byByZXR1cm4gZWFybHkgZnJvbSBkZXRlY3RlZCBpbmZpbml0ZSBsb29wcyB0
byBhaWQgdGhlIGZ1enplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICBJdCdzIHVzZWZ1bCBmb3IgdGhlIGZ1enplciB0byBub3QgZ2V0IHN0dWNrIGluIGlu
ZmluaXRlIGxvb3BzIHNvIGl0cworICAgICAgICB0ZXN0IGNhc2VzIGNhbiBtYWtlIGZvcndhcmQg
cHJvZ3Jlc3MgdHJ5aW5nIHRvIGZpbmQgYnVncy4gVGhpcyBwYXRjaAorICAgICAgICBhZGRzIGEg
bmV3IG1lY2hhbmlzbSB3aGVyZSB3ZSBjYW4gZWFybHkgcmV0dXJuIGlmIHdlJ3ZlIGV4Y2VlZGVk
IGEgdG90YWwKKyAgICAgICAgZXhlY3V0aW9uIGNvdW50IGZvciBhIHN0YXRpYyBsb29wIGluIGJ5
dGVjb2RlLiBOb3RlOiB0aGlzIGlzIG5vdCBvbiBhCisgICAgICAgIHBlci1mcmFtZSBiYXNpcywg
YnV0IGl0J3MgYSB3YXkgdG8gaW1wbGVtZW50IHRoaXMgaW4gYSBub24taW52YXNpdmUgd2F5Cisg
ICAgICAgIHdoaWNoIGlzIGFsc28gcHJhY3RpY2FsIGZvciB0aGUgZnV6emVyIHRvIHVzZS4KKwor
ICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lz
dGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6Q29kZTo6ZW1pdEVwaWxvZ3VlKToKKyAgICAgICAgKiBiMy9haXIvQWly
Q29kZS5oOgorICAgICAgICAqIGIzL2Fpci9BaXJHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6OmdlbmVyYXRlV2l0aEFscmVhZHlBbGxvY2F0ZWRSZWdpc3RlcnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvb3BIaW50KToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9s
b29wX2hpbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9taXBzLnJiOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgIChKU0M6OlZN
OjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpWTTo6cmVtb3Zl
TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MjAtMDctMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBTaG91bGQgbm90IHBhc3MgRXhjZXB0aW9uIHRvIEpTUHJvbWlzZTo6cmVqZWN0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3Rh
Y2tBbmRHZW5lcmF0ZUNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJ
KHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4NywxMiArNzg3LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpn
ZW5lcgogCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCByZXByZXNl
bnQgdGhlIGZ1bGwgZXBpbG9ndWUgaW4gQWlyLCBzbyB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGhhdmUgdGhpcyBvdmVycmlkZS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y29kZS5mcmFtZVNpemUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRS
ZXN0b3JlKG1fY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC0+ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC0+ZW1pdEZ1
bmN0aW9uRXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2pp
dC0+cmV0KCk7CisgICAgICAgICAgICAgICAgICAgIG1fY29kZS5lbWl0RXBpbG9ndWUoKm1faml0
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aWYgKG5lZWRzVG9HZW5lcmF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDE2IEBAIHZv
aWQgQ29kZTo6ZW1pdERlZmF1bHRQcm9sb2d1ZShDQ2FsbEhlbHAKICAgICBkZWZhdWx0UHJvbG9n
dWVHZW5lcmF0b3Ioaml0LCAqdGhpcyk7CiB9CiAKK3ZvaWQgQ29kZTo6ZW1pdEVwaWxvZ3VlKEND
YWxsSGVscGVycyYgaml0KQoreworICAgIGlmIChmcmFtZVNpemUoKSkgeworICAgICAgICBqaXQu
ZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOworICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKKyAgICBqaXQucmV0KCk7Cit9CisKIHZv
aWQgQ29kZTo6c2V0UmVnc0luUHJpb3JpdHlPcmRlcihCYW5rIGJhbmssIGNvbnN0IFZlY3RvcjxS
ZWc+JiByZWdzKQogewogICAgIHJlZ3NJblByaW9yaXR5T3JkZXJJbXBsKGJhbmspID0gcmVnczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCShyZXZpc2lvbiAyNjQw
MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICBXZWFrUmFuZG9tJiB3ZWFrUmFu
ZG9tKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tOyB9CiAKICAgICB2b2lkIGVtaXREZWZhdWx0UHJv
bG9ndWUoQ0NhbGxIZWxwZXJzJik7CisgICAgdm9pZCBlbWl0RXBpbG9ndWUoQ0NhbGxIZWxwZXJz
Jik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4g
bV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzAsMTIgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlV2l0aEFscmVhZHlB
bGxvY2F0ZWQKICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCByZXByZXNlbnQgdGhl
IGZ1bGwgcHJvbG9ndWUvZXBpbG9ndWUgaW4gQWlyLCBzbyB3ZSBuZWVkIHRvCiAgICAgICAgICAg
ICAvLyBoYXZlIHRoaXMgb3ZlcnJpZGUuCiAgICAgICAgICAgICBhdXRvIHN0YXJ0ID0gaml0Lmxh
YmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICAgICAgaWYgKGNvZGUuZnJhbWVTaXpl
KCkpIHsKLSAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmUoY29kZS5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwor
ICAgICAgICAgICAgY29kZS5lbWl0RXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGFkZEl0ZW0o
YmxvY2stPmxhc3QoKSk7CiAgICAgICAgICAgICBhdXRvIGVuZCA9IGppdC5sYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9u
IDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIJKHdvcmtpbmcgY29weSkKQEAgLTEzODksNiArMTM4OSw3IEBAIG9wIDpsbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jYWxsX3RyYW1wb2wKIG9wIDpsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25z
dHJ1Y3RfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2Nh
bGxfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZQorb3AgOmZ1
enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpoYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbgogb3AgOm9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfY29uc3RydWN0X3JldHVy
bl9sb2NhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNiArNzY4LDEyIEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgIG1fbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9sb29wX2hpbnQ6IHsKKyAg
ICAgICAgICAgIGlmIChPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6
emluZygpKQorICAgICAgICAgICAgICAgIHZtLmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihp
bnN0cnVjdGlvbi5wdHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODExLDYgKzgxNywx
MyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewogICAgIFZNJiB2bSA9ICptX3ZtOwogCisg
ICAgaWYgKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkg
JiYgSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGlm
IChpbnN0cnVjdGlvbi0+aXM8T3BMb29wSGludD4oKSkKKyAgICAgICAgICAgICAgICB2bS5yZW1v
dmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24ucHRyKCkpOworICAgICAgICB9
CisgICAgfQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gVGhlIEpJVENvZGUgKGFuZCBp
dHMgY29ycmVzcG9uZGluZyBERkc6OkNvbW1vbkRhdGEpIG1heSBvdXRsaXZlIHRoZSBDb2RlQmxv
Y2sgYnkKICAgICAvLyBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGFmdGVyIHRoZSBDb2RlQmxvY2sg
aXMgZGVzdHJ1Y3RlZC4gRm9yIGV4YW1wbGUsIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTcsNiArMzE3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRAogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFt
cG9saW5lOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CisgICAgY2FzZSBmdXp6ZXJfcmV0dXJuX2Vhcmx5
X2Zyb21fbG9vcF9oaW50OgogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRp
b246CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNl
IG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjQwMzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OTYzLDcgKzQ5NjMsMzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBQaGFudG9t
TG9jYWw6CisgICAgICAgIC8vIFRoaXMgaXMgYSBuby1vcC4KKyAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb29wSGludDoKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkpIHsKKyAgICAg
ICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJ
bmRleCgpOworICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkp
LnB0cigpOworCisgICAgICAgICAgICB1aW50NjRfdCogcHRyID0gdm0oKS5nZXRMb29wSGludEV4
ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24pOworCisgICAgICAgICAgICBtX2ppdC5wdXNoVG9T
YXZlKEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChwdHIsIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGF1dG8gc2tpcEVhcmx5UmV0dXJuID0gbV9qaXQuYnJh
bmNoNjQoQ0NhbGxIZWxwZXJzOjpCZWxvdywgR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KE9wdGlvbnM6OmVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgp
KSk7CisKKyAgICAgICAgICAgIG1faml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgICAgIG1faml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBtX2ppdC5yZXQoKTsKKworICAg
ICAgICAgICAgc2tpcEVhcmx5UmV0dXJuLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIG1faml0
LmFkZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBtX2ppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBwdHIpOworICAgICAgICAg
ICAgbV9qaXQucG9wVG9SZXN0b3JlKEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIC8vIFRoaXMgaXMgYSBuby1vcC4KICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDggKzE2MjAsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBpbGVEYXRhVmlld1NldCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAKKyAgICAgICAgY2FzZSBMb29wSGludDogeworICAgICAgICAgICAgY29tcGlsZUxv
b3BIaW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
UGhhbnRvbUxvY2FsOgotICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhp
bnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgY2FzZSBFeGl0T0s6CkBAIC0x
NDY5Nyw2ICsxNDcwMSw0NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUxvb3BI
aW50KCkKKyAgICB7CisgICAgICAgIGlmICghT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5p
dGVMb29wc0ZvckZ1enppbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvciht
X25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleCA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFzZWxpbmVDb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLnB0cigpOworICAgICAgICB1aW50
NjRfdCogcHRyID0gdm0oKS5nZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24p
OworCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoVm9pZCk7CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7
CisgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMuZXhpdHNTaWRld2F5cyA9IHRydWU7CisgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbcHRyXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBhdXRvIHJl
c3RvcmUgPSBbJl0geworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6
cmVnVDIpOworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDEp
OworICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAg
ICAgaml0LnB1c2hUb1NhdmUoR1BSSW5mbzo6cmVnVDIpOworCisgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZp
bml0ZUxvb3BzTGltaXQoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAg
ICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIGF1dG8gc2tpcEVhcmx5UmV0dXJuID0gaml0
LmJyYW5jaDY0KENDYWxsSGVscGVyczo6QmVsb3csIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpy
ZWdUMik7CisKKyAgICAgICAgICAgIHJlc3RvcmUoKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIHBhcmFtcy5jb2RlKCkuZW1p
dEVwaWxvZ3VlKGppdCk7IAorCisgICAgICAgICAgICBza2lwRWFybHlSZXR1cm4ubGluaygmaml0
KTsKKyAgICAgICAgICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwg
R1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDEs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgcmVz
dG9yZSgpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBlbWl0U3dpdGNoRm9y
TXVsdGlCeU9mZnNldChMVmFsdWUgYmFzZSwgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tlZCwgVmVjdG9y
PFN3aXRjaENhc2UsIDI+JiBjYXNlcywgTEJhc2ljQmxvY2sgZXhpdCkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI2NDAzMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNjAsOCArMTE2MCwyNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
Zl9jdXN0b20oCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdF9v
cF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9o
aW50KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGlmIChPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emlu
ZygpKSB7CisgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9u
Q291bnRlcihpbnN0cnVjdGlvbik7CisgICAgICAgIGxvYWQ2NChwdHIsIHJlZ1QwKTsKKyAgICAg
ICAgYXV0byBza2lwRWFybHlSZXR1cm4gPSBicmFuY2g2NChCZWxvdywgcmVnVDAsIFRydXN0ZWRJ
bW02NChPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkpOworCisg
ICAgICAgIG1vdmVWYWx1ZShqc1VuZGVmaW5lZCgpLCBKU1ZhbHVlUmVncyB7IEdQUkluZm86OnJl
dHVyblZhbHVlR1BSIH0pOworICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwor
ICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CisgICAgICAgIHJldCgpOworCisgICAgICAgIHNraXBFYXJseVJldHVybi5saW5r
KHRoaXMpOworICAgICAgICBhZGQ2NChUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKKyAgICAgICAg
c3RvcmU2NChyZWdUMCwgcHRyKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIEVtaXQgdGhlIEpJ
VCBvcHRpbWl6YXRpb24gY2hlY2s6IAogICAgIGlmIChjYW5CZU9wdGltaXplZCgpKSB7CiAgICAg
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKFBvc2l0aXZlT3JaZXJvLCBUcnVzdGVkSW1tMzIo
T3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AoKSksCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0NjIsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0wobG9vcF9vc3IpCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLAogICAg
ICAgICAgICAgKmNvZGVCbG9jaywgIjogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gIiwKICAgICAgICAgICAgIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsK
KworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3Bz
Rm9yRnV6emluZygpKSkgeworICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhpbnRF
eGVjdXRpb25Db3VudGVyKHBjKTsKKyAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKKyAgICAgICAgaWYgKCpwdHIgPj0gT3B0
aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCisgICAgICAgICAgICBM
TElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxGcmFt
ZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICB9CisgICAgCiAgICAgCiAgICAgYXV0byBsb29wT1NSRW50
cnlCeXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleChjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KHBjKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29y
a2luZyBjb3B5KQpAQCAtMjcwMiwzICsyNzAyLDggQEAgbGxpbnRPcChvcF9sb2dfc2hhZG93X2No
aWNrZW5fdGFpbCwgT3BMbwogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl90YWlsKQogICAgIGRpc3BhdGNoKCkKIGVuZCkKKworCitvcChmdXp6ZXJf
cmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCBtYWNybyAoKQorICAgIG5vdFN1cHBvcnRlZCgp
CitlbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTI5NDQsMyArMjk0NCw5IEBAIGVuZCkKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2luX3N0cnVj
dHVyZV9wcm9wZXJ0eSwgT3BJblN0cnVjdHVyZVByb3BlcnR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChzaXplLCBnZXQs
IGRpc3BhdGNoLCAgcmV0dXJuLCBfc2xvd19wYXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVu
ZCkKKworb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFjcm8gKCkKKyAg
ICBtb3ZlIFZhbHVlVW5kZWZpbmVkLCByMAorICAgIGRvUmV0dXJuKCkKK2VuZCkKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCShyZXZpc2lvbiAyNjQwMzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCSh3b3JraW5nIGNv
cHkpCkBAIC02ODQsNyArNjg0LDcgQEAgZGVmIG1pcHNBZGRQSUNDb2RlKGxpc3QpCiAgICAgICAg
ICAgICAjIEZJWE1FOiBbSlNDXSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUgaXMgYSByZXR1cm4gbG9jYXRpb24KICAgICAgICAgICAgICMgYW5kIHdlIHNo
b3VsZCBuYW1lIGl0IHByb3Blcmx5LgogICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjM2Ci0gICAgICAgICAgICBpZiBub2RlLm5hbWUgPX4g
L14uKl9yZXR1cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9yIG5vZGUubmFt
ZS5zdGFydF93aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZSIpCisgICAgICAgICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9yZXR1cm5fbG9jYXRp
b24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2No
ZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSIpIG9yIG5vZGUu
bmFtZS5zdGFydF93aXRoPygiX2Z1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQiKQog
ICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBjYXNlIGZvciByZXR1
cm4gbG9jYXRpb24gbGFiZWxzIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzCiAgICAgICAgICAgICAg
ICAgIyByZWFjaGVkIGZyb20gYSBgcmV0YCBpbnN0cnVjdGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBu
ZWVkIHRvIHByb3BlciByZWNvbmZpZ3VyZSBgJGdwYAogICAgICAgICAgICAgICAgICMgdXNpbmcg
YCRyYWAgaW5zdGVhZCBvZiB1c2luZyBgJHQ5YC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTEw
LDYgKzUxMCw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAg
ICB2KEJvb2wsIGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGgg
dGhlIHNhbXBsaW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJv
b2wsIGFsbG93VW5zdXBwb3J0ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdp
bGwgbm90IGRpc2FibGUgREZHIG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlz
IGVuYWJsZWQuIikgXAogICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRh
IGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCByZXR1cm5FYXJseUZyb21J
bmZpbml0ZUxvb3BzRm9yRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYo
U2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0LCAxMzAwMDAwMDAwLCBOb3Jt
YWwsICJXaGVuIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nIGlzIHRydWUs
IHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29wIGNhbiBydW4g
Zm9yIGJlZm9yZSBqdXN0IHJldHVybmluZy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUgZnV6emVy
IHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGluZmluaXRlIGxvb3BzLiIpIFwKIAogZW51bSBP
cHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1Miw0ICsxNTUyLDM0IEBA
IHZvaWQgVk06OnNldENyYXNoT25WTUNyZWF0aW9uKGJvb2wgc2hvdWwKICAgICB2bUNyZWF0aW9u
U2hvdWxkQ3Jhc2ggPSBzaG91bGRDcmFzaDsKIH0KIAordm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2spOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5hZGQoaW5zdHJ1Y3Rpb24s
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnQ2NF90Pj4oMCwgbnVsbHB0
cikpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBhdXRvIHB0ciA9
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dWludDY0X3Q+KCk7CisgICAg
ICAgICpwdHIgPSAwOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNlY29uZCA9
IFdURk1vdmUocHRyKTsKKyAgICB9CisgICAgKythZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZp
cnN0OworfQorCit1aW50NjRfdCogVk06OmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRMb2NrKTsKKyAgICBhdXRvIGl0ZXIgPSBtX2xvb3BI
aW50RXhlY3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJU
KGl0ZXIgIT0gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5lbmQoKSk7CisgICAgcmV0dXJuIGl0
ZXItPnZhbHVlLnNlY29uZC5nZXQoKTsKK30KKwordm9pZCBWTTo6cmVtb3ZlTG9vcEhpbnRFeGVj
dXRpb25Db3VudGVyKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2spOworICAgIGF1
dG8gaXRlciA9IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHMuZmluZChpbnN0cnVjdGlvbik7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoISFpdGVyLT52YWx1ZS5maXJzdCk7CisgICAgLS1pdGVyLT52YWx1
ZS5maXJzdDsKKyAgICBpZiAoIWl0ZXItPnZhbHVlLmZpcnN0KQorICAgICAgICBtX2xvb3BIaW50
RXhlY3V0aW9uQ291bnRzLnJlbW92ZShpdGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI2NDAzMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTks
NiArMTA5OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFNldEZvclNjb3BlPEV4Y2VwdGlvbio+IG1f
c2F2ZWRMYXN0RXhjZXB0aW9uOwogICAgIH07CiAKKyAgICB2b2lkIGFkZExvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOworICAgIHVpbnQ2NF90KiBnZXRMb29wSGlu
dEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICB2b2lkIHJlbW92ZUxv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTEyMjQsNiArMTIy
OCw5IEBAIHByaXZhdGU6CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFZNJik+IG1fb25FYWNoTWlj
cm90YXNrVGljazsKICAgICB1aW50cHRyX3QgbV9jdXJyZW50V2Vha1JlZlZlcnNpb24geyAwIH07
CiAKKyAgICBMb2NrIG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2s7CisgICAgSGFzaE1hcDxj
b25zdCBJbnN0cnVjdGlvbiosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVp
bnQ2NF90Pj4+IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHM7CisKICAgICBWTSogbV9wcmV2OyAv
LyBSZXF1aXJlZCBieSBEb3VibHlMaW5rZWRMaXN0Tm9kZS4KICAgICBWTSogbV9uZXh0OyAvLyBS
ZXF1aXJlZCBieSBEb3VibHlMaW5rZWRMaXN0Tm9kZS4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403758</attachid>
            <date>2020-07-07 22:42:39 -0700</date>
            <delta_ts>2020-07-08 09:43:00 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>21444</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDIwLTA3LTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHdheSB0byByZXR1cm4gZWFybHkgZnJvbSBkZXRlY3RlZCBpbmZpbml0ZSBsb29wcyB0
byBhaWQgdGhlIGZ1enplcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0MDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICBJdCdzIHVzZWZ1bCBmb3IgdGhlIGZ1enplciB0byBub3QgZ2V0IHN0dWNrIGluIGlu
ZmluaXRlIGxvb3BzIHNvIGl0cworICAgICAgICB0ZXN0IGNhc2VzIGNhbiBtYWtlIGZvcndhcmQg
cHJvZ3Jlc3MgdHJ5aW5nIHRvIGZpbmQgYnVncy4gVGhpcyBwYXRjaAorICAgICAgICBhZGRzIGEg
bmV3IG1lY2hhbmlzbSB3aGVyZSB3ZSBjYW4gZWFybHkgcmV0dXJuIGlmIHdlJ3ZlIGV4Y2VlZGVk
IGEgdG90YWwKKyAgICAgICAgZXhlY3V0aW9uIGNvdW50IGZvciBhIHN0YXRpYyBsb29wIGluIGJ5
dGVjb2RlLiBOb3RlOiB0aGlzIGlzIG5vdCBvbiBhCisgICAgICAgIHBlci1mcmFtZSBiYXNpcywg
YnV0IGl0J3MgYSB3YXkgdG8gaW1wbGVtZW50IHRoaXMgaW4gYSBub24taW52YXNpdmUgd2F5Cisg
ICAgICAgIHdoaWNoIGlzIGFsc28gcHJhY3RpY2FsIGZvciB0aGUgZnV6emVyIHRvIHVzZS4KKwor
ICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVD
b2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lz
dGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6Q29kZTo6ZW1pdEVwaWxvZ3VlKToKKyAgICAgICAgKiBiMy9haXIvQWly
Q29kZS5oOgorICAgICAgICAqIGIzL2Fpci9BaXJHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6OmdlbmVyYXRlV2l0aEFscmVhZHlBbGxvY2F0ZWRSZWdpc3RlcnMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxvb3BIaW50KToKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9s
b29wX2hpbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9taXBzLnJiOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcik6CisgICAgICAgIChKU0M6OlZN
OjpnZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIpOgorICAgICAgICAoSlNDOjpWTTo6cmVtb3Zl
TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MjAtMDctMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBTaG91bGQgbm90IHBhc3MgRXhjZXB0aW9uIHRvIEpTUHJvbWlzZTo6cmVqZWN0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3Rh
Y2tBbmRHZW5lcmF0ZUNvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJ
KHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4NywxMiArNzg3LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpn
ZW5lcgogCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCByZXByZXNl
bnQgdGhlIGZ1bGwgZXBpbG9ndWUgaW4gQWlyLCBzbyB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGhhdmUgdGhpcyBvdmVycmlkZS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y29kZS5mcmFtZVNpemUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRS
ZXN0b3JlKG1fY29kZS5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC0+ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC0+ZW1pdEZ1
bmN0aW9uRXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBtX2pp
dC0+cmV0KCk7CisgICAgICAgICAgICAgICAgICAgIG1fY29kZS5lbWl0RXBpbG9ndWUoKm1faml0
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aWYgKG5lZWRzVG9HZW5lcmF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDE2IEBAIHZv
aWQgQ29kZTo6ZW1pdERlZmF1bHRQcm9sb2d1ZShDQ2FsbEhlbHAKICAgICBkZWZhdWx0UHJvbG9n
dWVHZW5lcmF0b3Ioaml0LCAqdGhpcyk7CiB9CiAKK3ZvaWQgQ29kZTo6ZW1pdEVwaWxvZ3VlKEND
YWxsSGVscGVycyYgaml0KQoreworICAgIGlmIChmcmFtZVNpemUoKSkgeworICAgICAgICBqaXQu
ZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOworICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKKyAgICBqaXQucmV0KCk7Cit9CisKIHZv
aWQgQ29kZTo6c2V0UmVnc0luUHJpb3JpdHlPcmRlcihCYW5rIGJhbmssIGNvbnN0IFZlY3RvcjxS
ZWc+JiByZWdzKQogewogICAgIHJlZ3NJblByaW9yaXR5T3JkZXJJbXBsKGJhbmspID0gcmVnczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCShyZXZpc2lvbiAyNjQw
MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIHB1YmxpYzoKICAgICBXZWFrUmFuZG9tJiB3ZWFrUmFu
ZG9tKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tOyB9CiAKICAgICB2b2lkIGVtaXREZWZhdWx0UHJv
bG9ndWUoQ0NhbGxIZWxwZXJzJik7CisgICAgdm9pZCBlbWl0RXBpbG9ndWUoQ0NhbGxIZWxwZXJz
Jik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4g
bV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzAsMTIgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlV2l0aEFscmVhZHlB
bGxvY2F0ZWQKICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSBkb24ndCByZXByZXNlbnQgdGhl
IGZ1bGwgcHJvbG9ndWUvZXBpbG9ndWUgaW4gQWlyLCBzbyB3ZSBuZWVkIHRvCiAgICAgICAgICAg
ICAvLyBoYXZlIHRoaXMgb3ZlcnJpZGUuCiAgICAgICAgICAgICBhdXRvIHN0YXJ0ID0gaml0Lmxh
YmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICAgICAgaWYgKGNvZGUuZnJhbWVTaXpl
KCkpIHsKLSAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmUoY29kZS5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uRXBpbG9ndWVXaXRoRW1wdHlGcmFtZSgpOwotICAgICAgICAgICAgaml0LnJldCgpOwor
ICAgICAgICAgICAgY29kZS5lbWl0RXBpbG9ndWUoaml0KTsKICAgICAgICAgICAgIGFkZEl0ZW0o
YmxvY2stPmxhc3QoKSk7CiAgICAgICAgICAgICBhdXRvIGVuZCA9IGppdC5sYWJlbElnbm9yaW5n
V2F0Y2hwb2ludHMoKTsKICAgICAgICAgICAgIGlmIChkaXNhc3NlbWJsZXIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9u
IDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIJKHdvcmtpbmcgY29weSkKQEAgLTEzODksNiArMTM4OSw3IEBAIG9wIDpsbGludF9pbnRlcm5h
bF9mdW5jdGlvbl9jYWxsX3RyYW1wb2wKIG9wIDpsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25z
dHJ1Y3RfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2Nh
bGxfdHJhbXBvbGluZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZQorb3AgOmZ1
enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpoYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbgogb3AgOm9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfY29uc3RydWN0X3JldHVy
bl9sb2NhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNiArNzY4LDEyIEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgIG1fbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9sb29wX2hpbnQ6IHsKKyAg
ICAgICAgICAgIGlmIChPcHRpb25zOjpyZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6
emluZygpKQorICAgICAgICAgICAgICAgIHZtLmFkZExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihp
bnN0cnVjdGlvbi5wdHIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODExLDYgKzgxNywx
MyBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogewogICAgIFZNJiB2bSA9ICptX3ZtOwogCisg
ICAgaWYgKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkg
JiYgSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgpKSkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGluc3RydWN0aW9uIDogaW5zdHJ1Y3Rpb25zKCkpIHsKKyAgICAgICAgICAgIGlm
IChpbnN0cnVjdGlvbi0+aXM8T3BMb29wSGludD4oKSkKKyAgICAgICAgICAgICAgICB2bS5yZW1v
dmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoaW5zdHJ1Y3Rpb24ucHRyKCkpOworICAgICAgICB9
CisgICAgfQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gVGhlIEpJVENvZGUgKGFuZCBp
dHMgY29ycmVzcG9uZGluZyBERkc6OkNvbW1vbkRhdGEpIG1heSBvdXRsaXZlIHRoZSBDb2RlQmxv
Y2sgYnkKICAgICAvLyBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGFmdGVyIHRoZSBDb2RlQmxvY2sg
aXMgZGVzdHJ1Y3RlZC4gRm9yIGV4YW1wbGUsIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjIs
NiArOTIyLDEyIEBAIHB1YmxpYzoKICAgICBNZXRhZGF0YVRhYmxlKiBtZXRhZGF0YVRhYmxlKCkg
eyByZXR1cm4gbV9tZXRhZGF0YS5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGluc3RydWN0aW9u
c1Jhd1BvaW50ZXIoKSB7IHJldHVybiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXI7IH0KIAorICAg
IGJvb2wgbG9vcEhpbnRzQXJlRWxpZ2libGVGb3JGdXp6aW5nRWFybHlSZXR1cm4oKQorICAgIHsK
KyAgICAgICAgLy8gU29tZSBidWlsdGlucyBhcmUgcmVxdWlyZWQgdG8gYWx3YXlzIGNvbXBsZXRl
IHRoZSBsb29wcyB0aGV5IHJ1bi4KKyAgICAgICAgcmV0dXJuICFtX3VubGlua2VkQ29kZS0+aXNC
dWlsdGluRnVuY3Rpb24oKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmFsaXpl
TExJbnRJbmxpbmVDYWNoZXMoKTsKICNpZiBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjY0MDMzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTcsNiArMzE3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRAogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2Fs
bF90cmFtcG9saW5lOgogICAgIGNhc2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgog
ICAgIGNhc2UgaGFuZGxlVW5jYXVnaHRFeGNlcHRpb246CisgICAgY2FzZSBmdXp6ZXJfcmV0dXJu
X2Vhcmx5X2Zyb21fbG9vcF9oaW50OgogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5f
bG9jYXRpb246CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKICAg
ICBjYXNlIG9wX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjQwMzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OTYzLDcgKzQ5NjMsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBQ
aGFudG9tTG9jYWw6CisgICAgICAgIC8vIFRoaXMgaXMgYSBuby1vcC4KKyAgICAgICAgbm9SZXN1
bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMb29wSGludDoKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkpIHsK
KyAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5ncmFwaCgp
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICBpZiAoYmFzZWxpbmVDb2RlQmxvY2stPmxvb3BIaW50c0FyZUVsaWdpYmxlRm9yRnV6emluZ0Vh
cmx5UmV0dXJuKCkpIHsKKyAgICAgICAgICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXggPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOworICAgICAgICAgICAg
ICAgIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4Lm9mZnNldCgpKS5wdHIoKTsKKworICAgICAg
ICAgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bSgpLmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRl
cihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICAgICAgbV9qaXQucHVzaFRvU2F2ZShHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KHB0ciwgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGF1dG8gc2tpcEVhcmx5UmV0dXJuID0gbV9qaXQuYnJhbmNo
NjQoQ0NhbGxIZWxwZXJzOjpCZWxvdywgR1BSSW5mbzo6cmVnVDAsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTY0KE9wdGlvbnM6OmVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKSk7
CisKKyAgICAgICAgICAgICAgICBtX2ppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAg
ICAgICAgICBtX2ppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAgICAgICAgICAgICAgIG1f
aml0LnJldCgpOworCisgICAgICAgICAgICAgICAgc2tpcEVhcmx5UmV0dXJuLmxpbmsoJm1faml0
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigxKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIHB0cik7CisgICAgICAgICAgICAgICAgbV9qaXQucG9wVG9SZXN0b3JlKEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRo
aXMgaXMgYSBuby1vcC4KICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIwLDggKzE2MjAsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGNvbXBpbGVEYXRhVmlld1NldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgY2FzZSBMb29wSGludDogeworICAgICAgICAgICAgY29tcGlsZUxvb3BIaW50KCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgUGhhbnRvbUxv
Y2FsOgotICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAg
ICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgY2FzZSBFeGl0T0s6CkBAIC0xNDY5Nyw2ICsx
NDcwMSw1MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUxvb3BIaW50KCkKKyAg
ICB7CisgICAgICAgIGlmICghT3B0aW9uczo6cmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0Zv
ckZ1enppbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmICghYmFzZWxpbmVDb2RlQmxvY2stPmxvb3BIaW50
c0FyZUVsaWdpYmxlRm9yRnV6emluZ0Vhcmx5UmV0dXJuKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gbV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpOworICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBiYXNlbGluZUNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKSkucHRyKCk7CisgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bSgpLmdldExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihpbnN0cnVjdGlvbik7CisKKyAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cy5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy53cml0ZXNMb2NhbFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKFtwdHJdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdG9yZSA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAg
ICAgaml0LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0
LnBvcFRvUmVzdG9yZShHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICB9OworCisgICAgICAg
ICAgICBqaXQucHVzaFRvU2F2ZShHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICBqaXQucHVzaFRvU2F2ZShHUFJJ
bmZvOjpyZWdUMik7CisKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTY0KE9wdGlvbnM6OmVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKSwgR1BS
SW5mbzo6cmVnVDIpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHB0ciksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSwgR1BSSW5mbzo6cmVnVDEpOworICAg
ICAgICAgICAgYXV0byBza2lwRWFybHlSZXR1cm4gPSBqaXQuYnJhbmNoNjQoQ0NhbGxIZWxwZXJz
OjpCZWxvdywgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKKworICAgICAgICAgICAg
cmVzdG9yZSgpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworICAgICAgICAgICAgcGFyYW1zLmNvZGUoKS5lbWl0RXBpbG9ndWUoaml0KTsgCisKKyAg
ICAgICAgICAgIHNraXBFYXJseVJldHVybi5saW5rKCZqaXQpOworICAgICAgICAgICAgaml0LmFk
ZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAg
ICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSk7CisgICAgICAgICAgICByZXN0b3JlKCk7CisgICAgICAgIH0pOwor
ICAgIH0KICAgICAKICAgICB2b2lkIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KExWYWx1ZSBi
YXNlLCBib29sIHN0cnVjdHVyZXNDaGVja2VkLCBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4mIGNhc2Vz
LCBMQmFzaWNCbG9jayBleGl0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2MCw4ICsxMTYwLDI2
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbSgKIAogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChjb25zdCBJbnN0
cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uKQogeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKE9wdGlvbnM6OnJl
dHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYgbV9jb2RlQmxvY2stPmxv
b3BIaW50c0FyZUVsaWdpYmxlRm9yRnV6emluZ0Vhcmx5UmV0dXJuKCkpIHsKKyAgICAgICAgdWlu
dDY0X3QqIHB0ciA9IHZtKCkuZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGluc3RydWN0aW9u
KTsKKyAgICAgICAgbG9hZDY0KHB0ciwgcmVnVDApOworICAgICAgICBhdXRvIHNraXBFYXJseVJl
dHVybiA9IGJyYW5jaDY0KEJlbG93LCByZWdUMCwgVHJ1c3RlZEltbTY0KE9wdGlvbnM6OmVhcmx5
UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKSk7CisKKyAgICAgICAgbW92ZVZhbHVlKGpz
VW5kZWZpbmVkKCksIEpTVmFsdWVSZWdzIHsgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgfSk7Cisg
ICAgICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CisgICAgICAgIGVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAg
cmV0KCk7CisKKyAgICAgICAgc2tpcEVhcmx5UmV0dXJuLmxpbmsodGhpcyk7CisgICAgICAgIGFk
ZDY0KFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOworICAgICAgICBzdG9yZTY0KHJlZ1QwLCBwdHIp
OworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gRW1pdCB0aGUgSklUIG9wdGltaXphdGlvbiBjaGVj
azogCiAgICAgaWYgKGNhbkJlT3B0aW1pemVkKCkpIHsKICAgICAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoQWRkMzIoUG9zaXRpdmVPclplcm8sIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yTG9vcCgpKSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYyLDYgKzQ2MiwxNCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICBk
YXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksCiAgICAgICAgICAgICAqY29kZUJsb2Nr
LCAiOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAiLAogICAgICAgICAg
ICAgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworCisgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nKCkgJiYgY29k
ZUJsb2NrLT5sb29wSGludHNBcmVFbGlnaWJsZUZvckZ1enppbmdFYXJseVJldHVybigpKSkgewor
ICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKHBj
KTsKKyAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKS5tX2Fj
dGl2ZVRocmVzaG9sZDsKKyAgICAgICAgaWYgKCpwdHIgPj0gT3B0aW9uczo6ZWFybHlSZXR1cm5G
cm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fVFdPKExM
SW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9s
b29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsK
KyAgICB9CisgICAgCiAgICAgCiAgICAgYXV0byBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4ID0g
Qnl0ZWNvZGVJbmRleChjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjcw
MiwzICsyNzAyLDggQEAgbGxpbnRPcChvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCwgT3BMbwog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWls
KQogICAgIGRpc3BhdGNoKCkKIGVuZCkKKworCitvcChmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21f
bG9vcF9oaW50LCBtYWNybyAoKQorICAgIG5vdFN1cHBvcnRlZCgpCitlbmQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI5NDQsMyArMjk0NCw5
IEBAIGVuZCkKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSwgT3BJ
blN0cnVjdHVyZVByb3BlcnR5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGhhc1N0cnVjdHVyZVByb3BlcnR5SW1wbChzaXplLCBnZXQsIGRpc3BhdGNoLCAgcmV0dXJu
LCBfc2xvd19wYXRoX2luX3N0cnVjdHVyZV9wcm9wZXJ0eSkKIGVuZCkKKworb3AoZnV6emVyX3Jl
dHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFjcm8gKCkKKyAgICBtb3ZlIFZhbHVlVW5kZWZp
bmVkLCByMAorICAgIGRvUmV0dXJuKCkKK2VuZCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vbWlwcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9taXBzLnJiCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsNyArNjg0
LDcgQEAgZGVmIG1pcHNBZGRQSUNDb2RlKGxpc3QpCiAgICAgICAgICAgICAjIEZJWE1FOiBbSlND
XSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgaXMgYSBy
ZXR1cm4gbG9jYXRpb24KICAgICAgICAgICAgICMgYW5kIHdlIHNob3VsZCBuYW1lIGl0IHByb3Bl
cmx5LgogICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4MjM2Ci0gICAgICAgICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9yZXR1cm5fbG9jYXRp
b24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2No
ZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSIpCisgICAgICAg
ICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9yZXR1cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdp
ZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRf
ZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSIpIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygi
X2Z1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQiKQogICAgICAgICAgICAgICAgICMg
V2UgbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBjYXNlIGZvciByZXR1cm4gbG9jYXRpb24gbGFiZWxz
IGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzCiAgICAgICAgICAgICAgICAgIyByZWFjaGVkIGZyb20g
YSBgcmV0YCBpbnN0cnVjdGlvbi4gSW4gdGhpcyBjYXNlLCB3ZSBuZWVkIHRvIHByb3BlciByZWNv
bmZpZ3VyZSBgJGdwYAogICAgICAgICAgICAgICAgICMgdXNpbmcgYCRyYWAgaW5zdGVhZCBvZiB1
c2luZyBgJHQ5YC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAkocmV2aXNpb24gMjY0MDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw4IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KEJvb2wsIGV4cG9zZVBy
b2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBl
eHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBsaW5nIHByb2Zp
bGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2wsIGFsbG93VW5zdXBwb3J0
ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgbm90IGRpc2FibGUgREZH
IG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVuYWJsZWQuIikgXAogICAg
IHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
dGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xh
c3Nlcy4iKSBcCisgICAgdihCb29sLCByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6
emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5G
cm9tSW5maW5pdGVMb29wc0xpbWl0LCAxMzAwMDAwMDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVh
cmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5nIGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0
aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29wIGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJl
dHVybmluZy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0
IHN0dWNrIGluIGluZmluaXRlIGxvb3BzLiIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7
CiAgICAgU2FtZU9wdGlvbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDI2NDAzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU1Miw0ICsxNTUyLDMzIEBAIHZvaWQgVk06OnNldENyYXNo
T25WTUNyZWF0aW9uKGJvb2wgc2hvdWwKICAgICB2bUNyZWF0aW9uU2hvdWxkQ3Jhc2ggPSBzaG91
bGRDcmFzaDsKIH0KIAordm9pZCBWTTo6YWRkTG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudExvY2spOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
b29wSGludEV4ZWN1dGlvbkNvdW50cy5hZGQoaW5zdHJ1Y3Rpb24sIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgc3RkOjp1bmlxdWVfcHRyPHVpbnQ2NF90Pj4oMCwgbnVsbHB0cikpOworICAgIGlmIChhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBhdXRvIHB0ciA9IFdURjo6bWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8dWludDY0X3Q+KCk7CisgICAgICAgICpwdHIgPSAwOworICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNlY29uZCA9IFdURk1vdmUocHRyKTsKKyAg
ICB9CisgICAgKythZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0OworfQorCit1aW50NjRf
dCogVk06OmdldExvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvb3BIaW50RXhlY3V0
aW9uQ291bnRMb2NrKTsKKyAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhlY3V0aW9uQ291bnRz
LmZpbmQoaW5zdHJ1Y3Rpb24pOworICAgIHJldHVybiBpdGVyLT52YWx1ZS5zZWNvbmQuZ2V0KCk7
Cit9CisKK3ZvaWQgVk06OnJlbW92ZUxvb3BIaW50RXhlY3V0aW9uQ291bnRlcihjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
b3BIaW50RXhlY3V0aW9uQ291bnRMb2NrKTsKKyAgICBhdXRvIGl0ZXIgPSBtX2xvb3BIaW50RXhl
Y3V0aW9uQ291bnRzLmZpbmQoaW5zdHJ1Y3Rpb24pOworICAgIFJFTEVBU0VfQVNTRVJUKCEhaXRl
ci0+dmFsdWUuZmlyc3QpOworICAgIC0taXRlci0+dmFsdWUuZmlyc3Q7CisgICAgaWYgKCFpdGVy
LT52YWx1ZS5maXJzdCkKKyAgICAgICAgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50cy5yZW1vdmUo
aXRlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAyNjQwMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk5LDYgKzEwOTksMTAgQEAgcHVibGljOgog
ICAgICAgICBTZXRGb3JTY29wZTxFeGNlcHRpb24qPiBtX3NhdmVkTGFzdEV4Y2VwdGlvbjsKICAg
ICB9OwogCisgICAgdm9pZCBhZGRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIoY29uc3QgSW5zdHJ1
Y3Rpb24qKTsKKyAgICB1aW50NjRfdCogZ2V0TG9vcEhpbnRFeGVjdXRpb25Db3VudGVyKGNvbnN0
IEluc3RydWN0aW9uKik7CisgICAgdm9pZCByZW1vdmVMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCkBAIC0xMjI0LDYgKzEyMjgsOSBAQCBwcml2YXRlOgogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZChWTSYpPiBtX29uRWFjaE1pY3JvdGFza1RpY2s7CiAgICAgdWludHB0
cl90IG1fY3VycmVudFdlYWtSZWZWZXJzaW9uIHsgMCB9OwogCisgICAgTG9jayBtX2xvb3BIaW50
RXhlY3V0aW9uQ291bnRMb2NrOworICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCBzdGQ6
OnBhaXI8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1aW50NjRfdD4+PiBtX2xvb3BIaW50RXhl
Y3V0aW9uQ291bnRzOworCiAgICAgVk0qIG1fcHJldjsgLy8gUmVxdWlyZWQgYnkgRG91Ymx5TGlu
a2VkTGlzdE5vZGUuCiAgICAgVk0qIG1fbmV4dDsgLy8gUmVxdWlyZWQgYnkgRG91Ymx5TGlua2Vk
TGlzdE5vZGUuCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>