<?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>73722</bug_id>
          
          <creation_ts>2011-12-02 17:08:22 -0800</creation_ts>
          <short_desc>Improve float array support in the DFG JIT</short_desc>
          <delta_ts>2011-12-02 17:47:44 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514287</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-02 17:08:22 -0800</bug_when>
    <thetext>Improve float array support in the DFG JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514289</commentid>
    <comment_count>1</comment_count>
      <attachid>117714</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-02 17:13:04 -0800</bug_when>
    <thetext>Created attachment 117714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514291</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 17:16:07 -0800</bug_when>
    <thetext>Attachment 117714 did not pass style-queue:

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

Source/JavaScriptCore/assembler/X86Assembler.h:1444:  cvtsd2ss_rr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1450:  cvtss2sd_rr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1502:  movsd_rm is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1508:  movss_rm is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1520:  movsd_mr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/X86Assembler.h:1526:  movss_mr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/ChangeLog:10:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 8 in 11 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>514305</commentid>
    <comment_count>3</comment_count>
      <attachid>117714</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-02 17:43:40 -0800</bug_when>
    <thetext>Comment on attachment 117714
Patch

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

r+ with ARMv7 bug &amp; xor change.

&gt; Source/JavaScriptCore/dfg/DFGNode.h:957
&gt; +#if CPU(X86) || CPU(X86_64)

This should be ported to ARMv7.  Please file a bugzilla for this.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1678
&gt; +        MacroAssembler::Jump notNaN = m_jit.branchDouble(MacroAssembler::DoubleEqual, fpr, fpr);

Maybe this should be functionality of the macro assembler, conversion of NaN should probably not be undefined, conversion to 0 is likely most sensible.  (though I think truncateDoubleFoo methods are currently used also used where we expect the value to be an integer, so we might need to switch to having a couple of more explicitly named versions of this functionality).

Please make a not in the ARMv7 bug to check whether this behavior is necessary on ARM (what does NaN convert to on ARM)?

The xorPtr should probably just be m_jit.move(Imm32(0), gpr).  The macro assembler should be free to implement this however it wishes (and on x86, yes, you may want to make this an xor).

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1751
&gt; +        notNaN.link(&amp;m_jit);

Please verify the float conversion doesn&apos;t maintain the payload on x86, and please make a note in the ARMv7 bug to also test this on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514308</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-12-02 17:47:44 -0800</bug_when>
    <thetext>Committed r101886: &lt;http://trac.webkit.org/changeset/101886&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117714</attachid>
            <date>2011-12-02 17:13:04 -0800</date>
            <delta_ts>2011-12-02 17:43:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73722-20111202171303.patch</filename>
            <type>text/plain</type>
            <size>27279</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWE4YWEwMThhNzYzZjA1YTQzMzM1MGQ0NmE1ZDdjZmQxMjY2MWY0Li5lYzZkM2Y1N2Q2NzdiMjBl
N2UzM2M4MjA3NDRjZDIwNjQ0NTY0YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxMS0xMi0wMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEltcHJvdmUgZmxvYXQgYXJyYXkgc3VwcG9ydCBpbiB0aGUgREZHIEpJVAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYmFzaWMgc3Vw
cG9ydCBmb3IgZmxvYXQgdHlwZWQgYXJyYXlzIGluIEpTQy4gIFRoaXMgaXMgY3VycmVudGx5Cisg
ICAgICAgIGxlc3Mgb3B0aW1hbCB0aGFuIGl0IGNvdWxkIGJlIGluIHRoZSBmb2xsb3dpbmcgd2F5
czoKKyAgICAgICAgICogZmxvYXQzMkFycmF5MVswXSA9IGZsb2F0MzJBcnJheTJbMF0gKGVnLiBh
biBlbGVtZW50IGJ5IGVsZW1lbnQgY29weSkgCisgICAgICAgICAgIHByb21vdGVzIGZsb2F0IHRv
IGRvdWJsZSBhbmQgdGhlbiBiYWNrIHRvIGZsb2F0LgorICAgICAgICAgKiBmbG9hdDY0QXJyYXlb
MF0gd2lsbCBhbHdheXMgcGVyZm9ybSBOYU4gdGVzdHMgaW4gb3JkZXIgdG8gcHJldmVudAorICAg
ICAgICAgICBzaWduYWxsaW5nIE5hTnMgZnJvbSBlbnRlcmluZyB0aGUgZW5naW5lLgorCisgICAg
ICAgIFdlIGFsc28gZG9uJ3Qgc3VwcG9ydCBGbG9hdDMyQXJyYXkgb24gQVJNdjcKKworICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNdjc6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3Ojpsb2FkRmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpz
dG9yZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0b3JlRmxv
YXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3Ojpjb252ZXJ0RmxvYXRUb0Rv
dWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmNvbnZlcnREb3VibGVU
b0Zsb2F0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWREb3VibGUpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZsb2F0KToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRmxvYXQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydERvdWJsZVRvRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEZsb2F0VG9Eb3VibGUpOgorICAg
ICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpjdnRzZDJzc19ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y3Z0c3Myc2Rf
cnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNkX3JtKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjptb3Zzc19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
bW92c2RfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNzX21yKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdQcm9wYWdhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9w
YWdhdGVOb2RlUHJlZGljdGlvbnMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTEyLTAyICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTAxODAxLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCA5MjA2MDM1MGYzOTEwZWRlZWU3
MDk5ZGQ1MTJkNTc4YWRhNDgxOWM2Li5kYTliYmJiOGYyNzA0OWE2OGZmZjFhMWY0YjFiNDNhNzY0
OGQyMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNzExLDYgKzcxMSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLnZsZHIoZGVzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbG9h
ZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChz
cmMgIT0gZGVzdCkKQEAgLTc0NCw2ICs3NTQsMjAgQEAgcHVibGljOgogICAgICAgICBzdG9yZURv
dWJsZShzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmVE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtdWwz
MihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZURvdWJsZShzcmMsIEFkZHJlc3MoYWRkcmVz
c1RlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBz
dG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bXVsMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmVEb3VibGUoQVJNUmVnaXN0ZXJzOjph
c1NpbmdsZShzcmMpLCBBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0
KSk7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52YWRkKGRlc3QsIGRlc3Qs
IHNyYyk7CkBAIC04MzksNiArODYzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
dm1vdihmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBtX2Fzc2VtYmxlci52Y3Z0X3NpZ25lZFRvRmxvYXRpbmdQb2ludChkZXN0LCBmcFRlbXBSZWdp
c3RlckFzU2luZ2xlKCkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91
YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb252ZXJ0RG91Ymxl
VG9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGUo
RG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmln
aHQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDFhZDQzNDY0NzczNGY4NDE1NGUyZGUw
MzczMzA1ZGYyODExODZlZGMuLmRlYTcyNGU0ZDk1ZWJkMGRkZGIwOGMwY2MzNjQ5MTVjZGQ5ODZi
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTYwMCwxMiArNjAwLDQ3IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNk
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0KKyAgICAKKyAg
ICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1vdnNkX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUsIGRlc3QpOworICAgIH0KKyAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5k
ZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNT
U0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92c3NfbXIoYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7Cisg
ICAgfQogCiAgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzZF9ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNl
bnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNkX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVz
cykKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3Zzc19ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbnZlcnRE
b3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0
c2Qyc3NfcnIoc3JjLCBkc3QpOworICAgIH0KKworICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jdnRzczJzZF9ycihz
cmMsIGRzdCk7CisgICAgfQogCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggMDc5YzE5MGUzNDBhZDUzOThiY2QxNGUxMzU0YjJj
MDEyNTI5NmY3ZC4uNTUyODZhODVkODQ0ZGU3MDQ4OWViYjE4NGUyNGMwZGM4ZDcxYzhlMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0x
NTUsNiArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfQ0FMTF9yZWwzMiAgICAgICAgICAg
ICAgICAgICA9IDB4RTgsCiAgICAgICAgIE9QX0pNUF9yZWwzMiAgICAgICAgICAgICAgICAgICAg
PSAweEU5LAogICAgICAgICBQUkVfU1NFX0YyICAgICAgICAgICAgICAgICAgICAgID0gMHhGMiwK
KyAgICAgICAgUFJFX1NTRV9GMyAgICAgICAgICAgICAgICAgICAgICA9IDB4RjMsCiAgICAgICAg
IE9QX0hMVCAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweEY0LAogICAgICAgICBPUF9HUk9V
UDNfRWJJYiAgICAgICAgICAgICAgICAgID0gMHhGNiwKICAgICAgICAgT1BfR1JPVVAzX0V2ICAg
ICAgICAgICAgICAgICAgICA9IDB4RjcsCkBAIC0xNjUsMTEgKzE2NiwxNSBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAgIE9QMl9NT1ZTRF9Wc2RXc2QgICAgPSAweDEwLAog
ICAgICAgICBPUDJfTU9WU0RfV3NkVnNkICAgID0gMHgxMSwKKyAgICAgICAgT1AyX01PVlNTX1Zz
ZFdzZCAgICA9IDB4MTAsCisgICAgICAgIE9QMl9NT1ZTU19Xc2RWc2QgICAgPSAweDExLAogICAg
ICAgICBPUDJfQ1ZUU0kyU0RfVnNkRWQgID0gMHgyQSwKICAgICAgICAgT1AyX0NWVFRTRDJTSV9H
ZFdzZCA9IDB4MkMsCiAgICAgICAgIE9QMl9VQ09NSVNEX1ZzZFdzZCAgPSAweDJFLAogICAgICAg
ICBPUDJfQUREU0RfVnNkV3NkICAgID0gMHg1OCwKICAgICAgICAgT1AyX01VTFNEX1ZzZFdzZCAg
ICA9IDB4NTksCisgICAgICAgIE9QMl9DVlRTRDJTU19Wc2RXc2QgPSAweDVBLAorICAgICAgICBP
UDJfQ1ZUU1MyU0RfVnNkV3NkID0gMHg1QSwKICAgICAgICAgT1AyX1NVQlNEX1ZzZFdzZCAgICA9
IDB4NUMsCiAgICAgICAgIE9QMl9ESVZTRF9Wc2RXc2QgICAgPSAweDVFLAogICAgICAgICBPUDJf
U1FSVFNEX1ZzZFdzZCAgID0gMHg1MSwKQEAgLTE0MzUsNiArMTQ0MCwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsKICAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DVlRUU0QyU0lfR2RXc2QsIGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsK
ICAgICB9CisKKyAgICB2b2lkIGN2dHNkMnNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yy
KTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTRDJTU19Wc2RXc2QsIGRz
dCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIGN2dHNzMnNkX3JyKFhNTVJl
Z2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9DVlRTUzJTRF9Wc2RXc2QsIGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CiAgICAgCiAj
aWYgQ1BVKFg4Nl82NCkKICAgICB2b2lkIGN2dHRzZDJzaXFfcnIoWE1NUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQpAQCAtMTQ4MSwxMyArMTQ5OCwzNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgYmFzZSwgb2Zmc2V0KTsK
ICAgICB9Ci0KKyAgICAKKyAgICB2b2lkIG1vdnNkX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YyKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICB2b2lkIG1vdnNzX3Jt
KFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZTRF9Xc2RW
c2QsIChSZWdpc3RlcklEKXNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOworICAgIH0K
KyAgICAKICAgICB2b2lkIG1vdnNkX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1N
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NT
RV9GMik7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3NkLCAo
UmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZzZF9t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2Fs
ZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNk
V3NkLCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAg
dm9pZCBtb3Zzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfTU9WU0RfVnNkV3NkLCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKKyAgICB9
CisKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIG1vdnNkX21yKGNvbnN0IHZvaWQqIGFkZHJl
c3MsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCmluZGV4IDQxNzYxMjkyZjUwNTFlYmZiOGI1MDFhOWM3
ODdkYzE2M2JkYmE2MzAuLjM3M2EwZTBjYjQ2ODViMDBhNTIxNzQyMWNjYjk4Yzg1NGNjY2Y3NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApA
QCAtNDY3LDYgKzQ2NywxOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4
IG5vZGVJbmRleCkKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERv
dWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgeworICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEZsb2F0MzJBcnJheSk7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmxvYXQ2NEFycmF5KTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEFycmF5KTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJl
ZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKQEAgLTUy
NCw2ICs1MzYsMTggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0
TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGlmIChtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmxvYXQzMkFycmF5
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQz
Mik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVt
YmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmxvYXQ2NEFycmF5KTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5KTsKICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKaW5kZXggMWQzM2I3Yjc1ZDkwZTM0Njg1YmE0MmEzNmIzZTRiNDcyZmZm
ZDcyMi4uYTgyNzk4Mzg0ZGQzYTQ5YTE0ZGQ3Y2IzMGQ2NmUxZWQ4NWM5YzZlZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTk1NCw3ICs5NTQsMTEgQEAgc3RydWN0IE5vZGUg
ewogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBwcmVkaWN0aW9uKCkgPT0gUHJlZGljdEZsb2F0MzJBcnJheTsKKyNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICByZXR1cm4gISEocHJlZGljdGlvbigpICYg
UHJlZGljdEZsb2F0MzJBcnJheSk7CisjZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKaW5kZXggOWI3OTk5
ZWM2ZTI2ODM1ZGVjNzg5ZjIwODJmMGVkYzA3Y2QzZmQ4Mi4uNDM2MjVlMzg4NDA1MTI0NzgyOWQ2
YzBkM2JiMjY1YjZlMDYzOTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcm9wYWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b3BhZ2F0b3IuY3BwCkBAIC00NjUsNyArNDY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6IHsKLSAgICAgICAgICAgIGlmIChtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpCisgICAgICAg
ICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJh
eSgpIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5
KCkgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXko
KSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91
YmxlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVk
aWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCBkODI1ZTI5NGJmMGQ4NjM1ZTc3MTZjOTIxOWU4ODFmZThiNzNiZGYyLi5k
Njg0NTdmYmFlOTExNjdjZWIzMWEwY2I1NDM0ZjIzNzg4MDM4MTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTY3NSwxMCArMTY3
NSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFy
cmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgICAgICBGUFJSZWcgZnByID0gdmFsdWVPcC5mcHIoKTsKICAgICAgICAg
R1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90TmFOID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwg
ZnByLCBmcHIpOworICAgICAgICBtX2ppdC54b3JQdHIoZ3ByLCBncHIpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmaXhlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgbm90TmFOLmxp
bmsoJm1faml0KTsKKyAgICAKICAgICAgICAgaWYgKHNpZ25lZG5lc3MgPT0gU2lnbmVkVHlwZWRB
cnJheSkKICAgICAgICAgICAgIG1faml0LnRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwcik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0LnRydW5jYXRlRG91YmxlVG9VaW50MzIo
ZnByLCBncHIpOworICAgICAgICBmaXhlZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHZhbHVlLmFk
b3B0KHJlc3VsdCk7CiAgICAgICAgIHZhbHVlR1BSID0gZ3ByOwogICAgIH0KQEAgLTE3MTAsNiAr
MTcxNiw4NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgIG5vUmVzdWx0KG1fY29tcGls
ZUluZGV4KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25GbG9h
dFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE5vZGUm
IG5vZGUsIHNpemVfdCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1l
bnRzIHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzKQoreworICAgIEFTU0VSVChub2RlLmNoaWxkMygp
ID09IE5vTm9kZSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywg
bm9kZS5jaGlsZDIoKSk7CisgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgIEdQ
UlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIAorICAgIGlmIChzcGVjdWxh
dGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrKQorICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgCisgICAgLy8gTG9hZCB0aGUgY2hhcmFjdGVy
IGludG8gc2NyYXRjaFJlZworICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgIEdQ
UlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwg
c3RvcmFnZVJlZyk7CisgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBGUFJSZWcg
cmVzdWx0UmVnID0gcmVzdWx0LmZwcigpOworICAgIEFTU0VSVChzcGVjdWxhdGlvblJlcXVpcmVt
ZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5tX2xlbmd0
aE9mZnNldCkpOworICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBvdXRPZkJvdW5kcyA9IG1faml0Lmp1bXAoKTsKKyAgICBpbkJvdW5kcy5saW5rKCZtX2pp
dCk7CisgICAgc3dpdGNoIChlbGVtZW50U2l6ZSkgeworICAgIGNhc2UgNDoKKyAgICAgICAgbV9q
aXQubG9hZEZsb2F0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpLCByZXN1bHRSZWcpOworICAgICAgICBt
X2ppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShyZXN1bHRSZWcsIHJlc3VsdFJlZyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgODogeworICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVnKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90TmFOID0gbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCwg
cmVzdWx0UmVnLCByZXN1bHRSZWcpOworICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CisgICAgICAgIG1faml0
LmxvYWREb3VibGUoJk5hTiwgcmVzdWx0UmVnKTsKKyAgICAgICAgbm90TmFOLmxpbmsoJm1faml0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CisgICAg
ZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbV9jb21waWxlSW5kZXgpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRB
cnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHks
IE5vZGUmIG5vZGUsIHNpemVfdCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVx
dWlyZW1lbnRzIHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzKQoreworICAgIE5vZGVJbmRleCBiYXNl
SW5kZXggPSBub2RlLmNoaWxkMSgpOworICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5j
aGlsZDMoKTsKKyAgICAKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywg
dmFsdWVJbmRleCk7CisgICAgCisgICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5v
VHlwZWRBcnJheVR5cGVTcGVjQ2hlY2spCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgIAor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgCisgICAgR1BSVGVtcG9yYXJ5IHN0
b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOworICAg
IAorICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgZGVzY3Jp
cHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBvdXRPZkJvdW5kczsKKyAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9U
eXBlZEFycmF5U3BlY0NoZWNrKQorICAgICAgICBvdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlLCBkZXNjcmlwdG9yLm1fbGVuZ3RoT2Zmc2V0KSk7CisgICAgCisgICAgc3dp
dGNoIChlbGVtZW50U2l6ZSkgeworICAgIGNhc2UgNDogeworICAgICAgICBGUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZSh2YWx1ZU9wLmZwcigpLCBz
Y3JhdGNoLmZwcigpKTsKKyAgICAgICAgbV9qaXQuY29udmVydERvdWJsZVRvRmxvYXQodmFsdWVP
cC5mcHIoKSwgc2NyYXRjaC5mcHIoKSk7CisgICAgICAgIG1faml0LnN0b3JlRmxvYXQoc2NyYXRj
aC5mcHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eSwg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzRm91cikpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSA4OgorICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2YWx1ZU9wLmZwcigpLCBNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5LCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRz
ICE9IE5vVHlwZWRBcnJheVNwZWNDaGVjaykKKyAgICAgICAgb3V0T2ZCb3VuZHMubGluaygmbV9q
aXQpOworICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSYsIEdQUlJlZyB2YWx1ZVJlZywg
R1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcpCiB7CiAgICAgLy8gQ2hlY2sg
dGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGQ4YWZmYjNkZmI2M2E3ZTI0NjY0NjlhOTNlZjNl
MjYwOTMyZmZiODUuLjFhZDQ5MDQ1YjgxOTNjYzFlNmYyMjNmN2YzMWRmYjY5MjQ2NDdkYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE5
NjIsNiArMTk2Miw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZh
bE9uSW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYsIE5vZGUmLCBzaXpl
X3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVpcmVtZW50cywgVHlwZWRB
cnJheVNpZ25lZG5lc3MpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJh
eShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYsIEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVy
dHksIE5vZGUmLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVp
cmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3MpOworICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
T25GbG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImLCBOb2RlJiwgc2l6
ZV90IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25SZXF1aXJlbWVudHMpOworICAg
IHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlE
ZXNjcmlwdG9yJiwgR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYsIHNpemVfdCBl
bGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzKTsKICAgICAKICAg
ICAvLyBJdCBpcyBhY2NlcHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVxdWFsIHRvIHNjcmF0
Y2gsIHNvIGxvbmcgYXMgeW91J3JlIGZpbmUKICAgICAvLyB3aXRoIHRoZSBzdHJ1Y3R1cmUgR1BS
IGJlaW5nIGNsb2JiZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGJmZTM1MjlmZTUxMzliMmM5YTZmMGVmMzQz
MzMxNTcxZDhhNzYyZDEuLjgwYzkyMmQ5MDdiNWU2MTQwNGM4NTI0ZGI4M2I0NDgzNTI1NGY0NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjY4MSw2ICsyNjgxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7CisgICAgICAgICAg
ICBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7Cisg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIGlz
RmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNr
cyk7CisgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQobm9kZS5jaGlsZDMoKSA9PSBOb05vZGUpOwogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpAQCAtMjc4Nyw2ICsyODAxLDIwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0
MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3By
KCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKKyAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCks
IG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNr
IDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVP
a2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAg
ICAgIAorICAgICAgICB9CiAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMjg5
OSw2ICsyOTI3LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlw
dG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2spOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0
b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2spOworICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAor
ICAgICAgICB9CiAKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDMoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMsIGJhc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
Yzg1ZGExYjI1NzBkMjE4ZmFhYTJkOWNmODFjYTczYWFiZDhiNWViZC4uYTRiY2RkODZkYTdiYzRm
MzYwMmY1OGI2ZDg5ZjM2MjVlNTQ5YTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xMzg5LDkgKzEzODksMTcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4IG5v
ZGVJbmRleCwgRGF0YUZvcm1hdCYKICAgICB9CiAKICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6
CisgICAgY2FzZSBEYXRhRm9ybWF0SlNEb3VibGU6IHsKKyAgICAgICAgaWYgKG5vZGUuaGFzQ29u
c3RhbnQoKSAmJiBpc0ludDMyQ29uc3RhbnQobm9kZUluZGV4KSkgeworICAgICAgICAgICAgR1BS
UmVnIGdwciA9IGFsbG9jYXRlKCk7CisgICAgICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50
KG5vZGVJbmRleCkpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1t
MzIodmFsdWVPZkludDMyQ29uc3RhbnQobm9kZUluZGV4KSksIGdwcik7CisgICAgICAgICAgICBy
ZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50ZWdlcjsKKyAgICAgICAgICAgIHJldHVybiBncHI7
CisgICAgICAgIH0KKyAgICB9CiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICBjYXNlIERh
dGFGb3JtYXRCb29sZWFuOgotICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgogICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46IHsKICAgICAg
ICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsK
QEAgLTI2NzYsNiArMjY4NCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkgeworICAgICAgICAgICAg
Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9h
dDY0QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5
cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5v
ZGUuY2hpbGQzKCkgPT0gTm9Ob2RlKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKQEAgLTI3NzUsNiArMjc5NywyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkg
eworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmds
b2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgICAgIGlmICghbV9j
b21waWxlT2theSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsg
ICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7CisgICAgICAgICAgICBjb21w
aWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0
QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXpl
b2YoZG91YmxlKSwgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVk
QXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAg
ICAgfQogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkp
OwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTI4ODcsNiArMjkyMywy
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVG
bG9hdDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNl
LmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgTm9UeXBlZEFycmF5
U3BlY0NoZWNrKTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZs
b2F0NjRBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIGJhc2Uu
Z3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgTm9UeXBlZEFycmF5
U3BlY0NoZWNrKTsKKyAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgfQog
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
</data>
<flag name="review"
          id="117249"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>