<?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>193751</bug_id>
          
          <creation_ts>2019-01-23 17:45:29 -0800</creation_ts>
          <short_desc>Object Allocation Sinking phase can move a node that walks the stack into a place where the InlineCallFrame is no longer valid</short_desc>
          <delta_ts>2019-01-24 13:31:03 -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>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497672</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 17:45:29 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497673</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 17:46:28 -0800</bug_when>
    <thetext>Basically, we move a heap allocation elsewhere in the program. That heap allocation may walk the stack. Walking the stack may read fields w.r.t the inline call frame on the stack. However, by the time we actually walk the stack those fields may no longer be valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497674</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 17:49:26 -0800</bug_when>
    <thetext>Some ways to solve this:

1. Update CallSiteIndex to be the forExit CodeOrigin instead of the semantic origin. This should mostly Just Work. Some potential fallout is a stack trace may give you unexpected line/column info. The reason this is nice is it may fix other future bugs that run into similar issues reading an inline call frame&apos;s stack slots.

2. Update OAS to not perform such moving of code when we detect this scenario. I kind of like this since LICM/ArgumentsElimination models this scenario correctly and won&apos;t hoist/eliminate code in such a situation.

3. All of these heap allocations that move should use a DeferGCForAWhile. I don&apos;t like this solution since it means you can write programs that allocate indefinitely without GCing. But it would work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497675</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 17:50:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/47280215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497700</commentid>
    <comment_count>4</comment_count>
      <attachid>359986</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 19:14:36 -0800</bug_when>
    <thetext>Created attachment 359986
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497701</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 19:15:51 -0800</bug_when>
    <thetext>This patch goes with approach (2). I&apos;m open to hearing cases of doing (1) or (3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497722</commentid>
    <comment_count>6</comment_count>
      <attachid>359986</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-23 21:01:23 -0800</bug_when>
    <thetext>Comment on attachment 359986
patch

Attachment 359986 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/10868080

New failing tests:
stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js.default
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497727</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 21:19:32 -0800</bug_when>
    <thetext>(In reply to Build Bot from comment #6)
&gt; Comment on attachment 359986 [details]
&gt; patch
&gt; 
&gt; Attachment 359986 [details] did not pass jsc-ews (mac):
&gt; Output: https://webkit-queues.webkit.org/results/10868080
&gt; 
&gt; New failing tests:
&gt; stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-
&gt; trace-is-still-valid.js.default
&gt; apiTests

I&apos;m not sure what&apos;s happening here. This passes for me locally as it&apos;s the test case I&apos;m adding...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497728</commentid>
    <comment_count>8</comment_count>
      <attachid>359986</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 21:23:37 -0800</bug_when>
    <thetext>Comment on attachment 359986
patch

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

&gt; JSTests/stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js:1
&gt; +//@ runDefault(&quot;useConcurrentJIT=0&quot;, &quot;jitPolicyScale=0&quot;, &quot;collectContinuously=1&quot;)

oops, I&apos;m missing &quot;--&quot; before these options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497729</commentid>
    <comment_count>9</comment_count>
      <attachid>359991</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-23 21:24:03 -0800</bug_when>
    <thetext>Created attachment 359991
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497854</commentid>
    <comment_count>10</comment_count>
      <attachid>359991</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-01-24 09:48:14 -0800</bug_when>
    <thetext>Comment on attachment 359991
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        walk the stack at the point in the program that it moved the allocation to.

nit: *to* walk the ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497915</commentid>
    <comment_count>11</comment_count>
      <attachid>360027</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-24 12:53:08 -0800</bug_when>
    <thetext>Created attachment 360027
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497926</commentid>
    <comment_count>12</comment_count>
      <attachid>360027</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-24 13:31:01 -0800</bug_when>
    <thetext>Comment on attachment 360027
patch for landing

Clearing flags on attachment: 360027

Committed r240447: &lt;https://trac.webkit.org/changeset/240447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497927</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-24 13:31:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359986</attachid>
            <date>2019-01-23 19:14:36 -0800</date>
            <delta_ts>2019-01-23 21:24:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10725</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDA0MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE9iamVjdCBBbGxvY2F0aW9uIFNpbmtpbmcgcGhhc2UgY2FuIG1vdmUg
YSBub2RlIHRoYXQgd2Fsa3MgdGhlIHN0YWNrIGludG8gYSBwbGFjZSB3aGVyZSB0aGUgSW5saW5l
Q2FsbEZyYW1lIGlzIG5vIGxvbmdlciB2YWxpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNzUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzI4
MDIxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9vYmplY3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFs
bG9jYXRpb25zLWlmLXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC50aGluZyk6CisgICAgICAgIChmb28ubGV0LmhlbGxvKToKKyAgICAgICAgKGZvbyk6
CisKIDIwMTktMDEtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbREZHXSBBdmFpbGFiaWxpdHlNYXA6OnBydW5lQnlMaXZlbmVzcyBzaG91bGQgbWFrZSBu
b24tbGl2ZSBvcGVyYW5kcyBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlIGluc3RlYWQgb2YgQXZh
aWxhYmlsaXR5KCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL29iamVjdC1hbGxvY2F0aW9uLXNpbmtp
bmctcGhhc2UtbXVzdC1vbmx5LW1vdmUtYWxsb2NhdGlvbnMtaWYtc3RhY2stdHJhY2UtaXMtc3Rp
bGwtdmFsaWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFsbG9jYXRp
b24tc2lua2luZy1waGFzZS1tdXN0LW9ubHktbW92ZS1hbGxvY2F0aW9ucy1pZi1zdGFjay10cmFj
ZS1pcy1zdGlsbC12YWxpZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFsbG9jYXRpb25zLWlm
LXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzAgQEAKKy8vQCBydW5EZWZhdWx0KCJ1c2VDb25jdXJyZW50SklUPTAiLCAiaml0UG9saWN5U2Nh
bGU9MCIsICJjb2xsZWN0Q29udGludW91c2x5PTEiKQorCitsZXQgdGhpbmcgPSBbXQorCitmdW5j
dGlvbiBiYXIoeCkgeworICAgIHRoaW5nLnB1c2goeCk7Cit9CisKK2Z1bmN0aW9uIGZvbygpIHsK
KyAgICBsZXQgaGVsbG8gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGxldCB0bXAgPSAxOworICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKG51bSkgeworICAgICAgICAgICAgaWYgKHRtcCkgeworICAg
ICAgICAgICAgICAgIGlmIChudW0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgIH0oKTsKKworICAgIGJhcigpOworICAgIGZvciAoaiA9
IDA7IGogPCAxMDAwMDsgaisrKSB7CisgICAgICAgIGlmICgvXHMvLnRlc3QoJyAnKSkgeworICAg
ICAgICAgICAgaGVsbG8oaik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ZvciAobGV0IGk9MDsg
aTwxMDA7IGkrKykgeworICAgIGZvbygpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDAzNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDEtMjMgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IEFsbG9jYXRpb24gU2lua2luZyBw
aGFzZSBjYW4gbW92ZSBhIG5vZGUgdGhhdCB3YWxrcyB0aGUgc3RhY2sgaW50byBhIHBsYWNlIHdo
ZXJlIHRoZSBJbmxpbmVDYWxsRnJhbWUgaXMgbm8gbG9uZ2VyIHZhbGlkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ3MjgwMjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIHBoYXNlIG1heSBtb3Zl
IGFsbG9jYXRpb25zIGFyb3VuZCBpbnNpZGUKKyAgICAgICAgb2YgdGhlIHByb2dyYW0uIEhvd2V2
ZXIsIGl0IHdhcyBub3QgZW5zdXJpbmcgdGhhdCBpdCdzIHN0aWxsIHBvc3NpYmxlIAorICAgICAg
ICB3YWxrIHRoZSBzdGFjayBhdCB0aGUgcG9pbnQgaW4gdGhlIHByb2dyYW0gdGhhdCBpdCBtb3Zl
ZCB0aGUgYWxsb2NhdGlvbiB0by4KKyAgICAgICAgQ2VydGFpbiBJbmxpbmVDYWxsRnJhbWVzIHJl
bHkgb24gZGF0YSBpbiB0aGUgc3RhY2sgd2hlbiB0YWtpbmcgYSBzdGFjayB0cmFjZS4KKyAgICAg
ICAgQWxsIGFsbG9jYXRpb24gc2l0ZXMgY2FuIGRvIGEgc3RhY2sgd2FsayAod2UgZG8gYSBzdGFj
ayB3YWxrIHdoZW4gd2UgR0MpLgorICAgICAgICBDb25zZXJ2YXRpdmVseSwgdGhpcyBwYXRjaCBz
YXlzIHdlJ3JlIG9rIHRvIG1vdmUgdGhpcyBhbGxvY2F0aW9uIGlmIHdlIGFyZQorICAgICAgICBt
b3Zpbmcgd2l0aGluIHRoZSBzYW1lIElubGluZUNhbGxGcmFtZS4gV2UgY291bGQgYmUgbW9yZSBw
cmVjaXNlIGFuZCBkbyBhbgorICAgICAgICBhbmFseXNpcyBvZiBzdGFjayB3cml0ZXMuIEhvd2V2
ZXIsIHRoaXMgc2NlbmFyaW8gaXMgc28gcmFyZSB0aGF0IHdlIGp1c3QKKyAgICAgICAgdGFrZSB0
aGUgY29uc2VydmF0aXZlLWFuZC1zdHJhaWdodC1mb3J3YXJkIGFwcHJvYWNoIG9mIGNoZWNraW5n
IHRoYXQgdGhlIHBsYWNlCisgICAgICAgIHdlJ3JlIG1vdmluZyB0byBpcyB0aGUgc2FtZSBJbmxp
bmVDYWxsRnJhbWUgYXMgdGhlIGFsbG9jYXRpb24gc2l0ZS4KKyAgICAgICAgCisgICAgICAgIElu
IGdlbmVyYWwsIHRoaXMgaXNzdWUgYXJpc2VzIGFueXRpbWUgd2UgZG8gYW55IGtpbmQgb2YgY29k
ZSBtb3Rpb24uCisgICAgICAgIEludGVyZXN0aW5nbHksIExJQ00gZ2V0cyB0aGlzIHJpZ2h0LiBJ
dCBnZXRzIGl0IHJpZ2h0IGJlY2F1c2UgdGhlIG9ubHkKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1l
cyB3ZSBjYW4ndCBtb3ZlIG91dCBvZiBhcmUgdGhlIElubGluZUNhbGxGcmFtZXMgdGhhdAorICAg
ICAgICBoYXZlIG1ldGFkYXRhIHN0b3JlZCBvbiB0aGUgc3RhY2sgKGNhbGxlZSBmb3IgY2xvc3Vy
ZSBjYWxscyBhbmQgYXJndW1lbnQKKyAgICAgICAgY291bnQgZm9yIHZhcmFyZ3MgY2FsbHMpLiBM
SUNNIGRvZXNuJ3QgaGF2ZSB0aGlzIGlzc3VlIGJlY2F1c2UgaXQgcmVsaWVzCisgICAgICAgIG9u
IENsb2JiZXJpemUgZm9yIGRvaW5nIGl0cyBlZmZlY3RzIGFuYWx5c2lzLiBJbiBjbG9iYmVyaXpl
LCB3ZSBtb2RlbCBldmVyeQorICAgICAgICBub2RlIHdpdGhpbiBhbiBJbmxpbmVDYWxsRnJhbWUg
dGhhdCBtZWV0cyB0aGUgYWJvdmUgY3JpdGVyaWEgYXMgcmVhZGluZworICAgICAgICBmcm9tIHRo
b3NlIHN0YWNrIGZpZWxkcy4gQ29uc2VxdWVudGx5LCBMSUNNIHdvbid0IGhvaXN0IGFueSBub2Rl
IGluIHRoYXQKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lIHBhc3QgdGhlIGJlZ2lubmluZyBvZiB0
aGUgSW5saW5lQ2FsbEZyYW1lIHNpbmNlIHRoZSBJUgorICAgICAgICB3ZSBnZW5lcmF0ZSB0byBz
ZXQgdXAgc3VjaCBhbiBJbmxpbmVDYWxsRnJhbWUgY29udGFpbnMgd3JpdGVzIHRvIHRoYXQKKyAg
ICAgICAgc3RhY2sgbG9jYXRpb24uCisKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHA6CisKIDIwMTktMDEtMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlczog
SlNDOjpvcGNvZGVMZW5ndGhzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDI0MDM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTUsNyArMTIxNSw3MCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgYXV0byBmb3JF
YWNoRXNjYXBlZSA9IFsmXSAoYXV0byBjYWxsYmFjaykgeworICAgICAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAg
ICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107CisgICAgICAgICAgICAgICAg
bV9oZWFwLnNldFdhbnRFc2NhcGVlcygpOworCisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBu
b2RlIDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgW10gKFByb21v
dGVkSGVhcExvY2F0aW9uLCBMYXp5Tm9kZSkgeyB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
W10gKFByb21vdGVkSGVhcExvY2F0aW9uKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVlcyA9IG1faGVhcC50YWtlRXNjYXBlZXMoKTsK
KyAgICAgICAgICAgICAgICAgICAgZXNjYXBlZXMucmVtb3ZlSWYoWyZdIChjb25zdCBhdXRvJiBl
bnRyeSkgeyByZXR1cm4gIW1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMoZW50cnkua2V5KTsgfSk7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVzY2FwZWVzLCBub2RlKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2hlYXAucHJ1bmVCeUxpdmVuZXNzKG1fY29t
YmluZWRMaXZlbmVzcy5saXZlQXRUYWlsW2Jsb2NrXSk7CisKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8Tm9kZSosIEFsbG9jYXRpb24+IGVzY2FwaW5nT25F
ZGdlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9oZWFw
LmFsbG9jYXRpb25zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVzdEVzY2FwZSA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9j
ayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uaXNBbGxvY2F0aW9uKGVudHJ5LmtleSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbV9oZWFwQXRIZWFkW3N1Y2Nlc3Nv
ckJsb2NrXS5nZXRBbGxvY2F0aW9uKGVudHJ5LmtleSkuaXNFc2NhcGVkQWxsb2NhdGlvbigpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0RXNjYXBlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11c3RF
c2NhcGUgJiYgbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhlbnRyeS5rZXkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVzY2FwaW5nT25FZGdlLmFkZChlbnRyeS5rZXksIGVudHJ5LnZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhlc2NhcGluZ09uRWRnZSwgYmxvY2stPnRlcm1pbmFsKCkpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9zaW5rQ2FuZGlkYXRl
cy5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIG1vdmluZyBhbiBhbGxvY2F0aW9u
IHRvIGB3aGVyZWAgaW4gdGhlIHByb2dyYW0sIHdlIG5lZWQgdG8gZW5zdXJlCisgICAgICAgICAg
ICAvLyB3ZSBjYW4gc3RpbGwgd2FsayB0aGUgc3RhY2sgYXQgdGhhdCBwb2ludCBpbiB0aGUgcHJv
Z3JhbSBmb3IgdGhlCisgICAgICAgICAgICAvLyBJbmxpbmVDYWxsRnJhbWUgb2YgdGhlIG9yaWdp
bmFsIGFsbG9jYXRpb24uIENlcnRhaW4gSW5saW5lQ2FsbEZyYW1lcyByZWx5IG9uCisgICAgICAg
ICAgICAvLyBkYXRhIGluIHRoZSBzdGFjayB3aGVuIHRha2luZyBhIHN0YWNrIHRyYWNlLiBBbGwg
YWxsb2NhdGlvbiBzaXRlcyBjYW4gZG8gYQorICAgICAgICAgICAgLy8gc3RhY2sgd2FsayAod2Ug
ZG8gYSBzdGFjayB3YWxrIHdoZW4gd2UgR0MpLiBDb25zZXJ2YXRpdmVseSwgd2Ugc2F5IHdlJ3Jl
CisgICAgICAgICAgICAvLyBzdGlsbCBvayB0byBtb3ZlIHRoaXMgYWxsb2NhdGlvbiBpZiB3ZSBh
cmUgbW92aW5nIHdpdGhpbiB0aGUgc2FtZSBJbmxpbmVDYWxsRnJhbWUuCisgICAgICAgICAgICAv
LyBXZSBjb3VsZCBiZSBtb3JlIHByZWNpc2UgaGVyZSBhbmQgZG8gYW4gYW5hbHlzaXMgb2Ygc3Rh
Y2sgd3JpdGVzLiBIb3dldmVyLAorICAgICAgICAgICAgLy8gdGhpcyBzY2VuYXJpbyBpcyBzbyBy
YXJlIHRoYXQgd2UganVzdCB0YWtlIHRoZSBjb25zZXJ2YXRpdmUtYW5kLXN0cmFpZ2h0LWZvcndh
cmQgCisgICAgICAgICAgICAvLyBhcHByb2FjaCBvZiBjaGVja2luZyB0aGF0IHdlJ3JlIGluIHRo
ZSBzYW1lIElubGluZUNhbGxGcmFtZS4KKworICAgICAgICAgICAgZm9yRWFjaEVzY2FwZWUoWyZd
IChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBlZXMsIE5vZGUqIHdoZXJlKSB7Cisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlKiBhbGxvY2F0aW9uIDogZXNjYXBlZXMua2V5cygpKSB7
CisgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0g
YWxsb2NhdGlvbi0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xv
c3VyZUNhbGwgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgJiYgaW5saW5lQ2FsbEZy
YW1lICE9IHdoZXJlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zaW5rQ2FuZGlkYXRlcy5yZW1vdmUoYWxsb2NhdGlvbik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBF
bnN1cmUgdGhhdCB0aGUgc2V0IG9mIHNpbmsgY2FuZGlkYXRlcyBpcyBjbG9zZWQgZm9yIHB1dCBv
cGVyYXRpb25zCisgICAgICAgIC8vIFRoaXMgaXMgKDIpIGFzIGRlc2NyaWJlZCBhYm92ZS4KICAg
ICAgICAgVmVjdG9yPE5vZGUqPiB3b3JrbGlzdDsKICAgICAgICAgd29ya2xpc3QuYXBwZW5kUmFu
Z2UobV9zaW5rQ2FuZGlkYXRlcy5iZWdpbigpLCBtX3NpbmtDYW5kaWRhdGVzLmVuZCgpKTsKIApA
QCAtMTIzMiw1OSArMTI5NSwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxv
ZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9zaW5rQ2FuZGlkYXRlcyksICJcbiIpOwogCi0g
ICAgICAgIC8vIENyZWF0ZSB0aGUgbWF0ZXJpYWxpemF0aW9uIG5vZGVzCi0gICAgICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKLSAg
ICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107Ci0gICAgICAgICAgICBtX2hl
YXAuc2V0V2FudEVzY2FwZWVzKCk7CiAKLSAgICAgICAgICAgIGZvciAoTm9kZSogbm9kZSA6ICpi
bG9jaykgewotICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUsCi0gICAgICAgICAgICAgICAgICAgIFtdIChQcm9tb3RlZEhlYXBMb2NhdGlvbiwgTGF6
eU5vZGUpIHsgfSwKLSAgICAgICAgICAgICAgICAgICAgW10gKFByb21vdGVkSGVhcExvY2F0aW9u
KSAtPiBOb2RlKiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXV0byBlc2NhcGVlcyA9IG1f
aGVhcC50YWtlRXNjYXBlZXMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVzY2FwZWVzLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcGxhY2VNYXRlcmlhbGl6YXRpb25zKGVzY2FwZWVz
LCBub2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9oZWFwLnBydW5lQnlMaXZl
bmVzcyhtX2NvbWJpbmVkTGl2ZW5lc3MubGl2ZUF0VGFpbFtibG9ja10pOwotCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxOb2RlKiwgQWxsb2NhdGlvbj4gZXNjYXBpbmdP
bkVkZ2U7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1faGVhcC5h
bGxvY2F0aW9ucygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc0Vz
Y2FwZWRBbGxvY2F0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgICAgICAgICBib29sIG11c3RFc2NhcGUgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9oZWFwQXRIZWFkW3N1Y2Nl
c3NvckJsb2NrXS5pc0FsbG9jYXRpb24oZW50cnkua2V5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHx8IG1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uZ2V0QWxsb2NhdGlvbihlbnRy
eS5rZXkpLmlzRXNjYXBlZEFsbG9jYXRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdXN0RXNjYXBlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChtdXN0RXNjYXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBp
bmdPbkVkZ2UuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RGTW92ZShlc2NhcGluZ09u
RWRnZSksIGJsb2NrLT50ZXJtaW5hbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAg
ICAgICAvLyBDcmVhdGUgdGhlIG1hdGVyaWFsaXphdGlvbiBub2Rlcy4KKyAgICAgICAgZm9yRWFj
aEVzY2FwZWUoWyZdIChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBlZXMsIE5vZGUq
IHdoZXJlKSB7CisgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RGTW92ZShlc2Nh
cGVlcyksIHdoZXJlKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIGhhc1VuZXNjYXBl
ZFJlYWRzIHx8ICFtX3NpbmtDYW5kaWRhdGVzLmlzRW1wdHkoKTsKICAgICB9CiAKICAgICB2b2lk
IHBsYWNlTWF0ZXJpYWxpemF0aW9ucyhIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiBlc2NhcGVl
cywgTm9kZSogd2hlcmUpCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUgbWF0ZXJp
YWxpemF0aW9ucyBpZiB0aGUgZXNjYXBlZSBpcyBub3QgYQotICAgICAgICAvLyBzaW5rIGNhbmRp
ZGF0ZQotICAgICAgICBlc2NhcGVlcy5yZW1vdmVJZigKLSAgICAgICAgICAgIFsmXSAoY29uc3Qg
YXV0byYgZW50cnkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIW1fc2lua0NhbmRpZGF0ZXMu
Y29udGFpbnMoZW50cnkua2V5KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBpZiAoZXNjYXBl
ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIC8vIEZpcnN0IGNv
bGxlY3QgdGhlIGhpbnRzIHRoYXQgd2lsbCBiZSBuZWVkZWQgd2hlbiB0aGUgbm9kZQogICAgICAg
ICAvLyB3ZSBtYXRlcmlhbGl6ZSBpcyBzdGlsbCBzdG9yZWQgaW50byBvdGhlciB1bmVzY2FwZWQg
c2luayBjYW5kaWRhdGVzLgogICAgICAgICAvLyBUaGUgd2F5IHRvIGludGVycHJldCB0aGlzIHZl
Y3RvciBpczoK
</data>
<flag name="commit-queue"
          id="376721"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359991</attachid>
            <date>2019-01-23 21:24:03 -0800</date>
            <delta_ts>2019-01-24 12:53:08 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10731</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDA0MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE9iamVjdCBBbGxvY2F0aW9uIFNpbmtpbmcgcGhhc2UgY2FuIG1vdmUg
YSBub2RlIHRoYXQgd2Fsa3MgdGhlIHN0YWNrIGludG8gYSBwbGFjZSB3aGVyZSB0aGUgSW5saW5l
Q2FsbEZyYW1lIGlzIG5vIGxvbmdlciB2YWxpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNzUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzI4
MDIxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9vYmplY3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFs
bG9jYXRpb25zLWlmLXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC50aGluZyk6CisgICAgICAgIChmb28ubGV0LmhlbGxvKToKKyAgICAgICAgKGZvbyk6
CisKIDIwMTktMDEtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbREZHXSBBdmFpbGFiaWxpdHlNYXA6OnBydW5lQnlMaXZlbmVzcyBzaG91bGQgbWFrZSBu
b24tbGl2ZSBvcGVyYW5kcyBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlIGluc3RlYWQgb2YgQXZh
aWxhYmlsaXR5KCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL29iamVjdC1hbGxvY2F0aW9uLXNpbmtp
bmctcGhhc2UtbXVzdC1vbmx5LW1vdmUtYWxsb2NhdGlvbnMtaWYtc3RhY2stdHJhY2UtaXMtc3Rp
bGwtdmFsaWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFsbG9jYXRp
b24tc2lua2luZy1waGFzZS1tdXN0LW9ubHktbW92ZS1hbGxvY2F0aW9ucy1pZi1zdGFjay10cmFj
ZS1pcy1zdGlsbC12YWxpZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFsbG9jYXRpb25zLWlm
LXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzAgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9MCIsICItLWppdFBvbGlj
eVNjYWxlPTAiLCAiLS1jb2xsZWN0Q29udGludW91c2x5PTEiKQorCitsZXQgdGhpbmcgPSBbXQor
CitmdW5jdGlvbiBiYXIoeCkgeworICAgIHRoaW5nLnB1c2goeCk7Cit9CisKK2Z1bmN0aW9uIGZv
bygpIHsKKyAgICBsZXQgaGVsbG8gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGxldCB0bXAgPSAx
OworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bSkgeworICAgICAgICAgICAgaWYgKHRtcCkg
eworICAgICAgICAgICAgICAgIGlmIChudW0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0oKTsKKworICAgIGJhcigpOworICAgIGZv
ciAoaiA9IDA7IGogPCAxMDAwMDsgaisrKSB7CisgICAgICAgIGlmICgvXHMvLnRlc3QoJyAnKSkg
eworICAgICAgICAgICAgaGVsbG8oaik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ZvciAobGV0
IGk9MDsgaTwxMDA7IGkrKykgeworICAgIGZvbygpOworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDAzNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDEtMjMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IEFsbG9jYXRpb24gU2lu
a2luZyBwaGFzZSBjYW4gbW92ZSBhIG5vZGUgdGhhdCB3YWxrcyB0aGUgc3RhY2sgaW50byBhIHBs
YWNlIHdoZXJlIHRoZSBJbmxpbmVDYWxsRnJhbWUgaXMgbm8gbG9uZ2VyIHZhbGlkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MjgwMjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIHBoYXNlIG1h
eSBtb3ZlIGFsbG9jYXRpb25zIGFyb3VuZCBpbnNpZGUKKyAgICAgICAgb2YgdGhlIHByb2dyYW0u
IEhvd2V2ZXIsIGl0IHdhcyBub3QgZW5zdXJpbmcgdGhhdCBpdCdzIHN0aWxsIHBvc3NpYmxlIAor
ICAgICAgICB3YWxrIHRoZSBzdGFjayBhdCB0aGUgcG9pbnQgaW4gdGhlIHByb2dyYW0gdGhhdCBp
dCBtb3ZlZCB0aGUgYWxsb2NhdGlvbiB0by4KKyAgICAgICAgQ2VydGFpbiBJbmxpbmVDYWxsRnJh
bWVzIHJlbHkgb24gZGF0YSBpbiB0aGUgc3RhY2sgd2hlbiB0YWtpbmcgYSBzdGFjayB0cmFjZS4K
KyAgICAgICAgQWxsIGFsbG9jYXRpb24gc2l0ZXMgY2FuIGRvIGEgc3RhY2sgd2FsayAod2UgZG8g
YSBzdGFjayB3YWxrIHdoZW4gd2UgR0MpLgorICAgICAgICBDb25zZXJ2YXRpdmVseSwgdGhpcyBw
YXRjaCBzYXlzIHdlJ3JlIG9rIHRvIG1vdmUgdGhpcyBhbGxvY2F0aW9uIGlmIHdlIGFyZQorICAg
ICAgICBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIElubGluZUNhbGxGcmFtZS4gV2UgY291bGQgYmUg
bW9yZSBwcmVjaXNlIGFuZCBkbyBhbgorICAgICAgICBhbmFseXNpcyBvZiBzdGFjayB3cml0ZXMu
IEhvd2V2ZXIsIHRoaXMgc2NlbmFyaW8gaXMgc28gcmFyZSB0aGF0IHdlIGp1c3QKKyAgICAgICAg
dGFrZSB0aGUgY29uc2VydmF0aXZlLWFuZC1zdHJhaWdodC1mb3J3YXJkIGFwcHJvYWNoIG9mIGNo
ZWNraW5nIHRoYXQgdGhlIHBsYWNlCisgICAgICAgIHdlJ3JlIG1vdmluZyB0byBpcyB0aGUgc2Ft
ZSBJbmxpbmVDYWxsRnJhbWUgYXMgdGhlIGFsbG9jYXRpb24gc2l0ZS4KKyAgICAgICAgCisgICAg
ICAgIEluIGdlbmVyYWwsIHRoaXMgaXNzdWUgYXJpc2VzIGFueXRpbWUgd2UgZG8gYW55IGtpbmQg
b2YgY29kZSBtb3Rpb24uCisgICAgICAgIEludGVyZXN0aW5nbHksIExJQ00gZ2V0cyB0aGlzIHJp
Z2h0LiBJdCBnZXRzIGl0IHJpZ2h0IGJlY2F1c2UgdGhlIG9ubHkKKyAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lcyB3ZSBjYW4ndCBtb3ZlIG91dCBvZiBhcmUgdGhlIElubGluZUNhbGxGcmFtZXMgdGhh
dAorICAgICAgICBoYXZlIG1ldGFkYXRhIHN0b3JlZCBvbiB0aGUgc3RhY2sgKGNhbGxlZSBmb3Ig
Y2xvc3VyZSBjYWxscyBhbmQgYXJndW1lbnQKKyAgICAgICAgY291bnQgZm9yIHZhcmFyZ3MgY2Fs
bHMpLiBMSUNNIGRvZXNuJ3QgaGF2ZSB0aGlzIGlzc3VlIGJlY2F1c2UgaXQgcmVsaWVzCisgICAg
ICAgIG9uIENsb2JiZXJpemUgZm9yIGRvaW5nIGl0cyBlZmZlY3RzIGFuYWx5c2lzLiBJbiBjbG9i
YmVyaXplLCB3ZSBtb2RlbCBldmVyeQorICAgICAgICBub2RlIHdpdGhpbiBhbiBJbmxpbmVDYWxs
RnJhbWUgdGhhdCBtZWV0cyB0aGUgYWJvdmUgY3JpdGVyaWEgYXMgcmVhZGluZworICAgICAgICBm
cm9tIHRob3NlIHN0YWNrIGZpZWxkcy4gQ29uc2VxdWVudGx5LCBMSUNNIHdvbid0IGhvaXN0IGFu
eSBub2RlIGluIHRoYXQKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lIHBhc3QgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgSW5saW5lQ2FsbEZyYW1lIHNpbmNlIHRoZSBJUgorICAgICAgICB3ZSBnZW5lcmF0
ZSB0byBzZXQgdXAgc3VjaCBhbiBJbmxpbmVDYWxsRnJhbWUgY29udGFpbnMgd3JpdGVzIHRvIHRo
YXQKKyAgICAgICAgc3RhY2sgbG9jYXRpb24uCisKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisKIDIwMTktMDEtMjMgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEdXBsaWNhdGUgZ2xvYmFsIHZhcmlh
YmxlczogSlNDOjpvcGNvZGVMZW5ndGhzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDI0MDM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTUsNyArMTIx
NSw3MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgYXV0
byBmb3JFYWNoRXNjYXBlZSA9IFsmXSAoYXV0byBjYWxsYmFjaykgeworICAgICAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewor
ICAgICAgICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107CisgICAgICAgICAg
ICAgICAgbV9oZWFwLnNldFdhbnRFc2NhcGVlcygpOworCisgICAgICAgICAgICAgICAgZm9yIChO
b2RlKiBub2RlIDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoCisg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgW10g
KFByb21vdGVkSGVhcExvY2F0aW9uLCBMYXp5Tm9kZSkgeyB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgW10gKFByb21vdGVkSGVhcExvY2F0aW9uKSAtPiBOb2RlKiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVlcyA9IG1faGVhcC50YWtlRXNjYXBl
ZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlZXMucmVtb3ZlSWYoWyZdIChjb25zdCBh
dXRvJiBlbnRyeSkgeyByZXR1cm4gIW1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMoZW50cnkua2V5
KTsgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVzY2FwZWVzLCBub2RlKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2hlYXAucHJ1bmVCeUxpdmVuZXNz
KG1fY29tYmluZWRMaXZlbmVzcy5saXZlQXRUYWlsW2Jsb2NrXSk7CisKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8Tm9kZSosIEFsbG9jYXRpb24+IGVzY2Fw
aW5nT25FZGdlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDog
bV9oZWFwLmFsbG9jYXRpb25zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRy
eS52YWx1ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVzdEVzY2FwZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3JCbG9jayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uaXNBbGxvY2F0aW9uKGVudHJ5
LmtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbV9oZWFwQXRIZWFkW3N1
Y2Nlc3NvckJsb2NrXS5nZXRBbGxvY2F0aW9uKGVudHJ5LmtleSkuaXNFc2NhcGVkQWxsb2NhdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0RXNjYXBlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG11c3RFc2NhcGUgJiYgbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhlbnRyeS5rZXkpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwaW5nT25FZGdlLmFkZChlbnRyeS5rZXksIGVu
dHJ5LnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhlc2NhcGluZ09uRWRnZSwgYmxvY2stPnRlcm1pbmFsKCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9zaW5rQ2Fu
ZGlkYXRlcy5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIG1vdmluZyBhbiBhbGxv
Y2F0aW9uIHRvIGB3aGVyZWAgaW4gdGhlIHByb2dyYW0sIHdlIG5lZWQgdG8gZW5zdXJlCisgICAg
ICAgICAgICAvLyB3ZSBjYW4gc3RpbGwgd2FsayB0aGUgc3RhY2sgYXQgdGhhdCBwb2ludCBpbiB0
aGUgcHJvZ3JhbSBmb3IgdGhlCisgICAgICAgICAgICAvLyBJbmxpbmVDYWxsRnJhbWUgb2YgdGhl
IG9yaWdpbmFsIGFsbG9jYXRpb24uIENlcnRhaW4gSW5saW5lQ2FsbEZyYW1lcyByZWx5IG9uCisg
ICAgICAgICAgICAvLyBkYXRhIGluIHRoZSBzdGFjayB3aGVuIHRha2luZyBhIHN0YWNrIHRyYWNl
LiBBbGwgYWxsb2NhdGlvbiBzaXRlcyBjYW4gZG8gYQorICAgICAgICAgICAgLy8gc3RhY2sgd2Fs
ayAod2UgZG8gYSBzdGFjayB3YWxrIHdoZW4gd2UgR0MpLiBDb25zZXJ2YXRpdmVseSwgd2Ugc2F5
IHdlJ3JlCisgICAgICAgICAgICAvLyBzdGlsbCBvayB0byBtb3ZlIHRoaXMgYWxsb2NhdGlvbiBp
ZiB3ZSBhcmUgbW92aW5nIHdpdGhpbiB0aGUgc2FtZSBJbmxpbmVDYWxsRnJhbWUuCisgICAgICAg
ICAgICAvLyBXZSBjb3VsZCBiZSBtb3JlIHByZWNpc2UgaGVyZSBhbmQgZG8gYW4gYW5hbHlzaXMg
b2Ygc3RhY2sgd3JpdGVzLiBIb3dldmVyLAorICAgICAgICAgICAgLy8gdGhpcyBzY2VuYXJpbyBp
cyBzbyByYXJlIHRoYXQgd2UganVzdCB0YWtlIHRoZSBjb25zZXJ2YXRpdmUtYW5kLXN0cmFpZ2h0
LWZvcndhcmQgCisgICAgICAgICAgICAvLyBhcHByb2FjaCBvZiBjaGVja2luZyB0aGF0IHdlJ3Jl
IGluIHRoZSBzYW1lIElubGluZUNhbGxGcmFtZS4KKworICAgICAgICAgICAgZm9yRWFjaEVzY2Fw
ZWUoWyZdIChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBlZXMsIE5vZGUqIHdoZXJl
KSB7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBhbGxvY2F0aW9uIDogZXNjYXBlZXMua2V5
cygpKSB7CisgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gYWxsb2NhdGlvbi0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChpbmxpbmVDYWxsRnJhbWUt
PmlzQ2xvc3VyZUNhbGwgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgJiYgaW5saW5l
Q2FsbEZyYW1lICE9IHdoZXJlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zaW5rQ2FuZGlkYXRlcy5yZW1vdmUoYWxsb2NhdGlvbik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAg
ICAvLyBFbnN1cmUgdGhhdCB0aGUgc2V0IG9mIHNpbmsgY2FuZGlkYXRlcyBpcyBjbG9zZWQgZm9y
IHB1dCBvcGVyYXRpb25zCisgICAgICAgIC8vIFRoaXMgaXMgKDIpIGFzIGRlc2NyaWJlZCBhYm92
ZS4KICAgICAgICAgVmVjdG9yPE5vZGUqPiB3b3JrbGlzdDsKICAgICAgICAgd29ya2xpc3QuYXBw
ZW5kUmFuZ2UobV9zaW5rQ2FuZGlkYXRlcy5iZWdpbigpLCBtX3NpbmtDYW5kaWRhdGVzLmVuZCgp
KTsKIApAQCAtMTIzMiw1OSArMTI5NSwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAgICAg
ZGF0YUxvZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9zaW5rQ2FuZGlkYXRlcyksICJcbiIp
OwogCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgbWF0ZXJpYWxpemF0aW9uIG5vZGVzCi0gICAgICAg
IGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKLSAgICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107Ci0gICAgICAgICAg
ICBtX2hlYXAuc2V0V2FudEVzY2FwZWVzKCk7CiAKLSAgICAgICAgICAgIGZvciAoTm9kZSogbm9k
ZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUsCi0gICAgICAgICAgICAgICAgICAgIFtdIChQcm9tb3RlZEhlYXBMb2NhdGlv
biwgTGF6eU5vZGUpIHsgfSwKLSAgICAgICAgICAgICAgICAgICAgW10gKFByb21vdGVkSGVhcExv
Y2F0aW9uKSAtPiBOb2RlKiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXV0byBlc2NhcGVl
cyA9IG1faGVhcC50YWtlRXNjYXBlZXMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVzY2FwZWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcGxhY2VNYXRlcmlhbGl6YXRpb25zKGVz
Y2FwZWVzLCBub2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9oZWFwLnBydW5l
QnlMaXZlbmVzcyhtX2NvbWJpbmVkTGl2ZW5lc3MubGl2ZUF0VGFpbFtibG9ja10pOwotCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxOb2RlKiwgQWxsb2NhdGlvbj4gZXNj
YXBpbmdPbkVkZ2U7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1f
aGVhcC5hbGxvY2F0aW9ucygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgICAgICBib29sIG11c3RFc2NhcGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayA6IGJsb2NrLT5z
dWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9oZWFwQXRIZWFk
W3N1Y2Nlc3NvckJsb2NrXS5pc0FsbG9jYXRpb24oZW50cnkua2V5KQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IG1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uZ2V0QWxsb2NhdGlv
bihlbnRyeS5rZXkpLmlzRXNjYXBlZEFsbG9jYXRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtdXN0RXNjYXBlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChtdXN0RXNjYXBlKQotICAgICAgICAgICAgICAgICAgICAgICAg
ZXNjYXBpbmdPbkVkZ2UuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RGTW92ZShlc2Nh
cGluZ09uRWRnZSksIGJsb2NrLT50ZXJtaW5hbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQorICAgICAgICAvLyBDcmVhdGUgdGhlIG1hdGVyaWFsaXphdGlvbiBub2Rlcy4KKyAgICAgICAg
Zm9yRWFjaEVzY2FwZWUoWyZdIChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBlZXMs
IE5vZGUqIHdoZXJlKSB7CisgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RGTW92
ZShlc2NhcGVlcyksIHdoZXJlKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIGhhc1Vu
ZXNjYXBlZFJlYWRzIHx8ICFtX3NpbmtDYW5kaWRhdGVzLmlzRW1wdHkoKTsKICAgICB9CiAKICAg
ICB2b2lkIHBsYWNlTWF0ZXJpYWxpemF0aW9ucyhIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiBl
c2NhcGVlcywgTm9kZSogd2hlcmUpCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCBjcmVhdGUg
bWF0ZXJpYWxpemF0aW9ucyBpZiB0aGUgZXNjYXBlZSBpcyBub3QgYQotICAgICAgICAvLyBzaW5r
IGNhbmRpZGF0ZQotICAgICAgICBlc2NhcGVlcy5yZW1vdmVJZigKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgYXV0byYgZW50cnkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIW1fc2lua0NhbmRp
ZGF0ZXMuY29udGFpbnMoZW50cnkua2V5KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBpZiAo
ZXNjYXBlZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIC8vIEZp
cnN0IGNvbGxlY3QgdGhlIGhpbnRzIHRoYXQgd2lsbCBiZSBuZWVkZWQgd2hlbiB0aGUgbm9kZQog
ICAgICAgICAvLyB3ZSBtYXRlcmlhbGl6ZSBpcyBzdGlsbCBzdG9yZWQgaW50byBvdGhlciB1bmVz
Y2FwZWQgc2luayBjYW5kaWRhdGVzLgogICAgICAgICAvLyBUaGUgd2F5IHRvIGludGVycHJldCB0
aGlzIHZlY3RvciBpczoK
</data>
<flag name="review"
          id="376722"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360027</attachid>
            <date>2019-01-24 12:53:08 -0800</date>
            <delta_ts>2019-01-24 13:31:01 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>10734</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDA0MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTIzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE9iamVjdCBBbGxvY2F0aW9uIFNpbmtpbmcgcGhhc2UgY2FuIG1vdmUg
YSBub2RlIHRoYXQgd2Fsa3MgdGhlIHN0YWNrIGludG8gYSBwbGFjZSB3aGVyZSB0aGUgSW5saW5l
Q2FsbEZyYW1lIGlzIG5vIGxvbmdlciB2YWxpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNzUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzI4
MDIxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKworICAgICAgICAq
IHN0cmVzcy9vYmplY3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFs
bG9jYXRpb25zLWlmLXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC50aGluZyk6CisgICAgICAgIChmb28ubGV0LmhlbGxvKToKKyAgICAgICAgKGZvbyk6
CisKIDIwMTktMDEtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbREZHXSBBdmFpbGFiaWxpdHlNYXA6OnBydW5lQnlMaXZlbmVzcyBzaG91bGQgbWFrZSBu
b24tbGl2ZSBvcGVyYW5kcyBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlIGluc3RlYWQgb2YgQXZh
aWxhYmlsaXR5KCkKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL29iamVjdC1hbGxvY2F0aW9uLXNpbmtp
bmctcGhhc2UtbXVzdC1vbmx5LW1vdmUtYWxsb2NhdGlvbnMtaWYtc3RhY2stdHJhY2UtaXMtc3Rp
bGwtdmFsaWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFsbG9jYXRp
b24tc2lua2luZy1waGFzZS1tdXN0LW9ubHktbW92ZS1hbGxvY2F0aW9ucy1pZi1zdGFjay10cmFj
ZS1pcy1zdGlsbC12YWxpZC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nLXBoYXNlLW11c3Qtb25seS1tb3ZlLWFsbG9jYXRpb25zLWlm
LXN0YWNrLXRyYWNlLWlzLXN0aWxsLXZhbGlkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzAgQEAKKy8vQCBydW5EZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9MCIsICItLWppdFBvbGlj
eVNjYWxlPTAiLCAiLS1jb2xsZWN0Q29udGludW91c2x5PTEiKQorCitsZXQgdGhpbmcgPSBbXQor
CitmdW5jdGlvbiBiYXIoeCkgeworICAgIHRoaW5nLnB1c2goeCk7Cit9CisKK2Z1bmN0aW9uIGZv
bygpIHsKKyAgICBsZXQgaGVsbG8gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGxldCB0bXAgPSAx
OworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG51bSkgeworICAgICAgICAgICAgaWYgKHRtcCkg
eworICAgICAgICAgICAgICAgIGlmIChudW0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0oKTsKKworICAgIGJhcigpOworICAgIGZv
ciAoaiA9IDA7IGogPCAxMDAwMDsgaisrKSB7CisgICAgICAgIGlmICgvXHMvLnRlc3QoJyAnKSkg
eworICAgICAgICAgICAgaGVsbG8oaik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ZvciAobGV0
IGk9MDsgaTwxMDA7IGkrKykgeworICAgIGZvbygpOworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDAzNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTktMDEtMjMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0IEFsbG9jYXRpb24gU2lu
a2luZyBwaGFzZSBjYW4gbW92ZSBhIG5vZGUgdGhhdCB3YWxrcyB0aGUgc3RhY2sgaW50byBhIHBs
YWNlIHdoZXJlIHRoZSBJbmxpbmVDYWxsRnJhbWUgaXMgbm8gbG9uZ2VyIHZhbGlkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MjgwMjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwg
U2Fib2ZmLgorCisgICAgICAgIFRoZSBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIHBoYXNlIG1h
eSBtb3ZlIGFsbG9jYXRpb25zIGFyb3VuZCBpbnNpZGUKKyAgICAgICAgb2YgdGhlIHByb2dyYW0u
IEhvd2V2ZXIsIGl0IHdhcyBub3QgZW5zdXJpbmcgdGhhdCBpdCdzIHN0aWxsIHBvc3NpYmxlIAor
ICAgICAgICB0byB3YWxrIHRoZSBzdGFjayBhdCB0aGUgcG9pbnQgaW4gdGhlIHByb2dyYW0gdGhh
dCBpdCBtb3ZlZCB0aGUgYWxsb2NhdGlvbiB0by4KKyAgICAgICAgQ2VydGFpbiBJbmxpbmVDYWxs
RnJhbWVzIHJlbHkgb24gZGF0YSBpbiB0aGUgc3RhY2sgd2hlbiB0YWtpbmcgYSBzdGFjayB0cmFj
ZS4KKyAgICAgICAgQWxsIGFsbG9jYXRpb24gc2l0ZXMgY2FuIGRvIGEgc3RhY2sgd2FsayAod2Ug
ZG8gYSBzdGFjayB3YWxrIHdoZW4gd2UgR0MpLgorICAgICAgICBDb25zZXJ2YXRpdmVseSwgdGhp
cyBwYXRjaCBzYXlzIHdlJ3JlIG9rIHRvIG1vdmUgdGhpcyBhbGxvY2F0aW9uIGlmIHdlIGFyZQor
ICAgICAgICBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIElubGluZUNhbGxGcmFtZS4gV2UgY291bGQg
YmUgbW9yZSBwcmVjaXNlIGFuZCBkbyBhbgorICAgICAgICBhbmFseXNpcyBvZiBzdGFjayB3cml0
ZXMuIEhvd2V2ZXIsIHRoaXMgc2NlbmFyaW8gaXMgc28gcmFyZSB0aGF0IHdlIGp1c3QKKyAgICAg
ICAgdGFrZSB0aGUgY29uc2VydmF0aXZlLWFuZC1zdHJhaWdodC1mb3J3YXJkIGFwcHJvYWNoIG9m
IGNoZWNraW5nIHRoYXQgdGhlIHBsYWNlCisgICAgICAgIHdlJ3JlIG1vdmluZyB0byBpcyB0aGUg
c2FtZSBJbmxpbmVDYWxsRnJhbWUgYXMgdGhlIGFsbG9jYXRpb24gc2l0ZS4KKyAgICAgICAgCisg
ICAgICAgIEluIGdlbmVyYWwsIHRoaXMgaXNzdWUgYXJpc2VzIGFueXRpbWUgd2UgZG8gYW55IGtp
bmQgb2YgY29kZSBtb3Rpb24uCisgICAgICAgIEludGVyZXN0aW5nbHksIExJQ00gZ2V0cyB0aGlz
IHJpZ2h0LiBJdCBnZXRzIGl0IHJpZ2h0IGJlY2F1c2UgdGhlIG9ubHkKKyAgICAgICAgSW5saW5l
Q2FsbEZyYW1lcyB3ZSBjYW4ndCBtb3ZlIG91dCBvZiBhcmUgdGhlIElubGluZUNhbGxGcmFtZXMg
dGhhdAorICAgICAgICBoYXZlIG1ldGFkYXRhIHN0b3JlZCBvbiB0aGUgc3RhY2sgKGNhbGxlZSBm
b3IgY2xvc3VyZSBjYWxscyBhbmQgYXJndW1lbnQKKyAgICAgICAgY291bnQgZm9yIHZhcmFyZ3Mg
Y2FsbHMpLiBMSUNNIGRvZXNuJ3QgaGF2ZSB0aGlzIGlzc3VlIGJlY2F1c2UgaXQgcmVsaWVzCisg
ICAgICAgIG9uIENsb2JiZXJpemUgZm9yIGRvaW5nIGl0cyBlZmZlY3RzIGFuYWx5c2lzLiBJbiBj
bG9iYmVyaXplLCB3ZSBtb2RlbCBldmVyeQorICAgICAgICBub2RlIHdpdGhpbiBhbiBJbmxpbmVD
YWxsRnJhbWUgdGhhdCBtZWV0cyB0aGUgYWJvdmUgY3JpdGVyaWEgYXMgcmVhZGluZworICAgICAg
ICBmcm9tIHRob3NlIHN0YWNrIGZpZWxkcy4gQ29uc2VxdWVudGx5LCBMSUNNIHdvbid0IGhvaXN0
IGFueSBub2RlIGluIHRoYXQKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lIHBhc3QgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgSW5saW5lQ2FsbEZyYW1lIHNpbmNlIHRoZSBJUgorICAgICAgICB3ZSBnZW5l
cmF0ZSB0byBzZXQgdXAgc3VjaCBhbiBJbmxpbmVDYWxsRnJhbWUgY29udGFpbnMgd3JpdGVzIHRv
IHRoYXQKKyAgICAgICAgc3RhY2sgbG9jYXRpb24uCisKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisKIDIwMTktMDEtMjMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEdXBsaWNhdGUgZ2xvYmFsIHZh
cmlhYmxlczogSlNDOjpvcGNvZGVMZW5ndGhzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDI0MDM2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTUsNyAr
MTIxNSw3MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAg
YXV0byBmb3JFYWNoRXNjYXBlZSA9IFsmXSAoYXV0byBjYWxsYmFjaykgeworICAgICAgICAgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkg
eworICAgICAgICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107CisgICAgICAg
ICAgICAgICAgbV9oZWFwLnNldFdhbnRFc2NhcGVlcygpOworCisgICAgICAgICAgICAgICAgZm9y
IChOb2RlKiBub2RlIDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUo
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
W10gKFByb21vdGVkSGVhcExvY2F0aW9uLCBMYXp5Tm9kZSkgeyB9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgW10gKFByb21vdGVkSGVhcExvY2F0aW9uKSAtPiBOb2RlKiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBlc2NhcGVlcyA9IG1faGVhcC50YWtlRXNj
YXBlZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlZXMucmVtb3ZlSWYoWyZdIChjb25z
dCBhdXRvJiBlbnRyeSkgeyByZXR1cm4gIW1fc2lua0NhbmRpZGF0ZXMuY29udGFpbnMoZW50cnku
a2V5KTsgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVzY2FwZWVzLCBub2RlKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2hlYXAucHJ1bmVCeUxpdmVu
ZXNzKG1fY29tYmluZWRMaXZlbmVzcy5saXZlQXRUYWlsW2Jsb2NrXSk7CisKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8Tm9kZSosIEFsbG9jYXRpb24+IGVz
Y2FwaW5nT25FZGdlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogbV9oZWFwLmFsbG9jYXRpb25zKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVzdEVzY2Fw
ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3JCbG9jayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uaXNBbGxvY2F0aW9uKGVu
dHJ5LmtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbV9oZWFwQXRIZWFk
W3N1Y2Nlc3NvckJsb2NrXS5nZXRBbGxvY2F0aW9uKGVudHJ5LmtleSkuaXNFc2NhcGVkQWxsb2Nh
dGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0RXNjYXBlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG11c3RFc2NhcGUgJiYgbV9zaW5rQ2FuZGlkYXRlcy5jb250YWlucyhlbnRyeS5rZXkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwaW5nT25FZGdlLmFkZChlbnRyeS5rZXks
IGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhlc2NhcGluZ09uRWRnZSwgYmxvY2stPnRlcm1pbmFsKCkpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9zaW5r
Q2FuZGlkYXRlcy5zaXplKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIG1vdmluZyBhbiBh
bGxvY2F0aW9uIHRvIGB3aGVyZWAgaW4gdGhlIHByb2dyYW0sIHdlIG5lZWQgdG8gZW5zdXJlCisg
ICAgICAgICAgICAvLyB3ZSBjYW4gc3RpbGwgd2FsayB0aGUgc3RhY2sgYXQgdGhhdCBwb2ludCBp
biB0aGUgcHJvZ3JhbSBmb3IgdGhlCisgICAgICAgICAgICAvLyBJbmxpbmVDYWxsRnJhbWUgb2Yg
dGhlIG9yaWdpbmFsIGFsbG9jYXRpb24uIENlcnRhaW4gSW5saW5lQ2FsbEZyYW1lcyByZWx5IG9u
CisgICAgICAgICAgICAvLyBkYXRhIGluIHRoZSBzdGFjayB3aGVuIHRha2luZyBhIHN0YWNrIHRy
YWNlLiBBbGwgYWxsb2NhdGlvbiBzaXRlcyBjYW4gZG8gYQorICAgICAgICAgICAgLy8gc3RhY2sg
d2FsayAod2UgZG8gYSBzdGFjayB3YWxrIHdoZW4gd2UgR0MpLiBDb25zZXJ2YXRpdmVseSwgd2Ug
c2F5IHdlJ3JlCisgICAgICAgICAgICAvLyBzdGlsbCBvayB0byBtb3ZlIHRoaXMgYWxsb2NhdGlv
biBpZiB3ZSBhcmUgbW92aW5nIHdpdGhpbiB0aGUgc2FtZSBJbmxpbmVDYWxsRnJhbWUuCisgICAg
ICAgICAgICAvLyBXZSBjb3VsZCBiZSBtb3JlIHByZWNpc2UgaGVyZSBhbmQgZG8gYW4gYW5hbHlz
aXMgb2Ygc3RhY2sgd3JpdGVzLiBIb3dldmVyLAorICAgICAgICAgICAgLy8gdGhpcyBzY2VuYXJp
byBpcyBzbyByYXJlIHRoYXQgd2UganVzdCB0YWtlIHRoZSBjb25zZXJ2YXRpdmUtYW5kLXN0cmFp
Z2h0LWZvcndhcmQgCisgICAgICAgICAgICAvLyBhcHByb2FjaCBvZiBjaGVja2luZyB0aGF0IHdl
J3JlIGluIHRoZSBzYW1lIElubGluZUNhbGxGcmFtZS4KKworICAgICAgICAgICAgZm9yRWFjaEVz
Y2FwZWUoWyZdIChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBlZXMsIE5vZGUqIHdo
ZXJlKSB7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBhbGxvY2F0aW9uIDogZXNjYXBlZXMu
a2V5cygpKSB7CisgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gYWxsb2NhdGlvbi0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwgfHwgaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFyZ3MoKSkgJiYgaW5s
aW5lQ2FsbEZyYW1lICE9IHdoZXJlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zaW5rQ2FuZGlkYXRlcy5yZW1vdmUoYWxsb2NhdGlv
bik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc2V0IG9mIHNpbmsgY2FuZGlkYXRlcyBpcyBjbG9zZWQg
Zm9yIHB1dCBvcGVyYXRpb25zCisgICAgICAgIC8vIFRoaXMgaXMgKDIpIGFzIGRlc2NyaWJlZCBh
Ym92ZS4KICAgICAgICAgVmVjdG9yPE5vZGUqPiB3b3JrbGlzdDsKICAgICAgICAgd29ya2xpc3Qu
YXBwZW5kUmFuZ2UobV9zaW5rQ2FuZGlkYXRlcy5iZWdpbigpLCBtX3NpbmtDYW5kaWRhdGVzLmVu
ZCgpKTsKIApAQCAtMTIzMiw1OSArMTI5NSwxNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZUludGVybmFsOjp2ZXJib3NlKQogICAgICAgICAg
ICAgZGF0YUxvZygiQ2FuZGlkYXRlczogIiwgbGlzdER1bXAobV9zaW5rQ2FuZGlkYXRlcyksICJc
biIpOwogCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgbWF0ZXJpYWxpemF0aW9uIG5vZGVzCi0gICAg
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVy
KCkpIHsKLSAgICAgICAgICAgIG1faGVhcCA9IG1faGVhcEF0SGVhZFtibG9ja107Ci0gICAgICAg
ICAgICBtX2hlYXAuc2V0V2FudEVzY2FwZWVzKCk7CiAKLSAgICAgICAgICAgIGZvciAoTm9kZSog
bm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoCi0gICAgICAgICAg
ICAgICAgICAgIG5vZGUsCi0gICAgICAgICAgICAgICAgICAgIFtdIChQcm9tb3RlZEhlYXBMb2Nh
dGlvbiwgTGF6eU5vZGUpIHsgfSwKLSAgICAgICAgICAgICAgICAgICAgW10gKFByb21vdGVkSGVh
cExvY2F0aW9uKSAtPiBOb2RlKiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXV0byBlc2Nh
cGVlcyA9IG1faGVhcC50YWtlRXNjYXBlZXMoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWVzY2Fw
ZWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcGxhY2VNYXRlcmlhbGl6YXRpb25z
KGVzY2FwZWVzLCBub2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9oZWFwLnBy
dW5lQnlMaXZlbmVzcyhtX2NvbWJpbmVkTGl2ZW5lc3MubGl2ZUF0VGFpbFtibG9ja10pOwotCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxOb2RlKiwgQWxsb2NhdGlvbj4g
ZXNjYXBpbmdPbkVkZ2U7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6
IG1faGVhcC5hbGxvY2F0aW9ucygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS52
YWx1ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBib29sIG11c3RFc2NhcGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9oZWFwQXRI
ZWFkW3N1Y2Nlc3NvckJsb2NrXS5pc0FsbG9jYXRpb24oZW50cnkua2V5KQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IG1faGVhcEF0SGVhZFtzdWNjZXNzb3JCbG9ja10uZ2V0QWxsb2Nh
dGlvbihlbnRyeS5rZXkpLmlzRXNjYXBlZEFsbG9jYXRpb24oKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtdXN0RXNjYXBlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChtdXN0RXNjYXBlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgZXNjYXBpbmdPbkVkZ2UuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RGTW92ZShl
c2NhcGluZ09uRWRnZSksIGJsb2NrLT50ZXJtaW5hbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICAvLyBDcmVhdGUgdGhlIG1hdGVyaWFsaXphdGlvbiBub2Rlcy4KKyAgICAg
ICAgZm9yRWFjaEVzY2FwZWUoWyZdIChIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiYgZXNjYXBl
ZXMsIE5vZGUqIHdoZXJlKSB7CisgICAgICAgICAgICBwbGFjZU1hdGVyaWFsaXphdGlvbnMoV1RG
TW92ZShlc2NhcGVlcyksIHdoZXJlKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuIGhh
c1VuZXNjYXBlZFJlYWRzIHx8ICFtX3NpbmtDYW5kaWRhdGVzLmlzRW1wdHkoKTsKICAgICB9CiAK
ICAgICB2b2lkIHBsYWNlTWF0ZXJpYWxpemF0aW9ucyhIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9u
PiBlc2NhcGVlcywgTm9kZSogd2hlcmUpCiAgICAgewotICAgICAgICAvLyBXZSBkb24ndCBjcmVh
dGUgbWF0ZXJpYWxpemF0aW9ucyBpZiB0aGUgZXNjYXBlZSBpcyBub3QgYQotICAgICAgICAvLyBz
aW5rIGNhbmRpZGF0ZQotICAgICAgICBlc2NhcGVlcy5yZW1vdmVJZigKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgYXV0byYgZW50cnkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIW1fc2lua0Nh
bmRpZGF0ZXMuY29udGFpbnMoZW50cnkua2V5KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBp
ZiAoZXNjYXBlZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIC8v
IEZpcnN0IGNvbGxlY3QgdGhlIGhpbnRzIHRoYXQgd2lsbCBiZSBuZWVkZWQgd2hlbiB0aGUgbm9k
ZQogICAgICAgICAvLyB3ZSBtYXRlcmlhbGl6ZSBpcyBzdGlsbCBzdG9yZWQgaW50byBvdGhlciB1
bmVzY2FwZWQgc2luayBjYW5kaWRhdGVzLgogICAgICAgICAvLyBUaGUgd2F5IHRvIGludGVycHJl
dCB0aGlzIHZlY3RvciBpczoK
</data>

          </attachment>
      

    </bug>

</bugzilla>