<?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>66747</bug_id>
          
          <creation_ts>2011-08-22 23:28:54 -0700</creation_ts>
          <short_desc>There is no facility for profiling how the write barrier is used</short_desc>
          <delta_ts>2011-08-24 09:45:21 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455213</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-22 23:28:54 -0700</bug_when>
    <thetext>Write barrier support was added to the JSC runtime in anticipation of the implementation of more sophisticated garbage collection schemes, such as possibly generational or incremental collection.  Write barrier fast paths can often be optimized for specific kinds of writes.  In some collectors, a store to a location that is in the heap can be optimized far more aggressively than a store to a location allocated outside the heap.  One example of this is the range-based generational barrier, which uses the heap address of the destination object as a quick check to see if the barrier needs to be run.

But designing such barriers requires knowing what kinds of writes programs tend to execute.  Currently, there is no way to tell the barrier what kind of write is being executed.  And there is no way to profile and report the kinds of writes encountered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455223</commentid>
    <comment_count>1</comment_count>
      <attachid>104796</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-23 00:26:12 -0700</bug_when>
    <thetext>Created attachment 104796
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455229</commentid>
    <comment_count>2</comment_count>
      <attachid>104797</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-23 00:40:04 -0700</bug_when>
    <thetext>Created attachment 104797
the patch (fix conflict with my earlier patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455231</commentid>
    <comment_count>3</comment_count>
      <attachid>104797</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-23 00:52:52 -0700</bug_when>
    <thetext>Comment on attachment 104797
the patch (fix conflict with my earlier patch)

Attachment 104797 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9475286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455238</commentid>
    <comment_count>4</comment_count>
      <attachid>104801</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-23 01:11:21 -0700</bug_when>
    <thetext>Created attachment 104801
the patch (fix added file)

In the previous patch, I forgot to include a file I had added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455532</commentid>
    <comment_count>5</comment_count>
      <attachid>104801</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-23 11:20:33 -0700</bug_when>
    <thetext>Comment on attachment 104801
the patch (fix added file)

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

Looks good, but I think the C++ counter is not quite right.

&gt; Source/JavaScriptCore/runtime/WriteBarrier.h:151
&gt;      // when some basic types aren&apos;t yet completely instantiated
&gt;      void setEarlyValue(JSGlobalData&amp;, const JSCell* owner, T* value)
&gt;      {
&gt; +#if ENABLE(WRITE_BARRIER_PROFILING)
&gt; +        WriteBarrierCounters::usesWithBarrierFromCpp.count();
&gt; +#endif
&gt;          this-&gt;m_cell = reinterpret_cast&lt;JSCell*&gt;(value);
&gt;          Heap::writeBarrier(owner, this-&gt;m_cell);

I think you want to put the counter inside Heap::writeBarrier, and not setEarlyValue. Heap::writeBarrier is the central funnel that will catch all C++ access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455641</commentid>
    <comment_count>6</comment_count>
      <attachid>104902</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-23 13:04:49 -0700</bug_when>
    <thetext>Created attachment 104902
the patch (fix review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455768</commentid>
    <comment_count>7</comment_count>
      <attachid>104902</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-23 16:00:13 -0700</bug_when>
    <thetext>Comment on attachment 104902
the patch (fix review)

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

r=me, but you have a minor bug here in the ENABLE(GGC) case to fix.

&gt; Source/JavaScriptCore/heap/Heap.h:253
&gt;      inline void Heap::writeBarrier(const JSCell* owner, JSValue value)
&gt;      {
&gt; +        WriteBarrierCounters::countWriteBarrier();
&gt;          if (!value)
&gt;              return;
&gt;          if (!value.isCell())

Since this version of Heap::writeBarrier calls through to the JSCell* version, you&apos;ll double-count cases where you don&apos;t early return. You need to call WriteBarrierCounters::countWriteBarrier() inside each early return, and not in the body of the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455998</commentid>
    <comment_count>8</comment_count>
      <attachid>104969</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 00:49:29 -0700</bug_when>
    <thetext>Created attachment 104969
the patch (fix review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455999</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 00:51:07 -0700</bug_when>
    <thetext>Attachment 104969 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/Heap.h:135:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456001</commentid>
    <comment_count>10</comment_count>
      <attachid>104969</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 00:58:36 -0700</bug_when>
    <thetext>Comment on attachment 104969
the patch (fix review)

Oops, apparently the fix breaks style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456002</commentid>
    <comment_count>11</comment_count>
      <attachid>104970</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-24 01:04:41 -0700</bug_when>
    <thetext>Created attachment 104970
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456034</commentid>
    <comment_count>12</comment_count>
      <attachid>104970</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 02:50:55 -0700</bug_when>
    <thetext>Comment on attachment 104970
the patch (fix style)

Clearing flags on attachment: 104970

Committed r93698: &lt;http://trac.webkit.org/changeset/93698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456035</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 02:51:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456146</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-24 09:45:21 -0700</bug_when>
    <thetext>I think that a better nickname for “calls from C++ as opposed to from JavaScript” would be FromC rather than FromCpp. I find it hard to parse Cpp since it’s not capitalized as an acronym and when used as an acronym it often is used to mean “C preprocessor”. I think that C is a fine nickname for “the C family including C++” in this context.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104796</attachid>
            <date>2011-08-23 00:26:12 -0700</date>
            <delta_ts>2011-08-23 00:40:04 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>writebarrierprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>46687</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRQdXRCeUlkKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmVtaXRDb3VudCk6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmVtaXRDb3VudCk6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlUHV0
QnlJRCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92
YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ0NvdW50
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1
bXApOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6Y291bnQpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6YWRkcmVzc09mQ291bnRlcik6CisgICAgICAgIChKU0M6
OkFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjppbml0KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdD
b3VudGVyOjpTYW1wbGluZ0NvdW50ZXIpOgorICAgICAgICAoSlNDOjpHbG9iYWxTYW1wbGluZ0Nv
dW50ZXI6Om5hbWUpOgorICAgICAgICAoSlNDOjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6OkRl
bGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgIChKU0M6OkRlbGV0YWJsZVNhbXBsaW5n
Q291bnRlcjo6fkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9X
cml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6OldyaXRl
QmFycmllckNvdW50ZXJzKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6Ompp
dENvdW50ZXJGb3IpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXRFYXJseVZh
bHVlKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFy
cmllcik6CisKIDIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTYW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5dGVjb2RlIGRpcmVj
dG9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUm9wZUltcGwuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Sb3BlSW1wbC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlQ2hhaW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbk1h
cmsuaCBcCkBAIC00NDAsNiArNDQyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dyaXRlQmFycmllci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQWxpZ25tZW50
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQWx3YXlzSW5saW5lLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNiAr
MjEwLDggQEAgX19aTjNKU0MxOVNvdXJjZVByb3ZpZGVyQ2FjaGVEMUV2CiBfX1pOM0pTQzE5aW5p
dGlhbGl6ZVRocmVhZGluZ0V2CiBfX1pOM0pTQzIwTWFya2VkQXJndW1lbnRCdWZmZXIxMHNsb3dB
cHBlbmRFTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzIwY3JlYXRlUmVmZXJlbmNlRXJyb3JFUE5TXzlF
eGVjU3RhdGVFUktOU183VVN0cmluZ0UKK19fWk4zSlNDMjBXcml0ZUJhcnJpZXJDb3VudGVyczIy
dXNlc1dpdGhCYXJyaWVyRnJvbUNwcEUKK19fWk4zSlNDMjBXcml0ZUJhcnJpZXJDb3VudGVyczI1
dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcEUKIF9fWk4zSlNDMjJnbG9iYWxNZW1vcnlTdGF0aXN0
aWNzRXYKIF9fWk4zSlNDMjJvYmplY3RDb25zdHJ1Y3RvclRhYmxlRQogX19aTjNKU0MyM0Fic3Ry
YWN0U2FtcGxpbmdDb3VudGVyNGR1bXBFdgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCShyZXZpc2lvbiA5MzU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRp
bWUvUmVnRXhwQ2FjaGUuY3BwIFwKICAgICBydW50aW1lL1JvcGVJbXBsLmNwcCBcCisgICAgcnVu
dGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwIFwKICAgICBydW50aW1lL1Njb3BlQ2hhaW4uY3BwIFwK
ICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwIFwKQEAgLTE5NCw2ICsxOTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50
aW1lL1N0cnVjdHVyZS5jcHAgXAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuY3BwIFwKICAg
ICBydW50aW1lL1VTdHJpbmcuY3BwIFwKKyAgICBydW50aW1lL1dyaXRlQmFycmllci5jcHAgXAog
ICAgIHlhcnIvWWFyckpJVC5jcHAgXAogCiAqc2g0KiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24g
OTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEx
Myw2ICsxMTEzLDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFNjb3BlQ2hh
aW5NYXJrLmgiCiAJCQkJPgogCQkJPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxy
dW50aW1lXFNhbXBsaW5nQ291bnRlci5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cLi5ccnVudGltZVxTYW1wbGluZ0NvdW50ZXIuaCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcU21hbGxTdHJpbmdzLmNwcCIKIAkJCQk+
CkBAIC0xMjI5LDYgKzEyMzcsMTAgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVc
V2Vha1JhbmRvbS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXFdyaXRlQmFycmllci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgog
CQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0iQVBJIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDkgQEAKIAkJMEJERkZBRTEwRkM2MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RN
YWxsb2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMu
Y3BwICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5
QjEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi87IH07CisJCTBGNzcwMDkw
MTQwMkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkx
MTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OworCQkwRjc3MDA5
NDE0MDMyREVCMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkzMTQwMzJEREUwMDc4RUIzOSAvKiBX
cml0ZUJhcnJpZXIuY3BwICovOyB9OwogCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAw
NjREMTIzIC8qIE9TQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5
MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi87IH07CkBAIC03MzAsNiArNzMzLDkgQEAKIAkJMEJE
RkZBRDQwRkM2MTcxMDAwRDY5RUY0IC8qIENyb3NzVGhyZWFkUmVmQ291bnRlZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFJlZkNvdW50ZWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjk0NzlCMTI2RTY5OEMwMEIz
QUJGNSAvKiBEZWNpbWFsTnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERlY2ltYWxOdW1iZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsaW5nQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsaW5nQ291bnRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzcwMDkzMTQwMzJEREUwMDc4
RUIzOSAvKiBXcml0ZUJhcnJpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV3JpdGVCYXJyaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYWx1ZVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9TQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9TQWxsb2NhdG9yUG9z
aXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgzOSw2ICsxODQ1LDkgQEAK
IAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNzcwMDkzMTQwMzJEREUwMDc4RUIzOSAv
KiBXcml0ZUJhcnJpZXIuY3BwICovLAorCQkJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwICovLAorCQkJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAq
LywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLywKQEAg
LTIyMzMsNiArMjI0Miw3IEBACiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8q
IEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBC
MzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NzAwOTAx
NDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDEsNiArMjg1MSw4IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQkwRjc3MDA5NDE0MDMyREVCMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGlu
Z0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4
IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QkUxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRF
MDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAJKHJldmlzaW9u
IDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NywyMSArMzg3LDQgQEAgdm9pZCBTYW1wbGluZ1Rvb2w6
OmR1bXAoRXhlY1N0YXRlKikKIAogI2VuZGlmCiAKLXZvaWQgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXI6OmR1bXAoKQotewotI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKLSAgICBpZiAoc19h
YnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluICE9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVy
Q2hhaW5FbmQpIHsKLSAgICAgICAgcHJpbnRmKCJcblNhbXBsaW5nIENvdW50ZXIgVmFsdWVzOlxu
Iik7Ci0gICAgICAgIGZvciAoQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqIGN1cnJDb3VudGVyID0g
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOyAoY3VyckNvdW50ZXIgIT0gJnNfYWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZCk7IGN1cnJDb3VudGVyID0gY3VyckNvdW50ZXItPm1f
bmV4dCkKLSAgICAgICAgICAgIHByaW50ZigiXHQlc1x0OiAlbGxkXG4iLCBjdXJyQ291bnRlci0+
bV9uYW1lLCBjdXJyQ291bnRlci0+bV9jb3VudGVyKTsKLSAgICAgICAgcHJpbnRmKCJcblxuIik7
Ci0gICAgfQotICAgIHNfY29tcGxldGVkID0gdHJ1ZTsKLSNlbmRpZgotfQotCi1BYnN0cmFjdFNh
bXBsaW5nQ291bnRlciBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6c19hYnN0cmFjdFNhbXBsaW5n
Q291bnRlckNoYWluRW5kOwotQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqIEFic3RyYWN0U2FtcGxp
bmdDb3VudGVyOjpzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW4gPSAmc19hYnN0cmFjdFNh
bXBsaW5nQ291bnRlckNoYWluRW5kOwotYm9vbCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6c19j
b21wbGV0ZWQgPSBmYWxzZTsKLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCShyZXZpc2lvbiA5MzU0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiU2FtcGxpbmdDb3VudGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTI3OSwxNDMgKzI4MCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAgICAgfTsKIAotICAgIC8vIEFic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyOgotICAgIC8vCi0gICAgLy8gSW1wbGVtZW50cyBhIG5hbWVkIHNldCBvZiBjb3VudGVycywg
cHJpbnRlZCBvbiBleGl0IGlmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykuCi0gICAgLy8gU2Vl
IHN1YmNsYXNzZXMgYmVsb3csIFNhbXBsaW5nQ291bnRlciwgR2xvYmFsU2FtcGxpbmdDb3VudGVy
IGFuZCBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIuCi0gICAgY2xhc3MgQWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXIgewotICAgICAgICBmcmllbmQgY2xhc3MgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVy
OwotICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBjb3VudCh1aW50MzJfdCBjb3VudCA9IDEpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fY291bnRlciArPSBjb3VudDsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGR1bXAoKTsKLQotICAgICAgICBpbnQ2NF90KiBhZGRyZXNzT2ZD
b3VudGVyKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQotCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICAvLyBFZmZlY3RpdmVseSB0aGUgY29udHJ1Y3RvciwgaG93ZXZlciBjYWxsZWQgbGF6aWx5IGlu
IHRoZSBjYXNlIG9mIEdsb2JhbFNhbXBsaW5nQ291bnRlci4KLSAgICAgICAgdm9pZCBpbml0KGNv
bnN0IGNoYXIqIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fY291bnRlciA9IDA7Ci0g
ICAgICAgICAgICBtX25hbWUgPSBuYW1lOwotCi0gICAgICAgICAgICAvLyBTZXQgbV9uZXh0IHRv
IHBvaW50IHRvIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiwgYW5kIGluZm9ybSB3aGF0ZXZlciBpcwot
ICAgICAgICAgICAgLy8gY3VycmVudGx5IGF0IHRoZSBoZWFkIHRoYXQgdGhpcyBub2RlIHdpbGwg
bm93IGhvbGQgdGhlIHBvaW50ZXIgdG8gaXQuCi0gICAgICAgICAgICBtX25leHQgPSBzX2Fic3Ry
YWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47Ci0gICAgICAgICAgICBzX2Fic3RyYWN0U2FtcGxpbmdD
b3VudGVyQ2hhaW4tPm1fcmVmZXJlciA9ICZtX25leHQ7Ci0gICAgICAgICAgICAvLyBBZGQgdGhp
cyBub2RlIHRvIHRoZSBoZWFkIG9mIHRoZSBsaXN0LgotICAgICAgICAgICAgc19hYnN0cmFjdFNh
bXBsaW5nQ291bnRlckNoYWluID0gdGhpczsKLSAgICAgICAgICAgIG1fcmVmZXJlciA9ICZzX2Fi
c3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQ2NF90
IG1fY291bnRlcjsKLSAgICAgICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgICAgICBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciogbV9uZXh0OwotICAgICAgICAvLyBUaGlzIGlzIGEgcG9pbnRlciB0
byB0aGUgcG9pbnRlciB0byB0aGlzIG5vZGUgaW4gdGhlIGNoYWluOyB1c2VkIHRvCi0gICAgICAg
IC8vIGFsbG93IGZhc3QgbGlua2VkIGxpc3QgZGVsZXRpb24uCi0gICAgICAgIEFic3RyYWN0U2Ft
cGxpbmdDb3VudGVyKiogbV9yZWZlcmVyOwotICAgICAgICAvLyBOdWxsIG9iamVjdCB1c2VkIHRv
IGRldGVjdCBlbmQgb2Ygc3RhdGljIGNoYWluLgotICAgICAgICBzdGF0aWMgQWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXIgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kOwotICAgICAgICBz
dGF0aWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJD
aGFpbjsKLSAgICAgICAgc3RhdGljIGJvb2wgc19jb21wbGV0ZWQ7Ci0gICAgfTsKLQotI2lmIEVO
QUJMRShTQU1QTElOR19DT1VOVEVSUykKLSAgICAvLyBTYW1wbGluZ0NvdW50ZXI6Ci0gICAgLy8K
LSAgICAvLyBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGFuZCAoaG9wZWZ1bGx5ISkgY29udmVuaWVu
dCBmb3IgY2FzZXMgd2hlcmUgYSBjb3VudGVyIGlzCi0gICAgLy8gcmVxdWlyZWQgd2l0aGluIHRo
ZSBzY29wZSBvZiBhIHNpbmdsZSBmdW5jdGlvbi4gIEl0IGNhbiBiZSBpbnN0YW50aWF0ZWQgYXMg
YQotICAgIC8vIHN0YXRpYyB2YXJpYWJsZSBzaW5jZSBpdCBjb250YWlucyBhIGNvbnN0cnVjdG9y
IGJ1dCBub3QgYSBkZXN0cnVjdG9yIChzdGF0aWMKLSAgICAvLyB2YXJpYWJsZXMgaW4gV2ViS2l0
IGNhbm5vdCBoYXZlIGRlc3RydWN0b3JzKS4KLSAgICAvLwotICAgIC8vIEZvciBleGFtcGxlOgot
ICAgIC8vCi0gICAgLy8gdm9pZCBzb21lRnVuY3Rpb24oKQotICAgIC8vIHsKLSAgICAvLyAgICAg
c3RhdGljIFNhbXBsaW5nQ291bnRlciBjb3VudE1lKCJUaGlzIGlzIG15IGNvdW50ZXIuICBUaGVy
ZSBhcmUgbWFueSBsaWtlIGl0LCBidXQgdGhpcyBvbmUgaXMgbWluZS4iKTsKLSAgICAvLyAgICAg
Y291bnRNZS5jb3VudCgpOwotICAgIC8vICAgICAvLyAuLi4KLSAgICAvLyB9Ci0gICAgLy8KLSAg
ICBjbGFzcyBTYW1wbGluZ0NvdW50ZXIgOiBwdWJsaWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIg
ewotICAgIHB1YmxpYzoKLSAgICAgICAgU2FtcGxpbmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUp
IHsgaW5pdChuYW1lKTsgfQotICAgIH07Ci0KLSAgICAvLyBHbG9iYWxTYW1wbGluZ0NvdW50ZXI6
Ci0gICAgLy8KLSAgICAvLyBUaGlzIGNsYXNzIGlzIHN1aXRhYmxlIGZvciB1c2Ugd2hlcmUgYSBj
b3VudGVyIGlzIHRvIGJlIGRlY2xhcmVkIGdsb2JhbGx5LAotICAgIC8vIHNpbmNlIGl0IGNvbnRh
aW5zIG5laXRoZXIgYSBjb25zdHJ1Y3RvciBub3IgZGVzdHJ1Y3Rvci4gIEluc3RlYWQsIGVuc3Vy
ZQotICAgIC8vIHRoYXQgJ25hbWUoKScgaXMgY2FsbGVkIHRvIHByb3ZpZGUgdGhlIGNvdW50ZXIg
d2l0aCBhIG5hbWUgKGFuZCBhbHNvIHRvCi0gICAgLy8gYWxsb3cgaXQgdG8gYmUgcHJpbnRlZCBv
dXQgb24gZXhpdCkuCi0gICAgLy8KLSAgICAvLyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgZ2xvYmFs
Q291bnRlcjsKLSAgICAvLwotICAgIC8vIHZvaWQgZmlyc3RGdW5jdGlvbigpCi0gICAgLy8gewot
ICAgIC8vICAgICAvLyBQdXQgdGhpcyB3aXRoaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGRlZmluaXRl
bHkgY2FsbGVkIQotICAgIC8vICAgICAvLyAoT3IgYWx0ZXJuYXRpdmVseSBhbG9uZ3NpZGUgYWxs
IGNhbGxzIHRvICdjb3VudCgpJykuCi0gICAgLy8gICAgIGdsb2JhbENvdW50ZXIubmFtZSgiSSBO
YW1lIFlvdSBEZXN0cm95ZXIuIik7Ci0gICAgLy8gICAgIGdsb2JhbENvdW50ZXIuY291bnQoKTsK
LSAgICAvLyAgICAgLy8gLi4uCi0gICAgLy8gfQotICAgIC8vCi0gICAgLy8gdm9pZCBzZWNvbmRG
dW5jdGlvbigpCi0gICAgLy8gewotICAgIC8vICAgICBnbG9iYWxDb3VudGVyLmNvdW50KCk7Ci0g
ICAgLy8gICAgIC8vIC4uLgotICAgIC8vIH0KLSAgICAvLwotICAgIGNsYXNzIEdsb2JhbFNhbXBs
aW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7Ci0gICAgcHVibGlj
OgotICAgICAgICB2b2lkIG5hbWUoY29uc3QgY2hhciogbmFtZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gR2xvYmFsIG9iamVjdHMgc2hvdWxkIGJlIG1hcHBlZCBpbiB6ZXJvIGZpbGxlZCBt
ZW1vcnksIHNvIHRoaXMgc2hvdWxkCi0gICAgICAgICAgICAvLyBiZSBhIHNhZmUgKGFsYmVpdCBu
b3QgbmVjZXNzYXJpbHkgdGhyZWFkc2FmZSkgY2hlY2sgZm9yICdmaXJzdCBjYWxsJy4KLSAgICAg
ICAgICAgIGlmICghbV9uZXh0KQotICAgICAgICAgICAgICAgIGluaXQobmFtZSk7Ci0gICAgICAg
IH0KLSAgICB9OwotCi0gICAgLy8gRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyOgotICAgIC8vCi0g
ICAgLy8gVGhlIGFib3ZlIGNsYXNzZXMgKFNhbXBsaW5nQ291bnRlciwgR2xvYmFsU2FtcGxpbmdD
b3VudGVyKSwgYXJlIGludGVuZGVkIGZvcgotICAgIC8vIHVzZSB3aXRoaW4gYSBnbG9iYWwgb3Ig
c3RhdGljIHNjb3BlLCBhbmQgYXMgc3VjaCBjYW5ub3QgaGF2ZSBhIGRlc3RydWN0b3IuCi0gICAg
Ly8gVGhpcyBtZWFucyB0aGVyZSBpcyBubyBjb252ZW5pZW50IHdheSBmb3IgdGhlbSB0byByZW1v
dmUgdGhlbXNlbHZlcyBmcm9tIHRoZQotICAgIC8vIHN0YXRpYyBsaXN0IG9mIGNvdW50ZXJzLCBh
bmQgc2hvdWxkIGFuIGluc3RhbmNlIG9mIGVpdGhlciBjbGFzcyBiZSBmcmVlZAotICAgIC8vIGJl
Zm9yZSAnZHVtcCgpJyBoYXMgd2Fsa2VkIG92ZXIgdGhlIGxpc3QgaXQgd2lsbCBwb3RlbnRpYWxs
eSB3YWxrIG92ZXIgYW4KLSAgICAvLyBpbnZhbGlkIHBvaW50ZXIuCi0gICAgLy8KLSAgICAvLyBU
aGlzIGNsYXNzIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlcmUgdGhlIGNvdW50ZXIgbWF5IHBvc3Np
Ymx5IGJlIGRlbGV0ZWQgYmVmb3JlCi0gICAgLy8gdGhlIHByb2dyYW0gZXhpdHMuICBTaG91bGQg
dGhpcyBvY2N1ciwgdGhlIGNvdW50ZXIgd2lsbCBwcmludCBpdCdzIHZhbHVlIHRvCi0gICAgLy8g
c3RkZXJyLCBhbmQgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoZSBzdGF0aWMgbGlzdC4gIEV4YW1wbGU6
Ci0gICAgLy8KLSAgICAvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIqIGNvdW50ZXIgPSBuZXcg
RGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKCJUaGUgQ291bnRlciBXaXRoIE5vIE5hbWUiKTsKLSAg
ICAvLyBjb3VudGVyLT5jb3VudCgpOwotICAgIC8vIGRlbGV0ZSBjb3VudGVyOwotICAgIC8vCi0g
ICAgY2xhc3MgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyIDogcHVibGljIEFic3RyYWN0U2FtcGxp
bmdDb3VudGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0YWJsZVNhbXBsaW5nQ291bnRl
cihjb25zdCBjaGFyKiBuYW1lKSB7IGluaXQobmFtZSk7IH0KLQotICAgICAgICB+RGVsZXRhYmxl
U2FtcGxpbmdDb3VudGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFzX2NvbXBsZXRl
ZCkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRlbGV0YWJsZVNhbXBsaW5nQ291
bnRlciBcIiVzXCIgZGVsZXRlZCBlYXJseSAod2l0aCBjb3VudCAlbGxkKVxuIiwgbV9uYW1lLCBt
X2NvdW50ZXIpOwotICAgICAgICAgICAgLy8gT3VyIG1fcmVmZXJlciBwb2ludGVyIHNob3VsZCBr
bm93IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpcywKLSAgICAgICAgICAgIC8vIGFu
ZCBtX25leHQgc2hvdWxkIGtub3cgdGhhdCB0aGlzIG5vZGUgaXMgdGhlIHByZXZpb3VzIG5vZGUg
aW4gdGhlIGxpc3QuCi0gICAgICAgICAgICBBU1NFUlQoKm1fcmVmZXJlciA9PSB0aGlzKTsKLSAg
ICAgICAgICAgIEFTU0VSVChtX25leHQtPm1fcmVmZXJlciA9PSAmbV9uZXh0KTsKLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGlzIG5vZGUgZnJvbSB0aGUgbGlzdCwgYW5kIGluZm9ybSBtX25leHQg
dGhhdCB3ZSBoYXZlIGRvbmUgc28uCi0gICAgICAgICAgICBtX25leHQtPm1fcmVmZXJlciA9IG1f
cmVmZXJlcjsKLSAgICAgICAgICAgICptX3JlZmVyZXIgPSBtX25leHQ7Ci0gICAgICAgIH0KLSAg
ICB9OwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU2FtcGxpbmdU
b29sX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUsMTEgKzQ2
NSwxNyBAQCBKSVRDb21waWxlcjo6Q2FsbCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoCiAgICAgcmV0
dXJuIGZ1bmN0aW9uQ2FsbDsKIH0KIAotdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjp3cml0ZUJhcnJp
ZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQordm9pZCBK
SVRDb2RlR2VuZXJhdG9yOjp3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImIGppdCwgR1BSUmVn
IG93bmVyLCBHUFJSZWcgc2NyYXRjaCwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQogewor
ICAgIFVOVVNFRF9QQVJBTShqaXQpOwogICAgIFVOVVNFRF9QQVJBTShvd25lcik7CiAgICAgVU5V
U0VEX1BBUkFNKHNjcmF0Y2gpOworICAgIFVOVVNFRF9QQVJBTSh1c2VLaW5kKTsKICAgICBBU1NF
UlQob3duZXIgIT0gc2NyYXRjaCk7CisKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJ
TkcpCisgICAgSklUQ29tcGlsZXI6OmVtaXRDb3VudChqaXQsIFdyaXRlQmFycmllckNvdW50ZXJz
OjpqaXRDb3VudGVyRm9yKHVzZUtpbmQpKTsKKyNlbmRpZgogfQogCiB2b2lkIEpJVENvZGVHZW5l
cmF0b3I6OmNhY2hlZFB1dEJ5SWQoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB2YWx1ZUdQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQgcHV0S2lu
ZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQpCkBAIC00NzcsNyArNDgzLDcgQEAg
dm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRQdXRCeUlkKEdQUgogICAgIEpJVENvbXBpbGVy
OjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJlOwogICAgIEpJVENvbXBpbGVyOjpKdW1w
IHN0cnVjdHVyZUNoZWNrID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHN0cnVjdHVyZVRvQ29tcGFyZSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oLTEpKSk7CiAgICAgCi0gICAgd3JpdGVCYXJyaWVyKG1f
aml0LCBiYXNlR1BSLCBzY3JhdGNoR1BSKTsKKyAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VH
UFIsIHNjcmF0Y2hHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mUHJvcGVydHlTdG9yYWdlKCkpLCBzY3JhdGNoR1BSKTsKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsMzIgc3RvcmVXaXRoUGF0Y2ggPSBtX2ppdC5zdG9yZVB0cldpdGhBZGRyZXNzT2Zmc2V0
UGF0Y2godmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIDApKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5o
CShyZXZpc2lvbiA5MzU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9ncHJzLnJlbGVhc2UoaW5mby5ncHIoKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgd3JpdGVCYXJyaWVyKE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BSLCBH
UFJSZWcgc2NyYXRjaEdQUik7CisgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKE1hY3JvQXNz
ZW1ibGVyJiwgR1BSUmVnIG93bmVyR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgV3JpdGVCYXJyaWVy
VXNlS2luZCk7CiAKICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHBy
ZXNlcnZlMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVn
LCBHUFJSZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZykKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gOTM1NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0MSwxOCArMTA0MSwxOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpqaXRBc3Nl
cnRJc0NlbGwoR1BSUmVnCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykg
JiYgQ1BVKFg4Nl82NCkgLy8gT3IgYW55IG90aGVyIDY0LWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklU
Q29tcGlsZXI6OmVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWlu
dDMyX3QgaW5jcmVtZW50KQordm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KE1hY3JvQXNzZW1i
bGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNy
ZW1lbnQpCiB7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFk
ZHJlc3MoY291bnRlci5hZGRyZXNzT2ZDb3VudGVyKCkpKTsKKyAgICBqaXQuYWRkUHRyKFRydXN0
ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRlci5hZGRyZXNzT2ZDb3Vu
dGVyKCkpKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKSAmJiBD
UFUoWDg2KSAvLyBPciBhbnkgb3RoZXIgbGl0dGxlLWVuZGlhbiAzMi1iaXQgcGxhdGZvcm0hCi12
b2lkIEpJVENvbXBpbGVyOjplbWl0Q291bnQoQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50
ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKK3ZvaWQgSklUQ29tcGlsZXI6OmVtaXRDb3VudChNYWNy
b0FzZW1ibGVyJiBqaXQsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCB1aW50MzJf
dCBpbmNyZW1lbnQpCiB7CiAgICAgaW50cHRyX3QgaGlXb3JkID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4oY291bnRlci5hZGRyZXNzT2ZDb3VudGVyKCkpICsgc2l6ZW9mKGludDMyX3QpOwot
ICAgIGFkZDMyKFRydXN0ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291bnRl
ci5hZGRyZXNzT2ZDb3VudGVyKCkpKTsKLSAgICBhZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIo
MCksIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7Cisg
ICAgaml0LmFkZDMyKFRydXN0ZWRJbW0zMihpbmNyZW1lbnQpLCBBYnNvbHV0ZUFkZHJlc3MoY291
bnRlci5hZGRyZXNzT2ZDb3VudGVyKCkpKTsKKyAgICBqaXQuYWRkV2l0aENhcnJ5MzIoVHJ1c3Rl
ZEltbTMyKDApLCBBYnNvbHV0ZUFkZHJlc3MocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oaGlXb3Jk
KSkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHJldmlzaW9uIDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNyArMjczLDExIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICAvLyBEZWJ1ZyBwcm9m
aWxpbmcgdG9vbC4KLSAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYs
IHVpbnQzMl90IGluY3JlbWVudCA9IDEpOworICAgIHN0YXRpYyB2b2lkIGVtaXRDb3VudChNYWNy
b0Fzc2VtYmxlciYsIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVtZW50
ID0gMSk7CisgICAgdm9pZCBlbWl0Q291bnQoQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50
ZXIsIHVpbnQzMl90IGluY3JlbWVudCA9IDEpCisgICAgeworICAgICAgICBlbWl0Q291bnQoKnRo
aXMsIGNvdW50ZXIsIGluY3JlbWVudCk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1
bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vblNwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAzLDcgKzkwMyw3IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQK
ICAgICAgICAgcHJvcGVydHkudXNlKCk7CiAgICAgICAgIHZhbHVlLnVzZSgpOwogICAgICAgICAK
LSAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlR1BSLCBzdG9yYWdlR1BSKTsKKyAgICAg
ICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlR1BSLCBzdG9yYWdlR1BSLCBXcml0ZUJhcnJpZXJG
b3JQcm9wZXJ0eUFjY2Vzcyk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBi
YXNlTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKIAogICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdFJlZyk7CiAKLSAgICAgICAgd3JpdGVCYXJy
aWVyKG1faml0LCBnbG9iYWxPYmplY3RSZWcsIHNjcmF0Y2hSZWcpOworICAgICAgICB3cml0ZUJh
cnJpZXIobV9qaXQsIGdsb2JhbE9iamVjdFJlZywgc2NyYXRjaFJlZywgV3JpdGVCYXJyaWVyRm9y
VmFyaWFibGVBY2Nlc3MpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZ2xvYmFsT2JqZWN0UmVnLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lz
dGVycygpKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHZhbHVlLmdwcigp
LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvckdsb2JhbFZhcihzY3JhdGNoUmVnLCBub2RlLnZhck51
bWJlcigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJ
KHJldmlzaW9uIDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDcgKzUyNSw3IEBAIHN0YXRpYyBib29sIHRyeUNh
Y2hlUHV0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgICAgICAgICAgICAgdGVzdFByb3RvdHlw
ZShzdHViSml0LCBzY3JhdGNoR1BSLCAoKml0KS0+c3RvcmVkUHJvdG90eXBlKCksIGZhaWx1cmVD
YXNlcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEpJVENvZGVH
ZW5lcmF0b3I6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BSLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgICAgIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihzdHViSml0LCBiYXNlR1BS
LCBzY3JhdGNoR1BSLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVc2lu
Z0lubGluZVN0b3JhZ2UoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5MzU0MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDUs
NyArOTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VSZWcsIHNjcmF0Y2hSZWcpOworICAgICAg
ICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJy
YXksIGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92
ZWN0b3JMZW5ndGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0
byBiZSB0eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCkBAIC0xMDA0LDcgKzEwMDQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQ
UlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBz
Y3JhdGNoLmdwcigpOwogCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywgc2Ny
YXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywgc2NyYXRjaFJl
ZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgICAgIC8vIEdldCB0aGUg
YXJyYXkgc3RvcmFnZS4KICAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzY3JhdGNoUmVnOwpA
QCAtMTE2NSw3ICsxMTY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0UmVnKTsKIAot
ICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2JhbE9iamVjdFJlZywgc2NyYXRjaFJlZyk7
CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVn
LCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RSZWcsIEpTVmFyaWFibGVPYmpl
Y3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9qaXQuc3Rv
cmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yR2xvYmFsVmFyKHNjcmF0
Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gOTM1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dm9pZCB0ZXN0UHJvdG90eXBlKEpTVmFsdWUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogCi0g
ICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklE
IHNjcmF0Y2gpOworICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25l
ciwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQg
ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJl
Z2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUs
IFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQdHIpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CShyZXZpc2lvbiA5MzU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgCiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKLSAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCwgcmVnVDEsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1f
Z2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zm
c2V0KCkpKSk7CiAgICAgCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKEluc3RydWN0aW9uKgogICAgIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlLCByZWdUMSk7CiAgICAgCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEp
OworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCBXcml0ZUJhcnJpZXJGb3JQcm9w
ZXJ0eUFjY2Vzcyk7CiAgICAgCiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1
ZW5jZVB1dEJ5SWQpOwogICAgIApAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAgIH0KIAotICAgIGVtaXRXcml0ZUJh
cnJpZXIocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwg
V3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpIHx8IENQVShBUk0pCkBAIC0xMDUxLDcg
KzEwNTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2Rl
LCBuZXh0KSksIHJlZ1QyKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZT
RVRPRihTY29wZUNoYWluTm9kZSwgb2JqZWN0KSksIHJlZ1QyKTsKIAotICAgIGVtaXRXcml0ZUJh
cnJpZXIocmVnVDIsIHJlZ1QzKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMywg
V3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDIpOwogICAg
IGVtaXRTdG9yZShpbmRleCwgcmVnVDEsIHJlZ1QwLCByZWdUMik7CkBAIC0xMDgyLDE4ICsxMDgy
LDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICBlbWl0
TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFs
T2JqZWN0KSwgcmVnVDIpOwogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMiwgcmVnVDMpOwor
ICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJs
ZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTVmFyaWFibGVPYmplY3Q6
Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMik7CiAgICAgZW1pdFN0b3JlKGluZGV4LCByZWdU
MSwgcmVnVDAsIHJlZ1QyKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5H
VEgob3BfcHV0X2dsb2JhbF92YXIpLCB2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAotdm9pZCBK
SVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNo
KQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJ
RCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFN
KHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKyAgICAKKyNpZiBFTkFC
TEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgZW1pdENvdW50KFdyaXRlQmFycmllckNv
dW50ZXJzOjpqaXRDb3VudGVyRm9yKHVzZUtpbmQpKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiA5MzU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNyArNDM4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIC8vIEp1bXAg
dG8gYSBzbG93IGNhc2UgaWYgZWl0aGVyIHRoZSBiYXNlIG9iamVjdCBpcyBhbiBpbW1lZGlhdGUs
IG9yIGlmIHRoZSBTdHJ1Y3R1cmUgZG9lcyBub3QgbWF0Y2guCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJl
Z1QwLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIsIFdyaXRlQmFy
cmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIEJFR0lOX1VOSU5URVJSVVBURURfU0VRVUVO
Q0Uoc2VxdWVuY2VQdXRCeUlkKTsKIApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4ocmVnVDMpOwogICAgIH0KICAgICAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJl
Z1QwLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIsIFdyaXRlQmFy
cmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3
U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwog
ICAgIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQocmVnVDAsIHJlZ1QxLCBuZXdTdHJ1Y3R1cmUsIGNh
Y2hlZE9mZnNldCk7CkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Nj
b3BlZF92YXIoSW5zdHJ1YwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9P
RkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdUMSk7CiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCkpLCByZWdU
MSk7CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdUMik7CisgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMSwgcmVnVDIsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdp
c3RlcnMoKSksIHJlZ1QxKTsKICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKQEAgLTEw
MTcsMTcgKzEwMTcsMjIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1
YwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCwgcmVnVDApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdU
MSk7CiAgICAgCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMSwgcmVnVDIpOworICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDEsIHJlZ1QyLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7
CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9m
UmVnaXN0ZXJzKCkpLCByZWdUMSk7CiAgICAgc3RvcmVQdHIocmVnVDAsIEFkZHJlc3MocmVnVDEs
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiB9
CiAKLXZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIs
IFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQogewogICAg
IFVOVVNFRF9QQVJBTShvd25lcik7CiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgIFVO
VVNFRF9QQVJBTSh1c2VLaW5kKTsKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaCk7CisgICAg
CisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIGVtaXRDb3VudChXcml0
ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcih1c2VLaW5kKSk7CisjZW5kaWYKIH0KIAog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gOTM1NDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNp
bmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTQ4LDYgKzQ5LDkgQEAgc3RhdGljIHB0aHJlYWRf
b25jZV90IGluaXRpYWxpemVUaHJlYWRpbgogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGlu
Z09uY2UoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworI2lmIEVOQUJMRShX
UklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlh
bGl6ZSgpOworI2VuZGlmCiAgICAgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCk7CiAjaWYgRU5B
QkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIFJlZ2lzdGVyRmlsZTo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdD
b3VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ0NvdW50ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKwordm9pZCBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgpCit7
CisjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQorICAgIGlmIChzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW4gIT0gJnNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbkVuZCkgewor
ICAgICAgICBwcmludGYoIlxuU2FtcGxpbmcgQ291bnRlciBWYWx1ZXM6XG4iKTsKKyAgICAgICAg
Zm9yIChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogY3VyckNvdW50ZXIgPSBzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW47IChjdXJyQ291bnRlciAhPSAmc19hYnN0cmFjdFNhbXBsaW5nQ291
bnRlckNoYWluRW5kKTsgY3VyckNvdW50ZXIgPSBjdXJyQ291bnRlci0+bV9uZXh0KQorICAgICAg
ICAgICAgcHJpbnRmKCJcdCVzXHQ6ICVsbGRcbiIsIGN1cnJDb3VudGVyLT5tX25hbWUsIGN1cnJD
b3VudGVyLT5tX2NvdW50ZXIpOworICAgICAgICBwcmludGYoIlxuXG4iKTsKKyAgICB9CisgICAg
c19jb21wbGV0ZWQgPSB0cnVlOworI2VuZGlmCit9CisKK0Fic3RyYWN0U2FtcGxpbmdDb3VudGVy
IEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVyQ2hhaW5F
bmQ7CitBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OnNf
YWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbiA9ICZzX2Fic3RyYWN0U2FtcGxpbmdDb3VudGVy
Q2hhaW5FbmQ7Citib29sIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpzX2NvbXBsZXRlZCA9IGZh
bHNlOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU2FtcGxpbmdDb3VudGVyX2gKKyNkZWZpbmUgU2FtcGxp
bmdDb3VudGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCisvLyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBJbXBsZW1lbnRzIGEg
bmFtZWQgc2V0IG9mIGNvdW50ZXJzLCBwcmludGVkIG9uIGV4aXQgaWYgRU5BQkxFKFNBTVBMSU5H
X0NPVU5URVJTKS4KKy8vIFNlZSBzdWJjbGFzc2VzIGJlbG93LCBTYW1wbGluZ0NvdW50ZXIsIEds
b2JhbFNhbXBsaW5nQ291bnRlciBhbmQgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyLgorY2xhc3Mg
QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIgeworICAgIGZyaWVuZCBjbGFzcyBEZWxldGFibGVTYW1w
bGluZ0NvdW50ZXI7CitwdWJsaWM6CisgICAgdm9pZCBjb3VudCh1aW50MzJfdCBjb3VudCA9IDEp
CisgICAgeworICAgICAgICBtX2NvdW50ZXIgKz0gY291bnQ7CisgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgZHVtcCgpOworCisgICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigpIHsgcmV0dXJu
ICZtX2NvdW50ZXI7IH0KKworcHJvdGVjdGVkOgorICAgIC8vIEVmZmVjdGl2ZWx5IHRoZSBjb250
cnVjdG9yLCBob3dldmVyIGNhbGxlZCBsYXppbHkgaW4gdGhlIGNhc2Ugb2YgR2xvYmFsU2FtcGxp
bmdDb3VudGVyLgorICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAg
ICAgbV9jb3VudGVyID0gMDsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsKKworICAgICAgICAvLyBT
ZXQgbV9uZXh0IHRvIHBvaW50IHRvIHRoZSBoZWFkIG9mIHRoZSBjaGFpbiwgYW5kIGluZm9ybSB3
aGF0ZXZlciBpcworICAgICAgICAvLyBjdXJyZW50bHkgYXQgdGhlIGhlYWQgdGhhdCB0aGlzIG5v
ZGUgd2lsbCBub3cgaG9sZCB0aGUgcG9pbnRlciB0byBpdC4KKyAgICAgICAgbV9uZXh0ID0gc19h
YnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOworICAgICAgICBzX2Fic3RyYWN0U2FtcGxpbmdD
b3VudGVyQ2hhaW4tPm1fcmVmZXJlciA9ICZtX25leHQ7CisgICAgICAgIC8vIEFkZCB0aGlzIG5v
ZGUgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QuCisgICAgICAgIHNfYWJzdHJhY3RTYW1wbGluZ0Nv
dW50ZXJDaGFpbiA9IHRoaXM7CisgICAgICAgIG1fcmVmZXJlciA9ICZzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW47CisgICAgfQorCisgICAgaW50NjRfdCBtX2NvdW50ZXI7CisgICAgY29u
c3QgY2hhciogbV9uYW1lOworICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBtX25leHQ7Cisg
ICAgLy8gVGhpcyBpcyBhIHBvaW50ZXIgdG8gdGhlIHBvaW50ZXIgdG8gdGhpcyBub2RlIGluIHRo
ZSBjaGFpbjsgdXNlZCB0bworICAgIC8vIGFsbG93IGZhc3QgbGlua2VkIGxpc3QgZGVsZXRpb24u
CisgICAgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7CisgICAgLy8gTnVsbCBv
YmplY3QgdXNlZCB0byBkZXRlY3QgZW5kIG9mIHN0YXRpYyBjaGFpbi4KKyAgICBzdGF0aWMgQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXIgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kOwor
ICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5nQ291
bnRlckNoYWluOworICAgIHN0YXRpYyBib29sIHNfY29tcGxldGVkOworfTsKKworI2lmIEVOQUJM
RShTQU1QTElOR19DT1VOVEVSUykKKy8vIFNhbXBsaW5nQ291bnRlcjoKKy8vCisvLyBUaGlzIGNs
YXNzIGlzIHN1aXRhYmxlIGFuZCAoaG9wZWZ1bGx5ISkgY29udmVuaWVudCBmb3IgY2FzZXMgd2hl
cmUgYSBjb3VudGVyIGlzCisvLyByZXF1aXJlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2luZ2xl
IGZ1bmN0aW9uLiBJdCBjYW4gYmUgaW5zdGFudGlhdGVkIGFzIGEKKy8vIHN0YXRpYyB2YXJpYWJs
ZSBzaW5jZSBpdCBjb250YWlucyBhIGNvbnN0cnVjdG9yIGJ1dCBub3QgYSBkZXN0cnVjdG9yIChz
dGF0aWMKKy8vIHZhcmlhYmxlcyBpbiBXZWJLaXQgY2Fubm90IGhhdmUgZGVzdHJ1Y3RvcnMpLgor
Ly8KKy8vIEZvciBleGFtcGxlOgorLy8KKy8vIHZvaWQgc29tZUZ1bmN0aW9uKCkKKy8vIHsKKy8v
ICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50TWUoIlRoaXMgaXMgbXkgY291bnRlci4g
VGhlcmUgYXJlIG1hbnkgbGlrZSBpdCwgYnV0IHRoaXMgb25lIGlzIG1pbmUuIik7CisvLyAgICAg
Y291bnRNZS5jb3VudCgpOworLy8gICAgIC8vIC4uLgorLy8gfQorLy8KK2NsYXNzIFNhbXBsaW5n
Q291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7CitwdWJsaWM6CisgICAg
U2FtcGxpbmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgaW5pdChuYW1lKTsgfQorfTsKKwor
Ly8gR2xvYmFsU2FtcGxpbmdDb3VudGVyOgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgc3VpdGFibGUg
Zm9yIHVzZSB3aGVyZSBhIGNvdW50ZXIgaXMgdG8gYmUgZGVjbGFyZWQgZ2xvYmFsbHksCisvLyBz
aW5jZSBpdCBjb250YWlucyBuZWl0aGVyIGEgY29uc3RydWN0b3Igbm9yIGRlc3RydWN0b3IuIElu
c3RlYWQsIGVuc3VyZQorLy8gdGhhdCAnbmFtZSgpJyBpcyBjYWxsZWQgdG8gcHJvdmlkZSB0aGUg
Y291bnRlciB3aXRoIGEgbmFtZSAoYW5kIGFsc28gdG8KKy8vIGFsbG93IGl0IHRvIGJlIHByaW50
ZWQgb3V0IG9uIGV4aXQpLgorLy8KKy8vIEdsb2JhbFNhbXBsaW5nQ291bnRlciBnbG9iYWxDb3Vu
dGVyOworLy8KKy8vIHZvaWQgZmlyc3RGdW5jdGlvbigpCisvLyB7CisvLyAgICAgLy8gUHV0IHRo
aXMgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBpcyBkZWZpbml0ZWx5IGNhbGxlZCEKKy8vICAgICAv
LyAoT3IgYWx0ZXJuYXRpdmVseSBhbG9uZ3NpZGUgYWxsIGNhbGxzIHRvICdjb3VudCgpJykuCisv
LyAgICAgZ2xvYmFsQ291bnRlci5uYW1lKCJJIE5hbWUgWW91IERlc3Ryb3llci4iKTsKKy8vICAg
ICBnbG9iYWxDb3VudGVyLmNvdW50KCk7CisvLyAgICAgLy8gLi4uCisvLyB9CisvLworLy8gdm9p
ZCBzZWNvbmRGdW5jdGlvbigpCisvLyB7CisvLyAgICAgZ2xvYmFsQ291bnRlci5jb3VudCgpOwor
Ly8gICAgIC8vIC4uLgorLy8gfQorLy8KK2NsYXNzIEdsb2JhbFNhbXBsaW5nQ291bnRlciA6IHB1
YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7CitwdWJsaWM6CisgICAgdm9pZCBuYW1lKGNv
bnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICAvLyBHbG9iYWwgb2JqZWN0cyBzaG91bGQg
YmUgbWFwcGVkIGluIHplcm8gZmlsbGVkIG1lbW9yeSwgc28gdGhpcyBzaG91bGQKKyAgICAgICAg
Ly8gYmUgYSBzYWZlIChhbGJlaXQgbm90IG5lY2Vzc2FyaWx5IHRocmVhZHNhZmUpIGNoZWNrIGZv
ciAnZmlyc3QgY2FsbCcuCisgICAgICAgIGlmICghbV9uZXh0KQorICAgICAgICAgICAgaW5pdChu
YW1lKTsKKyAgICB9Cit9OworCisvLyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6CisvLworLy8g
VGhlIGFib3ZlIGNsYXNzZXMgKFNhbXBsaW5nQ291bnRlciwgR2xvYmFsU2FtcGxpbmdDb3VudGVy
KSwgYXJlIGludGVuZGVkIGZvcgorLy8gdXNlIHdpdGhpbiBhIGdsb2JhbCBvciBzdGF0aWMgc2Nv
cGUsIGFuZCBhcyBzdWNoIGNhbm5vdCBoYXZlIGEgZGVzdHJ1Y3Rvci4KKy8vIFRoaXMgbWVhbnMg
dGhlcmUgaXMgbm8gY29udmVuaWVudCB3YXkgZm9yIHRoZW0gdG8gcmVtb3ZlIHRoZW1zZWx2ZXMg
ZnJvbSB0aGUKKy8vIHN0YXRpYyBsaXN0IG9mIGNvdW50ZXJzLCBhbmQgc2hvdWxkIGFuIGluc3Rh
bmNlIG9mIGVpdGhlciBjbGFzcyBiZSBmcmVlZAorLy8gYmVmb3JlICdkdW1wKCknIGhhcyB3YWxr
ZWQgb3ZlciB0aGUgbGlzdCBpdCB3aWxsIHBvdGVudGlhbGx5IHdhbGsgb3ZlciBhbgorLy8gaW52
YWxpZCBwb2ludGVyLgorLy8KKy8vIFRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVy
ZSB0aGUgY291bnRlciBtYXkgcG9zc2libHkgYmUgZGVsZXRlZCBiZWZvcmUKKy8vIHRoZSBwcm9n
cmFtIGV4aXRzLiBTaG91bGQgdGhpcyBvY2N1ciwgdGhlIGNvdW50ZXIgd2lsbCBwcmludCBpdCdz
IHZhbHVlIHRvCisvLyBzdGRlcnIsIGFuZCByZW1vdmUgaXRzZWxmIGZyb20gdGhlIHN0YXRpYyBs
aXN0LiBFeGFtcGxlOgorLy8KKy8vIERlbGV0YWJsZVNhbXBsaW5nQ291bnRlciogY291bnRlciA9
IG5ldyBEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIoIlRoZSBDb3VudGVyIFdpdGggTm8gTmFtZSIp
OworLy8gY291bnRlci0+Y291bnQoKTsKKy8vIGRlbGV0ZSBjb3VudGVyOworLy8KK2NsYXNzIERl
bGV0YWJsZVNhbXBsaW5nQ291bnRlciA6IHB1YmxpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciB7
CitwdWJsaWM6CisgICAgRGVsZXRhYmxlU2FtcGxpbmdDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUp
IHsgaW5pdChuYW1lKTsgfQorCisgICAgfkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcigpCisgICAg
eworICAgICAgICBpZiAoIXNfY29tcGxldGVkKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJEZWxldGFibGVTYW1wbGluZ0NvdW50ZXIgXCIlc1wiIGRlbGV0ZWQgZWFybHkgKHdpdGggY291
bnQgJWxsZClcbiIsIG1fbmFtZSwgbV9jb3VudGVyKTsKKyAgICAgICAgLy8gT3VyIG1fcmVmZXJl
ciBwb2ludGVyIHNob3VsZCBrbm93IHdoZXJlIHRoZSBwb2ludGVyIHRvIHRoaXMgbm9kZSBpcywK
KyAgICAgICAgLy8gYW5kIG1fbmV4dCBzaG91bGQga25vdyB0aGF0IHRoaXMgbm9kZSBpcyB0aGUg
cHJldmlvdXMgbm9kZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgQVNTRVJUKCptX3JlZmVyZXIgPT0g
dGhpcyk7CisgICAgICAgIEFTU0VSVChtX25leHQtPm1fcmVmZXJlciA9PSAmbV9uZXh0KTsKKyAg
ICAgICAgLy8gUmVtb3ZlIHRoaXMgbm9kZSBmcm9tIHRoZSBsaXN0LCBhbmQgaW5mb3JtIG1fbmV4
dCB0aGF0IHdlIGhhdmUgZG9uZSBzby4KKyAgICAgICAgbV9uZXh0LT5tX3JlZmVyZXIgPSBtX3Jl
ZmVyZXI7CisgICAgICAgICptX3JlZmVyZXIgPSBtX25leHQ7CisgICAgfQorfTsKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFNhbXBsaW5nQ291bnRlcl9oCisKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHJl
dmlzaW9uIDkzNTQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJy
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDEzIEBACiAKICNpbmNsdWRlICJIYW5k
bGVUeXBlcy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJTYW1wbGluZ0NvdW50ZXIu
aCIKICNpbmNsdWRlICJUeXBlVHJhaXRzLmgiCiAKKy8vIENvdW50cyB1c2VzIG9mIHdyaXRlIGJh
cnJpZXJzIHVzaW5nIHNhbXBsaW5nIGNvdW50ZXJzLiBCZSBzdXJlIHRvIGFsc28KKy8vIHNldCBF
TkFCTEVfU0FNUExJTkdfQ09VTlRFUlMgdG8gMSBpbiB3dGYvUGxhdGZvcm0uaC4KKyNkZWZpbmUg
RU5BQkxFX1dSSVRFX0JBUlJJRVJfUFJPRklMSU5HIDAKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEpTQ2VsbDsKQEAgLTYzLDYgKzY4LDYxIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2
b2lkIHZhbGlkYXRlQ2UKIH0KICNlbmRpZgogCisvLyBUaGlzIGFsbG93cyB0aGUgSklUIHRvIGRp
c3Rpbmd1aXNoIGJldHdlZW4gdXNlcyBvZiB0aGUgYmFycmllciBmb3IgZGlmZmVyZW50CisvLyBr
aW5kcyBvZiB3cml0ZXMuIFRoaXMgaXMgdXNlZCBieSB0aGUgSklUIGZvciBwcm9maWxpbmcsIGFu
ZCBtYXkgYmUgYXBwcm9wcmlhdGUKKy8vIGZvciBhbGxvd2luZyB0aGUgR0MgaW1wbGVtZW50YXRp
b24gdG8gc3BlY2lhbGl6ZSB0aGUgSklUJ3Mgd3JpdGUgYmFycmllciBjb2RlCisvLyBmb3IgZGlm
ZmVyZW50IGtpbmRzIG9mIHRhcmdldCBvYmplY3RzLgorZW51bSBXcml0ZUJhcnJpZXJVc2VLaW5k
IHsKKyAgICAvLyBUaGlzIGFsbG93cyBzcGVjaWFsaXphdGlvbiBmb3IgYWNjZXNzIHRvIHRoZSBw
cm9wZXJ0eSBzdG9yYWdlIChlaXRoZXIKKyAgICAvLyBhcnJheSBlbGVtZW50IG9yIHByb3BlcnR5
KSwgYnV0IG5vdCBmb3IgYW55IG90aGVyIGtpbmQgb2YgcHJvcGVydHkKKyAgICAvLyBhY2Nlc3Nl
cyAoc3VjaCBhcyB3cml0ZXMgdGhhdCBhcmUgYSBjb25zZXF1ZW5jZSBvZiBzZXR0ZXIgZXhlY3V0
aW9uKS4KKyAgICBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2VzcywKKyAgICAKKyAgICAvLyBU
aGlzIGFsbG93cyBzcGVjaWFsaXphdGlvbiBmb3IgdmFyaWFibGUgYWNjZXNzZXMgKHN1Y2ggYXMg
Z2xvYmFsIG9yCisgICAgLy8gc2NvcGVkIHZhcmlhYmxlcykuCisgICAgV3JpdGVCYXJyaWVyRm9y
VmFyaWFibGVBY2Nlc3MsCisgICAgCisgICAgLy8gVGhpcyBjYXB0dXJlcyBhbGwgb3RoZXIgZm9y
bXMgb2Ygd3JpdGUgYmFycmllcnMuIEl0IHNob3VsZCBhbHdheXMgYmUKKyAgICAvLyBjb3JyZWN0
IHRvIHVzZSBhIGdlbmVyaWMgYWNjZXNzIHdyaXRlIGJhcnJpZXIsIGV2ZW4gd2hlbiBzdG9yaW5n
IHRvCisgICAgLy8gcHJvcGVydGllcy4gSGVuY2UsIGlmIG9wdGltaXphdGlvbiBpcyBub3QgbmVj
ZXNzYXJ5LCBpdCBpcyBwcmVmZXJhYmxlCisgICAgLy8gdG8ganVzdCB1c2UgYSBnZW5lcmljIGFj
Y2Vzcy4KKyAgICBXcml0ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNzCit9OworCitjbGFzcyBXcml0
ZUJhcnJpZXJDb3VudGVycyB7Citwcml2YXRlOgorICAgIFdyaXRlQmFycmllckNvdW50ZXJzKCkg
eyB9CisKK3B1YmxpYzoKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAg
c3RhdGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOworICAg
IHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsK
KyAgICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNXaXRoQmFycmllckZyb21KaXQ7
CisgICAgc3RhdGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzRm9yUHJvcGVydGllc0Zyb21K
aXQ7CisgICAgc3RhdGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzRm9yVmFyaWFibGVzRnJv
bUppdDsKKyAgICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNXaXRob3V0QmFycmll
ckZyb21KaXQ7CisgICAgCisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIAorICAg
IHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXImIGppdENvdW50ZXJGb3IoV3JpdGVCYXJyaWVy
VXNlS2luZCB1c2VLaW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh1c2VLaW5kKSB7CisgICAg
ICAgIGNhc2UgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3M6CisgICAgICAgICAgICByZXR1
cm4gdXNlc0ZvclByb3BlcnRpZXNGcm9tSml0OworICAgICAgICBjYXNlIFdyaXRlQmFycmllckZv
clZhcmlhYmxlQWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIHVzZXNGb3JWYXJpYWJsZXNGcm9t
Sml0OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKHVzZUtpbmQgPT0gV3Jp
dGVCYXJyaWVyRm9yR2VuZXJpY0FjY2Vzcyk7CisgICAgICAgICAgICByZXR1cm4gdXNlc1dpdGhC
YXJyaWVyRnJvbUppdDsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgLy8gVGhlc2UgYXJl
IG5lY2Vzc2FyeSB0byB3b3JrIGFyb3VuZCBub3QgaGF2aW5nIGNvbmRpdGlvbmFsIGV4cG9ydHMu
CisgICAgc3RhdGljIGNoYXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKKyAgICBzdGF0aWMgY2hh
ciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOworI2VuZGlmIC8vIEVOQUJMRShXUklURV9CQVJS
SUVSX1BST0ZJTElORykKK307CisKIC8vIFdlIGhhdmUgYSBzZXBhcmF0ZSBiYXNlIGNsYXNzIHdp
dGggbm8gY29uc3RydWN0b3JzIGZvciB1c2UgaW4gVW5pb25zLgogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIFdyaXRlQmFycmllckJhc2UgewogcHVibGljOgpAQCAtODQsNiArMTQ0LDkgQEAg
cHVibGljOgogICAgIC8vIHdoZW4gc29tZSBiYXNpYyB0eXBlcyBhcmVuJ3QgeWV0IGNvbXBsZXRl
bHkgaW5zdGFudGlhdGVkCiAgICAgdm9pZCBzZXRFYXJseVZhbHVlKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQogICAgIHsKKyNpZiBFTkFCTEUoV1JJVEVfQkFS
UklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0aEJh
cnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5kaWYKICAgICAgICAgdGhpcy0+bV9jZWxsID0gcmVp
bnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAgICAgICAgIEhlYXA6OndyaXRlQmFycmll
cihvd25lciwgdGhpcy0+bV9jZWxsKTsKICAgICB9CkBAIC0xMjAsNiArMTgzLDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKFQqIHZhbHVlKQogICAgIHsKKyNp
ZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRlQmFycmllckNv
dW50ZXJzOjp1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5kaWYKICAgICAg
ICAgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAgICAg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104797</attachid>
            <date>2011-08-23 00:40:04 -0700</date>
            <delta_ts>2011-08-23 01:11:21 -0700</delta_ts>
            <desc>the patch (fix conflict with my earlier patch)</desc>
            <filename>writebarrierprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>27816</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRQdXRCeUlkKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmVtaXRDb3VudCk6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmVtaXRDb3VudCk6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlUHV0
QnlJRCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92
YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ0NvdW50
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1
bXApOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6Y291bnQpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6YWRkcmVzc09mQ291bnRlcik6CisgICAgICAgIChKU0M6
OkFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjppbml0KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdD
b3VudGVyOjpTYW1wbGluZ0NvdW50ZXIpOgorICAgICAgICAoSlNDOjpHbG9iYWxTYW1wbGluZ0Nv
dW50ZXI6Om5hbWUpOgorICAgICAgICAoSlNDOjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6OkRl
bGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgIChKU0M6OkRlbGV0YWJsZVNhbXBsaW5n
Q291bnRlcjo6fkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9X
cml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6OldyaXRl
QmFycmllckNvdW50ZXJzKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6Ompp
dENvdW50ZXJGb3IpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXRFYXJseVZh
bHVlKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFy
cmllcik6CisKIDIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTYW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5dGVjb2RlIGRpcmVj
dG9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9BbGlnbm1lbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BbHdheXNJbmxpbmUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmggXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA5MzU4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMCw2ICsyMTAsOCBAQCBfX1pOM0pTQzE5U291cmNlUHJvdmlkZXJDYWNoZUQxRXYKIF9f
Wk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlNDMjBNYXJrZWRBcmd1bWVudEJ1
ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMjBjcmVhdGVSZWZlcmVuY2VF
cnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MyMFdyaXRlQmFycmll
ckNvdW50ZXJzMjJ1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwRQorX19aTjNKU0MyMFdyaXRlQmFycmll
ckNvdW50ZXJzMjV1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwRQogX19aTjNKU0MyMmdsb2JhbE1l
bW9yeVN0YXRpc3RpY3NFdgogX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9yVGFibGVFCiBfX1pO
M0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYg
KzE5NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAgICAg
cnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAor
ICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmNwcCBcCiAgICAgeWFyci9ZYXJySklULmNwcCBcCiAK
ICpzaDQqIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM3LDYgKzEyMzcsMTAgQEAKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcV2Vha1JhbmRvbS5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFdyaXRlQmFycmllci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0i
QVBJIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNTgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDkgQEAKIAkJMEJERkZBRTEwRkM2
MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25G
YXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBC
M0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJl
ci5jcHAgKi87IH07Ci0JCTBGNzcwMDkwMTQwMkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcw
MDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgfTsKKwkJMEY3NzAw
OTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAw
OTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CisJCTBGNzcw
MDk0MTQwMzJERUIwMDc4RUIzOSAvKiBXcml0ZUJhcnJpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTMxNDAzMkRERTAwNzhFQjM5IC8q
IFdyaXRlQmFycmllci5jcHAgKi87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBW
YWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAw
NjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKQEAgLTczNCw2ICs3MzUsNyBAQAogCQkw
RjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjc3MDA5MzE0MDMyRERFMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRlQmFycmllci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0Fs
bG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9jYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NDMsNiArMTg0NSw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1l
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjc3MDA5
MzE0MDMyRERFMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNwcCAqLywKIAkJCQkwRjc3MDA5MTE0
MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKIAkJCQkwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIw
M0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLApAQCAtMjg0OCw2ICsyODUxLDcgQEAKIAkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTBGNzcwMDk0MTQwMzJERUIwMDc4RUIzOSAvKiBXcml0
ZUJhcnJpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VD
Mzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEw
N0VDMzc2MDA0MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwxMSArNDY1LDE3IEBAIEpJVENvbXBp
bGVyOjpDYWxsIEpJVENvZGVHZW5lcmF0b3I6OmNhY2gKICAgICByZXR1cm4gZnVuY3Rpb25DYWxs
OwogfQogCi12b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxl
ciYsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6
OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBz
Y3JhdGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGppdCk7CiAgICAgVU5VU0VEX1BBUkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRj
aCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3Jh
dGNoKTsKKworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBKSVRDb21w
aWxlcjo6ZW1pdENvdW50KGppdCwgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3Io
dXNlS2luZCkpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0
QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCkKQEAgLTQ3Nyw3ICs0ODMsNyBAQCB2b2lkIEpJVENvZGVHZW5l
cmF0b3I6OmNhY2hlZFB1dEJ5SWQoR1BSCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBz
dHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHNj
cmF0Y2hHUFIpOworICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwg
V3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dw
cnMucmVsZWFzZShpbmZvLmdwcigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUJh
cnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcg
b3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAg
IHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxp
ZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2
ZTMgPSBJbnZhbGlkR1BSUmVnKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQx
LDE4ICsxMDQxLDE4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmppdEFzc2VydElzQ2VsbChHUFJSZWcK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKSAmJiBDUFUoWDg2XzY0KSAv
LyBPciBhbnkgb3RoZXIgNjQtYml0IHBsYXRmb3JtIQotdm9pZCBKSVRDb21waWxlcjo6ZW1pdENv
dW50KEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNyZW1lbnQp
Cit2b2lkIEpJVENvbXBpbGVyOjplbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKLSAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFk
ZHJlc3NPZkNvdW50ZXIoKSkpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVu
dCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwogfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpICYmIENQVShYODYpIC8vIE9yIGFu
eSBvdGhlciBsaXR0bGUtZW5kaWFuIDMyLWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklUQ29tcGlsZXI6
OmVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5j
cmVtZW50KQordm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KE1hY3JvQXNlbWJsZXImIGppdCwg
QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsK
ICAgICBpbnRwdHJfdCBoaVdvcmQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3VudGVy
LmFkZHJlc3NPZkNvdW50ZXIoKSkgKyBzaXplb2YoaW50MzJfdCk7Ci0gICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50
ZXIoKSkpOwotICAgIGFkZFdpdGhDYXJyeTMyKFRydXN0ZWRJbW0zMigwKSwgQWJzb2x1dGVBZGRy
ZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGhpV29yZCkpKTsKKyAgICBqaXQuYWRkMzIoVHJ1
c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNv
dW50ZXIoKSkpOworICAgIGppdC5hZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIoMCksIEFic29s
dXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gOTM1ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw3ICsyNzMsMTEgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKFNBTVBMSU5HX0NPVU5URVJTKQogICAgIC8vIERlYnVnIHByb2ZpbGluZyB0b29sLgotICAg
IHZvaWQgZW1pdENvdW50KEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVt
ZW50ID0gMSk7CisgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiwgQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXImLCB1aW50MzJfdCBpbmNyZW1lbnQgPSAxKTsKKyAgICB2b2lk
IGVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5j
cmVtZW50ID0gMSkKKyAgICB7CisgICAgICAgIGVtaXRDb3VudCgqdGhpcywgY291bnRlciwgaW5j
cmVtZW50KTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9uU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAg
dm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBwcm9wZXJ0
eS51c2UoKTsKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAotICAgICAgICB3cml0ZUJh
cnJpZXIobV9qaXQsIGJhc2VHUFIsIHN0b3JhZ2VHUFIpOworICAgICAgICB3cml0ZUJhcnJpZXIo
bV9qaXQsIGJhc2VHUFIsIHN0b3JhZ2VHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
KTsKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKIApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBOb25TcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0UmVnKTsKIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2Jh
bE9iamVjdFJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xv
YmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7
CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxP
YmplY3RSZWcsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNo
UmVnKTsKICAgICAgICAgbV9qaXQuc3RvcmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yR2xvYmFsVmFyKHNjcmF0Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gOTM1ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNT
dGF0ZSogZQogICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKHN0dWJKaXQsIHNjcmF0
Y2hHUFIsICgqaXQpLT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVC
YXJyaWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgSklUQ29k
ZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIFdy
aXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21w
aWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFy
cmllcihtX2ppdCwgYmFzZVJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllciht
X2ppdCwgYmFzZVJlZywgc2NyYXRjaFJlZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3Mp
OwogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJv
cGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXks
IHdlIGNhbiBza2lwIHRoZSBjaGVjay4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBi
YXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAK
LSAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAg
ICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJG
b3JQcm9wZXJ0eUFjY2Vzcyk7CiAKICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgog
ICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHNjcmF0Y2hSZWc7CkBAIC0xMTY1LDcgKzExNjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFy
cmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVC
YXJyaWVyKG1faml0LCBnbG9iYWxPYmplY3RSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZv
clZhcmlhYmxlQWNjZXNzKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdp
c3RlcnMoKSksIHNjcmF0Y2hSZWcpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIo
KSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJO
dW1iZXIoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MzU4MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
OSw3ICsyOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRlc3RQcm90b3R5
cGUoSlNWYWx1ZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CiAKLSAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAg
ICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQs
IFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGVtaXRXcml0ZUJhcnJp
ZXIocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwgV3Jp
dGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0Fy
cmF5VlB0cikpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1Qy
LCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAK
QEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qCiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsK
ICAgICAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAg
ICAKICAgICBCRUdJTl9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAg
ICAgCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpbwogI2VuZGlmCiAgICAgfQogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVn
VDEpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7CiAKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVy
ZSksIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNpZiBDUFUo
TUlQUykgfHwgQ1BVKFNINCkgfHwgQ1BVKEFSTSkKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwgcmVnVDIp
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5O
b2RlLCBvYmplY3QpKSwgcmVnVDIpOwogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMiwgcmVn
VDMpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMik7CiAgICAgZW1pdFN0b3JlKGluZGV4
LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTEwODIsMTggKzEwODIsMjMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdU
MSwgcmVnVDApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMik7
CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMyk7CisgICAgZW1pdFdyaXRlQmFy
cmllcihyZWdUMiwgcmVnVDMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3Rl
cnMoKSksIHJlZ1QyKTsKICAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDIp
OwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9wdXRfZ2xvYmFs
X3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFy
cmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCit2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFdyaXRl
QmFycmllclVzZUtpbmQgdXNlS2luZCkKIHsKICAgICBVTlVTRURfUEFSQU0ob3duZXIpOwogICAg
IFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICBVTlVTRURfUEFSQU0odXNlS2luZCk7CiAgICAg
QVNTRVJUKG93bmVyICE9IHNjcmF0Y2gpOworICAgIAorI2lmIEVOQUJMRShXUklURV9CQVJSSUVS
X1BST0ZJTElORykKKyAgICBlbWl0Q291bnQoV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50
ZXJGb3IodXNlS2luZCkpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJl
dmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBp
ZiBlaXRoZXIgdGhlIGJhc2Ugb2JqZWN0IGlzIGFuIGltbWVkaWF0ZSwgb3IgaWYgdGhlIFN0cnVj
dHVyZSBkb2VzIG5vdCBtYXRjaC4KICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIGJhc2VWUmVnKTsKIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5
SWQpOwogCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpbwogICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdU
Myk7CiAgICAgfQogICAgIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgY29tcGlsZVB1dERp
cmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIG5ld1N0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKQEAg
LTk5Niw3ICs5OTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVj
CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hh
aW5Ob2RlLCBuZXh0KSksIHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIE9CSkVD
VF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgb2JqZWN0KSksIHJlZ1QxKTsKIAotICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCBy
ZWdUMiwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QxLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDEp
OwogICAgIHN0b3JlUHRyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpAQCAtMTAxNywxNyArMTAxNywyMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QxKTsKICAgICAKLSAgICBl
bWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdU
MSwgcmVnVDIsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMSwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJl
Z1QxKTsKICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG93
bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtp
bmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKyAgICAKKyNpZiBFTkFCTEUoV1JJ
VEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgZW1pdENvdW50KFdyaXRlQmFycmllckNvdW50ZXJz
OjpqaXRDb3VudGVyRm9yKHVzZUtpbmQpKTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIApAQCAtNDgsNiArNDksOSBAQCBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdGlhbGl6
ZVRocmVhZGluCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAg
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJP
RklMSU5HKQorICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CisjZW5kaWYK
ICAgICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExF
X1RIUkVBRFMpCiAgICAgUmVnaXN0ZXJGaWxlOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAkocmV2aXNp
b24gOTM1ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsMTMgQEAKIAogI2luY2x1ZGUgIkhhbmRsZVR5
cGVzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgog
I2luY2x1ZGUgIlR5cGVUcmFpdHMuaCIKIAorLy8gQ291bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmll
cnMgdXNpbmcgc2FtcGxpbmcgY291bnRlcnMuIEJlIHN1cmUgdG8gYWxzbworLy8gc2V0IEVOQUJM
RV9TQU1QTElOR19DT1VOVEVSUyB0byAxIGluIHd0Zi9QbGF0Zm9ybS5oLgorI2RlZmluZSBFTkFC
TEVfV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcgMAorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SlNDZWxsOwpAQCAtNjMsNiArNjgsNjEgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQg
dmFsaWRhdGVDZQogfQogI2VuZGlmCiAKKy8vIFRoaXMgYWxsb3dzIHRoZSBKSVQgdG8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiB1c2VzIG9mIHRoZSBiYXJyaWVyIGZvciBkaWZmZXJlbnQKKy8vIGtpbmRz
IG9mIHdyaXRlcy4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBKSVQgZm9yIHByb2ZpbGluZywgYW5kIG1h
eSBiZSBhcHByb3ByaWF0ZQorLy8gZm9yIGFsbG93aW5nIHRoZSBHQyBpbXBsZW1lbnRhdGlvbiB0
byBzcGVjaWFsaXplIHRoZSBKSVQncyB3cml0ZSBiYXJyaWVyIGNvZGUKKy8vIGZvciBkaWZmZXJl
bnQga2luZHMgb2YgdGFyZ2V0IG9iamVjdHMuCitlbnVtIFdyaXRlQmFycmllclVzZUtpbmQgewor
ICAgIC8vIFRoaXMgYWxsb3dzIHNwZWNpYWxpemF0aW9uIGZvciBhY2Nlc3MgdG8gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgKGVpdGhlcgorICAgIC8vIGFycmF5IGVsZW1lbnQgb3IgcHJvcGVydHkpLCBi
dXQgbm90IGZvciBhbnkgb3RoZXIga2luZCBvZiBwcm9wZXJ0eQorICAgIC8vIGFjY2Vzc2VzIChz
dWNoIGFzIHdyaXRlcyB0aGF0IGFyZSBhIGNvbnNlcXVlbmNlIG9mIHNldHRlciBleGVjdXRpb24p
LgorICAgIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLAorICAgIAorICAgIC8vIFRoaXMg
YWxsb3dzIHNwZWNpYWxpemF0aW9uIGZvciB2YXJpYWJsZSBhY2Nlc3NlcyAoc3VjaCBhcyBnbG9i
YWwgb3IKKyAgICAvLyBzY29wZWQgdmFyaWFibGVzKS4KKyAgICBXcml0ZUJhcnJpZXJGb3JWYXJp
YWJsZUFjY2VzcywKKyAgICAKKyAgICAvLyBUaGlzIGNhcHR1cmVzIGFsbCBvdGhlciBmb3JtcyBv
ZiB3cml0ZSBiYXJyaWVycy4gSXQgc2hvdWxkIGFsd2F5cyBiZQorICAgIC8vIGNvcnJlY3QgdG8g
dXNlIGEgZ2VuZXJpYyBhY2Nlc3Mgd3JpdGUgYmFycmllciwgZXZlbiB3aGVuIHN0b3JpbmcgdG8K
KyAgICAvLyBwcm9wZXJ0aWVzLiBIZW5jZSwgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBuZWNlc3Nh
cnksIGl0IGlzIHByZWZlcmFibGUKKyAgICAvLyB0byBqdXN0IHVzZSBhIGdlbmVyaWMgYWNjZXNz
LgorICAgIFdyaXRlQmFycmllckZvckdlbmVyaWNBY2Nlc3MKK307CisKK2NsYXNzIFdyaXRlQmFy
cmllckNvdW50ZXJzIHsKK3ByaXZhdGU6CisgICAgV3JpdGVCYXJyaWVyQ291bnRlcnMoKSB7IH0K
KworcHVibGljOgorI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBzdGF0
aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgc3Rh
dGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOworICAg
IHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhCYXJyaWVyRnJvbUppdDsKKyAg
ICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNGb3JQcm9wZXJ0aWVzRnJvbUppdDsK
KyAgICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNGb3JWYXJpYWJsZXNGcm9tSml0
OworICAgIHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJv
bUppdDsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisgICAgCisgICAgc3Rh
dGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciYgaml0Q291bnRlckZvcihXcml0ZUJhcnJpZXJVc2VL
aW5kIHVzZUtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHVzZUtpbmQpIHsKKyAgICAgICAg
Y2FzZSBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2VzczoKKyAgICAgICAgICAgIHJldHVybiB1
c2VzRm9yUHJvcGVydGllc0Zyb21KaXQ7CisgICAgICAgIGNhc2UgV3JpdGVCYXJyaWVyRm9yVmFy
aWFibGVBY2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gdXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQodXNlS2luZCA9PSBXcml0ZUJh
cnJpZXJGb3JHZW5lcmljQWNjZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB1c2VzV2l0aEJhcnJp
ZXJGcm9tSml0OworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICAvLyBUaGVzZSBhcmUgbmVj
ZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIG5vdCBoYXZpbmcgY29uZGl0aW9uYWwgZXhwb3J0cy4KKyAg
ICBzdGF0aWMgY2hhciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOworICAgIHN0YXRpYyBjaGFyIHVz
ZXNXaXRob3V0QmFycmllckZyb21DcHA7CisjZW5kaWYgLy8gRU5BQkxFKFdSSVRFX0JBUlJJRVJf
UFJPRklMSU5HKQorfTsKKwogLy8gV2UgaGF2ZSBhIHNlcGFyYXRlIGJhc2UgY2xhc3Mgd2l0aCBu
byBjb25zdHJ1Y3RvcnMgZm9yIHVzZSBpbiBVbmlvbnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJsaWM6CkBAIC04NCw2ICsxNDQsOSBAQCBwdWJs
aWM6CiAgICAgLy8gd2hlbiBzb21lIGJhc2ljIHR5cGVzIGFyZW4ndCB5ZXQgY29tcGxldGVseSBp
bnN0YW50aWF0ZWQKICAgICB2b2lkIHNldEVhcmx5VmFsdWUoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDZWxsKiBvd25lciwgVCogdmFsdWUpCiAgICAgeworI2lmIEVOQUJMRShXUklURV9CQVJSSUVS
X1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNXaXRoQmFycmll
ckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgogICAgICAgICB0aGlzLT5tX2NlbGwgPSByZWludGVy
cHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsKICAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93
bmVyLCB0aGlzLT5tX2NlbGwpOwogICAgIH0KQEAgLTEyMCw2ICsxODMsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCogdmFsdWUpCiAgICAgeworI2lmIEVO
QUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRl
cnM6OnVzZXNXaXRob3V0QmFycmllckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgogICAgICAgICB0
aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsKICAgICB9CiAK
</data>
<flag name="commit-queue"
          id="100771"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104801</attachid>
            <date>2011-08-23 01:11:21 -0700</date>
            <delta_ts>2011-08-23 13:04:49 -0700</delta_ts>
            <desc>the patch (fix added file)</desc>
            <filename>writebarrierprofile_patch_3.diff</filename>
            <type>text/plain</type>
            <size>30552</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcDoKKyAgICAgICAgKiBieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRQdXRCeUlkKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21w
aWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmVtaXRDb3VudCk6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29t
cGlsZXI6OmVtaXRDb3VudCk6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpERkc6OnRyeUNhY2hlUHV0
QnlJRCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92
YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjpp
bml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ0NvdW50
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI6OmR1
bXApOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6Y291bnQpOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6YWRkcmVzc09mQ291bnRlcik6CisgICAgICAgIChKU0M6
OkFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjppbml0KToKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdD
b3VudGVyOjpTYW1wbGluZ0NvdW50ZXIpOgorICAgICAgICAoSlNDOjpHbG9iYWxTYW1wbGluZ0Nv
dW50ZXI6Om5hbWUpOgorICAgICAgICAoSlNDOjpEZWxldGFibGVTYW1wbGluZ0NvdW50ZXI6OkRl
bGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgIChKU0M6OkRlbGV0YWJsZVNhbXBsaW5n
Q291bnRlcjo6fkRlbGV0YWJsZVNhbXBsaW5nQ291bnRlcik6CisgICAgICAgICogcnVudGltZS9X
cml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6OldyaXRl
QmFycmllckNvdW50ZXJzKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQ291bnRlcnM6Ompp
dENvdW50ZXJGb3IpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpzZXRFYXJseVZh
bHVlKToKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0aG91dFdyaXRlQmFy
cmllcik6CisKIDIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTYW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5dGVjb2RlIGRpcmVj
dG9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9BbGlnbm1lbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BbHdheXNJbmxpbmUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmggXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA5MzU4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMCw2ICsyMTAsOCBAQCBfX1pOM0pTQzE5U291cmNlUHJvdmlkZXJDYWNoZUQxRXYKIF9f
Wk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlNDMjBNYXJrZWRBcmd1bWVudEJ1
ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMjBjcmVhdGVSZWZlcmVuY2VF
cnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MyMFdyaXRlQmFycmll
ckNvdW50ZXJzMjJ1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwRQorX19aTjNKU0MyMFdyaXRlQmFycmll
ckNvdW50ZXJzMjV1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwRQogX19aTjNKU0MyMmdsb2JhbE1l
bW9yeVN0YXRpc3RpY3NFdgogX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9yVGFibGVFCiBfX1pO
M0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYg
KzE5NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAgICAg
cnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAgXAogICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAor
ICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmNwcCBcCiAgICAgeWFyci9ZYXJySklULmNwcCBcCiAK
ICpzaDQqIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM3LDYgKzEyMzcsMTAgQEAKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcV2Vha1JhbmRvbS5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFdyaXRlQmFycmllci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgogCQkJTmFtZT0i
QVBJIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNTgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDkgQEAKIAkJMEJERkZBRTEwRkM2
MTkzMTAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCREZGQUQxMEZDNjE2RUMwMEQ2OUVGNCAvKiBPd25G
YXN0TWFsbG9jUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OwogCQkwRjI5NDc5QzEyNkU2OThDMDBC
M0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJl
ci5jcHAgKi87IH07Ci0JCTBGNzcwMDkwMTQwMkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcw
MDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgfTsKKwkJMEY3NzAw
OTAxNDAyRkRFNDAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAw
OTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07CisJCTBGNzcw
MDk0MTQwMzJERUIwMDc4RUIzOSAvKiBXcml0ZUJhcnJpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTMxNDAzMkRERTAwNzhFQjM5IC8q
IFdyaXRlQmFycmllci5jcHAgKi87IH07CiAJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBW
YWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAw
NjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEy
MyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKQEAgLTczNCw2ICs3MzUsNyBAQAogCQkw
RjI5NDc5QjEyNkU2OThDMDBCM0FCRjUgLyogRGVjaW1hbE51bWJlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjc3MDA5MzE0MDMyRERFMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRlQmFycmllci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVQcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0Fs
bG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9jYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NDMsNiArMTg0NSw3IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1l
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjc3MDA5
MzE0MDMyRERFMDA3OEVCMzkgLyogV3JpdGVCYXJyaWVyLmNwcCAqLywKIAkJCQkwRjc3MDA5MTE0
MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKIAkJCQkwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIw
M0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLApAQCAtMjg0OCw2ICsyODUxLDcgQEAKIAkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTBGNzcwMDk0MTQwMzJERUIwMDc4RUIzOSAvKiBXcml0
ZUJhcnJpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VD
Mzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEw
N0VDMzc2MDA0MjdBNDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwxMSArNDY1LDE3IEBAIEpJVENvbXBp
bGVyOjpDYWxsIEpJVENvZGVHZW5lcmF0b3I6OmNhY2gKICAgICByZXR1cm4gZnVuY3Rpb25DYWxs
OwogfQogCi12b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxl
ciYsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6
OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBz
Y3JhdGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CisgICAgVU5VU0VEX1BBUkFN
KGppdCk7CiAgICAgVU5VU0VEX1BBUkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRj
aCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3Jh
dGNoKTsKKworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBKSVRDb21w
aWxlcjo6ZW1pdENvdW50KGppdCwgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3Io
dXNlS2luZCkpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0
QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCkKQEAgLTQ3Nyw3ICs0ODMsNyBAQCB2b2lkIEpJVENvZGVHZW5l
cmF0b3I6OmNhY2hlZFB1dEJ5SWQoR1BSCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBz
dHJ1Y3R1cmVUb0NvbXBhcmU7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlVG9Db21wYXJlLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPigtMSkpKTsKICAgICAKLSAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHNj
cmF0Y2hHUFIpOworICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwg
V3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3Jh
Z2UoKSksIHNjcmF0Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdp
dGhQYXRjaCA9IG1faml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dw
cnMucmVsZWFzZShpbmZvLmdwcigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUJh
cnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BS
KTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcg
b3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAg
IHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxp
ZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2
ZTMgPSBJbnZhbGlkR1BSUmVnKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQx
LDE4ICsxMDQxLDE4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmppdEFzc2VydElzQ2VsbChHUFJSZWcK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKSAmJiBDUFUoWDg2XzY0KSAv
LyBPciBhbnkgb3RoZXIgNjQtYml0IHBsYXRmb3JtIQotdm9pZCBKSVRDb21waWxlcjo6ZW1pdENv
dW50KEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNyZW1lbnQp
Cit2b2lkIEpJVENvbXBpbGVyOjplbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKLSAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFk
ZHJlc3NPZkNvdW50ZXIoKSkpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVu
dCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwogfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpICYmIENQVShYODYpIC8vIE9yIGFu
eSBvdGhlciBsaXR0bGUtZW5kaWFuIDMyLWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklUQ29tcGlsZXI6
OmVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5j
cmVtZW50KQordm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KE1hY3JvQXNlbWJsZXImIGppdCwg
QWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsK
ICAgICBpbnRwdHJfdCBoaVdvcmQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3VudGVy
LmFkZHJlc3NPZkNvdW50ZXIoKSkgKyBzaXplb2YoaW50MzJfdCk7Ci0gICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50
ZXIoKSkpOwotICAgIGFkZFdpdGhDYXJyeTMyKFRydXN0ZWRJbW0zMigwKSwgQWJzb2x1dGVBZGRy
ZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGhpV29yZCkpKTsKKyAgICBqaXQuYWRkMzIoVHJ1
c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNv
dW50ZXIoKSkpOworICAgIGppdC5hZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIoMCksIEFic29s
dXRlQWRkcmVzcyhyZWludGVycHJldF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gOTM1ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw3ICsyNzMsMTEgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKFNBTVBMSU5HX0NPVU5URVJTKQogICAgIC8vIERlYnVnIHByb2ZpbGluZyB0b29sLgotICAg
IHZvaWQgZW1pdENvdW50KEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVt
ZW50ID0gMSk7CisgICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiwgQWJz
dHJhY3RTYW1wbGluZ0NvdW50ZXImLCB1aW50MzJfdCBpbmNyZW1lbnQgPSAxKTsKKyAgICB2b2lk
IGVtaXRDb3VudChBYnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5j
cmVtZW50ID0gMSkKKyAgICB7CisgICAgICAgIGVtaXRDb3VudCgqdGhpcywgY291bnRlciwgaW5j
cmVtZW50KTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9uU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAg
dm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBwcm9wZXJ0
eS51c2UoKTsKICAgICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAotICAgICAgICB3cml0ZUJh
cnJpZXIobV9qaXQsIGJhc2VHUFIsIHN0b3JhZ2VHUFIpOworICAgICAgICB3cml0ZUJhcnJpZXIo
bV9qaXQsIGJhc2VHUFIsIHN0b3JhZ2VHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNz
KTsKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKIApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBOb25TcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgp
KSwgZ2xvYmFsT2JqZWN0UmVnKTsKIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2Jh
bE9iamVjdFJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xv
YmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7
CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxP
YmplY3RSZWcsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNo
UmVnKTsKICAgICAgICAgbV9qaXQuc3RvcmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yR2xvYmFsVmFyKHNjcmF0Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gOTM1ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNT
dGF0ZSogZQogICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKHN0dWJKaXQsIHNjcmF0
Y2hHUFIsICgqaXQpLT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVC
YXJyaWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgSklUQ29k
ZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIFdy
aXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
c3R1YkppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSk7CiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21w
aWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFy
cmllcihtX2ppdCwgYmFzZVJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllciht
X2ppdCwgYmFzZVJlZywgc2NyYXRjaFJlZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3Mp
OwogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJv
cGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXks
IHdlIGNhbiBza2lwIHRoZSBjaGVjay4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBi
YXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAK
LSAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAg
ICAgd3JpdGVCYXJyaWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJG
b3JQcm9wZXJ0eUFjY2Vzcyk7CiAKICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgog
ICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHNjcmF0Y2hSZWc7CkBAIC0xMTY1LDcgKzExNjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAg
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFy
cmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVC
YXJyaWVyKG1faml0LCBnbG9iYWxPYmplY3RSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZv
clZhcmlhYmxlQWNjZXNzKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGdsb2JhbE9iamVjdFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdp
c3RlcnMoKSksIHNjcmF0Y2hSZWcpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIo
KSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJO
dW1iZXIoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MzU4MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
OSw3ICsyOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHRlc3RQcm90b3R5
cGUoSlNWYWx1ZSwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcyk7CiAKLSAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAg
ICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIFdyaXRlQmFycmllclVzZUtpbmQpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENsYXNzVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gdm9pZCBlbWl0QWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KFN0cnVjdHVyZVR5cGUsIHZvaWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQs
IFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChUIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGVtaXRXcml0ZUJhcnJp
ZXIocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwgV3Jp
dGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0Fy
cmF5VlB0cikpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1Qy
LCBBZGRyZXNzKHJlZ1QwLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAK
QEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qCiAgICAgCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsK
ICAgICAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAg
ICAKICAgICBCRUdJTl9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAg
ICAgCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRy
YW5zaXRpbwogI2VuZGlmCiAgICAgfQogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVn
VDEpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2Vzcyk7CiAKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVy
ZSksIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKICNpZiBDUFUo
TUlQUykgfHwgQ1BVKFNINCkgfHwgQ1BVKEFSTSkKQEAgLTEwNTEsNyArMTA1MSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwgcmVnVDIp
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5O
b2RlLCBvYmplY3QpKSwgcmVnVDIpOwogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMiwgcmVn
VDMpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMik7CiAgICAgZW1pdFN0b3JlKGluZGV4
LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTEwODIsMTggKzEwODIsMjMgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdU
MSwgcmVnVDApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMik7
CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMyk7CisgICAgZW1pdFdyaXRlQmFy
cmllcihyZWdUMiwgcmVnVDMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3Rl
cnMoKSksIHJlZ1QyKTsKICAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDIp
OwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9wdXRfZ2xvYmFs
X3ZhciksIHZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFy
cmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCit2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFdyaXRl
QmFycmllclVzZUtpbmQgdXNlS2luZCkKIHsKICAgICBVTlVTRURfUEFSQU0ob3duZXIpOwogICAg
IFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICBVTlVTRURfUEFSQU0odXNlS2luZCk7CiAgICAg
QVNTRVJUKG93bmVyICE9IHNjcmF0Y2gpOworICAgIAorI2lmIEVOQUJMRShXUklURV9CQVJSSUVS
X1BST0ZJTElORykKKyAgICBlbWl0Q291bnQoV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50
ZXJGb3IodXNlS2luZCkpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJl
dmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBp
ZiBlaXRoZXIgdGhlIGJhc2Ugb2JqZWN0IGlzIGFuIGltbWVkaWF0ZSwgb3IgaWYgdGhlIFN0cnVj
dHVyZSBkb2VzIG5vdCBtYXRjaC4KICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIGJhc2VWUmVnKTsKIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5
SWQpOwogCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpbwogICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdU
Myk7CiAgICAgfQogICAgIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QyKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgY29tcGlsZVB1dERp
cmVjdE9mZnNldChyZWdUMCwgcmVnVDEsIG5ld1N0cnVjdHVyZSwgY2FjaGVkT2Zmc2V0KTsKQEAg
LTk5Niw3ICs5OTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVj
CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hh
aW5Ob2RlLCBuZXh0KSksIHJlZ1QxKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIE9CSkVD
VF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgb2JqZWN0KSksIHJlZ1QxKTsKIAotICAgIGVtaXRX
cml0ZUJhcnJpZXIocmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCBy
ZWdUMiwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QxLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDEp
OwogICAgIHN0b3JlUHRyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwpAQCAtMTAxNywxNyArMTAxNywyMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QxKTsKICAgICAKLSAgICBl
bWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdU
MSwgcmVnVDIsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMSwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJl
Z1QxKTsKICAgICBzdG9yZVB0cihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG93
bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtp
bmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKyAgICAKKyNpZiBFTkFCTEUoV1JJ
VEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgZW1pdENvdW50KFdyaXRlQmFycmllckNvdW50ZXJz
OjpqaXRDb3VudGVyRm9yKHVzZUtpbmQpKTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgIldyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIApAQCAtNDgsNiArNDksOSBAQCBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdGlhbGl6
ZVRocmVhZGluCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAg
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJP
RklMSU5HKQorICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CisjZW5kaWYK
ICAgICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExF
X1RIUkVBRFMpCiAgICAgUmVnaXN0ZXJGaWxlOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKK0dsb2JhbFNhbXBsaW5nQ291
bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKK0dsb2Jh
bFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVy
RnJvbUNwcDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNl
c1dpdGhCYXJyaWVyRnJvbUppdDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJD
b3VudGVyczo6dXNlc0ZvclByb3BlcnRpZXNGcm9tSml0OworR2xvYmFsU2FtcGxpbmdDb3VudGVy
IFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzRm9yVmFyaWFibGVzRnJvbUppdDsKK0dsb2JhbFNh
bXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJv
bUppdDsKKwordm9pZCBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpCit7CisgICAg
dXNlc1dpdGhCYXJyaWVyRnJvbUNwcC5uYW1lKCJXaXRoQmFycmllckZyb21DcHAiKTsKKyAgICB1
c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwLm5hbWUoIldpdGhvdXRCYXJyaWVyRnJvbUNwcCIpOwor
ICAgIHVzZXNXaXRoQmFycmllckZyb21KaXQubmFtZSgiV2l0aEJhcnJpZXJGcm9tSml0Iik7Cisg
ICAgdXNlc0ZvclByb3BlcnRpZXNGcm9tSml0Lm5hbWUoIldyaXRlRm9yUHJvcGVydGllc0Zyb21K
aXQiKTsKKyAgICB1c2VzRm9yVmFyaWFibGVzRnJvbUppdC5uYW1lKCJXcml0ZUZvclZhcmlhYmxl
c0Zyb21KaXQiKTsKKyAgICB1c2VzV2l0aG91dEJhcnJpZXJGcm9tSml0Lm5hbWUoIldpdGhvdXRC
YXJyaWVyRnJvbUppdCIpOworfQorI2Vsc2UKK2NoYXIgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVz
ZXNXaXRoQmFycmllckZyb21DcHA7CitjaGFyIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0
aG91dEJhcnJpZXJGcm9tQ3BwOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAkocmV2aXNp
b24gOTM1ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsMTMgQEAKIAogI2luY2x1ZGUgIkhhbmRsZVR5
cGVzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgog
I2luY2x1ZGUgIlR5cGVUcmFpdHMuaCIKIAorLy8gQ291bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmll
cnMgdXNpbmcgc2FtcGxpbmcgY291bnRlcnMuIEJlIHN1cmUgdG8gYWxzbworLy8gc2V0IEVOQUJM
RV9TQU1QTElOR19DT1VOVEVSUyB0byAxIGluIHd0Zi9QbGF0Zm9ybS5oLgorI2RlZmluZSBFTkFC
TEVfV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcgMAorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SlNDZWxsOwpAQCAtNjMsNiArNjgsNjEgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQg
dmFsaWRhdGVDZQogfQogI2VuZGlmCiAKKy8vIFRoaXMgYWxsb3dzIHRoZSBKSVQgdG8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiB1c2VzIG9mIHRoZSBiYXJyaWVyIGZvciBkaWZmZXJlbnQKKy8vIGtpbmRz
IG9mIHdyaXRlcy4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBKSVQgZm9yIHByb2ZpbGluZywgYW5kIG1h
eSBiZSBhcHByb3ByaWF0ZQorLy8gZm9yIGFsbG93aW5nIHRoZSBHQyBpbXBsZW1lbnRhdGlvbiB0
byBzcGVjaWFsaXplIHRoZSBKSVQncyB3cml0ZSBiYXJyaWVyIGNvZGUKKy8vIGZvciBkaWZmZXJl
bnQga2luZHMgb2YgdGFyZ2V0IG9iamVjdHMuCitlbnVtIFdyaXRlQmFycmllclVzZUtpbmQgewor
ICAgIC8vIFRoaXMgYWxsb3dzIHNwZWNpYWxpemF0aW9uIGZvciBhY2Nlc3MgdG8gdGhlIHByb3Bl
cnR5IHN0b3JhZ2UgKGVpdGhlcgorICAgIC8vIGFycmF5IGVsZW1lbnQgb3IgcHJvcGVydHkpLCBi
dXQgbm90IGZvciBhbnkgb3RoZXIga2luZCBvZiBwcm9wZXJ0eQorICAgIC8vIGFjY2Vzc2VzIChz
dWNoIGFzIHdyaXRlcyB0aGF0IGFyZSBhIGNvbnNlcXVlbmNlIG9mIHNldHRlciBleGVjdXRpb24p
LgorICAgIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLAorICAgIAorICAgIC8vIFRoaXMg
YWxsb3dzIHNwZWNpYWxpemF0aW9uIGZvciB2YXJpYWJsZSBhY2Nlc3NlcyAoc3VjaCBhcyBnbG9i
YWwgb3IKKyAgICAvLyBzY29wZWQgdmFyaWFibGVzKS4KKyAgICBXcml0ZUJhcnJpZXJGb3JWYXJp
YWJsZUFjY2VzcywKKyAgICAKKyAgICAvLyBUaGlzIGNhcHR1cmVzIGFsbCBvdGhlciBmb3JtcyBv
ZiB3cml0ZSBiYXJyaWVycy4gSXQgc2hvdWxkIGFsd2F5cyBiZQorICAgIC8vIGNvcnJlY3QgdG8g
dXNlIGEgZ2VuZXJpYyBhY2Nlc3Mgd3JpdGUgYmFycmllciwgZXZlbiB3aGVuIHN0b3JpbmcgdG8K
KyAgICAvLyBwcm9wZXJ0aWVzLiBIZW5jZSwgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBuZWNlc3Nh
cnksIGl0IGlzIHByZWZlcmFibGUKKyAgICAvLyB0byBqdXN0IHVzZSBhIGdlbmVyaWMgYWNjZXNz
LgorICAgIFdyaXRlQmFycmllckZvckdlbmVyaWNBY2Nlc3MKK307CisKK2NsYXNzIFdyaXRlQmFy
cmllckNvdW50ZXJzIHsKK3ByaXZhdGU6CisgICAgV3JpdGVCYXJyaWVyQ291bnRlcnMoKSB7IH0K
KworcHVibGljOgorI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBzdGF0
aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgc3Rh
dGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOworICAg
IHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhCYXJyaWVyRnJvbUppdDsKKyAg
ICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNGb3JQcm9wZXJ0aWVzRnJvbUppdDsK
KyAgICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNGb3JWYXJpYWJsZXNGcm9tSml0
OworICAgIHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJv
bUppdDsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisgICAgCisgICAgc3Rh
dGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciYgaml0Q291bnRlckZvcihXcml0ZUJhcnJpZXJVc2VL
aW5kIHVzZUtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHVzZUtpbmQpIHsKKyAgICAgICAg
Y2FzZSBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2VzczoKKyAgICAgICAgICAgIHJldHVybiB1
c2VzRm9yUHJvcGVydGllc0Zyb21KaXQ7CisgICAgICAgIGNhc2UgV3JpdGVCYXJyaWVyRm9yVmFy
aWFibGVBY2Nlc3M6CisgICAgICAgICAgICByZXR1cm4gdXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQodXNlS2luZCA9PSBXcml0ZUJh
cnJpZXJGb3JHZW5lcmljQWNjZXNzKTsKKyAgICAgICAgICAgIHJldHVybiB1c2VzV2l0aEJhcnJp
ZXJGcm9tSml0OworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICAvLyBUaGVzZSBhcmUgbmVj
ZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIG5vdCBoYXZpbmcgY29uZGl0aW9uYWwgZXhwb3J0cy4KKyAg
ICBzdGF0aWMgY2hhciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOworICAgIHN0YXRpYyBjaGFyIHVz
ZXNXaXRob3V0QmFycmllckZyb21DcHA7CisjZW5kaWYgLy8gRU5BQkxFKFdSSVRFX0JBUlJJRVJf
UFJPRklMSU5HKQorfTsKKwogLy8gV2UgaGF2ZSBhIHNlcGFyYXRlIGJhc2UgY2xhc3Mgd2l0aCBu
byBjb25zdHJ1Y3RvcnMgZm9yIHVzZSBpbiBVbmlvbnMuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgV3JpdGVCYXJyaWVyQmFzZSB7CiBwdWJsaWM6CkBAIC04NCw2ICsxNDQsOSBAQCBwdWJs
aWM6CiAgICAgLy8gd2hlbiBzb21lIGJhc2ljIHR5cGVzIGFyZW4ndCB5ZXQgY29tcGxldGVseSBp
bnN0YW50aWF0ZWQKICAgICB2b2lkIHNldEVhcmx5VmFsdWUoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SlNDZWxsKiBvd25lciwgVCogdmFsdWUpCiAgICAgeworI2lmIEVOQUJMRShXUklURV9CQVJSSUVS
X1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNXaXRoQmFycmll
ckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgogICAgICAgICB0aGlzLT5tX2NlbGwgPSByZWludGVy
cHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsKICAgICAgICAgSGVhcDo6d3JpdGVCYXJyaWVyKG93
bmVyLCB0aGlzLT5tX2NlbGwpOwogICAgIH0KQEAgLTEyMCw2ICsxODMsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFdpdGhvdXRXcml0ZUJhcnJpZXIoVCogdmFsdWUpCiAgICAgeworI2lmIEVO
QUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRl
cnM6OnVzZXNXaXRob3V0QmFycmllckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgogICAgICAgICB0
aGlzLT5tX2NlbGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsKICAgICB9CiAK
</data>
<flag name="review"
          id="100775"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104902</attachid>
            <date>2011-08-23 13:04:49 -0700</date>
            <delta_ts>2011-08-24 00:49:29 -0700</delta_ts>
            <desc>the patch (fix review)</desc>
            <filename>writebarrierprofile_patch_4.diff</filename>
            <type>text/plain</type>
            <size>34813</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM2MjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0pJVENv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQp
OgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdSZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGhlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6V3JpdGVCYXJyaWVyQ291bnRlcnMpOgorICAg
ICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcik6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcik6CisgICAgICAg
ICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2Jh
bF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3Jp
dGVCYXJyaWVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGlt
ZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0
aG91dFdyaXRlQmFycmllcik6CisKIDIwMTEtMDgtMjMgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFy
cmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NTM0NwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9PbGRT
cGFjZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V3JpdGVCYXJyaWVyU3VwcG9ydC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lv
biA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOCBAQCBfX1pOM0pTQzE5U291cmNlUHJvdmlkZXJD
YWNoZUQxRXYKIF9fWk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlNDMjBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMjBjcmVh
dGVSZWZlcmVuY2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0My
MFdyaXRlQmFycmllckNvdW50ZXJzMjJ1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwRQorX19aTjNKU0My
MFdyaXRlQmFycmllckNvdW50ZXJzMjV1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwRQogX19aTjNK
U0MyMmdsb2JhbE1lbW9yeVN0YXRpc3RpY3NFdgogX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9y
VGFibGVFCiBfX1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNTgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5
KQpAQCAtNzksNiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2NrLmNw
cCBcCiAgICAgaGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwKKyAg
ICBoZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgXAogICAg
IGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gOTM1ODApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk2OSw2ICsxOTY5
LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9
Ii4uXC4uXGhlYXBcV2Vhay5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKwkJCSAgICA8RmlsZQorCQkJ
CSAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiCisJ
CQkJICAgID4KKwkJCSAgICA8L0ZpbGU+CisJCQkgICAgPEZpbGUKKwkJCQkgICAgUmVsYXRpdmVQ
YXRoPSIuLlwuLlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIKKwkJCQkgICAgPgorCQkJICAg
IDwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNv
bmZpZy5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDExIEBACiAJCTBCREZGQUUx
MEZDNjE5MzEwMEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBENjlFRjQgLyog
T3duRmFzdE1hbGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFB
MzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKIAkJMEYyOTQ3OUMxMjZFNjk4
QzAwQjNBQkY1IC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyOTQ3OUIxMjZFNjk4QzAwQjNBQkY1IC8qIERlY2ltYWxO
dW1iZXIuY3BwICovOyB9OwotCQkwRjc3MDA5MDE0MDJGREU0MDA3OEVCMzkgLyogU2FtcGxpbmdD
b3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IH07CisJCTBG
NzcwMDkwMTQwMkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwogCQkw
Rjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIg
LyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBv
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgx
NTA5MTQwNDNCRDIwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDODE1MEIxNDA0M0MwRTAw
Q0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdyaXRl
QmFycmllclN1cHBvcnQuY3BwICovOyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyog
T1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEw
MDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9j
YXRvclBvc2l4LmNwcCAqLzsgfTsKIAkJMTQwNTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJ
VmFsdWVXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDg5NEQ1MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAg
Ki87IH07CkBAIC03MzUsNiArNzM3LDggQEAKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1w
bGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAy
RkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJy
aWVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0
ZUJhcnJpZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDODE1
MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxs
b2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NB
bGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2
MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1MDUsNiArMTUwOSw4IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFw
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUw
OTE0MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJCTBGQzgx
NTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKIAkJCQkx
NDZCMTREQjEyRUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJ
CTE0OURBQUYyMTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJ
CTE0MkUzMTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKQEAgLTIyMzksNiArMjI0
NSw3IEBACiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJy
YXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZB
NjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4
MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yODQ4LDYgKzI4NTUsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CisJCQkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5n
Q291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDgg
LyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0MjdB
NDggLyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiA5MzU4
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2NSwxMSArNDY1LDE3IEBAIEpJVENvbXBpbGVyOjpDYWxsIEpJ
VENvZGVHZW5lcmF0b3I6OmNhY2gKICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogfQogCi12b2lk
IEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBv
d25lciwgR1BSUmVnIHNjcmF0Y2gpCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmll
cihNYWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoLCBXcml0
ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiB7CisgICAgVU5VU0VEX1BBUkFNKGppdCk7CiAgICAg
VU5VU0VEX1BBUkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5V
U0VEX1BBUkFNKHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKworI2lm
IEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBKSVRDb21waWxlcjo6ZW1pdENv
dW50KGppdCwgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3IodXNlS2luZCkpOwor
I2VuZGlmCiB9CiAKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCkKQEAgLTQ3Nyw3ICs0ODMsNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OmNhY2hl
ZFB1dEJ5SWQoR1BSCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0Nv
bXBhcmU7CiAgICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5icmFu
Y2hQdHJXaXRoUGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJl
LCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkp
KTsKICAgICAKLSAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOwor
ICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0
Y2hHUFIpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1f
aml0LnN0b3JlUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkzNTgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dwcnMucmVsZWFzZShp
bmZvLmdwcigpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9B
c3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKKyAgICBzdGF0
aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAgIHN0YXRpYyBHUFJS
ZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BS
UmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlk
R1BSUmVnKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQxLDE4ICsxMDQxLDE4
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmppdEFzc2VydElzQ2VsbChHUFJSZWcKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKSAmJiBDUFUoWDg2XzY0KSAvLyBPciBhbnkgb3Ro
ZXIgNjQtYml0IHBsYXRmb3JtIQotdm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KEFic3RyYWN0
U2FtcGxpbmdDb3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNyZW1lbnQpCit2b2lkIEpJVENv
bXBpbGVyOjplbWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0Nv
dW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKLSAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50
ZXIoKSkpOworICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRl
QWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwogfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfQ09VTlRFUlMpICYmIENQVShYODYpIC8vIE9yIGFueSBvdGhlciBsaXR0
bGUtZW5kaWFuIDMyLWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklUQ29tcGlsZXI6OmVtaXRDb3VudChB
YnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50KQordm9p
ZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KE1hY3JvQXNlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKICAgICBpbnRwdHJf
dCBoaVdvcmQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3VudGVyLmFkZHJlc3NPZkNv
dW50ZXIoKSkgKyBzaXplb2YoaW50MzJfdCk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKGluY3Jl
bWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAg
IGFkZFdpdGhDYXJyeTMyKFRydXN0ZWRJbW0zMigwKSwgQWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGhpV29yZCkpKTsKKyAgICBqaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGlu
Y3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwor
ICAgIGppdC5hZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIoMCksIEFic29sdXRlQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTM1ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Myw3ICsyNzMsMTEgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNBTVBMSU5H
X0NPVU5URVJTKQogICAgIC8vIERlYnVnIHByb2ZpbGluZyB0b29sLgotICAgIHZvaWQgZW1pdENv
dW50KEFic3RyYWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVtZW50ID0gMSk7Cisg
ICAgc3RhdGljIHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiwgQWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXImLCB1aW50MzJfdCBpbmNyZW1lbnQgPSAxKTsKKyAgICB2b2lkIGVtaXRDb3VudChB
YnN0cmFjdFNhbXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50ID0gMSkK
KyAgICB7CisgICAgICAgIGVtaXRDb3VudCgqdGhpcywgY291bnRlciwgaW5jcmVtZW50KTsKKyAg
ICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiA5MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOb25TcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKICAg
ICAgICAgdmFsdWUudXNlKCk7CiAgICAgICAgIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQs
IGJhc2VHUFIsIHN0b3JhZ2VHUFIpOworICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VH
UFIsIHN0b3JhZ2VHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICAgICAg
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVz
dFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKTsKIApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShTcGVjdWxhdAogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2Jq
ZWN0UmVnKTsKIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2JhbE9iamVjdFJlZywg
c2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVn
LCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RSZWcsIEpT
VmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoUmVnKTsKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yR2xv
YmFsVmFyKHNjcmF0Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gOTM1ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUs
NyArNTI1LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAg
ICAgICAgICAgICAgICAgICB0ZXN0UHJvdG90eXBlKHN0dWJKaXQsIHNjcmF0Y2hHUFIsICgqaXQp
LT5zdG9yZWRQcm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKHN0dWJK
aXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6
d3JpdGVCYXJyaWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3R1YkppdC5zdG9y
ZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDkzNTgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwg
YmFzZVJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJl
Zywgc2NyYXRjaFJlZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29u
dGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElm
IHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lw
IHRoZSBjaGVjay4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICAgICAgd3Jp
dGVCYXJyaWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJy
aWVyKG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFj
Y2Vzcyk7CiAKICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgogICAgICAgICBHUFJS
ZWcgc3RvcmFnZVJlZyA9IHNjcmF0Y2hSZWc7CkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgbV9qaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0KCkpLCBnbG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwg
Z2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0
LCBnbG9iYWxPYmplY3RSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNj
ZXNzKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGds
b2JhbE9iamVjdFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHNj
cmF0Y2hSZWcpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJOdW1iZXIoKSkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTM1ODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk5ld1NwYWNlLmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMjM4LDYgKzIzOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogI2lmIEVOQUJMRShHR0MpCiAgICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVC
YXJyaWVyKGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTQ2VsbCogY2VsbCkKICAgICB7CisgICAgICAg
IFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAgICAgICBpZiAo
TWFya2VkQmxvY2s6OmJsb2NrRm9yKG93bmVyKS0+aW5OZXdTcGFjZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB3cml0ZUJhcnJpZXJTbG93Q2FzZShvd25lciwgY2VsbCk7CkBAIC0y
NDUsNiArMjQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgdm9pZCBIZWFwOjp3
cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7Cisg
ICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAgICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXZhbHVlLmlz
Q2VsbCgpKQpAQCAtMjU2LDEwICsyNTksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxp
bmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxsKikKICAgICB7
CisgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAg
IH0KIAogICAgIGlubGluZSB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBK
U1ZhbHVlKQogICAgIHsKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVC
YXJyaWVyKCk7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2lm
IEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBX
cml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKK0dsb2JhbFNhbXBs
aW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNw
cDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhC
YXJyaWVyRnJvbUppdDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVy
czo6dXNlc0ZvclByb3BlcnRpZXNGcm9tSml0OworR2xvYmFsU2FtcGxpbmdDb3VudGVyIFdyaXRl
QmFycmllckNvdW50ZXJzOjp1c2VzRm9yVmFyaWFibGVzRnJvbUppdDsKK0dsb2JhbFNhbXBsaW5n
Q291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUppdDsK
Kwordm9pZCBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpCit7CisgICAgdXNlc1dp
dGhCYXJyaWVyRnJvbUNwcC5uYW1lKCJXaXRoQmFycmllckZyb21DcHAiKTsKKyAgICB1c2VzV2l0
aG91dEJhcnJpZXJGcm9tQ3BwLm5hbWUoIldpdGhvdXRCYXJyaWVyRnJvbUNwcCIpOworICAgIHVz
ZXNXaXRoQmFycmllckZyb21KaXQubmFtZSgiV2l0aEJhcnJpZXJGcm9tSml0Iik7CisgICAgdXNl
c0ZvclByb3BlcnRpZXNGcm9tSml0Lm5hbWUoIldyaXRlRm9yUHJvcGVydGllc0Zyb21KaXQiKTsK
KyAgICB1c2VzRm9yVmFyaWFibGVzRnJvbUppdC5uYW1lKCJXcml0ZUZvclZhcmlhYmxlc0Zyb21K
aXQiKTsKKyAgICB1c2VzV2l0aG91dEJhcnJpZXJGcm9tSml0Lm5hbWUoIldpdGhvdXRCYXJyaWVy
RnJvbUppdCIpOworfQorI2Vsc2UKK2NoYXIgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNXaXRo
QmFycmllckZyb21DcHA7CitjaGFyIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0aG91dEJh
cnJpZXJGcm9tQ3BwOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9y
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
cml0ZUJhcnJpZXJTdXBwb3J0X2gKKyNkZWZpbmUgV3JpdGVCYXJyaWVyU3VwcG9ydF9oCisKKyNp
bmNsdWRlICJTYW1wbGluZ0NvdW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworLy8gVGhpcyBhbGxvd3MgdGhlIEpJVCB0byBkaXN0aW5ndWlz
aCBiZXR3ZWVuIHVzZXMgb2YgdGhlIGJhcnJpZXIgZm9yIGRpZmZlcmVudAorLy8ga2luZHMgb2Yg
d3JpdGVzLiBUaGlzIGlzIHVzZWQgYnkgdGhlIEpJVCBmb3IgcHJvZmlsaW5nLCBhbmQgbWF5IGJl
IGFwcHJvcHJpYXRlCisvLyBmb3IgYWxsb3dpbmcgdGhlIEdDIGltcGxlbWVudGF0aW9uIHRvIHNw
ZWNpYWxpemUgdGhlIEpJVCdzIHdyaXRlIGJhcnJpZXIgY29kZQorLy8gZm9yIGRpZmZlcmVudCBr
aW5kcyBvZiB0YXJnZXQgb2JqZWN0cy4KK2VudW0gV3JpdGVCYXJyaWVyVXNlS2luZCB7CisgICAg
Ly8gVGhpcyBhbGxvd3Mgc3BlY2lhbGl6YXRpb24gZm9yIGFjY2VzcyB0byB0aGUgcHJvcGVydHkg
c3RvcmFnZSAoZWl0aGVyCisgICAgLy8gYXJyYXkgZWxlbWVudCBvciBwcm9wZXJ0eSksIGJ1dCBu
b3QgZm9yIGFueSBvdGhlciBraW5kIG9mIHByb3BlcnR5CisgICAgLy8gYWNjZXNzZXMgKHN1Y2gg
YXMgd3JpdGVzIHRoYXQgYXJlIGEgY29uc2VxdWVuY2Ugb2Ygc2V0dGVyIGV4ZWN1dGlvbikuCisg
ICAgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsCisgICAgCisgICAgLy8gVGhpcyBhbGxv
d3Mgc3BlY2lhbGl6YXRpb24gZm9yIHZhcmlhYmxlIGFjY2Vzc2VzIChzdWNoIGFzIGdsb2JhbCBv
cgorICAgIC8vIHNjb3BlZCB2YXJpYWJsZXMpLgorICAgIFdyaXRlQmFycmllckZvclZhcmlhYmxl
QWNjZXNzLAorICAgIAorICAgIC8vIFRoaXMgY2FwdHVyZXMgYWxsIG90aGVyIGZvcm1zIG9mIHdy
aXRlIGJhcnJpZXJzLiBJdCBzaG91bGQgYWx3YXlzIGJlCisgICAgLy8gY29ycmVjdCB0byB1c2Ug
YSBnZW5lcmljIGFjY2VzcyB3cml0ZSBiYXJyaWVyLCBldmVuIHdoZW4gc3RvcmluZyB0bworICAg
IC8vIHByb3BlcnRpZXMuIEhlbmNlLCBpZiBvcHRpbWl6YXRpb24gaXMgbm90IG5lY2Vzc2FyeSwg
aXQgaXMgcHJlZmVyYWJsZQorICAgIC8vIHRvIGp1c3QgdXNlIGEgZ2VuZXJpYyBhY2Nlc3MuCisg
ICAgV3JpdGVCYXJyaWVyRm9yR2VuZXJpY0FjY2VzcworfTsKKworY2xhc3MgV3JpdGVCYXJyaWVy
Q291bnRlcnMgeworcHJpdmF0ZToKKyAgICBXcml0ZUJhcnJpZXJDb3VudGVycygpIHsgfQorCitw
dWJsaWM6CisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIHN0YXRpYyBH
bG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKKyAgICBzdGF0aWMg
R2xvYmFsU2FtcGxpbmdDb3VudGVyIHVzZXNXaXRob3V0QmFycmllckZyb21DcHA7CisgICAgc3Rh
dGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aEJhcnJpZXJGcm9tSml0OworICAgIHN0
YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc0ZvclByb3BlcnRpZXNGcm9tSml0OworICAg
IHN0YXRpYyBHbG9iYWxTYW1wbGluZ0NvdW50ZXIgdXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7Cisg
ICAgc3RhdGljIEdsb2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tSml0
OworICAgIAorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKyAgICAKKyAgICBzdGF0aWMg
R2xvYmFsU2FtcGxpbmdDb3VudGVyJiBqaXRDb3VudGVyRm9yKFdyaXRlQmFycmllclVzZUtpbmQg
dXNlS2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodXNlS2luZCkgeworICAgICAgICBjYXNl
IFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIHVzZXNG
b3JQcm9wZXJ0aWVzRnJvbUppdDsKKyAgICAgICAgY2FzZSBXcml0ZUJhcnJpZXJGb3JWYXJpYWJs
ZUFjY2VzczoKKyAgICAgICAgICAgIHJldHVybiB1c2VzRm9yVmFyaWFibGVzRnJvbUppdDsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVCh1c2VLaW5kID09IFdyaXRlQmFycmll
ckZvckdlbmVyaWNBY2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuIHVzZXNXaXRoQmFycmllckZy
b21KaXQ7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIC8vIFRoZXNlIGFyZSBuZWNlc3Nh
cnkgdG8gd29yayBhcm91bmQgbm90IGhhdmluZyBjb25kaXRpb25hbCBleHBvcnRzLgorICAgIHN0
YXRpYyBjaGFyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgc3RhdGljIGNoYXIgdXNlc1dp
dGhvdXRCYXJyaWVyRnJvbUNwcDsKKyNlbmRpZiAvLyBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9G
SUxJTkcpCisKKyAgICBzdGF0aWMgdm9pZCBjb3VudFdyaXRlQmFycmllcigpCisgICAgeworI2lm
IEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291
bnRlcnM6OnVzZXNXaXRoQmFycmllckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgorICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV3JpdGVCYXJyaWVyU3VwcG9ydF9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTM1ODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0ZXN0UHJvdG90eXBlKEpTVmFs
dWUsIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogCi0gICAgICAgIHZvaWQgZW1pdFdyaXRlQmFy
cmllcihSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAgICB2b2lk
IGVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBX
cml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5
cGUsIHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVj
dChTdHJ1Y3R1cmVUeXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3Rl
cklEIHN0b3JhZ2VQdHIpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRB
bGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdp
c3RlcklEIHN0b3JhZ2VQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiA5MzU4MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KEluc3RydWN0aW9uCiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1Qw
LCByZWdUMSk7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIp
KSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVz
cyhyZWdUMCwgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAgICAgCkBAIC0zOTUs
NyArMzk1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAg
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAgICAgCi0g
ICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEpOworICAgIGVtaXRXcml0ZUJhcnJpZXIo
cmVnVDAsIHJlZ1QxLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAgICAgCiAgICAg
QkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogICAgIApAQCAt
NTIxLDcgKzUyMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8K
ICNlbmRpZgogICAgIH0KIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MpOwogCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgQ1BVKE1JUFMpIHx8
IENQVShTSDQpIHx8IENQVShBUk0pCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfc2NvcGVkX3ZhcihJbnN0cnVjCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MiwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSksIHJlZ1QyKTsKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgb2Jq
ZWN0KSksIHJlZ1QyKTsKIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzKTsKKyAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVB
Y2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1ZhcmlhYmxlT2JqZWN0Ojpv
ZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDIpOwogICAgIGVtaXRTdG9yZShpbmRleCwgcmVnVDEs
IHJlZ1QwLCByZWdUMik7CkBAIC0xMDgyLDE4ICsxMDgyLDIzIEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9nbG9iYWxfdmFyKEluc3RydWMKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOwogCi0gICAg
ZW1pdFdyaXRlQmFycmllcihyZWdUMiwgcmVnVDMpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVn
VDIsIHJlZ1QzLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBy
ZWdUMik7CiAgICAgZW1pdFN0b3JlKGluZGV4LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKICAgICBt
YXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92YXIpLCB2
YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVn
aXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJh
cnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJV
c2VLaW5kIHVzZUtpbmQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG93bmVyKTsKICAgICBVTlVTRURf
UEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtpbmQpOwogICAgIEFTU0VSVChv
d25lciAhPSBzY3JhdGNoKTsKKyAgICAKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJ
TkcpCisgICAgZW1pdENvdW50KFdyaXRlQmFycmllckNvdW50ZXJzOjpqaXRDb3VudGVyRm9yKHVz
ZUtpbmQpKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiA5
MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X2lkKEluc3RydWN0aW9uKgogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgZWl0aGVy
IHRoZSBiYXNlIG9iamVjdCBpcyBhbiBpbW1lZGlhdGUsIG9yIGlmIHRoZSBTdHJ1Y3R1cmUgZG9l
cyBub3QgbWF0Y2guCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNl
VlJlZyk7CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdFdy
aXRlQmFycmllcihyZWdUMCwgcmVnVDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsK
IAogICAgIEJFR0lOX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIApA
QCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW8KICAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogICAg
IH0KICAgICAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdFdy
aXRlQmFycmllcihyZWdUMCwgcmVnVDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsK
IAogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgIGNvbXBpbGVQdXREaXJlY3RPZmZz
ZXQocmVnVDAsIHJlZ1QxLCBuZXdTdHJ1Y3R1cmUsIGNhY2hlZE9mZnNldCk7CkBAIC05OTYsNyAr
OTk2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwg
bmV4dCkpLCByZWdUMSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VU
T0YoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCkpLCByZWdUMSk7CiAKLSAgICBlbWl0V3JpdGVCYXJy
aWVyKHJlZ1QxLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMSwgcmVnVDIsIFdy
aXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MSwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QxKTsKICAgICBz
dG9yZVB0cihyZWdUMCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCAqIHNpemVvZihSZWdpc3RlcikpKTsKQEAgLTEwMTcsMTcgKzEwMTcsMjIgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCByZWdUMSk7CiAgICAgCi0gICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMSwgcmVnVDIpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDEsIHJlZ1Qy
LCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDEsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CiAg
ICAgc3RvcmVQdHIocmVnVDAsIEFkZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQgKiBzaXplb2YoUmVnaXN0ZXIpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0V3JpdGVC
YXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjpl
bWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3Jp
dGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQogewogICAgIFVOVVNFRF9QQVJBTShvd25lcik7CiAg
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgIFVOVVNFRF9QQVJBTSh1c2VLaW5kKTsKICAg
ICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaCk7CisgICAgCisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJ
RVJfUFJPRklMSU5HKQorICAgIGVtaXRDb3VudChXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291
bnRlckZvcih1c2VLaW5kKSk7CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gOTM1ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAK
QEAgLTQ4LDYgKzQ5LDkgQEAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRp
bgogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQogewogICAgIFdURjo6aW5p
dGlhbGl6ZVRocmVhZGluZygpOworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykK
KyAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCiAgICAgSlNH
bG9iYWxEYXRhOjpzdG9yZVZQdHJzKCk7CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURT
KQogICAgIFJlZ2lzdGVyRmlsZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHJldmlzaW9uIDkzNTgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgogI2luY2x1ZGUg
IlR5cGVUcmFpdHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjAsNiArMTIxLDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKFQqIHZhbHVlKQogICAgIHsK
KyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRlQmFycmll
ckNvdW50ZXJzOjp1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5kaWYKICAg
ICAgICAgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5
MzU4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBj
b3B5KQpAQCAtOTc3LDYgKzk3NywxMiBAQAogI2RlZmluZSBFTkFCTEVfVkVSQk9TRV9WQUxVRV9Q
Uk9GSUxFIDAKICNlbmRpZgogCisvKiBDb3VudHMgdXNlcyBvZiB3cml0ZSBiYXJyaWVycyB1c2lu
ZyBzYW1wbGluZyBjb3VudGVycy4gQmUgc3VyZSB0byBhbHNvCisgICBzZXQgRU5BQkxFX1NBTVBM
SU5HX0NPVU5URVJTIHRvIDEuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX1dSSVRFX0JBUlJJRVJf
UFJPRklMSU5HKQorI2RlZmluZSBFTkFCTEVfV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcgMAorI2Vu
ZGlmCisKIC8qIEVuc3VyZSB0aGF0IGVpdGhlciB0aGUgSklUIG9yIHRoZSBpbnRlcnByZXRlciBo
YXMgYmVlbiBlbmFibGVkLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9JTlRFUlBSRVRFUikgJiYg
IUVOQUJMRShKSVQpCiAjZGVmaW5lIEVOQUJMRV9JTlRFUlBSRVRFUiAxCg==
</data>
<flag name="review"
          id="100897"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104969</attachid>
            <date>2011-08-24 00:49:29 -0700</date>
            <delta_ts>2011-08-24 01:04:41 -0700</delta_ts>
            <desc>the patch (fix review)</desc>
            <filename>writebarrierprofile_patch_5.diff</filename>
            <type>text/plain</type>
            <size>35542</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0pJVENv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQp
OgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdSZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGhlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6V3JpdGVCYXJyaWVyQ291bnRlcnMpOgorICAg
ICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcik6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcik6CisgICAgICAg
ICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2Jh
bF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3Jp
dGVCYXJyaWVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGlt
ZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0
aG91dFdyaXRlQmFycmllcik6CisKIDIwMTEtMDgtMjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2hlY2tzIHRvIGVuc3VyZSBhbGxvY2F0
aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIEdDLW1hbmFn
ZWQgb2JqZWN0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9PbGRTcGFjZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vhay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA5MzY5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMCw2ICsyMTAsOCBAQCBfX1pOM0pTQzE5U291cmNlUHJvdmlkZXJDYWNoZUQxRXYK
IF9fWk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlNDMjBNYXJrZWRBcmd1bWVu
dEJ1ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMjBjcmVhdGVSZWZlcmVu
Y2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MyMFdyaXRlQmFy
cmllckNvdW50ZXJzMjJ1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwRQorX19aTjNKU0MyMFdyaXRlQmFy
cmllckNvdW50ZXJzMjV1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwRQogX19aTjNKU0MyMmdsb2Jh
bE1lbW9yeVN0YXRpc3RpY3NFdgogX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9yVGFibGVFCiBf
X1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNzks
NiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2NrLmNwcCBcCiAgICAg
aGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwKKyAgICBoZWFwL1dy
aXRlQmFycmllclN1cHBvcnQuY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
Y3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgXAogICAgIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk2OSw2ICsxOTY5LDE0IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhl
YXBcV2Vhay5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKwkJCSAgICA8RmlsZQorCQkJCSAgICBSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiCisJCQkJICAgID4K
KwkJCSAgICA8L0ZpbGU+CisJCQkgICAgPEZpbGUKKwkJCQkgICAgUmVsYXRpdmVQYXRoPSIuLlwu
LlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIKKwkJCQkgICAgPgorCQkJICAgIDwvRmlsZT4K
IAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbmZpZy5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNjk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDExIEBACiAJCTBCREZGQUUxMEZDNjE5MzEw
MEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBENjlFRjQgLyogT3duRmFzdE1h
bGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKIAkJMEYyOTQ3OUMxMjZFNjk4QzAwQjNBQkY1
IC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyOTQ3OUIxMjZFNjk4QzAwQjNBQkY1IC8qIERlY2ltYWxOdW1iZXIuY3Bw
ICovOyB9OwotCQkwRjc3MDA5MDE0MDJGREU0MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IH07CisJCTBGNzcwMDkwMTQw
MkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkxMTQw
MkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwogCQkwRjk2M0IzODEz
RkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQ
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA5MTQwNDNC
RDIwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1
cHBvcnQuY3BwICovOyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
Njc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCAqLzsgfTsKIAkJMTQwNTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MDg5NEQ1MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBA
IC03MzUsNiArNzM3LDggQEAKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5n
Q291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDODE1MDkxNDA0M0JE
MjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9z
aXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQ
b3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4QUQ0QTkw
MDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDUs
NiArMTUwOSw4IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUwOTE0MDQzQkQy
MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJCTBGQzgxNTA4MTQwNDNC
Q0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKIAkJCQkxNDZCMTREQjEy
RUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYy
MTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCTE0MkUzMTJC
MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKQEAgLTIyMzksNiArMjI0NSw3IEBACiAJ
CQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkw
MDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODQ4LDYgKzI4NTUsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZD
ODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0MjdBNDggLyogQXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2NSwxMSArNDY1LDE3IEBAIEpJVENvbXBpbGVyOjpDYWxsIEpJVENvZGVHZW5l
cmF0b3I6OmNhY2gKICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogfQogCi12b2lkIEpJVENvZGVH
ZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lciwgR1BS
UmVnIHNjcmF0Y2gpCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fz
c2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoLCBXcml0ZUJhcnJpZXJV
c2VLaW5kIHVzZUtpbmQpCiB7CisgICAgVU5VU0VEX1BBUkFNKGppdCk7CiAgICAgVU5VU0VEX1BB
UkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFN
KHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKworI2lmIEVOQUJMRShX
UklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBKSVRDb21waWxlcjo6ZW1pdENvdW50KGppdCwg
V3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3IodXNlS2luZCkpOworI2VuZGlmCiB9
CiAKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkK
QEAgLTQ3Nyw3ICs0ODMsNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZFB1dEJ5SWQo
R1BSCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5icmFuY2hQdHJXaXRo
UGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAK
LSAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgIHdyaXRl
QmFycmllcihtX2ppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVy
dHlBY2Nlc3MpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwog
ICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3Jl
UHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dwcnMucmVsZWFzZShpbmZvLmdwcigp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXIm
LCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0
U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNl
cnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQxLDE4ICsxMDQxLDE4IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmppdEFzc2VydElzQ2VsbChHUFJSZWcKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX0NPVU5URVJTKSAmJiBDUFUoWDg2XzY0KSAvLyBPciBhbnkgb3RoZXIgNjQtYml0
IHBsYXRmb3JtIQotdm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KEFic3RyYWN0U2FtcGxpbmdD
b3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNyZW1lbnQpCit2b2lkIEpJVENvbXBpbGVyOjpl
bWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNv
dW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKGlu
Y3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwor
ICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhj
b3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfQ09VTlRFUlMpICYmIENQVShYODYpIC8vIE9yIGFueSBvdGhlciBsaXR0bGUtZW5kaWFu
IDMyLWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklUQ29tcGlsZXI6OmVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50KQordm9pZCBKSVRDb21w
aWxlcjo6ZW1pdENvdW50KE1hY3JvQXNlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKICAgICBpbnRwdHJfdCBoaVdvcmQg
PSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkg
KyBzaXplb2YoaW50MzJfdCk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFi
c29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIGFkZFdpdGhD
YXJyeTMyKFRydXN0ZWRJbW0zMigwKSwgQWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGhpV29yZCkpKTsKKyAgICBqaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCks
IEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOworICAgIGppdC5h
ZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIoMCksIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3Myw3ICsyNzMsMTEgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJT
KQogICAgIC8vIERlYnVnIHByb2ZpbGluZyB0b29sLgotICAgIHZvaWQgZW1pdENvdW50KEFic3Ry
YWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVtZW50ID0gMSk7CisgICAgc3RhdGlj
IHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiwgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIm
LCB1aW50MzJfdCBpbmNyZW1lbnQgPSAxKTsKKyAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50ID0gMSkKKyAgICB7Cisg
ICAgICAgIGVtaXRDb3VudCgqdGhpcywgY291bnRlciwgaW5jcmVtZW50KTsKKyAgICB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5MzY5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKICAgICAgICAgdmFs
dWUudXNlKCk7CiAgICAgICAgIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIs
IHN0b3JhZ2VHUFIpOworICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHN0b3Jh
Z2VHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICAgICAgCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
IApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShT
cGVjdWxhdAogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0UmVnKTsK
IAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2JhbE9iamVjdFJlZywgc2NyYXRjaFJl
Zyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNo
UmVnLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RSZWcsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9qaXQu
c3RvcmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yR2xvYmFsVmFyKHNj
cmF0Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsNyArNTI1LDcg
QEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0UHJvdG90eXBlKHN0dWJKaXQsIHNjcmF0Y2hHUFIsICgqaXQpLT5zdG9yZWRQ
cm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKHN0dWJKaXQsIGJhc2VH
UFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJy
aWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkzNjk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywg
c2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywgc2NyYXRj
aFJlZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgICAgIC8vIENoZWNr
IHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdp
dGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhhdmUg
cHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBjaGVj
ay4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICAgICAgd3JpdGVCYXJyaWVy
KG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0
LCBiYXNlUmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAK
ICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgogICAgICAgICBHUFJSZWcgc3RvcmFn
ZVJlZyA9IHNjcmF0Y2hSZWc7CkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2Jq
ZWN0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0LCBnbG9iYWxP
YmplY3RSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdsb2JhbE9iamVj
dFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHNjcmF0Y2hSZWcp
OwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJOdW1iZXIoKSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk5ld1NwYWNlLmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTI5LDYgKzEzMCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAy
NDsKICAgICAgICAgCiAgICAgICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25N
dXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKKyAgICAgICAgCisjaWYgRU5BQkxFKEdH
QykKKyAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyRmFzdENhc2UoY29uc3QgSlNDZWxs
KiBvd25lciwgSlNDZWxsKiBjZWxsKTsKKyNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNWYWxpZEFs
bG9jYXRpb24oc2l6ZV90KTsKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93
Q2FzZShzaXplX3QpOwpAQCAtMjM2LDMwICsyNDEsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fQogCiAjaWYgRU5BQkxFKEdHQykKLSAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIo
Y29uc3QgSlNDZWxsKiBvd25lciwgSlNDZWxsKiBjZWxsKQorICAgIGlubGluZSB2b2lkIEhlYXA6
OndyaXRlQmFycmllckZhc3RDYXNlKGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTQ2VsbCogY2VsbCkK
ICAgICB7CiAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3Iob3duZXIpLT5pbk5ld1Nw
YWNlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdyaXRlQmFycmllclNsb3dDYXNl
KG93bmVyLCBjZWxsKTsKICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJp
ZXIoY29uc3QgSlNDZWxsKiBvd25lciwgSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgV3Jp
dGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVCYXJyaWVyKCk7CisgICAgICAgIHdyaXRlQmFy
cmllckZhc3RDYXNlKG93bmVyLCBjZWxsKTsKKyAgICB9CisKICAgICBpbmxpbmUgdm9pZCBIZWFw
Ojp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CisgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIXZhbHVl
LmlzQ2VsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3cml0ZUJhcnJpZXIob3du
ZXIsIHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyRmFzdENhc2Uob3duZXIs
IHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9Ci0KICNlbHNlCiAKICAgICBpbmxpbmUgdm9pZCBIZWFw
Ojp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNDZWxsKikKICAgICB7CisgICAgICAgIFdy
aXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAgIH0KIAogICAgIGlu
bGluZSB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKQogICAg
IHsKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVCYXJyaWVyKCk7CiAg
ICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFy
cmllclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dyaXRlQmFycmllclN1cHBvcnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyU3VwcG9ydC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShXUklU
RV9CQVJSSUVSX1BST0ZJTElORykKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJD
b3VudGVyczo6dXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBX
cml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKK0dsb2JhbFNh
bXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhCYXJyaWVyRnJvbUpp
dDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc0ZvclBy
b3BlcnRpZXNGcm9tSml0OworR2xvYmFsU2FtcGxpbmdDb3VudGVyIFdyaXRlQmFycmllckNvdW50
ZXJzOjp1c2VzRm9yVmFyaWFibGVzRnJvbUppdDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0
ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUppdDsKKwordm9pZCBXcml0
ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpCit7CisgICAgdXNlc1dpdGhCYXJyaWVyRnJv
bUNwcC5uYW1lKCJXaXRoQmFycmllckZyb21DcHAiKTsKKyAgICB1c2VzV2l0aG91dEJhcnJpZXJG
cm9tQ3BwLm5hbWUoIldpdGhvdXRCYXJyaWVyRnJvbUNwcCIpOworICAgIHVzZXNXaXRoQmFycmll
ckZyb21KaXQubmFtZSgiV2l0aEJhcnJpZXJGcm9tSml0Iik7CisgICAgdXNlc0ZvclByb3BlcnRp
ZXNGcm9tSml0Lm5hbWUoIldyaXRlRm9yUHJvcGVydGllc0Zyb21KaXQiKTsKKyAgICB1c2VzRm9y
VmFyaWFibGVzRnJvbUppdC5uYW1lKCJXcml0ZUZvclZhcmlhYmxlc0Zyb21KaXQiKTsKKyAgICB1
c2VzV2l0aG91dEJhcnJpZXJGcm9tSml0Lm5hbWUoIldpdGhvdXRCYXJyaWVyRnJvbUppdCIpOwor
fQorI2Vsc2UKK2NoYXIgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNXaXRoQmFycmllckZyb21D
cHA7CitjaGFyIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3Bw
OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXcml0ZUJhcnJpZXJT
dXBwb3J0X2gKKyNkZWZpbmUgV3JpdGVCYXJyaWVyU3VwcG9ydF9oCisKKyNpbmNsdWRlICJTYW1w
bGluZ0NvdW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworLy8gVGhpcyBhbGxvd3MgdGhlIEpJVCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHVz
ZXMgb2YgdGhlIGJhcnJpZXIgZm9yIGRpZmZlcmVudAorLy8ga2luZHMgb2Ygd3JpdGVzLiBUaGlz
IGlzIHVzZWQgYnkgdGhlIEpJVCBmb3IgcHJvZmlsaW5nLCBhbmQgbWF5IGJlIGFwcHJvcHJpYXRl
CisvLyBmb3IgYWxsb3dpbmcgdGhlIEdDIGltcGxlbWVudGF0aW9uIHRvIHNwZWNpYWxpemUgdGhl
IEpJVCdzIHdyaXRlIGJhcnJpZXIgY29kZQorLy8gZm9yIGRpZmZlcmVudCBraW5kcyBvZiB0YXJn
ZXQgb2JqZWN0cy4KK2VudW0gV3JpdGVCYXJyaWVyVXNlS2luZCB7CisgICAgLy8gVGhpcyBhbGxv
d3Mgc3BlY2lhbGl6YXRpb24gZm9yIGFjY2VzcyB0byB0aGUgcHJvcGVydHkgc3RvcmFnZSAoZWl0
aGVyCisgICAgLy8gYXJyYXkgZWxlbWVudCBvciBwcm9wZXJ0eSksIGJ1dCBub3QgZm9yIGFueSBv
dGhlciBraW5kIG9mIHByb3BlcnR5CisgICAgLy8gYWNjZXNzZXMgKHN1Y2ggYXMgd3JpdGVzIHRo
YXQgYXJlIGEgY29uc2VxdWVuY2Ugb2Ygc2V0dGVyIGV4ZWN1dGlvbikuCisgICAgV3JpdGVCYXJy
aWVyRm9yUHJvcGVydHlBY2Nlc3MsCisgICAgCisgICAgLy8gVGhpcyBhbGxvd3Mgc3BlY2lhbGl6
YXRpb24gZm9yIHZhcmlhYmxlIGFjY2Vzc2VzIChzdWNoIGFzIGdsb2JhbCBvcgorICAgIC8vIHNj
b3BlZCB2YXJpYWJsZXMpLgorICAgIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLAorICAg
IAorICAgIC8vIFRoaXMgY2FwdHVyZXMgYWxsIG90aGVyIGZvcm1zIG9mIHdyaXRlIGJhcnJpZXJz
LiBJdCBzaG91bGQgYWx3YXlzIGJlCisgICAgLy8gY29ycmVjdCB0byB1c2UgYSBnZW5lcmljIGFj
Y2VzcyB3cml0ZSBiYXJyaWVyLCBldmVuIHdoZW4gc3RvcmluZyB0bworICAgIC8vIHByb3BlcnRp
ZXMuIEhlbmNlLCBpZiBvcHRpbWl6YXRpb24gaXMgbm90IG5lY2Vzc2FyeSwgaXQgaXMgcHJlZmVy
YWJsZQorICAgIC8vIHRvIGp1c3QgdXNlIGEgZ2VuZXJpYyBhY2Nlc3MuCisgICAgV3JpdGVCYXJy
aWVyRm9yR2VuZXJpY0FjY2VzcworfTsKKworY2xhc3MgV3JpdGVCYXJyaWVyQ291bnRlcnMgewor
cHJpdmF0ZToKKyAgICBXcml0ZUJhcnJpZXJDb3VudGVycygpIHsgfQorCitwdWJsaWM6CisjaWYg
RU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIHN0YXRpYyBHbG9iYWxTYW1wbGlu
Z0NvdW50ZXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKKyAgICBzdGF0aWMgR2xvYmFsU2FtcGxp
bmdDb3VudGVyIHVzZXNXaXRob3V0QmFycmllckZyb21DcHA7CisgICAgc3RhdGljIEdsb2JhbFNh
bXBsaW5nQ291bnRlciB1c2VzV2l0aEJhcnJpZXJGcm9tSml0OworICAgIHN0YXRpYyBHbG9iYWxT
YW1wbGluZ0NvdW50ZXIgdXNlc0ZvclByb3BlcnRpZXNGcm9tSml0OworICAgIHN0YXRpYyBHbG9i
YWxTYW1wbGluZ0NvdW50ZXIgdXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7CisgICAgc3RhdGljIEds
b2JhbFNhbXBsaW5nQ291bnRlciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tSml0OworICAgIAorICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKyAgICAKKyAgICBzdGF0aWMgR2xvYmFsU2FtcGxp
bmdDb3VudGVyJiBqaXRDb3VudGVyRm9yKFdyaXRlQmFycmllclVzZUtpbmQgdXNlS2luZCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAodXNlS2luZCkgeworICAgICAgICBjYXNlIFdyaXRlQmFycmll
ckZvclByb3BlcnR5QWNjZXNzOgorICAgICAgICAgICAgcmV0dXJuIHVzZXNGb3JQcm9wZXJ0aWVz
RnJvbUppdDsKKyAgICAgICAgY2FzZSBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2VzczoKKyAg
ICAgICAgICAgIHJldHVybiB1c2VzRm9yVmFyaWFibGVzRnJvbUppdDsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVCh1c2VLaW5kID09IFdyaXRlQmFycmllckZvckdlbmVyaWNB
Y2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuIHVzZXNXaXRoQmFycmllckZyb21KaXQ7CisgICAg
ICAgIH0KKyAgICB9CisjZWxzZQorICAgIC8vIFRoZXNlIGFyZSBuZWNlc3NhcnkgdG8gd29yayBh
cm91bmQgbm90IGhhdmluZyBjb25kaXRpb25hbCBleHBvcnRzLgorICAgIHN0YXRpYyBjaGFyIHVz
ZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgc3RhdGljIGNoYXIgdXNlc1dpdGhvdXRCYXJyaWVy
RnJvbUNwcDsKKyNlbmRpZiAvLyBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisKKyAg
ICBzdGF0aWMgdm9pZCBjb3VudFdyaXRlQmFycmllcigpCisgICAgeworI2lmIEVOQUJMRShXUklU
RV9CQVJSSUVSX1BST0ZJTElORykKKyAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNX
aXRoQmFycmllckZyb21DcHAuY291bnQoKTsKKyNlbmRpZgorICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gV3JpdGVCYXJyaWVyU3VwcG9ydF9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0ZXN0UHJvdG90eXBlKEpTVmFsdWUsIEp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMpOwogCi0gICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihSZWdpc3Rl
cklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAgICB2b2lkIGVtaXRXcml0ZUJh
cnJpZXIoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJV
c2VLaW5kKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1l
IFN0cnVjdHVyZVR5cGU+IHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVU
eXBlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3JhZ2VQ
dHIpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGVtaXRBbGxvY2F0ZUpTRmlu
YWxPYmplY3QoVCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIHN0b3Jh
Z2VQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1OSw3ICsyNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9u
CiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSk7Cisg
ICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEsIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDApLCBUcnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMCwgSlNB
cnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAgICAgCkBAIC0zOTUsNyArMzk1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIAogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAgICAgCi0gICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1Qx
LCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAgICAgCiAgICAgQkVHSU5fVU5JTlRF
UlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZVB1dEJ5SWQpOwogICAgIApAQCAtNTIxLDcgKzUyMSw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICNlbmRpZgogICAg
IH0KIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0V3JpdGVC
YXJyaWVyKHJlZ1QwLCByZWdUMSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAg
ICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAjaWYgQ1BVKE1JUFMpIHx8IENQVShTSDQpIHx8
IENQVShBUk0pCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2Nv
cGVkX3ZhcihJbnN0cnVjCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgT0JKRUNUX09G
RlNFVE9GKFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSksIHJlZ1QyKTsKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDIsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgb2JqZWN0KSksIHJlZ1Qy
KTsKIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzKTsKKyAgICBlbWl0V3JpdGVC
YXJyaWVyKHJlZ1QyLCByZWdUMywgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogCiAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lz
dGVycygpKSwgcmVnVDIpOwogICAgIGVtaXRTdG9yZShpbmRleCwgcmVnVDEsIHJlZ1QwLCByZWdU
Mik7CkBAIC0xMDgyLDE4ICsxMDgyLDIzIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9nbG9iYWxf
dmFyKEluc3RydWMKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgcmVnVDIpOwogCi0gICAgZW1pdFdyaXRlQmFy
cmllcihyZWdUMiwgcmVnVDMpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDIsIHJlZ1QzLCBX
cml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDIsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMik7CiAgICAg
ZW1pdFN0b3JlKGluZGV4LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKICAgICBtYXAobV9ieXRlY29k
ZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfcHV0X2dsb2JhbF92YXIpLCB2YWx1ZSwgcmVnVDEs
IHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBvd25l
ciwgUmVnaXN0ZXJJRCBzY3JhdGNoKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0
ZXJJRCBvd25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtp
bmQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRj
aCk7CisgICAgVU5VU0VEX1BBUkFNKHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3Jh
dGNoKTsKKyAgICAKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgZW1p
dENvdW50KFdyaXRlQmFycmllckNvdW50ZXJzOjpqaXRDb3VudGVyRm9yKHVzZUtpbmQpKTsKKyNl
bmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3Ry
dWN0aW9uKgogICAgIC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgZWl0aGVyIHRoZSBiYXNlIG9i
amVjdCBpcyBhbiBpbW1lZGlhdGUsIG9yIGlmIHRoZSBTdHJ1Y3R1cmUgZG9lcyBub3QgbWF0Y2gu
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAKLSAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCwgcmVnVDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIEJFR0lO
X1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKIApAQCAtNTQzLDcgKzU0
Myw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwogICAgIH0KICAgICAKLSAg
ICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihy
ZWdUMCwgcmVnVDIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIHN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSkpOwogICAgIGNvbXBpbGVQdXREaXJlY3RPZmZzZXQocmVnVDAsIHJl
Z1QxLCBuZXdTdHJ1Y3R1cmUsIGNhY2hlZE9mZnNldCk7CkBAIC05OTYsNyArOTk2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdU
MSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFp
bk5vZGUsIG9iamVjdCkpLCByZWdUMSk7CiAKLSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCBy
ZWdUMik7CisgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMSwgcmVnVDIsIFdyaXRlQmFycmllckZv
clZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNWYXJpYWJs
ZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QxKTsKICAgICBzdG9yZVB0cihyZWdU
MCwgQWRkcmVzcyhyZWdUMSwgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCAqIHNpemVv
ZihSZWdpc3RlcikpKTsKQEAgLTEwMTcsMTcgKzEwMTcsMjIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QpLCByZWdUMSk7CiAgICAgCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdU
MSwgcmVnVDIpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDEsIHJlZ1QyLCBXcml0ZUJhcnJp
ZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFy
aWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CiAgICAgc3RvcmVQdHIo
cmVnVDAsIEFkZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBz
aXplb2YoUmVnaXN0ZXIpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFJlZ2lz
dGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJy
aWVyKFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyVXNl
S2luZCB1c2VLaW5kKQogewogICAgIFVOVVNFRF9QQVJBTShvd25lcik7CiAgICAgVU5VU0VEX1BB
UkFNKHNjcmF0Y2gpOworICAgIFVOVVNFRF9QQVJBTSh1c2VLaW5kKTsKICAgICBBU1NFUlQob3du
ZXIgIT0gc2NyYXRjaCk7CisgICAgCisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5H
KQorICAgIGVtaXRDb3VudChXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcih1c2VL
aW5kKSk7CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKQEAgLTQ4LDYgKzQ5
LDkgQEAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRpbgogc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBXcml0ZUJh
cnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOworI2VuZGlmCiAgICAgSlNHbG9iYWxEYXRhOjpz
dG9yZVZQdHJzKCk7CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgIFJlZ2lz
dGVyRmlsZTo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgorI2luY2x1ZGUgIlNhbXBsaW5nQ291bnRlci5oIgogI2luY2x1ZGUgIlR5cGVUcmFpdHMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjAsNiArMTIxLDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKFQqIHZhbHVlKQogICAgIHsKKyNpZiBFTkFCTEUo
V1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjp1
c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5kaWYKICAgICAgICAgdGhpcy0+
bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA5MzY5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTYz
LDYgKzk2MywxMiBAQAogI2RlZmluZSBFTkFCTEVfVkVSQk9TRV9WQUxVRV9QUk9GSUxFIDAKICNl
bmRpZgogCisvKiBDb3VudHMgdXNlcyBvZiB3cml0ZSBiYXJyaWVycyB1c2luZyBzYW1wbGluZyBj
b3VudGVycy4gQmUgc3VyZSB0byBhbHNvCisgICBzZXQgRU5BQkxFX1NBTVBMSU5HX0NPVU5URVJT
IHRvIDEuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX1dSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQor
I2RlZmluZSBFTkFCTEVfV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcgMAorI2VuZGlmCisKIC8qIEVu
c3VyZSB0aGF0IGVpdGhlciB0aGUgSklUIG9yIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBlbmFi
bGVkLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9JTlRFUlBSRVRFUikgJiYgIUVOQUJMRShKSVQp
CiAjZGVmaW5lIEVOQUJMRV9JTlRFUlBSRVRFUiAxCg==
</data>
<flag name="commit-queue"
          id="100983"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104970</attachid>
            <date>2011-08-24 01:04:41 -0700</date>
            <delta_ts>2011-08-24 02:50:55 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>writebarrierprofile_patch_6.diff</filename>
            <type>text/plain</type>
            <size>35537</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAK
KzIwMTEtMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGVyZSBpcyBubyBmYWNpbGl0eSBmb3IgcHJvZmlsaW5nIGhvdyB0aGUgd3JpdGUgYmFycmllciBp
cyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAg
ICAgICAgQWRkZWQgZmFjaWxpdGllcyBmb3IgdGhlIEpJVCB0byBzcGVjaWZ5IHRoZSBraW5kIG9m
IHdyaXRlIGJhcnJpZXIKKyAgICAgICAgYmVpbmcgZXhlY3V0ZWQuICBBZGRlZCBjb2RlIGZvciBw
cm9maWxpbmcgdGhlIG51bWJlciBvZiBlYWNoIGtpbmQKKyAgICAgICAgb2YgYmFycmllciBlbmNv
dW50ZXJlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZGZnL0RGR0pJVENv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjplbWl0Q291bnQp
OgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdSZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGhlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6
ZSk6CisgICAgICAgICogaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6V3JpdGVCYXJyaWVyQ291bnRlcnMpOgorICAg
ICAgICAoSlNDOjpXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcik6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcik6CisgICAgICAg
ICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X3Njb3BlZF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2dsb2Jh
bF92YXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9zY29wZWRfdmFyKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3B1dF9nbG9iYWxfdmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3Jp
dGVCYXJyaWVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICogcnVudGlt
ZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyQmFzZTo6c2V0V2l0
aG91dFdyaXRlQmFycmllcik6CisKIDIwMTEtMDgtMjMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhu
ZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2hlY2tzIHRvIGVuc3VyZSBhbGxvY2F0
aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIEdDLW1hbmFn
ZWQgb2JqZWN0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9PbGRTcGFjZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vhay5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA5MzY5NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMCw2ICsyMTAsOCBAQCBfX1pOM0pTQzE5U291cmNlUHJvdmlkZXJDYWNoZUQxRXYK
IF9fWk4zSlNDMTlpbml0aWFsaXplVGhyZWFkaW5nRXYKIF9fWk4zSlNDMjBNYXJrZWRBcmd1bWVu
dEJ1ZmZlcjEwc2xvd0FwcGVuZEVOU183SlNWYWx1ZUUKIF9fWk4zSlNDMjBjcmVhdGVSZWZlcmVu
Y2VFcnJvckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MyMFdyaXRlQmFy
cmllckNvdW50ZXJzMjJ1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwRQorX19aTjNKU0MyMFdyaXRlQmFy
cmllckNvdW50ZXJzMjV1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwRQogX19aTjNKU0MyMmdsb2Jh
bE1lbW9yeVN0YXRpc3RpY3NFdgogX19aTjNKU0MyMm9iamVjdENvbnN0cnVjdG9yVGFibGVFCiBf
X1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNzks
NiArNzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL01hcmtlZEJsb2NrLmNwcCBcCiAgICAg
aGVhcC9OZXdTcGFjZS5jcHAgXAogICAgIGhlYXAvT2xkU3BhY2UuY3BwIFwKKyAgICBoZWFwL1dy
aXRlQmFycmllclN1cHBvcnQuY3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
Y3BwIFwKICAgICBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgXAogICAgIGRlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk2OSw2ICsxOTY5LDE0IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhl
YXBcV2Vhay5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKwkJCSAgICA8RmlsZQorCQkJCSAgICBSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGhlYXBcV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAiCisJCQkJICAgID4K
KwkJCSAgICA8L0ZpbGU+CisJCQkgICAgPEZpbGUKKwkJCQkgICAgUmVsYXRpdmVQYXRoPSIuLlwu
LlxoZWFwXFdyaXRlQmFycmllclN1cHBvcnQuaCIKKwkJCQkgICAgPgorCQkJICAgIDwvRmlsZT4K
IAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGNvbmZpZy5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkzNjk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDExIEBACiAJCTBCREZGQUUxMEZDNjE5MzEw
MEQ2OUVGNCAvKiBPd25GYXN0TWFsbG9jUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQkRGRkFEMTBGQzYxNkVDMDBENjlFRjQgLyogT3duRmFzdE1h
bGxvY1B0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKIAkJMEYyOTQ3OUMxMjZFNjk4QzAwQjNBQkY1
IC8qIERlY2ltYWxOdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyOTQ3OUIxMjZFNjk4QzAwQjNBQkY1IC8qIERlY2ltYWxOdW1iZXIuY3Bw
ICovOyB9OwotCQkwRjc3MDA5MDE0MDJGREU0MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IH07CisJCTBGNzcwMDkwMTQw
MkZERTQwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkxMTQw
MkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwogCQkwRjk2M0IzODEz
RkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQ
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzgxNTA5MTQwNDNC
RDIwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1
cHBvcnQuY3BwICovOyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAw
Njc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4
LmNwcCAqLzsgfTsKIAkJMTQwNTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFw
cGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MDg5NEQ1MEZBRkJBMkQwMDAwMTg2NSAvKiBKU0FQSVZhbHVlV3JhcHBlci5jcHAgKi87IH07CkBA
IC03MzUsNiArNzM3LDggQEAKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5n
Q291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDODE1MDkxNDA0M0JE
MjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGVCYXJyaWVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9z
aXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQ
b3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEQxN0Q2MEU4QUQ0QTkw
MDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQmFzZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDUs
NiArMTUwOSw4IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkM4MTUwOTE0MDQzQkQy
MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJCTBGQzgxNTA4MTQwNDNC
Q0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKIAkJCQkxNDZCMTREQjEy
RUI1QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYy
MTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCTE0MkUzMTJC
MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKQEAgLTIyMzksNiArMjI0NSw3IEBACiAJ
CQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDODE1MEExNDA0M0JGNTAwQ0ZBNjAzIC8qIFdy
aXRlQmFycmllclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkw
MDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODQ4LDYgKzI4NTUsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMEZD
ODE1MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY3NzAwOTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0MjdBNDggLyogQXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2NSwxMSArNDY1LDE3IEBAIEpJVENvbXBpbGVyOjpDYWxsIEpJVENvZGVHZW5l
cmF0b3I6OmNhY2gKICAgICByZXR1cm4gZnVuY3Rpb25DYWxsOwogfQogCi12b2lkIEpJVENvZGVH
ZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lciwgR1BS
UmVnIHNjcmF0Y2gpCit2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fz
c2VtYmxlciYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoLCBXcml0ZUJhcnJpZXJV
c2VLaW5kIHVzZUtpbmQpCiB7CisgICAgVU5VU0VEX1BBUkFNKGppdCk7CiAgICAgVU5VU0VEX1BB
UkFNKG93bmVyKTsKICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgVU5VU0VEX1BBUkFN
KHVzZUtpbmQpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoKTsKKworI2lmIEVOQUJMRShX
UklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBKSVRDb21waWxlcjo6ZW1pdENvdW50KGppdCwg
V3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3IodXNlS2luZCkpOworI2VuZGlmCiB9
CiAKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgUHV0S2luZCBwdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkK
QEAgLTQ3Nyw3ICs0ODMsNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZFB1dEJ5SWQo
R1BSCiAgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmU7CiAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgc3RydWN0dXJlQ2hlY2sgPSBtX2ppdC5icmFuY2hQdHJXaXRo
UGF0Y2goSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlVG9Db21wYXJlLCBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPigtMSkpKTsKICAgICAK
LSAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIpOworICAgIHdyaXRl
QmFycmllcihtX2ppdCwgYmFzZUdQUiwgc2NyYXRjaEdQUiwgV3JpdGVCYXJyaWVyRm9yUHJvcGVy
dHlBY2Nlc3MpOwogCiAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKSksIHNjcmF0Y2hHUFIpOwog
ICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWwzMiBzdG9yZVdpdGhQYXRjaCA9IG1faml0LnN0b3Jl
UHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
c2NyYXRjaEdQUiwgMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3
ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dwcnMucmVsZWFzZShpbmZvLmdwcigp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXIm
LCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKTsKKyAgICBzdGF0aWMgdm9pZCB3
cml0ZUJhcnJpZXIoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3Jh
dGNoR1BSLCBXcml0ZUJhcnJpZXJVc2VLaW5kKTsKIAogICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0
U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNl
cnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCShyZXZpc2lvbiA5MzY5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQxLDE4ICsxMDQxLDE4IEBAIHZvaWQg
SklUQ29tcGlsZXI6OmppdEFzc2VydElzQ2VsbChHUFJSZWcKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX0NPVU5URVJTKSAmJiBDUFUoWDg2XzY0KSAvLyBPciBhbnkgb3RoZXIgNjQtYml0
IHBsYXRmb3JtIQotdm9pZCBKSVRDb21waWxlcjo6ZW1pdENvdW50KEFic3RyYWN0U2FtcGxpbmdD
b3VudGVyJiBjb3VudGVyLCB1aW50MzJfdCBpbmNyZW1lbnQpCit2b2lkIEpJVENvbXBpbGVyOjpl
bWl0Q291bnQoTWFjcm9Bc3NlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXImIGNv
dW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKGlu
Y3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwor
ICAgIGppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFic29sdXRlQWRkcmVzcyhj
b3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfQ09VTlRFUlMpICYmIENQVShYODYpIC8vIE9yIGFueSBvdGhlciBsaXR0bGUtZW5kaWFu
IDMyLWJpdCBwbGF0Zm9ybSEKLXZvaWQgSklUQ29tcGlsZXI6OmVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50KQordm9pZCBKSVRDb21w
aWxlcjo6ZW1pdENvdW50KE1hY3JvQXNlbWJsZXImIGppdCwgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXImIGNvdW50ZXIsIHVpbnQzMl90IGluY3JlbWVudCkKIHsKICAgICBpbnRwdHJfdCBoaVdvcmQg
PSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkg
KyBzaXplb2YoaW50MzJfdCk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCksIEFi
c29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOwotICAgIGFkZFdpdGhD
YXJyeTMyKFRydXN0ZWRJbW0zMigwKSwgQWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGhpV29yZCkpKTsKKyAgICBqaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGluY3JlbWVudCks
IEFic29sdXRlQWRkcmVzcyhjb3VudGVyLmFkZHJlc3NPZkNvdW50ZXIoKSkpOworICAgIGppdC5h
ZGRXaXRoQ2FycnkzMihUcnVzdGVkSW1tMzIoMCksIEFic29sdXRlQWRkcmVzcyhyZWludGVycHJl
dF9jYXN0PHZvaWQqPihoaVdvcmQpKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3Myw3ICsyNzMsMTEgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJT
KQogICAgIC8vIERlYnVnIHByb2ZpbGluZyB0b29sLgotICAgIHZvaWQgZW1pdENvdW50KEFic3Ry
YWN0U2FtcGxpbmdDb3VudGVyJiwgdWludDMyX3QgaW5jcmVtZW50ID0gMSk7CisgICAgc3RhdGlj
IHZvaWQgZW1pdENvdW50KE1hY3JvQXNzZW1ibGVyJiwgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIm
LCB1aW50MzJfdCBpbmNyZW1lbnQgPSAxKTsKKyAgICB2b2lkIGVtaXRDb3VudChBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciYgY291bnRlciwgdWludDMyX3QgaW5jcmVtZW50ID0gMSkKKyAgICB7Cisg
ICAgICAgIGVtaXRDb3VudCgqdGhpcywgY291bnRlciwgaW5jcmVtZW50KTsKKyAgICB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiA5MzY5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKICAgICAgICAgdmFs
dWUudXNlKCk7CiAgICAgICAgIAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIs
IHN0b3JhZ2VHUFIpOworICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGJhc2VHUFIsIHN0b3Jh
Z2VHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKICAgICAgICAgCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGJhc2VOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
IApAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShT
cGVjdWxhdAogCiAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0UmVnKTsK
IAotICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQsIGdsb2JhbE9iamVjdFJlZywgc2NyYXRjaFJl
Zyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2JqZWN0UmVnLCBzY3JhdGNo
UmVnLCBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcyk7CiAKICAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RSZWcsIEpTVmFyaWFibGVP
YmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9qaXQu
c3RvcmVQdHIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yR2xvYmFsVmFyKHNj
cmF0Y2hSZWcsIG5vZGUudmFyTnVtYmVyKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZXBhdGNoLmNwcAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsNyArNTI1LDcg
QEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAgICAg
ICAgICAgICB0ZXN0UHJvdG90eXBlKHN0dWJKaXQsIHNjcmF0Y2hHUFIsICgqaXQpLT5zdG9yZWRQ
cm90b3R5cGUoKSwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJyaWVyKHN0dWJKaXQsIGJhc2VH
UFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgSklUQ29kZUdlbmVyYXRvcjo6d3JpdGVCYXJy
aWVyKHN0dWJKaXQsIGJhc2VHUFIsIHNjcmF0Y2hHUFIsIFdyaXRlQmFycmllckZvclByb3BlcnR5
QWNjZXNzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3R1YkppdC5zdG9yZVB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc1VzaW5nSW5saW5lU3RvcmFnZSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkzNjk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0NSw3ICs5NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywg
c2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgYmFzZVJlZywgc2NyYXRj
aFJlZywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgICAgIC8vIENoZWNr
IHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdp
dGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhhdmUg
cHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBjaGVj
ay4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICAgICAgd3JpdGVCYXJyaWVy
KG1faml0LCBiYXNlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0
LCBiYXNlUmVnLCBzY3JhdGNoUmVnLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAK
ICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgogICAgICAgICBHUFJSZWcgc3RvcmFn
ZVJlZyA9IHNjcmF0Y2hSZWc7CkBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdCwgZ2xvYmFsT2Jq
ZWN0UmVnLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKG1faml0LCBnbG9iYWxP
YmplY3RSZWcsIHNjcmF0Y2hSZWcsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdsb2JhbE9iamVj
dFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHNjcmF0Y2hSZWcp
OwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJOdW1iZXIoKSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk5ld1NwYWNlLmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTI5LDYgKzEzMCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAy
NDsKICAgICAgICAgCiAgICAgICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25N
dXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKKyAgICAgICAgCisjaWYgRU5BQkxFKEdH
QykKKyAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyRmFzdENhc2UoY29uc3QgSlNDZWxs
KiBvd25lciwgSlNDZWxsKik7CisjZW5kaWYKIAogICAgICAgICBib29sIGlzVmFsaWRBbGxvY2F0
aW9uKHNpemVfdCk7CiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uo
c2l6ZV90KTsKQEAgLTIzNiwzMCArMjQxLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAog
I2lmIEVOQUJMRShHR0MpCi0gICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0
IEpTQ2VsbCogb3duZXIsIEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0
ZUJhcnJpZXJGYXN0Q2FzZShjb25zdCBKU0NlbGwqIG93bmVyLCBKU0NlbGwqIGNlbGwpCiAgICAg
ewogICAgICAgICBpZiAoTWFya2VkQmxvY2s6OmJsb2NrRm9yKG93bmVyKS0+aW5OZXdTcGFjZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3cml0ZUJhcnJpZXJTbG93Q2FzZShvd25l
ciwgY2VsbCk7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNv
bnN0IEpTQ2VsbCogb3duZXIsIEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIFdyaXRlQmFy
cmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOworICAgICAgICB3cml0ZUJhcnJpZXJG
YXN0Q2FzZShvd25lciwgY2VsbCk7CisgICAgfQorCiAgICAgaW5saW5lIHZvaWQgSGVhcDo6d3Jp
dGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogb3duZXIsIEpTVmFsdWUgdmFsdWUpCiAgICAgeworICAg
ICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsKICAgICAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCF2YWx1ZS5pc0Nl
bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgd3JpdGVCYXJyaWVyKG93bmVyLCB2
YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIHdyaXRlQmFycmllckZhc3RDYXNlKG93bmVyLCB2YWx1
ZS5hc0NlbGwoKSk7CiAgICAgfQotCiAjZWxzZQogCiAgICAgaW5saW5lIHZvaWQgSGVhcDo6d3Jp
dGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCiAgICAgeworICAgICAgICBXcml0ZUJh
cnJpZXJDb3VudGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsKICAgICB9CiAKICAgICBpbmxpbmUg
dm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSkKICAgICB7Cisg
ICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwogICAgIH0K
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJT
dXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0
ZUJhcnJpZXJTdXBwb3J0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldyaXRlQmFy
cmllclN1cHBvcnQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoV1JJVEVfQkFS
UklFUl9QUk9GSUxJTkcpCitHbG9iYWxTYW1wbGluZ0NvdW50ZXIgV3JpdGVCYXJyaWVyQ291bnRl
cnM6OnVzZXNXaXRoQmFycmllckZyb21DcHA7CitHbG9iYWxTYW1wbGluZ0NvdW50ZXIgV3JpdGVC
YXJyaWVyQ291bnRlcnM6OnVzZXNXaXRob3V0QmFycmllckZyb21DcHA7CitHbG9iYWxTYW1wbGlu
Z0NvdW50ZXIgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNXaXRoQmFycmllckZyb21KaXQ7CitH
bG9iYWxTYW1wbGluZ0NvdW50ZXIgV3JpdGVCYXJyaWVyQ291bnRlcnM6OnVzZXNGb3JQcm9wZXJ0
aWVzRnJvbUppdDsKK0dsb2JhbFNhbXBsaW5nQ291bnRlciBXcml0ZUJhcnJpZXJDb3VudGVyczo6
dXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7CitHbG9iYWxTYW1wbGluZ0NvdW50ZXIgV3JpdGVCYXJy
aWVyQ291bnRlcnM6OnVzZXNXaXRob3V0QmFycmllckZyb21KaXQ7CisKK3ZvaWQgV3JpdGVCYXJy
aWVyQ291bnRlcnM6OmluaXRpYWxpemUoKQoreworICAgIHVzZXNXaXRoQmFycmllckZyb21DcHAu
bmFtZSgiV2l0aEJhcnJpZXJGcm9tQ3BwIik7CisgICAgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNw
cC5uYW1lKCJXaXRob3V0QmFycmllckZyb21DcHAiKTsKKyAgICB1c2VzV2l0aEJhcnJpZXJGcm9t
Sml0Lm5hbWUoIldpdGhCYXJyaWVyRnJvbUppdCIpOworICAgIHVzZXNGb3JQcm9wZXJ0aWVzRnJv
bUppdC5uYW1lKCJXcml0ZUZvclByb3BlcnRpZXNGcm9tSml0Iik7CisgICAgdXNlc0ZvclZhcmlh
Ymxlc0Zyb21KaXQubmFtZSgiV3JpdGVGb3JWYXJpYWJsZXNGcm9tSml0Iik7CisgICAgdXNlc1dp
dGhvdXRCYXJyaWVyRnJvbUppdC5uYW1lKCJXaXRob3V0QmFycmllckZyb21KaXQiKTsKK30KKyNl
bHNlCitjaGFyIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOwor
Y2hhciBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKKyNl
bmRpZgorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV3JpdGVCYXJyaWVyU3VwcG9y
dF9oCisjZGVmaW5lIFdyaXRlQmFycmllclN1cHBvcnRfaAorCisjaW5jbHVkZSAiU2FtcGxpbmdD
b3VudGVyLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKy8vIFRoaXMgYWxsb3dzIHRoZSBKSVQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB1c2VzIG9m
IHRoZSBiYXJyaWVyIGZvciBkaWZmZXJlbnQKKy8vIGtpbmRzIG9mIHdyaXRlcy4gVGhpcyBpcyB1
c2VkIGJ5IHRoZSBKSVQgZm9yIHByb2ZpbGluZywgYW5kIG1heSBiZSBhcHByb3ByaWF0ZQorLy8g
Zm9yIGFsbG93aW5nIHRoZSBHQyBpbXBsZW1lbnRhdGlvbiB0byBzcGVjaWFsaXplIHRoZSBKSVQn
cyB3cml0ZSBiYXJyaWVyIGNvZGUKKy8vIGZvciBkaWZmZXJlbnQga2luZHMgb2YgdGFyZ2V0IG9i
amVjdHMuCitlbnVtIFdyaXRlQmFycmllclVzZUtpbmQgeworICAgIC8vIFRoaXMgYWxsb3dzIHNw
ZWNpYWxpemF0aW9uIGZvciBhY2Nlc3MgdG8gdGhlIHByb3BlcnR5IHN0b3JhZ2UgKGVpdGhlcgor
ICAgIC8vIGFycmF5IGVsZW1lbnQgb3IgcHJvcGVydHkpLCBidXQgbm90IGZvciBhbnkgb3RoZXIg
a2luZCBvZiBwcm9wZXJ0eQorICAgIC8vIGFjY2Vzc2VzIChzdWNoIGFzIHdyaXRlcyB0aGF0IGFy
ZSBhIGNvbnNlcXVlbmNlIG9mIHNldHRlciBleGVjdXRpb24pLgorICAgIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzLAorICAgIAorICAgIC8vIFRoaXMgYWxsb3dzIHNwZWNpYWxpemF0aW9u
IGZvciB2YXJpYWJsZSBhY2Nlc3NlcyAoc3VjaCBhcyBnbG9iYWwgb3IKKyAgICAvLyBzY29wZWQg
dmFyaWFibGVzKS4KKyAgICBXcml0ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2VzcywKKyAgICAKKyAg
ICAvLyBUaGlzIGNhcHR1cmVzIGFsbCBvdGhlciBmb3JtcyBvZiB3cml0ZSBiYXJyaWVycy4gSXQg
c2hvdWxkIGFsd2F5cyBiZQorICAgIC8vIGNvcnJlY3QgdG8gdXNlIGEgZ2VuZXJpYyBhY2Nlc3Mg
d3JpdGUgYmFycmllciwgZXZlbiB3aGVuIHN0b3JpbmcgdG8KKyAgICAvLyBwcm9wZXJ0aWVzLiBI
ZW5jZSwgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBuZWNlc3NhcnksIGl0IGlzIHByZWZlcmFibGUK
KyAgICAvLyB0byBqdXN0IHVzZSBhIGdlbmVyaWMgYWNjZXNzLgorICAgIFdyaXRlQmFycmllckZv
ckdlbmVyaWNBY2Nlc3MKK307CisKK2NsYXNzIFdyaXRlQmFycmllckNvdW50ZXJzIHsKK3ByaXZh
dGU6CisgICAgV3JpdGVCYXJyaWVyQ291bnRlcnMoKSB7IH0KKworcHVibGljOgorI2lmIEVOQUJM
RShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAgICBzdGF0aWMgR2xvYmFsU2FtcGxpbmdDb3Vu
dGVyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgc3RhdGljIEdsb2JhbFNhbXBsaW5nQ291
bnRlciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOworICAgIHN0YXRpYyBHbG9iYWxTYW1wbGlu
Z0NvdW50ZXIgdXNlc1dpdGhCYXJyaWVyRnJvbUppdDsKKyAgICBzdGF0aWMgR2xvYmFsU2FtcGxp
bmdDb3VudGVyIHVzZXNGb3JQcm9wZXJ0aWVzRnJvbUppdDsKKyAgICBzdGF0aWMgR2xvYmFsU2Ft
cGxpbmdDb3VudGVyIHVzZXNGb3JWYXJpYWJsZXNGcm9tSml0OworICAgIHN0YXRpYyBHbG9iYWxT
YW1wbGluZ0NvdW50ZXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUppdDsKKyAgICAKKyAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CisgICAgCisgICAgc3RhdGljIEdsb2JhbFNhbXBsaW5nQ291
bnRlciYgaml0Q291bnRlckZvcihXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKHVzZUtpbmQpIHsKKyAgICAgICAgY2FzZSBXcml0ZUJhcnJpZXJGb3JQ
cm9wZXJ0eUFjY2VzczoKKyAgICAgICAgICAgIHJldHVybiB1c2VzRm9yUHJvcGVydGllc0Zyb21K
aXQ7CisgICAgICAgIGNhc2UgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3M6CisgICAgICAg
ICAgICByZXR1cm4gdXNlc0ZvclZhcmlhYmxlc0Zyb21KaXQ7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlQodXNlS2luZCA9PSBXcml0ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNz
KTsKKyAgICAgICAgICAgIHJldHVybiB1c2VzV2l0aEJhcnJpZXJGcm9tSml0OworICAgICAgICB9
CisgICAgfQorI2Vsc2UKKyAgICAvLyBUaGVzZSBhcmUgbmVjZXNzYXJ5IHRvIHdvcmsgYXJvdW5k
IG5vdCBoYXZpbmcgY29uZGl0aW9uYWwgZXhwb3J0cy4KKyAgICBzdGF0aWMgY2hhciB1c2VzV2l0
aEJhcnJpZXJGcm9tQ3BwOworICAgIHN0YXRpYyBjaGFyIHVzZXNXaXRob3V0QmFycmllckZyb21D
cHA7CisjZW5kaWYgLy8gRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorCisgICAgc3Rh
dGljIHZvaWQgY291bnRXcml0ZUJhcnJpZXIoKQorICAgIHsKKyNpZiBFTkFCTEUoV1JJVEVfQkFS
UklFUl9QUk9GSUxJTkcpCisgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjp1c2VzV2l0aEJh
cnJpZXJGcm9tQ3BwLmNvdW50KCk7CisjZW5kaWYKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIFdyaXRlQmFycmllclN1cHBvcnRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShKU1ZhbHVlLCBKdW1wTGlzdCYgZmFp
bHVyZUNhc2VzKTsKIAotICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoUmVnaXN0ZXJJRCBv
d25lciwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVy
KFJlZ2lzdGVySUQgb3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyVXNlS2lu
ZCk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1
Y3R1cmVUeXBlPiB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSwg
dm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRyKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBlbWl0QWxsb2NhdGVKU0ZpbmFsT2Jq
ZWN0KFQgc3RydWN0dXJlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBzdG9yYWdlUHRy
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTks
NyArMjU5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAg
IAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCByZWdUMSk7Ci0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDEpOworICAgIGVt
aXRXcml0ZUJhcnJpZXIocmVnVDAsIHJlZ1QxLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vz
cyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwg
VHJ1c3RlZEltbVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgIApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICAKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogICAgIAotICAgIGVtaXRXcml0ZUJhcnJp
ZXIocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwgV3Jp
dGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogICAgIAogICAgIEJFR0lOX1VOSU5URVJSVVBU
RURfU0VRVUVOQ0Uoc2VxdWVuY2VQdXRCeUlkKTsKICAgICAKQEAgLTUyMSw3ICs1MjEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAjZW5kaWYKICAgICB9CiAK
LSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdFdyaXRlQmFycmll
cihyZWdUMCwgcmVnVDEsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzKTsKIAogICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIobmV3U3RydWN0dXJlKSwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwogI2lmIENQVShNSVBTKSB8fCBDUFUoU0g0KSB8fCBDUFUo
QVJNKQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Njb3BlZF92
YXIoSW5zdHJ1YwogICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIE9CSkVDVF9PRkZTRVRP
RihTY29wZUNoYWluTm9kZSwgbmV4dCkpLCByZWdUMik7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCkpLCByZWdUMik7CiAK
LSAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMyk7CisgICAgZW1pdFdyaXRlQmFycmll
cihyZWdUMiwgcmVnVDMsIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzKTsKIAogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMo
KSksIHJlZ1QyKTsKICAgICBlbWl0U3RvcmUoaW5kZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDIpOwpA
QCAtMTA4MiwxOCArMTA4MiwyMyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2xvYmFsX3ZhcihJ
bnN0cnVjCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIHJlZ1QyKTsKIAotICAgIGVtaXRXcml0ZUJhcnJpZXIo
cmVnVDIsIHJlZ1QzKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QyLCByZWdUMywgV3JpdGVC
YXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBK
U1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDIpOwogICAgIGVtaXRT
dG9yZShpbmRleCwgcmVnVDEsIHJlZ1QwLCByZWdUMik7CiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZz
ZXQgKyBPUENPREVfTEVOR1RIKG9wX3B1dF9nbG9iYWxfdmFyKSwgdmFsdWUsIHJlZ1QxLCByZWdU
MCk7CiB9CiAKLXZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQgb3duZXIsIFJl
Z2lzdGVySUQgc2NyYXRjaCkKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKFJlZ2lzdGVySUQg
b3duZXIsIFJlZ2lzdGVySUQgc2NyYXRjaCwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQog
ewogICAgIFVOVVNFRF9QQVJBTShvd25lcik7CiAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwor
ICAgIFVOVVNFRF9QQVJBTSh1c2VLaW5kKTsKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaCk7
CisgICAgCisjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIGVtaXRDb3Vu
dChXcml0ZUJhcnJpZXJDb3VudGVyczo6aml0Q291bnRlckZvcih1c2VLaW5kKSk7CisjZW5kaWYK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlv
bioKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGVpdGhlciB0aGUgYmFzZSBvYmplY3Qg
aXMgYW4gaW1tZWRpYXRlLCBvciBpZiB0aGUgU3RydWN0dXJlIGRvZXMgbm90IG1hdGNoLgogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCi0gICAgZW1p
dFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAs
IHJlZ1QyLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKICAgICBCRUdJTl9VTklO
VEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlUHV0QnlJZCk7CiAKQEAgLTU0Myw3ICs1NDMsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QzKTsKICAgICB9CiAgICAgCi0gICAgZW1p
dFdyaXRlQmFycmllcihyZWdUMCwgcmVnVDIpOworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDAs
IHJlZ1QyLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKICAgICBzdG9yZVB0cihU
cnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpKTsKICAgICBjb21waWxlUHV0RGlyZWN0T2Zmc2V0KHJlZ1QwLCByZWdUMSwg
bmV3U3RydWN0dXJlLCBjYWNoZWRPZmZzZXQpOwpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9zY29wZWRfdmFyKEluc3RydWMKICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoU2NvcGVDaGFpbk5vZGUsIG5leHQpKSwgcmVnVDEpOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKFNjb3BlQ2hhaW5Ob2Rl
LCBvYmplY3QpKSwgcmVnVDEpOwogCi0gICAgZW1pdFdyaXRlQmFycmllcihyZWdUMSwgcmVnVDIp
OworICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDEsIHJlZ1QyLCBXcml0ZUJhcnJpZXJGb3JWYXJp
YWJsZUFjY2Vzcyk7CiAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTVmFyaWFibGVPYmpl
Y3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMSk7CiAgICAgc3RvcmVQdHIocmVnVDAsIEFk
ZHJlc3MocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQgKiBzaXplb2YoUmVn
aXN0ZXIpKSk7CkBAIC0xMDE3LDE3ICsxMDE3LDIyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9n
bG9iYWxfdmFyKEluc3RydWMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0KSwgcmVnVDEpOwogICAgIAotICAgIGVtaXRXcml0ZUJhcnJpZXIocmVnVDEsIHJl
Z1QyKTsKKyAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QxLCByZWdUMiwgV3JpdGVCYXJyaWVyRm9y
VmFyaWFibGVBY2Nlc3MpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU1ZhcmlhYmxl
T2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwgcmVnVDEpOwogICAgIHN0b3JlUHRyKHJlZ1Qw
LCBBZGRyZXNzKHJlZ1QxLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kICogc2l6ZW9m
KFJlZ2lzdGVyKSkpOwogfQogCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihSZWdpc3RlcklE
IG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihS
ZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gsIFdyaXRlQmFycmllclVzZUtpbmQg
dXNlS2luZCkKIHsKICAgICBVTlVTRURfUEFSQU0ob3duZXIpOwogICAgIFVOVVNFRF9QQVJBTShz
Y3JhdGNoKTsKKyAgICBVTlVTRURfUEFSQU0odXNlS2luZCk7CiAgICAgQVNTRVJUKG93bmVyICE9
IHNjcmF0Y2gpOworICAgIAorI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKKyAg
ICBlbWl0Q291bnQoV3JpdGVCYXJyaWVyQ291bnRlcnM6OmppdENvdW50ZXJGb3IodXNlS2luZCkp
OworI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJ
KHJldmlzaW9uIDkzNjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJVU3RyaW5nLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Rh
dGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCkBAIC00OCw2ICs0OSw5IEBA
IHN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0aWFsaXplVGhyZWFkaW4KIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVUaHJlYWRpbmdPbmNlKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAgV3JpdGVCYXJyaWVy
Q291bnRlcnM6OmluaXRpYWxpemUoKTsKKyNlbmRpZgogICAgIEpTR2xvYmFsRGF0YTo6c3RvcmVW
UHRycygpOwogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICBSZWdpc3RlckZp
bGU6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dyaXRlQmFycmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllci5oCShyZXZpc2lvbiA5MzY5NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
KyNpbmNsdWRlICJTYW1wbGluZ0NvdW50ZXIuaCIKICNpbmNsdWRlICJUeXBlVHJhaXRzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMTIwLDYgKzEyMSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0V2l0aG91dFdyaXRlQmFycmllcihUKiB2YWx1ZSkKICAgICB7CisjaWYgRU5BQkxFKFdSSVRF
X0JBUlJJRVJfUFJPRklMSU5HKQorICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6dXNlc1dp
dGhvdXRCYXJyaWVyRnJvbUNwcC5jb3VudCgpOworI2VuZGlmCiAgICAgICAgIHRoaXMtPm1fY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odmFsdWUpOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gOTM2OTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2Myw2ICs5
NjMsMTIgQEAKICNkZWZpbmUgRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJPRklMRSAwCiAjZW5kaWYK
IAorLyogQ291bnRzIHVzZXMgb2Ygd3JpdGUgYmFycmllcnMgdXNpbmcgc2FtcGxpbmcgY291bnRl
cnMuIEJlIHN1cmUgdG8gYWxzbworICAgc2V0IEVOQUJMRV9TQU1QTElOR19DT1VOVEVSUyB0byAx
LiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9XUklURV9CQVJSSUVSX1BST0ZJTElORykKKyNkZWZp
bmUgRU5BQkxFX1dSSVRFX0JBUlJJRVJfUFJPRklMSU5HIDAKKyNlbmRpZgorCiAvKiBFbnN1cmUg
dGhhdCBlaXRoZXIgdGhlIEpJVCBvciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gZW5hYmxlZC4g
Ki8KICNpZiAhZGVmaW5lZChFTkFCTEVfSU5URVJQUkVURVIpICYmICFFTkFCTEUoSklUKQogI2Rl
ZmluZSBFTkFCTEVfSU5URVJQUkVURVIgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>