<?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>182942</bug_id>
          
          <creation_ts>2018-02-19 15:41:20 -0800</creation_ts>
          <short_desc>Don&apos;t use JSFunction&apos;s allocation profile when getting the prototype can be effectful</short_desc>
          <delta_ts>2018-02-20 10:12:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400527</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 15:41:20 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400528</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 15:41:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/37584764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400559</commentid>
    <comment_count>2</comment_count>
      <attachid>334202</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 16:46:49 -0800</bug_when>
    <thetext>Created attachment 334202
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400563</commentid>
    <comment_count>3</comment_count>
      <attachid>334204</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 16:49:01 -0800</bug_when>
    <thetext>Created attachment 334204
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400569</commentid>
    <comment_count>4</comment_count>
      <attachid>334204</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-19 17:01:48 -0800</bug_when>
    <thetext>Comment on attachment 334204
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:23
&gt; +        the allocation profile when the prototype property is non-configurable
&gt; +        and non-writable.

Per our offline discussion, non-writable is not applicable.

&gt; Source/JavaScriptCore/runtime/JSFunction.h:135
&gt; -    FunctionRareData* rareData(ExecState* exec, unsigned inlineCapacity)
&gt; +    FunctionRareData* ensureRareDataAndAllocationProfile(ExecState* exec, unsigned inlineCapacity)
&gt;      {
&gt; +        ASSERT(canUseAllocationProfileNonInline());

You can move this function to Inlines.h and forego needing canUseAllocationProfileNonInline().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400580</commentid>
    <comment_count>5</comment_count>
      <attachid>334212</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 17:39:49 -0800</bug_when>
    <thetext>Created attachment 334212
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400581</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-19 17:41:24 -0800</bug_when>
    <thetext>Attachment 334212 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSFunction.h:133:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 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>1400582</commentid>
    <comment_count>7</comment_count>
      <attachid>334213</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-19 17:42:26 -0800</bug_when>
    <thetext>Created attachment 334213
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400635</commentid>
    <comment_count>8</comment_count>
      <attachid>334213</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-19 19:45:19 -0800</bug_when>
    <thetext>Comment on attachment 334213
patch for landing

Rejecting attachment 334213 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 334213, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
rdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error [Errno 60] Operation timed out&gt;

Full output: http://webkit-queues.webkit.org/results/6582814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400691</commentid>
    <comment_count>9</comment_count>
      <attachid>334213</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-20 00:11:11 -0800</bug_when>
    <thetext>Comment on attachment 334213
patch for landing

Rejecting attachment 334213 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 334213, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
Hunk #1 FAILED at 130.
Hunk #2 succeeded at 149 with fuzz 2 (offset -4 lines).
Hunk #3 FAILED at 159.
Hunk #4 succeeded at 180 with fuzz 2 (offset -4 lines).
2 out of 4 hunks FAILED -- saving rejects to file Source/JavaScriptCore/runtime/JSFunction.h.rej
patching file Source/JavaScriptCore/runtime/JSFunctionInlines.h
Hunk #1 succeeded at 129 with fuzz 1 (offset 22 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/6585604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400709</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-02-20 02:44:54 -0800</bug_when>
    <thetext>I think Saam landed this manually in:

Commit r228725:  &lt;https://trac.webkit.org/changeset/228725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400812</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-20 10:11:07 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; I think Saam landed this manually in:
&gt; 
&gt; Commit r228725:  &lt;https://trac.webkit.org/changeset/228725&gt;

Bizarre, I did not land it manually. I wonder how it got committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400814</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-20 10:12:43 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #11)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; &gt; I think Saam landed this manually in:
&gt; &gt; 
&gt; &gt; Commit r228725:  &lt;https://trac.webkit.org/changeset/228725&gt;
&gt; 
&gt; Bizarre, I did not land it manually. I wonder how it got committed.

Seems like the commit bot was messed up last night. I guess it must&apos;ve just committed it even though it said it errored out?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334202</attachid>
            <date>2018-02-19 16:46:49 -0800</date>
            <delta_ts>2018-02-19 16:49:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13451</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjg3MTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxsb2NhdGlvbiBwcm9maWxl
IHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3RmdWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3Rm
dWwuanM6IEFkZGVkLgorICAgICAgICAodHJ5Q2FsbCk6CisgICAgICAgICh0ZXN0MS5sZXQuYm91
bmRGdW5jdGlvbik6CisgICAgICAgICh0ZXN0MS5nZXQgdHJ5Q2FsbCk6CisgICAgICAgICh0ZXN0
MSk6CisgICAgICAgICh0ZXN0Mi5sZXQuYm91bmRGdW5jdGlvbik6CisgICAgICAgICh0ZXN0Mi5n
ZXQgY29uc3QpOgorICAgICAgICAodGVzdDIpOgorCiAyMDE4LTAyLTE2ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWdzIGZyb20gcjIyODQxMQpJbmRl
eDogSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1l
ZmZlY3RmdWwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlw
ZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBA
QAorZnVuY3Rpb24gdHJ5Q2FsbChmKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpCisgICAgfSBj
YXRjaChlKSB7IH0KK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgbGV0IGJvdW5kRnVuY3Rp
b24gPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJv
dW5kRnVuY3Rpb24sICJwcm90b3R5cGUiLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAg
IHRocm93IEVycm9yKCJIZWxsbyIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB0cnlDYWxs
KCgpID0+IHsKKyAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZnVuY3Rpb24oKSB7fSwgW10sIGJv
dW5kRnVuY3Rpb24pOworICAgIH0pOworfQordGVzdDEoKTsKKworZnVuY3Rpb24gdGVzdDIoKSB7
CisgICAgbGV0IGJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7CisgICAgbGV0
IGNvdW50ZXIgPSAwOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1bmN0aW9uLCAi
cHJvdG90eXBlIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICArK2NvdW50ZXI7Cisg
ICAgICAgICAgICByZXR1cm4ge307CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IGl0
ZXJzID0gMTAwMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJzOyArK2kpCisgICAgICAg
IFJlZmxlY3QuY29uc3RydWN0KGZ1bmN0aW9uKCkge30sIFtdLCBib3VuZEZ1bmN0aW9uKTsKKyAg
ICBpZiAoY291bnRlciAhPT0gaXRlcnMpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiV3Jvbmcg
aXRlcnMiKTsKK30KK3Rlc3QyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIyODcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0wMi0xOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgSlNGdW5jdGlvbidzIGFsbG9jYXRpb24g
cHJvZmlsZSB3aGVuIGdldHRpbmcgdGhlIHByb3RvdHlwZSBjYW4gYmUgZWZmZWN0ZnVsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTg0NzY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByaW9yIHRvIHRoaXMgcGF0Y2gsIGNyZWF0ZV90aGlzIGNv
ZGUgYXNzdW1lZCB0aGF0IGFueXRoaW5nIHRoYXQgaXMgYQorICAgICAgICBKU0Z1bmN0aW9uIGNh
biB1c2UgdGhlIG9iamVjdCBhbGxvY2F0aW9uIHByb2ZpbGUgYW5kIGdvIGRvd24gdGhlIGZhc3QK
KyAgICAgICAgcGF0aCB0byBhbGxvY2F0ZSB0aGUgfHRoaXN8IG9iamVjdC4gSW1wbGllZCBieSB0
aGlzIGFwcHJvYWNoIGlzIHRoYXQKKyAgICAgICAgYWNjZXNzaW5nIHRoZSAncHJvdG90eXBlJyBw
cm9wZXJ0eSBvZiB0aGUgaW5jb21pbmcgZnVuY3Rpb24gaXMgbm90IGFuCisgICAgICAgIGVmZmVj
dGZ1bCBvcGVyYXRpb24uIFRoaXMgaXMgaW5oZXJlbnQgdG8gdGhlIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlIAorICAgICAgICBkYXRhIHN0cnVjdHVyZTogaXQgY2FjaGVzIHRoZSBwcm90b3R5cGUg
ZmllbGQuIEhvd2V2ZXIsIGdldHRpbmcgdGhlCisgICAgICAgICdwcm90b3R5cGUnIHByb3BlcnR5
IG1pZ2h0IGJlIGFuIGVmZmVjdGZ1bCBvcGVyYXRpb24sIGUuZywgaXQgY291bGQKKyAgICAgICAg
YmUgYSBnZXR0ZXIuIE1hbnkgdmFyaWFudHMgb2YgZnVuY3Rpb25zIGluIEpTIGhhdmUgdGhlICdw
cm90b3R5cGUnIHByb3BlcnR5CisgICAgICAgIGFzIG5vbi1jb25maWd1cmFibGUvbm9uLXdyaXRh
YmxlLiBIb3dldmVyLCBzb21lIGZ1bmN0aW9ucywgbGlrZSBib3VuZAorICAgICAgICBmdW5jdGlv
bnMsIGRvIG5vdCBoYXZlIHRoZSAncHJvdG90eXBlJyBmaWVsZCB3aXRoIHRoZXNlIGF0dHJpYnV0
ZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG5vdGlvbiBvZiAnY2Fu
VXNlQWxsb2NhdGlvblByb2ZpbGUnIHRvIEpTRnVuY3Rpb24KKyAgICAgICAgYW5kIHRocmVhZHMg
aXQgdGhyb3VnaCBzbyB0aGF0IHdlIG9ubHkgZ28gZG93biB0aGUgZmFzdCBwYXRoIGFuZCB1c2UK
KyAgICAgICAgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aGVuIHRoZSBwcm90b3R5cGUgcHJvcGVy
dHkgaXMgbm9uLWNvbmZpZ3VyYWJsZQorICAgICAgICBhbmQgbm9uLXdyaXRhYmxlLgorCisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbik6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGVOb25JbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjplbnN1cmVSYXJlRGF0YUFu
ZEFsbG9jYXRpb25Qcm9maWxlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKToK
KwogMjAxOC0wMi0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IEdldEFycmF5TWFzayBzaG91bGQgc3VwcG9ydCBjb25zdGFudCBmb2xkaW5nCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OTcsNyArMzg5Nyw2IEBAIFJl
Z2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uc3RydWN0b3I7CiAgICAgYm9vbCBuZWVkc0hvbWVPYmplY3QgPSBmYWxzZTsKIAot
ICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBwcm90b3R5cGUgbm9uLWNvbmZpZ3VyYWJsZSAmIG5vbi13
cml0YWJsZS4KICAgICBpZiAobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pIHsKICAgICAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JFeHByZXNzaW9uLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICAgICAg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2Rl
Kj4obV9jb25zdHJ1Y3RvckV4cHJlc3Npb24pLT5tZXRhZGF0YSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjg3MDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDYsOCArMjQ2LDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZVRoaQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkg
ewotICAgICAgICBhdXRvIHJhcmVEYXRhID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciktPnJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAgICBpZiAoY29uc3RydWN0b3It
PnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVj
dG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgeworICAgICAgICBhdXRvIHJhcmVEYXRh
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmVuc3VyZVJhcmVEYXRhQW5kQWxs
b2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJlKCk7CiAgICAg
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIy
LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAgIGF1dG8mIGJ5
dGVjb2RlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BDcmVhdGVUaGlzKj4ocGMpOwogICAgIEpTT2Jq
ZWN0KiByZXN1bHQ7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yQXNPYmplY3QgPSBhc09iamVj
dChHRVQoYnl0ZWNvZGUuY2FsbGVlKCkpLmpzVmFsdWUoKSk7Ci0gICAgaWYgKGNvbnN0cnVjdG9y
QXNPYmplY3QtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkgeworICAgIGlmIChjb25zdHJ1Y3Rv
ckFzT2JqZWN0LT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24q
Pihjb25zdHJ1Y3RvckFzT2JqZWN0KS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgewogICAg
ICAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3Ry
dWN0b3JBc09iamVjdCk7CiAgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+JiBjYWNoZWRDYWxs
ZWUgPSBieXRlY29kZS5jYWNoZWRDYWxsZWUoKTsKICAgICAgICAgaWYgKCFjYWNoZWRDYWxsZWUp
CkBAIC0yMzEsNyArMjMxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlz
KQogICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNDZWxs
OjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOwogCiAgICAgICAgIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSA9IGJ5dGVjb2RlLmlubGluZUNhcGFjaXR5KCk7Ci0gICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY29uc3RydWN0b3ItPnJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gY29uc3RydWN0b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblBy
b2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpLT5z
dHJ1Y3R1cmUoKTsKICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywg
c3RydWN0dXJlKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKICAg
ICAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci0+cHJvdG90eXBlRm9y
Q29uc3RydWN0aW9uKHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDkg
KzEzOSwxMiBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjphbGxvY2F0ZVJhCiAKIEpT
T2JqZWN0KiBKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24oVk0mIHZtLCBFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgLy8gVGhpcyBjb2RlIGFzc3VtZXMgZ2V0dGluZyB0aGUgcHJv
dG90eXBlIGlzIG5vdCBlZmZlY3RmdWwuIFRoYXQncyBvbmx5CisgICAgLy8gdHJ1ZSB3aGVuIHdl
IGNhbiB1c2UgdGhlIGFsbG9jYXRpb24gcHJvZmlsZS4KKyAgICBBU1NFUlQoY2FuVXNlQWxsb2Nh
dGlvblByb2ZpbGUoKSk7IAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUpOwotICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSk7
CisgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKHByb3RvdHlw
ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gYXNPYmplY3QocHJvdG90eXBlKTsKIApAQCAt
MTUxLDYgKzE1NCw3IEBAIEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpwcm90b3R5cGVGb3JDb25zdHIK
IEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVE
YXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEFTU0VS
VCghbV9yYXJlRGF0YSk7CisgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpOwog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHByb3Rv
dHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7CiAgICAgRnVuY3Rpb25SYXJlRGF0YSogcmFy
ZURhdGEgPSBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGUodm0pOwpAQCAtMTY3LDYgKzE3MSw3IEBA
IEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmFsbG9jYXRlQW4KIEZ1bmN0aW9uUmFyZURh
dGEqIEpTRnVuY3Rpb246OmluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoISFtX3JhcmVEYXRhKTsKKyAgICBBU1NF
UlQoY2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU09iamVjdCogcHJvdG90eXBlID0gcHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBl
eGVjKTsKICAgICBtX3JhcmVEYXRhLT5pbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
dm0sIGdsb2JhbE9iamVjdCh2bSksIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHksIHRoaXMpOwpA
QCAtMzc0LDYgKzM3OSwxMyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iCiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUgJiYgdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3Bl
cnR5KCkgJiYgIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0NsYXNzQ29uc3RydWN0b3JG
dW5jdGlvbigpKSB7CisgICAgICAgIC8vIE5PVEU6IGNsYXNzIGNvbnN0cnVjdG9ycyBkZWZpbmUg
dGhlIHByb3RvdHlwZSBwcm9wZXJ0eSBpbiBieXRlY29kZSB1c2luZworICAgICAgICAvLyBkZWZp
bmVPd25Qcm9wZXJ0eSwgd2hpY2ggZW5kcyB1cCBjYWxsaW5nIGludG8gdGhpcyBjb2RlIChzZWUg
b3VyIGRlZmluZU93blByb3BlcnR5CisgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIGJlbG93KS4g
VGhlIGJ5dGVjb2RlIHdpbGwgZW5kIHVwIGRvaW5nIHRoZSBwcm9wZXIgZGVmaW5pdGlvbgorICAg
ICAgICAvLyB3aXRoIHRoZSBwcm9wZXJ0eSBiZWluZyBub24td3JpdGFibGUvbm9uLWNvbmZpZ3Vy
YWJsZS4gSG93ZXZlciwgd2UgbXVzdCBpZ25vcmUKKyAgICAgICAgLy8gdGhlIGluaXRpYWwgbWF0
ZXJpYWxpemF0aW9uIG9mIHRoZSBwcm9wZXJ0eSBzbyB0aGF0IHRoZSBkZWZpbmVPd25Qcm9wZXJ0
eSBjYWxsCisgICAgICAgIC8vIGZyb20gYnl0ZWNvZGUgc3VjY2VlZHMuIE90aGVyd2lzZSwgdGhl
IG1hdGVyaWFsaXphdGlvbiBoZXJlIHdvdWxkIHByZXZlbnQgdGhlCisgICAgICAgIC8vIGRlZmlu
ZU93blByb3BlcnR5IGZyb20gYmVpbmcgYWJsZSB0byBvdmVyd3JpdGUgdGhlIHByb3BlcnR5Lgog
ICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CkBAIC03NTAsNCAr
NzYyLDkgQEAgSlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cgogICAgIHJl
dHVybiBQcm9wZXJ0eVN0YXR1czo6UmVpZmllZDsKIH0KIAorYm9vbCBKU0Z1bmN0aW9uOjpjYW5V
c2VBbGxvY2F0aW9uUHJvZmlsZU5vbklubGluZSgpCit7CisgICAgcmV0dXJuIGNhblVzZUFsbG9j
YXRpb25Qcm9maWxlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjI4NzA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzAsOCArMTMwLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS5n
ZXQoKTsKICAgICB9CiAKLSAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQorICAgIEZ1bmN0aW9uUmFyZURhdGEqIGVu
c3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmxpbmVDYXBhY2l0eSkKICAgICB7CisgICAgICAgIEFTU0VSVChjYW5Vc2VBbGxvY2F0aW9u
UHJvZmlsZU5vbklubGluZSgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhKSkK
ICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShleGVjLCBp
bmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YS0+aXNPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZUluaXRpYWxpemVkKCkpKQpAQCAtMTYwLDYgKzE2MSw5IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBfX3Byb3RvX18gZm9yIHRoZSB8dGhpc3wgdmFsdWUg
aWYgdGhpcyBKU0Z1bmN0aW9uIHdlcmUgdG8gYmUgY29uc3RydWN0ZWQuCiAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbihWTSYsIEV4ZWNTdGF0ZSopOwogCisgICAgYm9vbCBj
YW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgIGJvb2wgY2FuVXNlQWxsb2NhdGlvblByb2Zp
bGVOb25JbmxpbmUoKTsKKwogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIEpTRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CkBAIC0xNjcs
MTAgKzE3MSw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0
aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgRnVuY3Rpb25SYXJlRGF0YSogYWxsb2NhdGVS
YXJlRGF0YShWTSYpOwotICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRlQW5kSW5pdGlhbGl6
ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7Ci0gICAgRnVuY3Rp
b25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSk7Ci0KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwog
ICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93
KTsKQEAgLTE5Miw2ICsxOTIsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
OwogICAgIH0KIAorICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRlUmFyZURhdGEoVk0mKTsK
KyAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShFeGVj
U3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGlu
aXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworCiAg
ICAgYm9vbCBoYXNSZWlmaWVkTGVuZ3RoKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZWlmaWVkTmFt
ZSgpIGNvbnN0OwogICAgIHZvaWQgcmVpZnlMZW5ndGgoVk0mKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAkocmV2aXNpb24g
MjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDQgKzEwNywxNyBAQCBpbmxpbmUgYm9vbCBKU0Z1
bmN0aW9uOjpoYXNSZWlmaWVkTmFtZSgpCiAgICAgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVE
YXRhLT5oYXNSZWlmaWVkTmFtZSgpIDogZmFsc2U7CiB9CiAKK2lubGluZSBib29sIEpTRnVuY3Rp
b246OmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkKK3sKKyAgICBpZiAoaXNIb3N0RnVuY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0ganNFeGVjdXRhYmxlKCk7CisgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHByb3Rv
dHlwZSBwcm9wZXJ0eSwgd2UncmUgbm90IGd1YXJhbnRlZWQgaXQncworICAgIC8vIG5vbi13cml0
YWJsZS9ub24tY29uZmlndXJhYmxlLiBGb3IgZXhhbXBsZSwgdXNlciBjb2RlIGNhbiBkZWZpbmUK
KyAgICAvLyB0aGUgcHJvdG90eXBlIGFzIGEgZ2V0dGVyLiBKUyBzZW1hbnRpY3MgcmVxdWlyZSB0
aGF0IHRoZSBnZXR0ZXIgaXMKKyAgICAvLyBjYWxsZWQgZXZlcnkgdGltZSB8Y29uc3RydWN0fCBv
Y2N1cnMgd2l0aCB0aGlzIGZ1bmN0aW9uIGFzIG5ldy50YXJnZXQuCisgICAgcmV0dXJuIGV4ZWN1
dGFibGUtPmhhc1Byb3RvdHlwZVByb3BlcnR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334204</attachid>
            <date>2018-02-19 16:49:01 -0800</date>
            <delta_ts>2018-02-19 17:39:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13537</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjg3MTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxsb2NhdGlvbiBwcm9maWxl
IHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3RmdWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3Rm
dWwuanM6IEFkZGVkLgorICAgICAgICAodHJ5Q2FsbCk6CisgICAgICAgICh0ZXN0MS5sZXQuYm91
bmRGdW5jdGlvbik6CisgICAgICAgICh0ZXN0MS5nZXQgdHJ5Q2FsbCk6CisgICAgICAgICh0ZXN0
MSk6CisgICAgICAgICh0ZXN0Mi5sZXQuYm91bmRGdW5jdGlvbik6CisgICAgICAgICh0ZXN0Mi5n
ZXQgY29uc3QpOgorICAgICAgICAodGVzdDIpOgorCiAyMDE4LTAyLTE2ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWdzIGZyb20gcjIyODQxMQpJbmRl
eDogSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1l
ZmZlY3RmdWwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlw
ZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBA
QAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIGFzc2VydGlvbiIpCit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGxldCBi
b3VuZEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge30uYmluZCgpOworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShib3VuZEZ1bmN0aW9uLCAicHJvdG90eXBlIiwgeworICAgICAgICBnZXQoKSB7Cisg
ICAgICAgICAgICB0aHJvdyBFcnJvcigiSGVsbG8iKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgUmVmbGVjdC5jb25zdHJ1
Y3QoZnVuY3Rpb24oKSB7fSwgW10sIGJvdW5kRnVuY3Rpb24pOworICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJIZWxs
byIpOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfQordGVzdDEoKTsKKworZnVuY3Rpb24g
dGVzdDIoKSB7CisgICAgbGV0IGJvdW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7
CisgICAgbGV0IGNvdW50ZXIgPSAwOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1
bmN0aW9uLCAicHJvdG90eXBlIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICArK2Nv
dW50ZXI7CisgICAgICAgICAgICByZXR1cm4ge307CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGNvbnN0IGl0ZXJzID0gMTAwMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJzOyArK2kp
CisgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZ1bmN0aW9uKCkge30sIFtdLCBib3VuZEZ1bmN0
aW9uKTsKKyAgICBhc3NlcnQoY291bnRlciA9PT0gaXRlcnMpOworfQordGVzdDIoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4
LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0
IHVzZSBKU0Z1bmN0aW9uJ3MgYWxsb2NhdGlvbiBwcm9maWxlIHdoZW4gZ2V0dGluZyB0aGUgcHJv
dG90eXBlIGNhbiBiZSBlZmZlY3RmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mjk0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1ODQ3NjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJpb3Ig
dG8gdGhpcyBwYXRjaCwgY3JlYXRlX3RoaXMgY29kZSBhc3N1bWVkIHRoYXQgYW55dGhpbmcgdGhh
dCBpcyBhCisgICAgICAgIEpTRnVuY3Rpb24gY2FuIHVzZSB0aGUgb2JqZWN0IGFsbG9jYXRpb24g
cHJvZmlsZSBhbmQgZ28gZG93biB0aGUgZmFzdAorICAgICAgICBwYXRoIHRvIGFsbG9jYXRlIHRo
ZSB8dGhpc3wgb2JqZWN0LiBJbXBsaWVkIGJ5IHRoaXMgYXBwcm9hY2ggaXMgdGhhdAorICAgICAg
ICBhY2Nlc3NpbmcgdGhlICdwcm90b3R5cGUnIHByb3BlcnR5IG9mIHRoZSBpbmNvbWluZyBmdW5j
dGlvbiBpcyBub3QgYW4KKyAgICAgICAgZWZmZWN0ZnVsIG9wZXJhdGlvbi4gVGhpcyBpcyBpbmhl
cmVudCB0byB0aGUgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgCisgICAgICAgIGRhdGEgc3RydWN0
dXJlOiBpdCBjYWNoZXMgdGhlIHByb3RvdHlwZSBmaWVsZC4gSG93ZXZlciwgZ2V0dGluZyB0aGUK
KyAgICAgICAgJ3Byb3RvdHlwZScgcHJvcGVydHkgbWlnaHQgYmUgYW4gZWZmZWN0ZnVsIG9wZXJh
dGlvbiwgZS5nLCBpdCBjb3VsZAorICAgICAgICBiZSBhIGdldHRlci4gTWFueSB2YXJpYW50cyBv
ZiBmdW5jdGlvbnMgaW4gSlMgaGF2ZSB0aGUgJ3Byb3RvdHlwZScgcHJvcGVydHkKKyAgICAgICAg
YXMgbm9uLWNvbmZpZ3VyYWJsZS9ub24td3JpdGFibGUuIEhvd2V2ZXIsIHNvbWUgZnVuY3Rpb25z
LCBsaWtlIGJvdW5kCisgICAgICAgIGZ1bmN0aW9ucywgZG8gbm90IGhhdmUgdGhlICdwcm90b3R5
cGUnIGZpZWxkIHdpdGggdGhlc2UgYXR0cmlidXRlcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyB0aGUgbm90aW9uIG9mICdjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZScgdG8gSlNG
dW5jdGlvbgorICAgICAgICBhbmQgdGhyZWFkcyBpdCB0aHJvdWdoIHNvIHRoYXQgd2Ugb25seSBn
byBkb3duIHRoZSBmYXN0IHBhdGggYW5kIHVzZQorICAgICAgICB0aGUgYWxsb2NhdGlvbiBwcm9m
aWxlIHdoZW4gdGhlIHByb3RvdHlwZSBwcm9wZXJ0eSBpcyBub24tY29uZmlndXJhYmxlCisgICAg
ICAgIGFuZCBub24td3JpdGFibGUuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
cnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHJvdG90
eXBlRm9yQ29uc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YWxsb2NhdGVB
bmRJbml0aWFsaXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppbml0aWFs
aXplUmFyZURhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZU5v
bklubGluZSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUpOgorCiAyMDE4LTAyLTE3ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgR2V0QXJyYXlNYXNrIHNob3VsZCBzdXBwb3J0
IGNvbnN0YW50IGZvbGRpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDIyODcwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg5Nyw3ICszODk3LDYgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3RvcjsKICAgICBib29s
IG5lZWRzSG9tZU9iamVjdCA9IGZhbHNlOwogCi0gICAgLy8gRklYTUU6IE1ha2UgdGhlIHByb3Rv
dHlwZSBub24tY29uZmlndXJhYmxlICYgbm9uLXdyaXRhYmxlLgogICAgIGlmIChtX2NvbnN0cnVj
dG9yRXhwcmVzc2lvbikgewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvckV4cHJlc3Npb24t
PmlzRnVuY0V4cHJOb2RlKCkpOwogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRh
dGEgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbikt
Pm1ldGFkYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDIyODcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw4ICsyNDYsOCBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpCiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChjb25zdHJ1Y3Rv
ci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSB7Ci0gICAgICAgIGF1dG8gcmFyZURhdGEgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+cmFyZURhdGEoZXhlYywgaW5saW5lQ2Fw
YWNpdHkpOworICAgIGlmIChjb25zdHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYm
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmls
ZSgpKSB7CisgICAgICAgIGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0
cnVjdG9yKS0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVD
YXBhY2l0eSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyODcw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX3RoaXMpCiAgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRfY2FzdDxP
cENyZWF0ZVRoaXMqPihwYyk7CiAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICBKU09iamVjdCog
Y29uc3RydWN0b3JBc09iamVjdCA9IGFzT2JqZWN0KEdFVChieXRlY29kZS5jYWxsZWUoKSkuanNW
YWx1ZSgpKTsKLSAgICBpZiAoY29uc3RydWN0b3JBc09iamVjdC0+dHlwZSgpID09IEpTRnVuY3Rp
b25UeXBlKSB7CisgICAgaWYgKGNvbnN0cnVjdG9yQXNPYmplY3QtPnR5cGUoKSA9PSBKU0Z1bmN0
aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yQXNPYmplY3QpLT5jYW5V
c2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9y
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvckFzT2JqZWN0KTsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPEpTQ2VsbD4mIGNhY2hlZENhbGxlZSA9IGJ5dGVjb2RlLmNhY2hlZENhbGxlZSgp
OwogICAgICAgICBpZiAoIWNhY2hlZENhbGxlZSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAgICAgICAgICBjYWNoZWRDYWxsZWUu
c2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMo
KSk7CiAKICAgICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gYnl0ZWNvZGUuaW5saW5lQ2Fw
YWNpdHkoKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+cmFy
ZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+
ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSkt
Pm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCktPnN0cnVjdHVyZSgpOwogICAgICAgICByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IGNvbnN0cnVjdG9yLT5wcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDIyODcwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksOSArMTM5LDEyIEBAIEZ1bmN0aW9uUmFyZURhdGEq
IEpTRnVuY3Rpb246OmFsbG9jYXRlUmEKIAogSlNPYmplY3QqIEpTRnVuY3Rpb246OnByb3RvdHlw
ZUZvckNvbnN0cnVjdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICAvLyBUaGlz
IGNvZGUgYXNzdW1lcyBnZXR0aW5nIHRoZSBwcm90b3R5cGUgaXMgbm90IGVmZmVjdGZ1bC4gVGhh
dCdzIG9ubHkKKyAgICAvLyB0cnVlIHdoZW4gd2UgY2FuIHVzZSB0aGUgYWxsb2NhdGlvbiBwcm9m
aWxlLgorICAgIEFTU0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKTsgCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgcHJvdG90eXBlID0g
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBhc09iamVjdChwcm90b3R5cGUpOwogCkBAIC0xNTEsNiArMTU0LDcgQEAgSlNPYmplY3QqIEpT
RnVuY3Rpb246OnByb3RvdHlwZUZvckNvbnN0cgogRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlv
bjo6YWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKKyAgICBBU1NFUlQo
Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBKU09iamVjdCogcHJvdG90eXBlID0gcHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKHZtLCBleGVj
KTsKICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IEZ1bmN0aW9uUmFyZURhdGE6OmNy
ZWF0ZSh2bSk7CkBAIC0xNjcsNiArMTcxLDcgQEAgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlv
bjo6YWxsb2NhdGVBbgogRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJh
cmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIEFT
U0VSVCghIW1fcmFyZURhdGEpOworICAgIEFTU0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgp
KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBw
cm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0sIGV4ZWMpOwogICAgIG1fcmFyZURhdGEtPmluaXRp
YWxpemVPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0KHZtKSwgcHJvdG90
eXBlLCBpbmxpbmVDYXBhY2l0eSwgdGhpcyk7CkBAIC0zNzQsNiArMzc5LDEzIEBAIGJvb2wgSlNG
dW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2IKICAgICB9CiAKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSAmJiAhdGhpc09iamVjdC0+anNFeGVj
dXRhYmxlKCktPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkpIHsKKyAgICAgICAgLy8gTk9U
RTogY2xhc3MgY29uc3RydWN0b3JzIGRlZmluZSB0aGUgcHJvdG90eXBlIHByb3BlcnR5IGluIGJ5
dGVjb2RlIHVzaW5nCisgICAgICAgIC8vIGRlZmluZU93blByb3BlcnR5LCB3aGljaCBlbmRzIHVw
IGNhbGxpbmcgaW50byB0aGlzIGNvZGUgKHNlZSBvdXIgZGVmaW5lT3duUHJvcGVydHkKKyAgICAg
ICAgLy8gaW1wbGVtZW50YXRpb24gYmVsb3cpLiBUaGUgYnl0ZWNvZGUgd2lsbCBlbmQgdXAgZG9p
bmcgdGhlIHByb3BlciBkZWZpbml0aW9uCisgICAgICAgIC8vIHdpdGggdGhlIHByb3BlcnR5IGJl
aW5nIG5vbi13cml0YWJsZS9ub24tY29uZmlndXJhYmxlLiBIb3dldmVyLCB3ZSBtdXN0IGlnbm9y
ZQorICAgICAgICAvLyB0aGUgaW5pdGlhbCBtYXRlcmlhbGl6YXRpb24gb2YgdGhlIHByb3BlcnR5
IHNvIHRoYXQgdGhlIGRlZmluZU93blByb3BlcnR5IGNhbGwKKyAgICAgICAgLy8gZnJvbSBieXRl
Y29kZSBzdWNjZWVkcy4gT3RoZXJ3aXNlLCB0aGUgbWF0ZXJpYWxpemF0aW9uIGhlcmUgd291bGQg
cHJldmVudCB0aGUKKyAgICAgICAgLy8gZGVmaW5lT3duUHJvcGVydHkgZnJvbSBiZWluZyBhYmxl
IHRvIG92ZXJ3cml0ZSB0aGUgcHJvcGVydHkuCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmplY3QtPmdldERpcmVjdE9m
ZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpIHsKQEAgLTc1MCw0ICs3NjIsOSBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0
eVN0YXR1cyBKU0Z1bmN0aW9uOjpyCiAgICAgcmV0dXJuIFByb3BlcnR5U3RhdHVzOjpSZWlmaWVk
OwogfQogCitib29sIEpTRnVuY3Rpb246OmNhblVzZUFsbG9jYXRpb25Qcm9maWxlTm9uSW5saW5l
KCkKK3sKKyAgICByZXR1cm4gY2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw4ICsxMzAsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogICAgIH0KIAotICAgIEZ1bmN0aW9u
UmFyZURhdGEqIHJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5saW5lQ2FwYWNp
dHkpCisgICAgRnVuY3Rpb25SYXJlRGF0YSogZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJv
ZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9maWxlTm9uSW5saW5lKCkpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
QW5kSW5pdGlhbGl6ZVJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFtX3JhcmVEYXRhLT5pc09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5pdGlhbGl6
ZWQoKSkpCkBAIC0xNjAsNiArMTYxLDkgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIF9f
cHJvdG9fXyBmb3IgdGhlIHx0aGlzfCB2YWx1ZSBpZiB0aGlzIEpTRnVuY3Rpb24gd2VyZSB0byBi
ZSBjb25zdHJ1Y3RlZC4KICAgICBKU09iamVjdCogcHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKFZN
JiwgRXhlY1N0YXRlKik7CiAKKyAgICBib29sIGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCk7Cisg
ICAgYm9vbCBjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZU5vbklubGluZSgpOworCiBwcm90ZWN0ZWQ6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqLCBTdHJ1Y3R1cmUqKTsKQEAgLTE2NywxMCArMTcxLDYgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAg
ICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZVJhcmVEYXRhKFZNJik7Ci0gICAgRnVuY3Rpb25S
YXJlRGF0YSogYWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90
IGlubGluZUNhcGFjaXR5KTsKLSAgICBGdW5jdGlvblJhcmVEYXRhKiBpbml0aWFsaXplUmFyZURh
dGEoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKLQogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUgPSBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMTkyLDYgKzE5MiwxMCBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogCisgICAgRnVuY3Rpb25SYXJl
RGF0YSogYWxsb2NhdGVSYXJlRGF0YShWTSYpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9j
YXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSk7CisgICAgRnVuY3Rpb25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSos
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CisKICAgICBib29sIGhhc1JlaWZpZWRMZW5ndGgoKSBj
b25zdDsKICAgICBib29sIGhhc1JlaWZpZWROYW1lKCkgY29uc3Q7CiAgICAgdm9pZCByZWlmeUxl
bmd0aChWTSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcs
NCArMTA3LDE3IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246Omhhc1JlaWZpZWROYW1lKCkKICAg
ICByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPmhhc1JlaWZpZWROYW1lKCkgOiBmYWxz
ZTsKIH0KIAoraW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUo
KQoreworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0V4ZWN1dGFibGUoKTsKKyAg
ICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcHJvdG90eXBlIHByb3BlcnR5LCB3ZSdyZSBub3QgZ3Vh
cmFudGVlZCBpdCdzCisgICAgLy8gbm9uLXdyaXRhYmxlL25vbi1jb25maWd1cmFibGUuIEZvciBl
eGFtcGxlLCB1c2VyIGNvZGUgY2FuIGRlZmluZQorICAgIC8vIHRoZSBwcm90b3R5cGUgYXMgYSBn
ZXR0ZXIuIEpTIHNlbWFudGljcyByZXF1aXJlIHRoYXQgdGhlIGdldHRlciBpcworICAgIC8vIGNh
bGxlZCBldmVyeSB0aW1lIHxjb25zdHJ1Y3R8IG9jY3VycyB3aXRoIHRoaXMgZnVuY3Rpb24gYXMg
bmV3LnRhcmdldC4KKyAgICByZXR1cm4gZXhlY3V0YWJsZS0+aGFzUHJvdG90eXBlUHJvcGVydHko
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="352998"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334212</attachid>
            <date>2018-02-19 17:39:49 -0800</date>
            <delta_ts>2018-02-19 17:42:26 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13547</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjg3MTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxsb2NhdGlvbiBwcm9maWxl
IHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3RmdWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisK
KyAgICAgICAgKiBzdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanM6
IEFkZGVkLgorCiAyMDE4LTAyLTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBidWdzIGZyb20gcjIyODQxMQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0
LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMJKG5vbmV4aXN0
ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3Rm
dWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGxldCBib3VuZEZ1bmN0aW9uID0gZnVuY3Rp
b24gKCkge30uYmluZCgpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1bmN0aW9u
LCAicHJvdG90eXBlIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICB0aHJvdyBFcnJv
cigiSGVsbG8iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZnVuY3Rpb24oKSB7fSwgW10s
IGJvdW5kRnVuY3Rpb24pOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9IHRydWU7
CisgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJIZWxsbyIpOworICAgIH0KKyAgICBhc3Nl
cnQodGhyZXcpOworfQordGVzdDEoKTsKKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgbGV0IGJv
dW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7CisgICAgbGV0IGNvdW50ZXIgPSAw
OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1bmN0aW9uLCAicHJvdG90eXBlIiwg
eworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgICAgICBy
ZXR1cm4ge307CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IGl0ZXJzID0gMTAwMDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJzOyArK2kpCisgICAgICAgIFJlZmxlY3QuY29u
c3RydWN0KGZ1bmN0aW9uKCkge30sIFtdLCBib3VuZEZ1bmN0aW9uKTsKKyAgICBhc3NlcnQoY291
bnRlciA9PT0gaXRlcnMpOworfQordGVzdDIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxs
b2NhdGlvbiBwcm9maWxlIHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3Rm
dWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhlIGNyZWF0ZV90
aGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZWQgdGhhdCBhbnl0aGluZworICAgICAgICB0aGF0IGlz
IGEgSlNGdW5jdGlvbiBjYW4gdXNlIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCBn
byBkb3duIHRoZQorICAgICAgICBmYXN0IHBhdGggdG8gYWxsb2NhdGUgdGhlIHx0aGlzfCBvYmpl
Y3QuIEltcGxpZWQgYnkgdGhpcyBhcHByb2FjaCBpcyB0aGF0CisgICAgICAgIGFjY2Vzc2luZyB0
aGUgJ3Byb3RvdHlwZScgcHJvcGVydHkgb2YgdGhlIGluY29taW5nIGZ1bmN0aW9uIGlzIG5vdCBh
bgorICAgICAgICBlZmZlY3RmdWwgb3BlcmF0aW9uLiBUaGlzIGlzIGluaGVyZW50IHRvIHRoZSBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSAKKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmU6IGl0IGNhY2hl
cyB0aGUgcHJvdG90eXBlIGZpZWxkLiBIb3dldmVyLCBnZXR0aW5nIHRoZQorICAgICAgICAncHJv
dG90eXBlJyBwcm9wZXJ0eSBtaWdodCBiZSBhbiBlZmZlY3RmdWwgb3BlcmF0aW9uLCBlLmcsIGl0
IGNvdWxkCisgICAgICAgIGJlIGEgZ2V0dGVyLiBNYW55IHZhcmlhbnRzIG9mIGZ1bmN0aW9ucyBp
biBKUyBoYXZlIHRoZSAncHJvdG90eXBlJyBwcm9wZXJ0eQorICAgICAgICBhcyBub24tY29uZmln
dXJhYmxlLiBIb3dldmVyLCBzb21lIGZ1bmN0aW9ucywgbGlrZSBib3VuZCBmdW5jdGlvbnMsIGRv
IG5vdAorICAgICAgICBoYXZlIHRoZSAncHJvdG90eXBlJyBmaWVsZCB3aXRoIHRoZXNlIGF0dHJp
YnV0ZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG5vdGlvbiBvZiAn
Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUnIHRvIEpTRnVuY3Rpb24KKyAgICAgICAgYW5kIHRocmVh
ZHMgaXQgdGhyb3VnaCBzbyB0aGF0IHdlIG9ubHkgZ28gZG93biB0aGUgZmFzdCBwYXRoIGFuZCB1
c2UKKyAgICAgICAgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aGVuIHRoZSBwcm90b3R5cGUgcHJv
cGVydHkgaXMgbm9uLWNvbmZpZ3VyYWJsZS4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpw
cm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxv
Y2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omlu
aXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhblVzZUFsbG9jYXRpb25Qcm9m
aWxlTm9uSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSk6CisKIDIwMTgtMDItMTcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXRBcnJheU1hc2sgc2hvdWxkIHN1
cHBvcnQgY29uc3RhbnQgZm9sZGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjI4NzA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODk3LDcgKzM4OTcsNiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUoCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yOwogICAg
IGJvb2wgbmVlZHNIb21lT2JqZWN0ID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogTWFrZSB0aGUg
cHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBub24td3JpdGFibGUuCiAgICAgaWYgKG1fY29u
c3RydWN0b3JFeHByZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVz
c2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNz
aW9uKS0+bWV0YWRhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDggKzI0Niw4IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGkKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGNvbnN0
cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKLSAgICAgICAgYXV0byByYXJlRGF0
YSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5yYXJlRGF0YShleGVjLCBpbmxp
bmVDYXBhY2l0eSk7CisgICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Q
cm9maWxlKCkpIHsKKyAgICAgICAgYXV0byByYXJlRGF0YSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlu
bGluZUNhcGFjaXR5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPm9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCktPnN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9j
YXN0PE9wQ3JlYXRlVGhpcyo+KHBjKTsKICAgICBKU09iamVjdCogcmVzdWx0OwogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0ID0gYXNPYmplY3QoR0VUKGJ5dGVjb2RlLmNhbGxlZSgp
KS5qc1ZhbHVlKCkpOwotICAgIGlmIChjb25zdHJ1Y3RvckFzT2JqZWN0LT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpIHsKKyAgICBpZiAoY29uc3RydWN0b3JBc09iamVjdC0+dHlwZSgpID09IEpT
RnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3JBc09iamVjdCkt
PmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogY29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yQXNPYmplY3QpOwogICAgICAg
ICBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgY2FjaGVkQ2FsbGVlID0gYnl0ZWNvZGUuY2FjaGVkQ2Fs
bGVlKCk7CiAgICAgICAgIGlmICghY2FjaGVkQ2FsbGVlKQpAQCAtMjMxLDcgKzIzMSw3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICAgICAgICAgIGNhY2hlZENh
bGxlZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2Jq
ZWN0cygpKTsKIAogICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29kZS5pbmxp
bmVDYXBhY2l0eSgpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9y
LT5yYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCktPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVj
dG9yLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFj
aXR5KS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlID0gY29uc3RydWN0b3ItPnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw5ICsxMzksMTIgQEAgRnVuY3Rpb25SYXJl
RGF0YSogSlNGdW5jdGlvbjo6YWxsb2NhdGVSYQogCiBKU09iamVjdCogSlNGdW5jdGlvbjo6cHJv
dG90eXBlRm9yQ29uc3RydWN0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworICAgIC8v
IFRoaXMgY29kZSBhc3N1bWVzIGdldHRpbmcgdGhlIHByb3RvdHlwZSBpcyBub3QgZWZmZWN0ZnVs
LiBUaGF0J3Mgb25seQorICAgIC8vIHRydWUgd2hlbiB3ZSBjYW4gdXNlIHRoZSBhbGxvY2F0aW9u
IHByb2ZpbGUuCisgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpOyAKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSBnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIHNjb3BlLnJlbGVhc2VBc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZSk7CiAKQEAgLTE1MSw2ICsxNTQsNyBAQCBKU09iamVj
dCogSlNGdW5jdGlvbjo6cHJvdG90eXBlRm9yQ29uc3RyCiBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1
bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOworICAgIEFT
U0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0s
IGV4ZWMpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlKHZtKTsKQEAgLTE2Nyw2ICsxNzEsNyBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1
bmN0aW9uOjphbGxvY2F0ZUFuCiBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjppbml0aWFs
aXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAg
ICAgQVNTRVJUKCEhbV9yYXJlRGF0YSk7CisgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9m
aWxlKCkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7CiAgICAgbV9yYXJlRGF0YS0+
aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3Qodm0pLCBw
cm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKQEAgLTM3NCw2ICszNzksMTMgQEAgYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlICYmIHRoaXNPYmplY3Qt
PmpzRXhlY3V0YWJsZSgpLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpICYmICF0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSkgeworICAgICAgICAv
LyBOT1RFOiBjbGFzcyBjb25zdHJ1Y3RvcnMgZGVmaW5lIHRoZSBwcm90b3R5cGUgcHJvcGVydHkg
aW4gYnl0ZWNvZGUgdXNpbmcKKyAgICAgICAgLy8gZGVmaW5lT3duUHJvcGVydHksIHdoaWNoIGVu
ZHMgdXAgY2FsbGluZyBpbnRvIHRoaXMgY29kZSAoc2VlIG91ciBkZWZpbmVPd25Qcm9wZXJ0eQor
ICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBiZWxvdykuIFRoZSBieXRlY29kZSB3aWxsIGVuZCB1
cCBkb2luZyB0aGUgcHJvcGVyIGRlZmluaXRpb24KKyAgICAgICAgLy8gd2l0aCB0aGUgcHJvcGVy
dHkgYmVpbmcgbm9uLXdyaXRhYmxlL25vbi1jb25maWd1cmFibGUuIEhvd2V2ZXIsIHdlIG11c3Qg
aWdub3JlCisgICAgICAgIC8vIHRoZSBpbml0aWFsIG1hdGVyaWFsaXphdGlvbiBvZiB0aGUgcHJv
cGVydHkgc28gdGhhdCB0aGUgZGVmaW5lT3duUHJvcGVydHkgY2FsbAorICAgICAgICAvLyBmcm9t
IGJ5dGVjb2RlIHN1Y2NlZWRzLiBPdGhlcndpc2UsIHRoZSBtYXRlcmlhbGl6YXRpb24gaGVyZSB3
b3VsZCBwcmV2ZW50IHRoZQorICAgICAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSBmcm9tIGJlaW5n
IGFibGUgdG8gb3ZlcndyaXRlIHRoZSBwcm9wZXJ0eS4KICAgICAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQob2Zmc2V0KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTQgKzEzMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiAgICAgfQogCi0g
ICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSkKLSAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YSkp
Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoZXhlYywg
aW5saW5lQ2FwYWNpdHkpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEtPmlzT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVJbml0aWFsaXplZCgpKSkKLSAgICAgICAgICAgIHJldHVybiBp
bml0aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS5nZXQoKTsKLSAgICB9CisgICAgRnVuY3Rpb25SYXJlRGF0YSogZW5zdXJlUmFy
ZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlubGlu
ZUNhcGFjaXR5KTsKIAogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhKCkKICAgICB7CkBA
IC0xNjAsNiArMTUzLDkgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIF9fcHJvdG9fXyBm
b3IgdGhlIHx0aGlzfCB2YWx1ZSBpZiB0aGlzIEpTRnVuY3Rpb24gd2VyZSB0byBiZSBjb25zdHJ1
Y3RlZC4KICAgICBKU09iamVjdCogcHJvdG90eXBlRm9yQ29uc3RydWN0aW9uKFZNJiwgRXhlY1N0
YXRlKik7CiAKKyAgICBib29sIGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCk7CisgICAgYm9vbCBj
YW5Vc2VBbGxvY2F0aW9uUHJvZmlsZU5vbklubGluZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CiAgICAgSlNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBT
dHJ1Y3R1cmUqKTsKQEAgLTE2NywxMCArMTYzLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBGdW5jdGlv
blJhcmVEYXRhKiBhbGxvY2F0ZVJhcmVEYXRhKFZNJik7Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSog
YWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoRXhlY1N0YXRlKiwgc2l6ZV90IGlubGluZUNh
cGFjaXR5KTsKLSAgICBGdW5jdGlvblJhcmVEYXRhKiBpbml0aWFsaXplUmFyZURhdGEoRXhlY1N0
YXRlKiwgc2l6ZV90IGlubGluZUNhcGFjaXR5KTsKLQogICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgPSBF
bnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMTkyLDYgKzE4NCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQogCisgICAgRnVuY3Rpb25SYXJlRGF0YSogYWxs
b2NhdGVSYXJlRGF0YShWTSYpOworICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRlQW5kSW5p
dGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7CisgICAg
RnVuY3Rpb25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSk7CisKICAgICBib29sIGhhc1JlaWZpZWRMZW5ndGgoKSBjb25zdDsKICAg
ICBib29sIGhhc1JlaWZpZWROYW1lKCkgY29uc3Q7CiAgICAgdm9pZCByZWlmeUxlbmd0aChWTSYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oCShyZXZpc2lvbiAyMjg3MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNCArMTA3LDI2
IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246Omhhc1JlaWZpZWROYW1lKCkKICAgICByZXR1cm4g
bV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPmhhc1JlaWZpZWROYW1lKCkgOiBmYWxzZTsKIH0KIAor
aW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKQoreworICAg
IGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJ
ZiB3ZSBkb24ndCBoYXZlIGEgcHJvdG90eXBlIHByb3BlcnR5LCB3ZSdyZSBub3QgZ3VhcmFudGVl
ZCBpdCdzCisgICAgLy8gbm9uLWNvbmZpZ3VyYWJsZS4gRm9yIGV4YW1wbGUsIHVzZXIgY29kZSBj
YW4gZGVmaW5lIHRoZSBwcm90b3R5cGUKKyAgICAvLyBhcyBhIGdldHRlci4gSlMgc2VtYW50aWNz
IHJlcXVpcmUgdGhhdCB0aGUgZ2V0dGVyIGlzIGNhbGxlZCBldmVyeQorICAgIC8vIHRpbWUgfGNv
bnN0cnVjdHwgb2NjdXJzIHdpdGggdGhpcyBmdW5jdGlvbiBhcyBuZXcudGFyZ2V0LgorICAgIHJl
dHVybiBqc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKTsKK30KKworaW5saW5l
IEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVuY3Rpb246OmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlv
blByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKK3sKKyAg
ICBBU1NFUlQoY2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFt
X3JhcmVEYXRhKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRh
KGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKKyAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEtPmlz
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbml0aWFsaXplZCgpKSkKKyAgICAgICAgcmV0dXJuIGlu
aXRpYWxpemVSYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CisgICAgcmV0dXJuIG1fcmFy
ZURhdGEuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334213</attachid>
            <date>2018-02-19 17:42:26 -0800</date>
            <delta_ts>2018-02-20 00:11:11 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13542</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjg3MTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxsb2NhdGlvbiBwcm9maWxl
IHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3RmdWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisK
KyAgICAgICAgKiBzdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanM6
IEFkZGVkLgorCiAyMDE4LTAyLTE2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBidWdzIGZyb20gcjIyODQxMQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2V0
LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3RmdWwuanMJKG5vbmV4aXN0
ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvZ2V0LXByb3RvdHlwZS1jcmVhdGUtdGhpcy1lZmZlY3Rm
dWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGxldCBib3VuZEZ1bmN0aW9uID0gZnVuY3Rp
b24gKCkge30uYmluZCgpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1bmN0aW9u
LCAicHJvdG90eXBlIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICB0aHJvdyBFcnJv
cigiSGVsbG8iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZnVuY3Rpb24oKSB7fSwgW10s
IGJvdW5kRnVuY3Rpb24pOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9IHRydWU7
CisgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09ICJIZWxsbyIpOworICAgIH0KKyAgICBhc3Nl
cnQodGhyZXcpOworfQordGVzdDEoKTsKKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgbGV0IGJv
dW5kRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7fS5iaW5kKCk7CisgICAgbGV0IGNvdW50ZXIgPSAw
OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3VuZEZ1bmN0aW9uLCAicHJvdG90eXBlIiwg
eworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICArK2NvdW50ZXI7CisgICAgICAgICAgICBy
ZXR1cm4ge307CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGNvbnN0IGl0ZXJzID0gMTAwMDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJzOyArK2kpCisgICAgICAgIFJlZmxlY3QuY29u
c3RydWN0KGZ1bmN0aW9uKCkge30sIFtdLCBib3VuZEZ1bmN0aW9uKTsKKyAgICBhc3NlcnQoY291
bnRlciA9PT0gaXRlcnMpOworfQordGVzdDIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE4LTAyLTE5ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHVzZSBKU0Z1bmN0aW9uJ3MgYWxs
b2NhdGlvbiBwcm9maWxlIHdoZW4gZ2V0dGluZyB0aGUgcHJvdG90eXBlIGNhbiBiZSBlZmZlY3Rm
dWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1ODQ3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgUHJpb3IgdG8gdGhpcyBwYXRjaCwgdGhlIGNyZWF0ZV90
aGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZWQgdGhhdCBhbnl0aGluZworICAgICAgICB0aGF0IGlz
IGEgSlNGdW5jdGlvbiBjYW4gdXNlIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBwcm9maWxlIGFuZCBn
byBkb3duIHRoZQorICAgICAgICBmYXN0IHBhdGggdG8gYWxsb2NhdGUgdGhlIHx0aGlzfCBvYmpl
Y3QuIEltcGxpZWQgYnkgdGhpcyBhcHByb2FjaCBpcyB0aGF0CisgICAgICAgIGFjY2Vzc2luZyB0
aGUgJ3Byb3RvdHlwZScgcHJvcGVydHkgb2YgdGhlIGluY29taW5nIGZ1bmN0aW9uIGlzIG5vdCBh
bgorICAgICAgICBlZmZlY3RmdWwgb3BlcmF0aW9uLiBUaGlzIGlzIGluaGVyZW50IHRvIHRoZSBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSAKKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmU6IGl0IGNhY2hl
cyB0aGUgcHJvdG90eXBlIGZpZWxkLiBIb3dldmVyLCBnZXR0aW5nIHRoZQorICAgICAgICAncHJv
dG90eXBlJyBwcm9wZXJ0eSBtaWdodCBiZSBhbiBlZmZlY3RmdWwgb3BlcmF0aW9uLCBlLmcsIGl0
IGNvdWxkCisgICAgICAgIGJlIGEgZ2V0dGVyLiBNYW55IHZhcmlhbnRzIG9mIGZ1bmN0aW9ucyBp
biBKUyBoYXZlIHRoZSAncHJvdG90eXBlJyBwcm9wZXJ0eQorICAgICAgICBhcyBub24tY29uZmln
dXJhYmxlLiBIb3dldmVyLCBzb21lIGZ1bmN0aW9ucywgbGlrZSBib3VuZCBmdW5jdGlvbnMsIGRv
IG5vdAorICAgICAgICBoYXZlIHRoZSAncHJvdG90eXBlJyBmaWVsZCB3aXRoIHRoZXNlIGF0dHJp
YnV0ZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIG5vdGlvbiBvZiAn
Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUnIHRvIEpTRnVuY3Rpb24KKyAgICAgICAgYW5kIHRocmVh
ZHMgaXQgdGhyb3VnaCBzbyB0aGF0IHdlIG9ubHkgZ28gZG93biB0aGUgZmFzdCBwYXRoIGFuZCB1
c2UKKyAgICAgICAgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aGVuIHRoZSBwcm90b3R5cGUgcHJv
cGVydHkgaXMgbm9uLWNvbmZpZ3VyYWJsZS4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpw
cm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphbGxv
Y2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omlu
aXRpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNhblVzZUFsbG9jYXRpb25Qcm9m
aWxlTm9uSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSk6CisKIDIwMTgtMDItMTcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXRBcnJheU1hc2sgc2hvdWxkIHN1
cHBvcnQgY29uc3RhbnQgZm9sZGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjI4NzA1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODk3LDcgKzM4OTcsNiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUoCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yOwogICAg
IGJvb2wgbmVlZHNIb21lT2JqZWN0ID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogTWFrZSB0aGUg
cHJvdG90eXBlIG5vbi1jb25maWd1cmFibGUgJiBub24td3JpdGFibGUuCiAgICAgaWYgKG1fY29u
c3RydWN0b3JFeHByZXNzaW9uKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yRXhwcmVz
c2lvbi0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBt
ZXRhZGF0YSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KG1fY29uc3RydWN0b3JFeHByZXNz
aW9uKS0+bWV0YWRhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDggKzI0Niw4IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGkKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGNvbnN0
cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpIHsKLSAgICAgICAgYXV0byByYXJlRGF0
YSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5yYXJlRGF0YShleGVjLCBpbmxp
bmVDYXBhY2l0eSk7CisgICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVzZUFsbG9jYXRpb25Q
cm9maWxlKCkpIHsKKyAgICAgICAgYXV0byByYXJlRGF0YSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlu
bGluZUNhcGFjaXR5KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcmFyZURhdGEtPm9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCktPnN0cnVjdHVyZSgpOwogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9j
YXN0PE9wQ3JlYXRlVGhpcyo+KHBjKTsKICAgICBKU09iamVjdCogcmVzdWx0OwogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvckFzT2JqZWN0ID0gYXNPYmplY3QoR0VUKGJ5dGVjb2RlLmNhbGxlZSgp
KS5qc1ZhbHVlKCkpOwotICAgIGlmIChjb25zdHJ1Y3RvckFzT2JqZWN0LT50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpIHsKKyAgICBpZiAoY29uc3RydWN0b3JBc09iamVjdC0+dHlwZSgpID09IEpT
RnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3JBc09iamVjdCkt
PmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogY29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yQXNPYmplY3QpOwogICAgICAg
ICBXcml0ZUJhcnJpZXI8SlNDZWxsPiYgY2FjaGVkQ2FsbGVlID0gYnl0ZWNvZGUuY2FjaGVkQ2Fs
bGVlKCk7CiAgICAgICAgIGlmICghY2FjaGVkQ2FsbGVlKQpAQCAtMjMxLDcgKzIzMSw3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICAgICAgICAgIGNhY2hlZENh
bGxlZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2Jq
ZWN0cygpKTsKIAogICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29kZS5pbmxp
bmVDYXBhY2l0eSgpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9y
LT5yYXJlRGF0YShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCktPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNvbnN0cnVj
dG9yLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFj
aXR5KS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJv
dG90eXBlID0gY29uc3RydWN0b3ItPnByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw5ICsxMzksMTIgQEAgRnVuY3Rpb25SYXJl
RGF0YSogSlNGdW5jdGlvbjo6YWxsb2NhdGVSYQogCiBKU09iamVjdCogSlNGdW5jdGlvbjo6cHJv
dG90eXBlRm9yQ29uc3RydWN0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworICAgIC8v
IFRoaXMgY29kZSBhc3N1bWVzIGdldHRpbmcgdGhlIHByb3RvdHlwZSBpcyBub3QgZWZmZWN0ZnVs
LiBUaGF0J3Mgb25seQorICAgIC8vIHRydWUgd2hlbiB3ZSBjYW4gdXNlIHRoZSBhbGxvY2F0aW9u
IHByb2ZpbGUuCisgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpOyAKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBwcm90b3R5
cGUgPSBnZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKLSAgICBBU1NFUlRf
VU5VU0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIHNjb3BlLnJlbGVhc2VBc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIGFzT2JqZWN0KHByb3RvdHlwZSk7CiAKQEAgLTE1MSw2ICsxNTQsNyBAQCBKU09iamVj
dCogSlNGdW5jdGlvbjo6cHJvdG90eXBlRm9yQ29uc3RyCiBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1
bmN0aW9uOjphbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOworICAgIEFT
U0VSVChjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JDb25zdHJ1Y3Rpb24odm0s
IGV4ZWMpOwogICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlKHZtKTsKQEAgLTE2Nyw2ICsxNzEsNyBAQCBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1
bmN0aW9uOjphbGxvY2F0ZUFuCiBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjppbml0aWFs
aXplUmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAg
ICAgQVNTRVJUKCEhbV9yYXJlRGF0YSk7CisgICAgQVNTRVJUKGNhblVzZUFsbG9jYXRpb25Qcm9m
aWxlKCkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlw
ZSA9IHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbih2bSwgZXhlYyk7CiAgICAgbV9yYXJlRGF0YS0+
aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKHZtLCBnbG9iYWxPYmplY3Qodm0pLCBw
cm90b3R5cGUsIGlubGluZUNhcGFjaXR5LCB0aGlzKTsKQEAgLTM3NCw2ICszNzksMTMgQEAgYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlICYmIHRoaXNPYmplY3Qt
PmpzRXhlY3V0YWJsZSgpLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpICYmICF0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSkgeworICAgICAgICAv
LyBOT1RFOiBjbGFzcyBjb25zdHJ1Y3RvcnMgZGVmaW5lIHRoZSBwcm90b3R5cGUgcHJvcGVydHkg
aW4gYnl0ZWNvZGUgdXNpbmcKKyAgICAgICAgLy8gZGVmaW5lT3duUHJvcGVydHksIHdoaWNoIGVu
ZHMgdXAgY2FsbGluZyBpbnRvIHRoaXMgY29kZSAoc2VlIG91ciBkZWZpbmVPd25Qcm9wZXJ0eQor
ICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiBiZWxvdykuIFRoZSBieXRlY29kZSB3aWxsIGVuZCB1
cCBkb2luZyB0aGUgcHJvcGVyIGRlZmluaXRpb24KKyAgICAgICAgLy8gd2l0aCB0aGUgcHJvcGVy
dHkgYmVpbmcgbm9uLXdyaXRhYmxlL25vbi1jb25maWd1cmFibGUuIEhvd2V2ZXIsIHdlIG11c3Qg
aWdub3JlCisgICAgICAgIC8vIHRoZSBpbml0aWFsIG1hdGVyaWFsaXphdGlvbiBvZiB0aGUgcHJv
cGVydHkgc28gdGhhdCB0aGUgZGVmaW5lT3duUHJvcGVydHkgY2FsbAorICAgICAgICAvLyBmcm9t
IGJ5dGVjb2RlIHN1Y2NlZWRzLiBPdGhlcndpc2UsIHRoZSBtYXRlcmlhbGl6YXRpb24gaGVyZSB3
b3VsZCBwcmV2ZW50IHRoZQorICAgICAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSBmcm9tIGJlaW5n
IGFibGUgdG8gb3ZlcndyaXRlIHRoZSBwcm9wZXJ0eS4KICAgICAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlz
VmFsaWRPZmZzZXQob2Zmc2V0KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsMTQgKzEzMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCk7CiAgICAgfQogCi0g
ICAgRnVuY3Rpb25SYXJlRGF0YSogcmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
bmxpbmVDYXBhY2l0eSkKLSAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YSkp
Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVBbmRJbml0aWFsaXplUmFyZURhdGEoZXhlYywg
aW5saW5lQ2FwYWNpdHkpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmFyZURhdGEtPmlzT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVJbml0aWFsaXplZCgpKSkKLSAgICAgICAgICAgIHJldHVybiBp
bml0aWFsaXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOwotICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS5nZXQoKTsKLSAgICB9CisgICAgRnVuY3Rpb25SYXJlRGF0YSogZW5zdXJlUmFy
ZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBpbmxpbmVDYXBh
Y2l0eSk7CiAKICAgICBGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSgpCiAgICAgewpAQCAtMTYw
LDYgKzE1Myw5IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBfX3Byb3RvX18gZm9yIHRo
ZSB8dGhpc3wgdmFsdWUgaWYgdGhpcyBKU0Z1bmN0aW9uIHdlcmUgdG8gYmUgY29uc3RydWN0ZWQu
CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZUZvckNvbnN0cnVjdGlvbihWTSYsIEV4ZWNTdGF0ZSop
OwogCisgICAgYm9vbCBjYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgIGJvb2wgY2FuVXNl
QWxsb2NhdGlvblByb2ZpbGVOb25JbmxpbmUoKTsKKwogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwog
ICAgIEpTRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0
dXJlKik7CkBAIC0xNjcsMTAgKzE2Myw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgRnVuY3Rpb25SYXJl
RGF0YSogYWxsb2NhdGVSYXJlRGF0YShWTSYpOwotICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9j
YXRlQW5kSW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSk7Ci0gICAgRnVuY3Rpb25SYXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSos
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSk7Ci0KICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVy
YXRpb25Nb2RlKCkpOwogICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKQEAgLTE5Miw2ICsxODQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uOwogICAgIH0KIAorICAgIEZ1bmN0aW9uUmFyZURhdGEqIGFsbG9jYXRl
UmFyZURhdGEoVk0mKTsKKyAgICBGdW5jdGlvblJhcmVEYXRhKiBhbGxvY2F0ZUFuZEluaXRpYWxp
emVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpOworICAgIEZ1bmN0
aW9uUmFyZURhdGEqIGluaXRpYWxpemVSYXJlRGF0YShFeGVjU3RhdGUqLCBzaXplX3QgaW5saW5l
Q2FwYWNpdHkpOworCiAgICAgYm9vbCBoYXNSZWlmaWVkTGVuZ3RoKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNSZWlmaWVkTmFtZSgpIGNvbnN0OwogICAgIHZvaWQgcmVpZnlMZW5ndGgoVk0mKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaAkocmV2aXNpb24gMjI4NzA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDQgKzEwNywyNiBAQCBp
bmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjpoYXNSZWlmaWVkTmFtZSgpCiAgICAgcmV0dXJuIG1fcmFy
ZURhdGEgPyBtX3JhcmVEYXRhLT5oYXNSZWlmaWVkTmFtZSgpIDogZmFsc2U7CiB9CiAKK2lubGlu
ZSBib29sIEpTRnVuY3Rpb246OmNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkKK3sKKyAgICBpZiAo
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgd2Ug
ZG9uJ3QgaGF2ZSBhIHByb3RvdHlwZSBwcm9wZXJ0eSwgd2UncmUgbm90IGd1YXJhbnRlZWQgaXQn
cworICAgIC8vIG5vbi1jb25maWd1cmFibGUuIEZvciBleGFtcGxlLCB1c2VyIGNvZGUgY2FuIGRl
ZmluZSB0aGUgcHJvdG90eXBlCisgICAgLy8gYXMgYSBnZXR0ZXIuIEpTIHNlbWFudGljcyByZXF1
aXJlIHRoYXQgdGhlIGdldHRlciBpcyBjYWxsZWQgZXZlcnkKKyAgICAvLyB0aW1lIHxjb25zdHJ1
Y3R8IG9jY3VycyB3aXRoIHRoaXMgZnVuY3Rpb24gYXMgbmV3LnRhcmdldC4KKyAgICByZXR1cm4g
anNFeGVjdXRhYmxlKCktPmhhc1Byb3RvdHlwZVByb3BlcnR5KCk7Cit9CisKK2lubGluZSBGdW5j
dGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjplbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9m
aWxlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCit7CisgICAgQVNT
RVJUKGNhblVzZUFsbG9jYXRpb25Qcm9maWxlKCkpOworICAgIGlmIChVTkxJS0VMWSghbV9yYXJl
RGF0YSkpCisgICAgICAgIHJldHVybiBhbGxvY2F0ZUFuZEluaXRpYWxpemVSYXJlRGF0YShleGVj
LCBpbmxpbmVDYXBhY2l0eSk7CisgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhLT5pc09iamVj
dEFsbG9jYXRpb25Qcm9maWxlSW5pdGlhbGl6ZWQoKSkpCisgICAgICAgIHJldHVybiBpbml0aWFs
aXplUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOworICAgIHJldHVybiBtX3JhcmVEYXRh
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="commit-queue"
          id="353014"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>