<?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>160010</bug_id>
          
          <creation_ts>2016-07-20 21:12:17 -0700</creation_ts>
          <short_desc>FTL snippet generators should be able to request a different register for output and input</short_desc>
          <delta_ts>2016-07-20 22:26:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213022</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 21:12:17 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213024</commentid>
    <comment_count>1</comment_count>
      <attachid>284186</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 21:15:23 -0700</bug_when>
    <thetext>Created attachment 284186
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213026</commentid>
    <comment_count>2</comment_count>
      <attachid>284186</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-20 21:26:35 -0700</bug_when>
    <thetext>Comment on attachment 284186
the patch

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

&gt; Source/JavaScriptCore/b3/B3ValueRep.h:69
&gt; +        

nit: please remove empty spaces here.

&gt; Source/JavaScriptCore/b3/B3ValueRep.h:78
&gt; -
&gt; +        

Unnecessary change.  Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213027</commentid>
    <comment_count>3</comment_count>
      <attachid>284186</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-20 21:34:07 -0700</bug_when>
    <thetext>Comment on attachment 284186
the patch

r=me
Can you add some testb3 specific tests that uses a patchpoint and SomeEarlyRegister to ensure that no input has the same register as the output register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213028</commentid>
    <comment_count>4</comment_count>
      <attachid>284186</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-20 21:36:11 -0700</bug_when>
    <thetext>Comment on attachment 284186
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=160010

Can you also add the radar url here after the bugzilla one?  I think it&apos;s customary to do that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213029</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 21:39:41 -0700</bug_when>
    <thetext>Thanks for the feedback guys!

I&apos;ve got a 100% repro test that I&apos;ll also add:

var toggle = 0;

function bar()
{
    if (toggle ^= 1)
        return 42;
    else
        return {valueOf: function() { return 42; }};
}

noInline(bar);

function baz()
{
    return 7;
}

noInline(baz);

function foo()
{
    return bar() ^ baz();
}

noInline(foo);

for (var i = 0; i &lt; 100000; ++i) {
    var result = foo();
    if (result != 45)
        throw &quot;Error: bad result: &quot; + result;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213030</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 21:40:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 284186 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284186&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3ValueRep.h:69
&gt; &gt; +        
&gt; 
&gt; nit: please remove empty spaces here.

Fixed.

&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3ValueRep.h:78
&gt; &gt; -
&gt; &gt; +        
&gt; 
&gt; Unnecessary change.  Please remove.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213038</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 22:02:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 284186 [details]
&gt; the patch
&gt; 
&gt; r=me
&gt; Can you add some testb3 specific tests that uses a patchpoint and
&gt; SomeEarlyRegister to ensure that no input has the same register as the
&gt; output register.

Sure!  I added a test that runs the same compile in two modes: one in which an arrangement of patchpoints causes some patchpoint to see the same register for input and output because it&apos;s presented as an ultra-tempting register coalescing oppportunity, and another in which we use SomeEarlyRegister to prevent coalescing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213041</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 22:02:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 284186 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284186&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:4
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=160010
&gt; 
&gt; Can you also add the radar url here after the bugzilla one?  I think it&apos;s
&gt; customary to do that now.

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213042</commentid>
    <comment_count>9</comment_count>
      <attachid>284191</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 22:03:29 -0700</bug_when>
    <thetext>Created attachment 284191
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213043</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-20 22:04:59 -0700</bug_when>
    <thetext>Attachment 284191 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12382:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12391:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12404:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 10 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>1213046</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-20 22:26:18 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/203488</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284186</attachid>
            <date>2016-07-20 21:15:23 -0700</date>
            <delta_ts>2016-07-20 22:03:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12023</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTA3LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNuaXBwZXQgZ2VuZXJhdG9ycyBzaG91bGQgYmUgYWJsZSB0byByZXF1ZXN0IGEgZGlmZmVy
ZW50IHJlZ2lzdGVyIGZvciBvdXRwdXQgYW5kIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBCaXRPciBhbmQgQml0WG9yIHNu
aXBwZXQgZ2VuZXJhdG9ycyBoYXZlIHByb2JsZW1zIGlmIHRoZSByZWdpc3RlciBmb3IgdGhlIHJp
Z2h0IGlucHV0IGlzCisgICAgICAgIHRoZSBzYW1lIGFzIHRoZSByZWdpc3RlciBmb3IgdGhlIHJl
c3VsdC4gV2UgY291bGQgZml4IHRob3NlIGdlbmVyYXRvcnMsIGJ1dCBJJ20gbm90IGNvbnZpbmNl
ZAorICAgICAgICB0aGF0IHRoZSBvdGhlciBzbmlwcGV0IGdlbmVyYXRvcnMgZG9uJ3QgaGF2ZSB0
aGlzIGJ1Zy4gU28sIHRoZSBhcHByb2FjaCB0aGF0IHRoaXMgcGF0Y2ggdGFrZXMKKyAgICAgICAg
aXMgdG8gdGVhY2ggdGhlIEZUTCB0byByZXF1ZXN0IHRoYXQgQjMgdG8gdXNlIGEgZGlmZmVyZW50
IHJlZ2lzdGVyIGZvciB0aGUgcmVzdWx0IHRoYW4gZm9yCisgICAgICAgIGFueSBpbnB1dCB0byB0
aGUgc25pcHBldCBwYXRjaHBvaW50LgorICAgICAgICAKKyAgICAgICAgQWlyIGFscmVhZHkgaGFz
IHRoZSBhYmlsaXR5IHRvIGxldCBhbnkgaW5zdHJ1Y3Rpb24gZG8gYW4gRWFybHlEZWYsIHdoaWNo
IG1lYW5zIGV4YWN0bHkgdGhpcy4KKyAgICAgICAgQnV0IEIzIGRpZCBub3QgZXhwb3NlIHRoaXMg
dmlhIFZhbHVlUmVwLiBUaGlzIHBhdGNoIGV4cG9zZXMgdGhpcyBpbiBWYWx1ZVJlcCBhcworICAg
ICAgICBTb21lRWFybHlSZWdpc3Rlci4gVGhhdCdzIG1vc3Qgb2YgdGhlIGNoYW5nZS4KKworICAg
ICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OlBhdGNocG9pbnRTcGVjaWFsOjphZG1pdHNTdGFjayk6CisgICAgICAgICogYjMv
QjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFs
Ojpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpTdGFja21hcFNwZWNpYWw6Omlz
QXJnVmFsaWRGb3JSZXApOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGIzL0IzVmFsdWVSZXAuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6OmFkZFVzZWRS
ZWdpc3RlcnNUbyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6ZHVtcCk6CisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzVmFsdWVSZXAuaDoKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlUmVwOjpWYWx1ZVJlcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1
ZVJlcDo6cmVnKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjppc0FueSk6CisgICAgICAg
IChKU0M6OkIzOjpWYWx1ZVJlcDo6aXNSZWcpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6
OmlzU29tZVJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeVNu
aXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0QmluYXJ5
Qml0T3BTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1p
dFJpZ2h0U2hpZnRTbmlwcGV0KToKKwogMjAxNi0wNy0yMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaE9uT3ZlcmZsb3cgaW4gSlNDOjpZYXJyOjpZ
YXJyUGF0dGVybkNvbnN0cnVjdG9yOjpzZXR1cEFsdGVybmF0aXZlT2Zmc2V0cwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDIwMzQ2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTkzLDYgKzIxOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2Ug
VmFsdWVSZXA6OkNvbGRBbnk6CiAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6TGF0ZUNv
bGRBbnk6CiAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyOgorICAg
ICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOgogICAgICAgICAg
ICAgICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKHRtcChwYXRjaHBvaW50VmFsdWUpKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6UmVn
aXN0ZXI6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVj
aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBv
aW50U3BlY2lhbC5jcHAJKHJldmlzaW9uIDIwMzQ2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTcgKzQ2
LDI1IEBAIFBhdGNocG9pbnRTcGVjaWFsOjp+UGF0Y2hwb2ludFNwZWNpYWwoKQogCiB2b2lkIFBh
dGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJk
YTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICBQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQgPSBpbnN0Lm9yaWdpbi0+YXM8UGF0Y2hwb2ludFZhbHVlPigpOwogICAg
IHVuc2lnbmVkIGFyZ0luZGV4ID0gMTsKIAotICAgIGlmIChpbnN0Lm9yaWdpbi0+dHlwZSgpICE9
IFZvaWQpCi0gICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1thcmdJbmRleCsrXSwgQXJnOjpEZWYs
IGluc3Qub3JpZ2luLT5haXJUeXBlKCksIGluc3Qub3JpZ2luLT5haXJXaWR0aCgpKTsKKyAgICBp
ZiAocGF0Y2hwb2ludC0+dHlwZSgpICE9IFZvaWQpIHsKKyAgICAgICAgQXJnOjpSb2xlIHJvbGU7
CisgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50LmtpbmQoKSA9PSBWYWx1
ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIpCisgICAgICAgICAgICByb2xlID0gQXJnOjpFYXJseURl
ZjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcm9sZSA9IEFyZzo6RGVmOworICAgICAgICAK
KyAgICAgICAgY2FsbGJhY2soaW5zdC5hcmdzW2FyZ0luZGV4KytdLCByb2xlLCBpbnN0Lm9yaWdp
bi0+YWlyVHlwZSgpLCBpbnN0Lm9yaWdpbi0+YWlyV2lkdGgoKSk7CisgICAgfQogCiAgICAgZm9y
RWFjaEFyZ0ltcGwoMCwgYXJnSW5kZXgsIGluc3QsIFNhbWVBc1JlcCwgTnVsbG9wdCwgY2FsbGJh
Y2spOwogICAgIGFyZ0luZGV4ICs9IGluc3Qub3JpZ2luLT5udW1DaGlsZHJlbigpOwogCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gaW5zdC5vcmlnaW4tPmFzPFBhdGNocG9pbnRWYWx1ZT4oKS0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzOyBpLS07KQorICAgIGZvciAodW5zaWduZWQgaSA9IHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgaS0tOykKICAgICAgICAgY2FsbGJhY2soaW5zdC5h
cmdzW2FyZ0luZGV4KytdLCBBcmc6OlNjcmF0Y2gsIEFyZzo6R1AsIEFyZzo6Y29uc2VydmF0aXZl
V2lkdGgoQXJnOjpHUCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGluc3Qub3JpZ2luLT5hczxQ
YXRjaHBvaW50VmFsdWU+KCktPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgaS0tOykKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnM7IGktLTspCiAg
ICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1thcmdJbmRleCsrXSwgQXJnOjpTY3JhdGNoLCBBcmc6
OkZQLCBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRoKEFyZzo6RlApKTsKIH0KIApAQCAtMTA5LDYgKzEx
Nyw3IEBAIGJvb2wgUGF0Y2hwb2ludFNwZWNpYWw6OmFkbWl0c1N0YWNrKEluc3QKICAgICAgICAg
Y2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBjYXNlIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXI6CisgICAgICAgIGNhc2UgVmFsdWVS
ZXA6OlNvbWVFYXJseVJlZ2lzdGVyOgogICAgICAgICBjYXNlIFZhbHVlUmVwOjpSZWdpc3RlcjoK
ICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6TGF0ZVJlZ2lzdGVyOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNw
ZWNpYWwuY3BwCShyZXZpc2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdGFja21hcFNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDkgQEAg
dm9pZCBTdGFja21hcFNwZWNpYWw6OmZvckVhY2hBcmdJbXBsKAogICAgICAgICAgICAgY2FzZSBW
YWx1ZVJlcDo6TGF0ZUNvbGRBbnk6CiAgICAgICAgICAgICAgICAgcm9sZSA9IEFyZzo6TGF0ZUNv
bGRVc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBGb3JjZUxhdGVVc2U6CkBAIC0yMzAsNiArMjMzLDcgQEAgYm9vbCBTdGFja21hcFNwZWNpYWw6
OmlzQXJnVmFsaWRGb3JSZXAoQQogICAgICAgICAvLyBXZSBhbHJlYWR5IHZlcmlmaWVkIGJ5IGlz
QXJnVmFsaWRGb3JWYWx1ZSgpLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXI6CisgICAgY2FzZSBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI6
CiAgICAgICAgIHJldHVybiBhcmcuaXNUbXAoKTsKICAgICBjYXNlIFZhbHVlUmVwOjpMYXRlUmVn
aXN0ZXI6CiAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICsz
MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUtPmFzPFBh
dGNocG9pbnRWYWx1ZT4oKS0+cmVzdWx0Q29uc3RyYWludC5raW5kKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6V2FybUFueToKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFZhbHVl
UmVwOjpTb21lRWFybHlSZWdpc3RlcjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVJl
cDo6UmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJn
dW1lbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM0NSw3ICszNDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgdmFsaWRh
dGVTdGFja21hcENvbnN0cmFpbnQodmFsdWUsIENvbnN0cmFpbmVkVmFsdWUodmFsdWUsIHZhbHVl
LT5hczxQYXRjaHBvaW50VmFsdWU+KCktPnJlc3VsdENvbnN0cmFpbnQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdGVTdGFja21hcENvbnN0cmFpbnQodmFsdWUsIENvbnN0cmFpbmVkVmFs
dWUodmFsdWUsIHZhbHVlLT5hczxQYXRjaHBvaW50VmFsdWU+KCktPnJlc3VsdENvbnN0cmFpbnQp
LCBDb25zdHJhaW50Um9sZTo6RGVmKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00
MzIsNyArNDMzLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrbWFwQ29u
c3RyYWludChzdGFja21hcCwgY2hpbGQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHZhbGlkYXRl
U3RhY2ttYXBDb25zdHJhaW50KFZhbHVlKiBjb250ZXh0LCBjb25zdCBDb25zdHJhaW5lZFZhbHVl
JiB2YWx1ZSkKKyAgICBlbnVtIGNsYXNzIENvbnN0cmFpbnRSb2xlIHsKKyAgICAgICAgVXNlLAor
ICAgICAgICBEZWYKKyAgICB9OworICAgIHZvaWQgdmFsaWRhdGVTdGFja21hcENvbnN0cmFpbnQo
VmFsdWUqIGNvbnRleHQsIGNvbnN0IENvbnN0cmFpbmVkVmFsdWUmIHZhbHVlLCBDb25zdHJhaW50
Um9sZSByb2xlID0gQ29uc3RyYWludFJvbGU6OlVzZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
dmFsdWUucmVwKCkua2luZCgpKSB7CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6Oldhcm1Bbnk6CkBA
IC00NDEsNiArNDQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyOgogICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOgorICAg
ICAgICAgICAgVkFMSURBVEUocm9sZSA9PSBDb25zdHJhaW50Um9sZTo6RGVmLCAoIkF0ICIsICpj
b250ZXh0LCAiOiAiLCB2YWx1ZSkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VmFsdWVSZXA6OlJlZ2lzdGVyOgogICAgICAgICBjYXNlIFZhbHVlUmVwOjpMYXRlUmVnaXN0ZXI6
CiAgICAgICAgICAgICBpZiAodmFsdWUucmVwKCkucmVnKCkuaXNHUFIoKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAJKHJldmlzaW9uIDIwMzQ2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQCB2b2lkIFZhbHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8oUmVnaXN0CiAg
ICAgY2FzZSBDb2xkQW55OgogICAgIGNhc2UgTGF0ZUNvbGRBbnk6CiAgICAgY2FzZSBTb21lUmVn
aXN0ZXI6CisgICAgY2FzZSBTb21lRWFybHlSZWdpc3RlcjoKICAgICBjYXNlIENvbnN0YW50Ogog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMYXRlUmVnaXN0ZXI6CkBAIC03MCw2ICs3MSw3IEBA
IHZvaWQgVmFsdWVSZXA6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY28KICAgICBjYXNlIENvbGRB
bnk6CiAgICAgY2FzZSBMYXRlQ29sZEFueToKICAgICBjYXNlIFNvbWVSZWdpc3RlcjoKKyAgICBj
YXNlIFNvbWVFYXJseVJlZ2lzdGVyOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBMYXRlUmVn
aXN0ZXI6CiAgICAgY2FzZSBSZWdpc3RlcjoKQEAgLTE3Myw2ICsxNzUsOSBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVmFsCiAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyOgogICAgICAgICBvdXQucHJpbnQoIlNvbWVSZWdpc3RlciIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI6CisgICAgICAgIG91dC5w
cmludCgiU29tZUVhcmx5UmVnaXN0ZXIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmFs
dWVSZXA6OlJlZ2lzdGVyOgogICAgICAgICBvdXQucHJpbnQoIlJlZ2lzdGVyIik7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkocmV2aXNp
b24gMjAzNDYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNjYsMTEgKzY2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQXMgYW4g
aW5wdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgbWVhbnMgdGhhdCBCMyBzaG91bGQgcGljayBzb21l
IHJlZ2lzdGVyLiBJdCBjb3VsZCBiZSBhCiAgICAgICAgIC8vIHJlZ2lzdGVyIHRoYXQgdGhpcyBj
bGFpbXMgdG8gY2xvYmJlciEKICAgICAgICAgU29tZVJlZ2lzdGVyLAorICAgICAgICAKKyAgICAg
ICAgLy8gQXMgYW4gaW5wdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgdGVsbHMgdXMgdGhhdCBCMyBz
aG91bGQgcGljayBzb21lIHJlZ2lzdGVyLCBidXQgaW1wbGllcworICAgICAgICAvLyB0aGF0IHRo
ZSBkZWYgaGFwcGVucyBiZWZvcmUgYW55IG9mIHRoZSBlZmZlY3RzIG9mIHRoZSBzdGFja21hcC4g
VGhpcyBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAgICAvLyB0aGUgcmVzdWx0IGNvbnN0cmFpbnQg
b2YgYSBQYXRjaHBvaW50LgorICAgICAgICBTb21lRWFybHlSZWdpc3RlciwKIAogICAgICAgICAv
LyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyBmb3JjZXMgYSBwYXJ0aWN1bGFyIHJl
Z2lzdGVyLiBBcyBhbiBvdXRwdXQKICAgICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHRoaXMgdGVs
bHMgdXMgd2hhdCByZWdpc3RlciBCMyBwaWNrZWQuCiAgICAgICAgIFJlZ2lzdGVyLAotCisgICAg
ICAgIAogICAgICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyBmb3JjZXMg
YSBwYXJ0aWN1bGFyIHJlZ2lzdGVyIGFuZCBzdGF0ZXMgdGhhdAogICAgICAgICAvLyB0aGUgcmVn
aXN0ZXIgaXMgdXNlZCBsYXRlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlZ2lzdGVyIGlzIHVzZWQg
YWZ0ZXIgdGhlIHJlc3VsdAogICAgICAgICAvLyBpcyBkZWZpbmVkIChpLmUsIHRoZSByZXN1bHQg
d2lsbCBpbnRlcmZlcmUgd2l0aCB0aGlzIGFzIGFuIGlucHV0KS4KQEAgLTEwMyw3ICsxMDgsNyBA
QCBwdWJsaWM6CiAgICAgVmFsdWVSZXAoS2luZCBraW5kKQogICAgICAgICA6IG1fa2luZChraW5k
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGtpbmQgPT0gV2FybUFueSB8fCBraW5kID09IENvbGRB
bnkgfHwga2luZCA9PSBMYXRlQ29sZEFueSB8fCBraW5kID09IFNvbWVSZWdpc3Rlcik7CisgICAg
ICAgIEFTU0VSVChraW5kID09IFdhcm1BbnkgfHwga2luZCA9PSBDb2xkQW55IHx8IGtpbmQgPT0g
TGF0ZUNvbGRBbnkgfHwga2luZCA9PSBTb21lUmVnaXN0ZXIgfHwga2luZCA9PSBTb21lRWFybHlS
ZWdpc3Rlcik7CiAgICAgfQogCiAgICAgc3RhdGljIFZhbHVlUmVwIHJlZyhSZWcgcmVnKQpAQCAt
MTc3LDggKzE4Miw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBbnkoKSBjb25zdCB7IHJldHVy
biBraW5kKCkgPT0gV2FybUFueSB8fCBraW5kKCkgPT0gQ29sZEFueSB8fCBraW5kKCkgPT0gTGF0
ZUNvbGRBbnk7IH0KIAotICAgIGJvb2wgaXNTb21lUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBr
aW5kKCkgPT0gU29tZVJlZ2lzdGVyOyB9Ci0gICAgCiAgICAgYm9vbCBpc1JlZygpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciB8fCBraW5kKCkgPT0gTGF0ZVJlZ2lzdGVyOyB9CiAg
ICAgCiAgICAgUmVnIHJlZygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
MDgsNiArODEwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChzY3JhdGNoRlBSVXNhZ2UgPT0g
TmVlZFNjcmF0Y2hGUFIpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdp
c3RlcnMrKzsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50
ID0gVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAm
bV9mdGxTdGF0ZTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAg
ICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKQEAgLTgxNzAsNiArODE3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlcjsK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC04MjI1LDYgKzgyMjcsNyBA
QCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAx
OwogICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6U29t
ZUVhcmx5UmVnaXN0ZXI7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewo=
</data>
<flag name="review"
          id="307836"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284191</attachid>
            <date>2016-07-20 22:03:29 -0700</date>
            <delta_ts>2016-07-20 22:03:29 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14943</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzNDg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE2LTA3LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNuaXBwZXQgZ2VuZXJhdG9ycyBzaG91bGQgYmUgYWJsZSB0byByZXF1ZXN0IGEgZGlmZmVy
ZW50IHJlZ2lzdGVyIGZvciBvdXRwdXQgYW5kIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwMTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
Mjc0MzkzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKyAgICAgICAgCisg
ICAgICAgIFRoZSBCaXRPciBhbmQgQml0WG9yIHNuaXBwZXQgZ2VuZXJhdG9ycyBoYXZlIHByb2Js
ZW1zIGlmIHRoZSByZWdpc3RlciBmb3IgdGhlIHJpZ2h0IGlucHV0IGlzCisgICAgICAgIHRoZSBz
YW1lIGFzIHRoZSByZWdpc3RlciBmb3IgdGhlIHJlc3VsdC4gV2UgY291bGQgZml4IHRob3NlIGdl
bmVyYXRvcnMsIGJ1dCBJJ20gbm90IGNvbnZpbmNlZAorICAgICAgICB0aGF0IHRoZSBvdGhlciBz
bmlwcGV0IGdlbmVyYXRvcnMgZG9uJ3QgaGF2ZSB0aGlzIGJ1Zy4gU28sIHRoZSBhcHByb2FjaCB0
aGF0IHRoaXMgcGF0Y2ggdGFrZXMKKyAgICAgICAgaXMgdG8gdGVhY2ggdGhlIEZUTCB0byByZXF1
ZXN0IHRoYXQgQjMgdG8gdXNlIGEgZGlmZmVyZW50IHJlZ2lzdGVyIGZvciB0aGUgcmVzdWx0IHRo
YW4gZm9yCisgICAgICAgIGFueSBpbnB1dCB0byB0aGUgc25pcHBldCBwYXRjaHBvaW50LgorICAg
ICAgICAKKyAgICAgICAgQWlyIGFscmVhZHkgaGFzIHRoZSBhYmlsaXR5IHRvIGxldCBhbnkgaW5z
dHJ1Y3Rpb24gZG8gYW4gRWFybHlEZWYsIHdoaWNoIG1lYW5zIGV4YWN0bHkgdGhpcy4KKyAgICAg
ICAgQnV0IEIzIGRpZCBub3QgZXhwb3NlIHRoaXMgdmlhIFZhbHVlUmVwLiBUaGlzIHBhdGNoIGV4
cG9zZXMgdGhpcyBpbiBWYWx1ZVJlcCBhcworICAgICAgICBTb21lRWFybHlSZWdpc3Rlci4gVGhh
dCdzIG1vc3Qgb2YgdGhlIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBhIHRl
c3RiMyB0ZXN0IGZvciBTb21lRWFybHlSZWdpc3RlciBhbmQgYSByZWdyZXNzaW9uIHRlc3QgZm9y
IHRoaXMgcGFydGljdWxhcgorICAgICAgICBwcm9ibGVtLiBUaGUgcmVncmVzc2lvbiB0ZXN0IGZh
aWxlZCBvbiB0cnVuayBKU0MgYmVmb3JlIHRoaXMuCisKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9B
aXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAg
ICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQYXRj
aHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50
U3BlY2lhbDo6YWRtaXRzU3RhY2spOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OlN0YWNrbWFwU3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwpOgor
ICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKToKKyAg
ICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlUmVwLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8pOgorICAgICAg
ICAoSlNDOjpCMzo6VmFsdWVSZXA6OmR1bXApOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlUmVwLmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJl
cDo6VmFsdWVSZXApOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6OnJlZyk6CisgICAgICAg
IChKU0M6OkIzOjpWYWx1ZVJlcDo6aXNBbnkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWVSZXA6
OmlzUmVnKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjppc1NvbWVSZWdpc3Rlcik6IERl
bGV0ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJp
bmFyeVNuaXBwZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplbWl0
QmluYXJ5Qml0T3BTbmlwcGV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6ZW1pdFJpZ2h0U2hpZnRTbmlwcGV0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZnRsLWJp
dC14b3ItcmlnaHQtcmVzdWx0LWludGVyZmVyZW5jZS5qczogQWRkZWQuCisKIDIwMTYtMDctMjAg
IE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hPbk92
ZXJmbG93IGluIEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBBbHRlcm5h
dGl2ZU9mZnNldHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCShyZXZpc2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5Myw2ICsyMTkzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpDb2xkQW55OgogICAgICAgICAgICAgICAg
IGNhc2UgVmFsdWVSZXA6OkxhdGVDb2xkQW55OgogICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcjoKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTb21lRWFy
bHlSZWdpc3RlcjoKICAgICAgICAgICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZCh0bXAocGF0
Y2hwb2ludFZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgVmFsdWVSZXA6OlJlZ2lzdGVyOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCShyZXZpc2lvbiAyMDM0NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDE3ICs0NiwyNSBAQCBQYXRjaHBvaW50U3BlY2lhbDo6flBhdGNocG9p
bnRTcGVjaWFsKCkKIAogdm9pZCBQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBp
bnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2sp
CiB7CisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gaW5zdC5vcmlnaW4tPmFzPFBh
dGNocG9pbnRWYWx1ZT4oKTsKICAgICB1bnNpZ25lZCBhcmdJbmRleCA9IDE7CiAKLSAgICBpZiAo
aW5zdC5vcmlnaW4tPnR5cGUoKSAhPSBWb2lkKQotICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3Nb
YXJnSW5kZXgrK10sIEFyZzo6RGVmLCBpbnN0Lm9yaWdpbi0+YWlyVHlwZSgpLCBpbnN0Lm9yaWdp
bi0+YWlyV2lkdGgoKSk7CisgICAgaWYgKHBhdGNocG9pbnQtPnR5cGUoKSAhPSBWb2lkKSB7Cisg
ICAgICAgIEFyZzo6Um9sZSByb2xlOworICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVzdWx0Q29u
c3RyYWludC5raW5kKCkgPT0gVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyKQorICAgICAgICAg
ICAgcm9sZSA9IEFyZzo6RWFybHlEZWY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJvbGUg
PSBBcmc6OkRlZjsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1thcmdJbmRl
eCsrXSwgcm9sZSwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwgaW5zdC5vcmlnaW4tPmFpcldpZHRo
KCkpOworICAgIH0KIAogICAgIGZvckVhY2hBcmdJbXBsKDAsIGFyZ0luZGV4LCBpbnN0LCBTYW1l
QXNSZXAsIE51bGxvcHQsIGNhbGxiYWNrKTsKICAgICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+
bnVtQ2hpbGRyZW4oKTsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IGluc3Qub3JpZ2luLT5hczxQ
YXRjaHBvaW50VmFsdWU+KCktPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgaS0tOykKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7IGktLTspCiAg
ICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1thcmdJbmRleCsrXSwgQXJnOjpTY3JhdGNoLCBBcmc6
OkdQLCBBcmc6OmNvbnNlcnZhdGl2ZVdpZHRoKEFyZzo6R1ApKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBpbnN0Lm9yaWdpbi0+YXM8UGF0Y2hwb2ludFZhbHVlPigpLT5udW1GUFNjcmF0Y2hSZWdp
c3RlcnM7IGktLTspCisgICAgZm9yICh1bnNpZ25lZCBpID0gcGF0Y2hwb2ludC0+bnVtRlBTY3Jh
dGNoUmVnaXN0ZXJzOyBpLS07KQogICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbYXJnSW5kZXgr
K10sIEFyZzo6U2NyYXRjaCwgQXJnOjpGUCwgQXJnOjpjb25zZXJ2YXRpdmVXaWR0aChBcmc6OkZQ
KSk7CiB9CiAKQEAgLTEwOSw2ICsxMTcsNyBAQCBib29sIFBhdGNocG9pbnRTcGVjaWFsOjphZG1p
dHNTdGFjayhJbnN0CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlN0YWNrQXJndW1lbnQ6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
OgorICAgICAgICBjYXNlIFZhbHVlUmVwOjpTb21lRWFybHlSZWdpc3RlcjoKICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6OkxhdGVSZWdpc3Rl
cjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAkocmV2aXNpb24gMjAzNDYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE2LDYgKzExNiw5IEBAIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1w
bCgKICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OkxhdGVDb2xkQW55OgogICAgICAgICAgICAg
ICAgIHJvbGUgPSBBcmc6OkxhdGVDb2xkVXNlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRm9yY2VMYXRlVXNlOgpAQCAtMjMwLDYgKzIzMyw3IEBA
IGJvb2wgU3RhY2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKEEKICAgICAgICAgLy8gV2Ug
YWxyZWFkeSB2ZXJpZmllZCBieSBpc0FyZ1ZhbGlkRm9yVmFsdWUoKS4KICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyOgorICAgIGNhc2UgVmFsdWVS
ZXA6OlNvbWVFYXJseVJlZ2lzdGVyOgogICAgICAgICByZXR1cm4gYXJnLmlzVG1wKCk7CiAgICAg
Y2FzZSBWYWx1ZVJlcDo6TGF0ZVJlZ2lzdGVyOgogICAgIGNhc2UgVmFsdWVSZXA6OlJlZ2lzdGVy
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjAzNDYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHZhbHVlLT5hczxQYXRjaHBvaW50VmFsdWU+KCktPnJlc3VsdENvbnN0cmFpbnQu
a2luZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6Oldhcm1Bbnk6CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcjoKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI6CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlJlZ2lzdGVyOgogICAgICAgICAgICAgICAgICAgICBj
YXNlIFZhbHVlUmVwOjpTdGFja0FyZ3VtZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0zNDUsNyArMzQ2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXBDb25zdHJhaW50KHZhbHVlLCBDb25zdHJh
aW5lZFZhbHVlKHZhbHVlLCB2YWx1ZS0+YXM8UGF0Y2hwb2ludFZhbHVlPigpLT5yZXN1bHRDb25z
dHJhaW50KSk7CisgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXBDb25zdHJhaW50
KHZhbHVlLCBDb25zdHJhaW5lZFZhbHVlKHZhbHVlLCB2YWx1ZS0+YXM8UGF0Y2hwb2ludFZhbHVl
PigpLT5yZXN1bHRDb25zdHJhaW50KSwgQ29uc3RyYWludFJvbGU6OkRlZik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2ttYXAodmFsdWUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNDMyLDcgKzQzMywxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcENvbnN0cmFpbnQoc3RhY2ttYXAsIGNoaWxkKTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCB2YWxpZGF0ZVN0YWNrbWFwQ29uc3RyYWludChWYWx1ZSogY29udGV4dCwg
Y29uc3QgQ29uc3RyYWluZWRWYWx1ZSYgdmFsdWUpCisgICAgZW51bSBjbGFzcyBDb25zdHJhaW50
Um9sZSB7CisgICAgICAgIFVzZSwKKyAgICAgICAgRGVmCisgICAgfTsKKyAgICB2b2lkIHZhbGlk
YXRlU3RhY2ttYXBDb25zdHJhaW50KFZhbHVlKiBjb250ZXh0LCBjb25zdCBDb25zdHJhaW5lZFZh
bHVlJiB2YWx1ZSwgQ29uc3RyYWludFJvbGUgcm9sZSA9IENvbnN0cmFpbnRSb2xlOjpVc2UpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLnJlcCgpLmtpbmQoKSkgewogICAgICAgICBjYXNl
IFZhbHVlUmVwOjpXYXJtQW55OgpAQCAtNDQxLDYgKzQ0Niw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcjoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3Rh
Y2tBcmd1bWVudDoKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZhbHVlUmVwOjpT
b21lRWFybHlSZWdpc3RlcjoKKyAgICAgICAgICAgIFZBTElEQVRFKHJvbGUgPT0gQ29uc3RyYWlu
dFJvbGU6OkRlZiwgKCJBdCAiLCAqY29udGV4dCwgIjogIiwgdmFsdWUpKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFZhbHVlUmVwOjpSZWdpc3RlcjoKICAgICAgICAgY2FzZSBW
YWx1ZVJlcDo6TGF0ZVJlZ2lzdGVyOgogICAgICAgICAgICAgaWYgKHZhbHVlLnJlcCgpLnJlZygp
LmlzR1BSKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuY3BwCShy
ZXZpc2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgdm9pZCBWYWx1ZVJlcDo6YWRkVXNl
ZFJlZ2lzdGVyc1RvKFJlZ2lzdAogICAgIGNhc2UgQ29sZEFueToKICAgICBjYXNlIExhdGVDb2xk
QW55OgogICAgIGNhc2UgU29tZVJlZ2lzdGVyOgorICAgIGNhc2UgU29tZUVhcmx5UmVnaXN0ZXI6
CiAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTGF0ZVJlZ2lz
dGVyOgpAQCAtNzAsNiArNzEsNyBAQCB2b2lkIFZhbHVlUmVwOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvCiAgICAgY2FzZSBDb2xkQW55OgogICAgIGNhc2UgTGF0ZUNvbGRBbnk6CiAgICAgY2Fz
ZSBTb21lUmVnaXN0ZXI6CisgICAgY2FzZSBTb21lRWFybHlSZWdpc3RlcjoKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgTGF0ZVJlZ2lzdGVyOgogICAgIGNhc2UgUmVnaXN0ZXI6CkBAIC0xNzMs
NiArMTc1LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbAogICAg
IGNhc2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcjoKICAgICAgICAgb3V0LnByaW50KCJTb21lUmVn
aXN0ZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVFYXJseVJl
Z2lzdGVyOgorICAgICAgICBvdXQucHJpbnQoIlNvbWVFYXJseVJlZ2lzdGVyIik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFZhbHVlUmVwOjpSZWdpc3RlcjoKICAgICAgICAgb3V0LnByaW50
KCJSZWdpc3RlciIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZVJlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlUmVwLmgJKHJldmlzaW9uIDIwMzQ2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlUmVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gcmVnaXN0ZXIgdGhhdCB0aGlzIGNsYWltcyB0byBjbG9iYmVyIQogICAg
ICAgICBTb21lUmVnaXN0ZXIsCiAKKyAgICAgICAgLy8gQXMgYW4gaW5wdXQgcmVwcmVzZW50YXRp
b24sIHRoaXMgdGVsbHMgdXMgdGhhdCBCMyBzaG91bGQgcGljayBzb21lIHJlZ2lzdGVyLCBidXQg
aW1wbGllcworICAgICAgICAvLyB0aGF0IHRoZSBkZWYgaGFwcGVucyBiZWZvcmUgYW55IG9mIHRo
ZSBlZmZlY3RzIG9mIHRoZSBzdGFja21hcC4gVGhpcyBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAg
ICAvLyB0aGUgcmVzdWx0IGNvbnN0cmFpbnQgb2YgYSBQYXRjaHBvaW50LgorICAgICAgICBTb21l
RWFybHlSZWdpc3RlciwKKwogICAgICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwg
dGhpcyBmb3JjZXMgYSBwYXJ0aWN1bGFyIHJlZ2lzdGVyLiBBcyBhbiBvdXRwdXQKICAgICAgICAg
Ly8gcmVwcmVzZW50YXRpb24sIHRoaXMgdGVsbHMgdXMgd2hhdCByZWdpc3RlciBCMyBwaWNrZWQu
CiAgICAgICAgIFJlZ2lzdGVyLApAQCAtMTAzLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBWYWx1
ZVJlcChLaW5kIGtpbmQpCiAgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgewotICAgICAgICBB
U1NFUlQoa2luZCA9PSBXYXJtQW55IHx8IGtpbmQgPT0gQ29sZEFueSB8fCBraW5kID09IExhdGVD
b2xkQW55IHx8IGtpbmQgPT0gU29tZVJlZ2lzdGVyKTsKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0g
V2FybUFueSB8fCBraW5kID09IENvbGRBbnkgfHwga2luZCA9PSBMYXRlQ29sZEFueSB8fCBraW5k
ID09IFNvbWVSZWdpc3RlciB8fCBraW5kID09IFNvbWVFYXJseVJlZ2lzdGVyKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgVmFsdWVSZXAgcmVnKFJlZyByZWcpCkBAIC0xNzcsOCArMTgyLDYgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0FueSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBXYXJtQW55
IHx8IGtpbmQoKSA9PSBDb2xkQW55IHx8IGtpbmQoKSA9PSBMYXRlQ29sZEFueTsgfQogCi0gICAg
Ym9vbCBpc1NvbWVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBTb21lUmVnaXN0
ZXI7IH0KLSAgICAKICAgICBib29sIGlzUmVnKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFJl
Z2lzdGVyIHx8IGtpbmQoKSA9PSBMYXRlUmVnaXN0ZXI7IH0KICAgICAKICAgICBSZWcgcmVnKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMDM0
NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTIzNzcsNiArMTIzNzcsNDkgQEAgdm9pZCB0ZXN0UmVzZXRSZWFjaGFiaWxpdHlEYW5n
bGluZ1JlZmVyZQogICAgIHZhbGlkYXRlKHByb2MpOwogfQogCit2b2lkIHRlc3RTb21lRWFybHlS
ZWdpc3RlcigpCit7CisgICAgYXV0byBydW4gPSBbJl0gKGJvb2wgc3VjY2VlZCkgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgCisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIAorICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBJbnQzMiwgT3Jp
Z2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6
OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAgICAgIGJvb2wgcmFuRmlyc3RQYXRj
aHBvaW50ID0gZmFsc2U7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uZ3ByKCkgPT0gR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOworICAgICAgICAgICAgICAgIHJhbkZpcnN0UGF0Y2hwb2lu
dCA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIFZhbHVlKiBhcmcg
PSBwYXRjaHBvaW50OworICAgICAgICAKKyAgICAgICAgcGF0Y2hwb2ludCA9IHJvb3QtPmFwcGVu
ZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEludDMyLCBPcmlnaW4oKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcpOworICAgICAgICBpZiAoc3VjY2VlZCkK
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6U29t
ZUVhcmx5UmVnaXN0ZXI7CisgICAgICAgIGJvb2wgcmFuU2Vjb25kUGF0Y2hwb2ludCA9IGZhbHNl
OworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWQpCisgICAgICAgICAgICAgICAgICAgIENIRUNLKHBh
cmFtc1swXS5ncHIoKSAhPSBwYXJhbXNbMV0uZ3ByKCkpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmdwcigpID09IHBhcmFtc1sxXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgcmFuU2Vjb25kUGF0Y2hwb2ludCA9IHRydWU7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAgICAgIAorICAgICAgICBjb21w
aWxlKHByb2MpOworICAgICAgICBDSEVDSyhyYW5GaXJzdFBhdGNocG9pbnQpOworICAgICAgICBD
SEVDSyhyYW5TZWNvbmRQYXRjaHBvaW50KTsKKyAgICB9OworICAgIAorICAgIHJ1bih0cnVlKTsK
KyAgICBydW4oZmFsc2UpOworfQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90
IHRyeSB0byBvcHRpbWl6ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91YmxlIHplcm8o
KQogewpAQCAtMTM3ODMsNiArMTM4MjYsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOKHRlc3RJbnRlcnByZXRlcigpKTsKICAgICBSVU4odGVzdFJlZHVjZVN0cmVuZ3Ro
Q2hlY2tCb3R0b21Vc2VJbkFub3RoZXJCbG9jaygpKTsKICAgICBSVU4odGVzdFJlc2V0UmVhY2hh
YmlsaXR5RGFuZ2xpbmdSZWZlcmVuY2UoKSk7CisgICAgUlVOKHRlc3RTb21lRWFybHlSZWdpc3Rl
cigpKTsKIAogICAgIGlmICh0YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHVzYWdlKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyMDM0NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMDgsNiArODEwOCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChzY3JhdGNoRlBSVXNhZ2UgPT0gTmVlZFNjcmF0Y2hGUFIpCiAgICAgICAgICAgICBw
YXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3RlcnMrKzsKICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBw
YXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVy
OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTgxNzAsNiArODE3MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMo
cGF0Y2hwb2ludCk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9
IDE7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZh
bHVlUmVwOjpTb21lRWFybHlSZWdpc3RlcjsKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRs
U3RhdGU7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CkBAIC04MjI1LDYgKzgyMjcsNyBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3Vs
dENvbnN0cmFpbnQgPSBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9mdGwtYml0LXhvci1yaWdodC1yZXN1bHQtaW50ZXJmZXJlbmNlLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWJpdC14b3Itcmln
aHQtcmVzdWx0LWludGVyZmVyZW5jZS5qcwkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1iaXQteG9yLXJpZ2h0LXJlc3VsdC1pbnRlcmZlcmVu
Y2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAordmFyIHRvZ2dsZSA9IDA7CisK
K2Z1bmN0aW9uIGJhcigpCit7CisgICAgaWYgKHRvZ2dsZSBePSAxKQorICAgICAgICByZXR1cm4g
NDI7CisgICAgZWxzZQorICAgICAgICByZXR1cm4ge3ZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gNDI7IH19OworfQorCitub0lubGluZShiYXIpOworCitmdW5jdGlvbiBiYXooKQoreworICAg
IHJldHVybiA3OworfQorCitub0lubGluZShiYXopOworCitmdW5jdGlvbiBmb28oKQoreworICAg
IHJldHVybiBiYXIoKSBeIGJheigpOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygpOworICAgIGlm
IChyZXN1bHQgIT0gNDUpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>