<?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>158832</bug_id>
          
          <creation_ts>2016-06-16 01:38:25 -0700</creation_ts>
          <short_desc>WebRTC: Replace RTCPeerConnection custom constructor with a JS built-in constructor</short_desc>
          <delta_ts>2016-06-27 07:27:00 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158834</dependson>
    
    <dependson>159145</dependson>
          <blocked>158936</blocked>
    
    <blocked>143211</blocked>
    
    <blocked>158831</blocked>
    
    <blocked>158940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202894</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-16 01:38:25 -0700</bug_when>
    <thetext>This will make it easier to initialize JS fields and to verify the type of an RTCPeerConnection instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203734</commentid>
    <comment_count>1</comment_count>
      <attachid>281643</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 04:54:30 -0700</bug_when>
    <thetext>Created attachment 281643
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203751</commentid>
    <comment_count>2</comment_count>
      <attachid>281643</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-06-20 07:33:09 -0700</bug_when>
    <thetext>Comment on attachment 281643
Proposed patch

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

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-expected.txt:7
&gt; +PASS new webkitRTCPeerConnection(null); threw exception TypeError: Type error.
&gt; +PASS new webkitRTCPeerConnection(undefined); threw exception TypeError: Type error.

I think it may be confusing to a developer that passing null or undefined results in an exception with the generic message &apos;Type error&apos;, but passing an empty string yields the much more informative message &apos;RTCPeerConnection argument must be a valid Dictionary&apos;. Why the difference?

&gt; LayoutTests/fast/mediastream/RTCPeerConnection-expected.txt:10
&gt; +PASS new webkitRTCPeerConnection({}); threw exception TypeError: Type error.

Ditto.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:84
&gt; +

Nit: I am not sure this blank line aids readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203842</commentid>
    <comment_count>3</comment_count>
      <attachid>281665</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 12:38:50 -0700</bug_when>
    <thetext>Created attachment 281665
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203843</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 12:44:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 281643 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281643&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/mediastream/RTCPeerConnection-expected.txt:7
&gt; &gt; +PASS new webkitRTCPeerConnection(null); threw exception TypeError: Type error.
&gt; &gt; +PASS new webkitRTCPeerConnection(undefined); threw exception TypeError: Type error.
&gt; 
&gt; I think it may be confusing to a developer that passing null or undefined
&gt; results in an exception with the generic message &apos;Type error&apos;, but passing
&gt; an empty string yields the much more informative message &apos;RTCPeerConnection
&gt; argument must be a valid Dictionary&apos;. Why the difference?

Let&apos;s not introduce such a behavior. I modified the JS constructor slightly to behave exactly like the old custom constructor; hence no changes to the test any more. The current behavior is not really spec compliant, but there&apos;s a bug to address that [1] (also noted in change log).

[1] http://webkit.org/b/158936

&gt; &gt; LayoutTests/fast/mediastream/RTCPeerConnection-expected.txt:10
&gt; &gt; +PASS new webkitRTCPeerConnection({}); threw exception TypeError: Type error.
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:84
&gt; &gt; +
&gt; 
&gt; Nit: I am not sure this blank line aids readability.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203846</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 12:49:50 -0700</bug_when>
    <thetext>This change depends on [1] which the build bot don&apos;t seem to have picked up yet.

https://bugs.webkit.org/show_bug.cgi?id=158834</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203910</commentid>
    <comment_count>6</comment_count>
      <attachid>281665</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-20 14:47:32 -0700</bug_when>
    <thetext>Comment on attachment 281665
Updated patch

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

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:83
&gt; +    Document&amp; document = downcast&lt;Document&gt;(*scriptExecutionContext());

It might be better to use CallWith=Document in the IDL to pass Document as parameter to the IDL

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:66
&gt; +    void initializeWith(const Dictionary&amp; rtcConfiguration, ExceptionCode&amp;);

Is &quot;rtcConfiguration&quot; needed?

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.js:44
&gt; +        this.@initializeWith(configuration);

I am not quite sure but can we find a better handling of errors than catching-and-rethrowing?
Would it be more readable to make initializeWith return a status code instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204052</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 22:29:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 281665 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281665&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:83
&gt; &gt; +    Document&amp; document = downcast&lt;Document&gt;(*scriptExecutionContext());
&gt; 
&gt; It might be better to use CallWith=Document in the IDL to pass Document as
&gt; parameter to the IDL

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:66
&gt; &gt; +    void initializeWith(const Dictionary&amp; rtcConfiguration, ExceptionCode&amp;);
&gt; 
&gt; Is &quot;rtcConfiguration&quot; needed?

It contains all the settings passed to the constructor.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.js:44
&gt; &gt; +        this.@initializeWith(configuration);
&gt; 
&gt; I am not quite sure but can we find a better handling of errors than
&gt; catching-and-rethrowing?
&gt; Would it be more readable to make initializeWith return a status code
&gt; instead?

I agree that catching and re-throwing is not ideal and that we should aim for something nicer. My plan is to revamp the RTCPeerConnection constructor, and probably the related setConfiguration() method, entirely in [1] to make them spec compliant. We probably want to define the RTCConfiguration dictionary (argument to constructor and setConfiguration()) properly in IDL or do something in the JS built-ins to get nice error messages. So further tweaks to this code will most likely be throw away soon. Is it OK going forward with that plan and commit this to unlock the blocked bugs?

[1] http://webkit.org/b/158936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204053</commentid>
    <comment_count>8</comment_count>
      <attachid>281714</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 22:38:29 -0700</bug_when>
    <thetext>Created attachment 281714
Updated patch (for landing)

Waiting for OK from Youenn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204054</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-20 22:40:31 -0700</bug_when>
    <thetext>Attachment 281714 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/RTCPeerConnection.h:66:  The parameter name &quot;document&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 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>1204056</commentid>
    <comment_count>10</comment_count>
      <attachid>281716</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 22:50:06 -0700</bug_when>
    <thetext>Created attachment 281716
Updated patch (for landing)

Fixed style. Waiting for OK from Youenn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204057</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-20 22:56:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 281665 [details]
&gt; Updated patch
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:66
&gt; &gt; +    void initializeWith(const Dictionary&amp; rtcConfiguration, ExceptionCode&amp;);
&gt; 
&gt; Is &quot;rtcConfiguration&quot; needed?

Looking at this again I think I get what you mean. :) Fixed in last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204288</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-21 14:41:01 -0700</bug_when>
    <thetext>Sounds ok to me.
I would maybe add a FIXME for the rethrowing just in case, but this is not mandatory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204428</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-21 22:40:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Sounds ok to me.
&gt; I would maybe add a FIXME for the rethrowing just in case, but this is not
&gt; mandatory.

Thanks. I can add it since I need to update the patch anyhow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204438</commentid>
    <comment_count>14</comment_count>
      <attachid>281819</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-21 22:57:47 -0700</bug_when>
    <thetext>Created attachment 281819
Updated patch (for landing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204584</commentid>
    <comment_count>15</comment_count>
      <attachid>281819</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 11:12:57 -0700</bug_when>
    <thetext>Comment on attachment 281819
Updated patch (for landing)

Clearing flags on attachment: 281819

Committed r202337: &lt;http://trac.webkit.org/changeset/202337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204585</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 11:13:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281643</attachid>
            <date>2016-06-20 04:54:30 -0700</date>
            <delta_ts>2016-06-20 12:38:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>pc-js-built-in-constructor_0.patch</filename>
            <type>text/plain</type>
            <size>23454</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0OTFmMGU2Li4zOTA3NjM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYt
MjAgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogUmVwbGFjZSBSVENQZWVyQ29ubmVjdGlvbiBjdXN0b20gY29uc3RydWN0b3Ig
d2l0aCBhIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0
b3IgdGVzdCByZXN1bHRzLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFJlbW92ZSBzb21lIHNwZWNpZmljIFR5cGVF
cnJvciBtZXNzYWdlcyBhZGRlZCBieSB0aGUgY3VzdG9tIGNvbnN0cnVjdG9yLgorCiAyMDE2LTA2
LTE3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICA6
aW5kZXRlcm1pbmF0ZSBwc2V1ZG8tY2xhc3Mgc2hvdWxkIG1hdGNoIHJhZGlvcyB3aG9zZSBncm91
cCBoYXMgbm8gY2hlY2tlZCByYWRpbwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBjNjI1ODM4
Li5jY2M4ZjAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMywxNCArMywxNCBAQCBUZXN0
cyB0aGUgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IuCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIAotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFJUQ1BlZXJDb25uZWN0aW9uIGFyZ3VtZW50IG11c3QgYmUg
YSB2YWxpZCBEaWN0aW9uYXJ5LgotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5k
ZWZpbmVkKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUlRDUGVlckNvbm5lY3Rpb24gYXJn
dW1lbnQgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnkuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHVuZGVmaW5lZCk7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4K
IFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIERpY3Rp
b25hcnkuCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7fSk7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEludmFsaWQgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXJn
dW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W119
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRXJyb3IgY3JlYXRpbmcgUlRDUGVlckNvbm5l
Y3Rpb24uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3Vy
bDonc3R1bjpmb28uY29tJ31dfSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEVycm9yIGNy
ZWF0aW5nIFJUQ1BlZXJDb25uZWN0aW9uLgotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24oe2ljZVNlcnZlcnM6W3t1cmxzOidodHRwOmZvby5jb20nfV19KTsgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogRXJyb3IgY3JlYXRpbmcgUlRDUGVlckNvbm5lY3Rpb24uCitQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7fSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpb
XX0pOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmw6J3N0dW46Zm9vLmNvbSd9XX0p
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmxzOidodHRwOmZvby5jb20nfV19KTsg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W3t1cmxzOlsnc3R1bjpmb28uY29tJywgJ3R1cm46Zm9vLmNvbSddfV19KTsg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlv
bih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9vLmNvbSd9LCB7dXJsczpbJ3N0dW46Zm9vLmNv
bScsICd0dXJuOmJhci5jb20nXX1dfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtNDMs
MTEgKzQzLDExIEBAIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJz
Olt7dXJsczondHVybjpmb28uY29tJywgY3JlZGVudGlhbDonCiBQQVNTIG5ldyB3ZWJraXRSVENQ
ZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9vLmNvbScsIHVzZXJuYW1l
Oid1c2VyJ31dLCBpY2VUcmFuc3BvcnRzOidhbGwnLCByZXF1ZXN0SWRlbnRpdHk6J2lmY29uZmln
dXJlZCd9KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3R1cm46Zm9vLmNvbScsIHVzZXJuYW1lOid1
c2VyJywgY3JlZGVudGlhbDoneCd9XSwgaWNlVHJhbnNwb3J0czonYWxsJywgcmVxdWVzdElkZW50
aXR5OidpZmNvbmZpZ3VyZWQnfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcg
d2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmxzOid0dXJuOmZvby5jb20n
LCB1c2VybmFtZTondXNlcicsIGNyZWRlbnRpYWw6J3gnfSx7dXJsczonc3R1bjpiYXIuY29tJywg
dXNlcm5hbWU6J3VzZXIyJywgY3JlZGVudGlhbDoneCd9XSwgaWNlVHJhbnNwb3J0czonYWxsJywg
cmVxdWVzdElkZW50aXR5OidpZmNvbmZpZ3VyZWQnfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119KTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBSVENQZWVyQ29ubmVjdGlvbiBjb25zdHJ1
Y3RvciBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczp0cnVlfSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgUlRDUGVlckNv
bm5lY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEsIDIsIDNdfSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEludmFsaWQgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzLgotUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0pOyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBFcnJvciBjcmVhdGluZyBSVENQZWVyQ29ubmVjdGlvbi4KLVBB
U1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczonZm9vJ31d
fSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEVycm9yIGNyZWF0aW5nIFJUQ1BlZXJDb25u
ZWN0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IHdlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRydWV9KTsgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtp
Y2VTZXJ2ZXJzOlsxLCAyLCAzXX0pOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0p
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmxzOidmb28nfV19KTsgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZDJiY2Y4Li41
Njk2NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTIwMSw3ICsxMjAxLDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcAotICAgIGJp
bmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0NmQ2ZWIuLjhiYTkzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wNi0yMCAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBl
cmljc3Nvbi5jb20+CisKKyAgICAgICAgV2ViUlRDOiBSZXBsYWNlIFJUQ1BlZXJDb25uZWN0aW9u
IGN1c3RvbSBjb25zdHJ1Y3RvciB3aXRoIGEgSlMgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODgzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhIEpTIGJ1aWx0
LWluIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgYSBjdXN0b20gY29uc3RydWN0b3IuIFRoaXMgbWFr
ZXMgaXQgZWFzaWVyIHRvCisgICAgICAgIGluaXRpYWxpemUgcHJpdmF0ZSBmaWVsZHMgZm9yIGZ1
bmN0aW9ucyBpbXBsZW1lbnRlZCBhcyBKUyBidWlsdC1pbnMuIFRoZSBjb25zdHJ1Y3RvcgorICAg
ICAgICBiZWhhdmlvciBpcyBpbiBuZWVkIG9mIHVwZGF0aW5nLCBidXQgdGhhdCBpcyBsZWZ0IHRv
IGEgZm9sbG93LXVwIGNoYW5nZSBbMV0uCisKKyAgICAgICAgWzFdIGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTU4OTM2CisKKyAgICAgICAgVGVzdDogVXBkYXRlZCBleHBlY3RlZCByZXN1bHRzIGZvciBS
VENQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciB0ZXN0LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSWNlU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0NvbmZpZ3VyYXRpb246OmluaXRpYWxpemUpOgorICAgICAgICBUaGUgY3VzdG9tIGNvbnN0
cnVjdG9yIGNhdWdodCBhIFRZUEVfTUlTTUFUQ0hfRVJSIGFuZCAncmUtdGhyZXcnIGEgVHlwZUVy
cm9yLiBUaGlzIGNoYW5nZQorICAgICAgICB1cGRhdGVzIHRoZSBSVENDb25maWd1cmF0aW9uIHBh
cnNpbmcgcm91dGluZXMgdG8gdGhyb3cgYSBUeXBlRXJyb3IgZGlyZWN0bHkuCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0aCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uanM6CisgICAgICAgIEFkZCBKUyBidWlsdC1pbiBjb25zdHJ1Y3Rv
ciBmdW5jdGlvbi4KKyAgICAgICAgKGluaXRpYWxpemVSVENQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbik6IERlbGV0ZWQuCisKIDIwMTYt
MDYtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0
aW1lIGxpdGVyYWxzIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGI5ZmE0OGYuLmQ1NDM5
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb25maWd1cmF0aW9uLmNwcApAQCAtNjgsMjAgKzY4LDIwIEBAIHN0YXRpYyBSZWZQdHI8UlRD
SWNlU2VydmVyPiBwYXJzZUljZVNlcnZlcihjb25zdCBEaWN0aW9uYXJ5JiBpY2VTZXJ2ZXIsIEV4
Y2VwdGlvCiAgICAgLy8gdGhlbiBjaGVja2luZyBmb3IgYSBjb21tYSBpbiB0aGUgc3RyaW5nIGFz
c3VyZXMgdGhhdCBhIHN0cmluZyB3YXMgYSBzZXF1ZW5jZSBhbmQgdGhlbiB3ZSBjb252ZXJ0CiAg
ICAgLy8gaXQgdG8gYSBzZXF1ZW5jZSBzYWZlbHkuCiAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIGVjID0gVHlw
ZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAodXJsU3Ry
aW5nLmZpbmQoJywnKSAhPSBub3RGb3VuZCAmJiBpY2VTZXJ2ZXIuZ2V0KCJ1cmxzIiwgdXJsc0xp
c3QpICYmIHVybHNMaXN0LnNpemUoKSkgewogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHVybHNM
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gdXJsc0xpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICAg
ICAgaWYgKCF2YWxpZGF0ZUljZVNlcnZlclVSTCgqaXRlcikpIHsKLSAgICAgICAgICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgICAgICAgICBlYyA9IFR5cGVFcnJvcjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghdmFsaWRhdGVJY2VTZXJ2ZXJVUkwodXJsU3Ry
aW5nKSkgewotICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgICAg
ICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAKQEAgLTExMywxNCArMTEzLDE0IEBAIHZvaWQgUlRDQ29uZmlndXJhdGlvbjo6aW5pdGlhbGl6
ZShjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlCiAgICAgQXJy
YXlWYWx1ZSBpY2VTZXJ2ZXJzOwogICAgIGJvb2wgb2sgPSBjb25maWd1cmF0aW9uLmdldCgiaWNl
U2VydmVycyIsIGljZVNlcnZlcnMpOwogICAgIGlmICghb2sgfHwgaWNlU2VydmVycy5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc2l6ZV90IG51
bWJlck9mU2VydmVyczsKICAgICBvayA9IGljZVNlcnZlcnMubGVuZ3RoKG51bWJlck9mU2VydmVy
cyk7CiAgICAgaWYgKCFvayB8fCAhbnVtYmVyT2ZTZXJ2ZXJzKSB7Ci0gICAgICAgIGVjID0gIW9r
ID8gVFlQRV9NSVNNQVRDSF9FUlIgOiBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIGVjID0g
VHlwZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBSVENDb25maWd1cmF0aW9uOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZp
Z3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUKICAgICAgICAgRGljdGlvbmFyeSBpY2VTZXJ2ZXJEaWN0
OwogICAgICAgICBvayA9IGljZVNlcnZlcnMuZ2V0KGksIGljZVNlcnZlckRpY3QpOwogICAgICAg
ICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCAzYzUyOTcxLi43YThlMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtNTksNDEgKzU5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQ
ZWVyQ29ubmVjdGlvbjsKIHVzaW5nIG5hbWVzcGFjZSBQZWVyQ29ubmVjdGlvblN0YXRlczsKIAot
UmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3Vy
YXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBSVENDb25maWd1cmF0
aW9uOjpjcmVhdGUocnRjQ29uZmlndXJhdGlvbiwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+IHBlZXJDb25u
ZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQsIFdURk1vdmUo
Y29uZmlndXJhdGlvbiksIGVjKSk7CisgICAgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29u
bmVjdGlvbiA9IGFkb3B0UmVmKCpuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29udGV4dCkpOwogICAg
IHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uOwogfQogCi1SVENQ
ZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCitSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4
dCkKLSAgICAsIG1fc2lnbmFsaW5nU3RhdGUoU2lnbmFsaW5nU3RhdGU6OlN0YWJsZSkKLSAgICAs
IG1faWNlR2F0aGVyaW5nU3RhdGUoSWNlR2F0aGVyaW5nU3RhdGU6Ok5ldykKLSAgICAsIG1faWNl
Q29ubmVjdGlvblN0YXRlKEljZUNvbm5lY3Rpb25TdGF0ZTo6TmV3KQotICAgICwgbV9jb25maWd1
cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCisgICAgLCBtX2JhY2tlbmQoUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotCi0gICAgaWYgKCFkb2N1bWVudC5mcmFtZSgp
KSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBtX2JhY2tlbmQgPSBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSh0aGlz
KTsKLSAgICBpZiAoIW1fYmFja2VuZCkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9iYWNrZW5kLT5zZXRDb25maWd1cmF0
aW9uKCptX2NvbmZpZ3VyYXRpb24pOwogfQogCiBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJD
b25uZWN0aW9uKCkKQEAgLTEwMSw2ICs3OCwyMyBAQCBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1Bl
ZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7CiB9CiAKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246
OmluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIGlmICghZG9jdW1lbnQuZnJh
bWUoKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFtX2JhY2tlbmQpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldENvbmZpZ3VyYXRpb24o
cnRjQ29uZmlndXJhdGlvbiwgZWMpOworfQorCiBSZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0
IFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmgKaW5kZXggZjg1ZWM2NC4uOWEyYmViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjAsOSArNjAs
MTEgQEAgY2xhc3MgUlRDU3RhdHNDYWxsYmFjazsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBQZWVy
Q29ubmVjdGlvbkJhY2tlbmRDbGllbnQsIHB1YmxpYyBSVENSdHBTZW5kZXJDbGllbnQsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwogCisg
ICAgdm9pZCBpbml0aWFsaXplV2l0aChjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9u
LCBFeGNlcHRpb25Db2RlJik7CisKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRl
cj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+Z2V0U2Vu
ZGVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+JiBnZXRS
ZWNlaXZlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0LT5nZXRSZWNlaXZlcnMo
KTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgZ2V0VHJh
bnNjZWl2ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+bGlz
dCgpOyB9CkBAIC0xMTcsNyArMTE5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVyQ29ubmVj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CiAKICAgICBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IGNvbXBsZXRlQWRkVHJh
bnNjZWl2ZXIoUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiYmLCBjb25zdCBSdHBUcmFuc2NlaXZlcklu
aXQmKTsKIApAQCAtMTQ3LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDUnRwU2VuZGVy
Q2xpZW50CiAgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYmKSBvdmVycmlkZTsK
IAotICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBtX3NpZ25hbGluZ1N0
YXRlOwotICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdh
dGhlcmluZ1N0YXRlOwotICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3Rh
dGUgbV9pY2VDb25uZWN0aW9uU3RhdGU7CisgICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25h
bGluZ1N0YXRlIG1fc2lnbmFsaW5nU3RhdGUgeyBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFs
aW5nU3RhdGU6OlN0YWJsZSB9OworICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJp
bmdTdGF0ZSBtX2ljZUdhdGhlcmluZ1N0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdh
dGhlcmluZ1N0YXRlOjpOZXcgfTsKKyAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVj
dGlvblN0YXRlIG1faWNlQ29ubmVjdGlvblN0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6Oklj
ZUNvbm5lY3Rpb25TdGF0ZTo6TmV3IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNj
ZWl2ZXJTZXQ+IG1fdHJhbnNjZWl2ZXJTZXQgeyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2
ZXJTZXQ+KG5ldyBSdHBUcmFuc2NlaXZlclNldCgpKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4
IDkwODI4MWUuLjgwNWQzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCkBAIC0zNCwxMCArMzQsMTIgQEAK
ICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBDb25z
dHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgQ29uc3RydWN0b3JS
YWlzZXNFeGNlcHRpb24sCi0gICAgQ3VzdG9tQ29uc3RydWN0b3IoRGljdGlvbmFyeSBydGNDb25m
aWd1cmF0aW9uKSwKKyAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvciwKICAgICBJbnRlcmZhY2VOYW1l
PXdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLAogXSBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb24g
OiBFdmVudFRhcmdldCB7CisgICAgLy8gUHJpdmF0ZSBpbml0aWFsaXplcgorICAgIFtQcml2YXRl
LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgaW5pdGlhbGl6ZVdpdGgoRGljdGlvbmFyeSBwYXJhbWV0
ZXJzKTsKKwogICAgIC8vIFJUUCBNZWRpYSBBUEkgZXh0ZW5zaW9ucwogICAgIHNlcXVlbmNlPFJU
Q1J0cFNlbmRlcj4gZ2V0U2VuZGVycygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFJlY2VpdmVyPiBn
ZXRSZWNlaXZlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCmluZGV4IDliNzg4ZjYuLjc3NjMxNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5qcwpAQCAtMzAsNiArMzAsMjAgQEAKIAogLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShX
RUJfUlRDKQogCitmdW5jdGlvbiBpbml0aWFsaXplUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJh
dGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8
IDEpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIp
OworCisgICAgaWYgKCFAaXNEaWN0aW9uYXJ5KGNvbmZpZ3VyYXRpb24pKQorICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZh
bGlkIERpY3Rpb25hcnkiKTsKKworICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGNvbmZpZ3VyYXRp
b24pOworICAgIHJldHVybiB0aGlzOworfQorCiBmdW5jdGlvbiBjcmVhdGVPZmZlcigpCiB7CiAg
ICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOGM3ZGYuLjA0NTVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwNSw3ICszMDUs
NiBAQAogCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2
NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07CiAJCTA3
QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAw
RkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovOyB9OwogCQkwN0M1OUI2RTE3Rjc5NEY2
MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAv
KiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovOyB9OwotCQkwN0NBMTIwRTE4MkQ2N0Q4
MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NBMTIwRDE4MkQ2N0Q4MDBEMTIxOTcg
LyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTA3Q0U3N0Q1MTY3MTJB
NkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEyQTZBMDBDNTVB
NDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIxMTMwMDI1
NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAv
KiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKQEAgLTc3MjEsNyArNzcy
MCw2IEBACiAJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0
cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDOEFE
MTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNh
Y2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMjFEMDczRDYzMDA4
N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNFMUJCMEIx
MTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyog
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTU2LDcgKzIyNTU0LDYgQEAKIAkJCQlGREJEMURG
QjE2N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
RkQ4QUE2M0QxNjk1MTRBNzAwRDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJ
CQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAg
Ki8sCi0JCQkJMDdDQTEyMEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwICovLAogCQkJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRz
UmVzcG9uc2VDdXN0b20uY3BwICovLAogCQkJCTUxRENFODAxMENBQzlGMUMwMDQ4ODM1OCAvKiBK
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwICovLAogCQkJCTFBRDIzMTZEMENEMjY5RTcw
MEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMwNjQxLDcgKzMw
NjM4LDYgQEAKIAkJCQkwNzk2OURCNzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJY2VDYW5kaWRh
dGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzM3OTRFQjE5RUUzNDFFMDBFNUEwNDUg
LyogSlNSVENJY2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQjkxN0QxNDE1
MTAwN0ZGODQyIC8qIEpTUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MDdDQTEyMEUxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzExQkNGMEQ3NTAwMDFFMkJDIC8qIEpTUlRDUnRw
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzMxQkNGMEQ3NTAwMDFFMkJD
IC8qIEpTUlRDUnRwU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REJCMTdEMTQx
NTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVj
dGlvbkN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZDhkYzQuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShXRUJfUlRDKQotCi0jaW5jbHVkZSAiSlNSVENQZWVyQ29ubmVjdGlvbi5oIgotCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotCi11c2luZyBu
YW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgLy8gU3BlYyBzYXlzIHRoYXQgd2UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBhcnVt
ZW50LCB0aGUgUlRDQ29uZmlndXJhdGlvbi4KLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
aWN0aW9uYXJ5IHJ0Y0NvbmZpZ3VyYXRpb24oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIGlmICghcnRjQ29uZmlndXJhdGlvbi5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnki
KSk7Ci0KLSAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxE
T01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCAiUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1
bmF2YWlsYWJsZSIpKTsKLQotICAgIGF1dG8gcGVlckNvbm5lY3Rpb24gPSBSVENQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBydGNDb25maWd1cmF0aW9uLCBl
Yyk7Ci0gICAgaWYgKGVjID09IFRZUEVfTUlTTUFUQ0hfRVJSKSB7Ci0gICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9y
IGFyZ3VtZW50cyIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkVycm9yIGNyZWF0aW5nIFJUQ1BlZXJDb25uZWN0aW9uIikpOwot
ICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBSVENQZWVyQ29ubmVjdGlvbiwgcGVlckNvbm5l
Y3Rpb24ucmVsZWFzZU5vbk51bGwoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281665</attachid>
            <date>2016-06-20 12:38:50 -0700</date>
            <delta_ts>2016-06-20 22:38:29 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>pc-js-built-in-constructor_1.patch</filename>
            <type>text/plain</type>
            <size>16362</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQyYmNmOC4uNTY5NjVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDEsNyArMTIwMSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDZkNmViLi43MjZkZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYtMDYtMjAg
IEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAg
IFdlYlJUQzogUmVwbGFjZSBSVENQZWVyQ29ubmVjdGlvbiBjdXN0b20gY29uc3RydWN0b3Igd2l0
aCBhIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgYSBKUyBidWlsdC1pbiBjb25zdHJ1Y3RvciBpbnN0ZWFk
IG9mIGEgY3VzdG9tIGNvbnN0cnVjdG9yLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0bworICAgICAg
ICBpbml0aWFsaXplIHByaXZhdGUgZmllbGRzIGZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgYXMg
SlMgYnVpbHQtaW5zLiBUaGUgY29uc3RydWN0b3IKKyAgICAgICAgYmVoYXZpb3IgaXMgaW4gbmVl
ZCBvZiB1cGRhdGluZywgYnV0IHRoYXQgaXMgbGVmdCB0byBhIGZvbGxvdy11cCBjaGFuZ2UgWzFd
LgorCisgICAgICAgIFsxXSBodHRwOi8vd2Via2l0Lm9yZy9iLzE1ODkzNgorICAgICAgICBObyBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKGluaXRpYWxpemVSVENQZWVyQ29ubmVj
dGlvbik6CisgICAgICAgIEFkZCBKUyBidWlsdC1pbiBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RKU1JUQ1BlZXJDb25uZWN0aW9uKTogRGVsZXRlZC4KKwogMjAx
Ni0wNi0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IHRpbWUgbGl0ZXJhbHMgaW4gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCAzYzUyOTcxLi43
OTQ5MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNTksNDEgKzU5LDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQZWVyQ29ubmVjdGlvbjsKIHVzaW5nIG5hbWVzcGFj
ZSBQZWVyQ29ubmVjdGlvblN0YXRlczsKIAotUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVm
PFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBSVENDb25maWd1cmF0aW9uOjpjcmVhdGUocnRjQ29uZmlndXJhdGlvbiwg
ZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZWZQdHI8
UlRDUGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJD
b25uZWN0aW9uKGNvbnRleHQsIFdURk1vdmUoY29uZmlndXJhdGlvbiksIGVjKSk7CisgICAgUmVm
PFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKCpuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oY29udGV4dCkpOwogICAgIHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJu
IHBlZXJDb25uZWN0aW9uOwogfQogCi1SVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitSVENQZWVyQ29ubmVjdGlv
bjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKLSAgICAsIG1fc2lnbmFsaW5nU3RhdGUoU2ln
bmFsaW5nU3RhdGU6OlN0YWJsZSkKLSAgICAsIG1faWNlR2F0aGVyaW5nU3RhdGUoSWNlR2F0aGVy
aW5nU3RhdGU6Ok5ldykKLSAgICAsIG1faWNlQ29ubmVjdGlvblN0YXRlKEljZUNvbm5lY3Rpb25T
dGF0ZTo6TmV3KQotICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikp
CisgICAgLCBtX2JhY2tlbmQoUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhpcykpCiB7
Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwot
Ci0gICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2JhY2tlbmQgPSBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSh0aGlzKTsKLSAgICBpZiAoIW1fYmFja2VuZCkgewotICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgbV9iYWNrZW5kLT5zZXRDb25maWd1cmF0aW9uKCptX2NvbmZpZ3VyYXRpb24pOwogfQogCiBS
VENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKQEAgLTEwMSw2ICs3OCwyMiBA
QCBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKCkKICAgICBzdG9wKCk7CiB9
CiAKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25h
cnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9iYWNrZW5kKSB7
CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzZXRDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKK30KKwogUmVm
UHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW0qPiYgc3RyZWFtcywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFs
aW5nU3RhdGU6OkNsb3NlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGY4NWVjNjQuLjlhMmJlYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKQEAgLTYwLDkgKzYwLDExIEBAIGNsYXNzIFJUQ1N0YXRzQ2FsbGJhY2s7CiAK
IGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVl
ckNvbm5lY3Rpb24+LCBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50LCBwdWJsaWMg
UlRDUnRwU2VuZGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSVENQZWVy
Q29ubmVjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEaWN0aW9u
YXJ5JiBydGNDb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZjxS
VENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB+
UlRDUGVlckNvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGgoY29uc3QgRGlj
dGlvbmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxSVENSdHBTZW5kZXI+PiYgZ2V0U2VuZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNjZWl2ZXJTZXQtPmdldFNlbmRlcnMoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8UlRDUnRwUmVjZWl2ZXI+PiYgZ2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2NlaXZlclNldC0+Z2V0UmVjZWl2ZXJzKCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJU
Q1J0cFRyYW5zY2VpdmVyPj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdHJhbnNjZWl2ZXJTZXQtPmxpc3QoKTsgfQpAQCAtMTE3LDcgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CiAKIHBy
aXZhdGU6Ci0gICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxSVENDb25maWd1cmF0aW9uPiYmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUlRDUGVlckNv
bm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgUmVmUHRyPFJUQ1J0cFRy
YW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4m
JiwgY29uc3QgUnRwVHJhbnNjZWl2ZXJJbml0Jik7CiAKQEAgLTE0Nyw5ICsxNDksOSBAQCBwcml2
YXRlOgogICAgIC8vIFJUQ1J0cFNlbmRlckNsaWVudAogICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBQZWVyQ29ubmVjdGlvbjo6
Vm9pZFByb21pc2UmJikgb3ZlcnJpZGU7CiAKLSAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2ln
bmFsaW5nU3RhdGUgbV9zaWduYWxpbmdTdGF0ZTsKLSAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6
SWNlR2F0aGVyaW5nU3RhdGUgbV9pY2VHYXRoZXJpbmdTdGF0ZTsKLSAgICBQZWVyQ29ubmVjdGlv
blN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlIG1faWNlQ29ubmVjdGlvblN0YXRlOworICAgIFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBtX3NpZ25hbGluZ1N0YXRlIHsgUGVl
ckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlOjpTdGFibGUgfTsKKyAgICBQZWVyQ29u
bmVjdGlvblN0YXRlczo6SWNlR2F0aGVyaW5nU3RhdGUgbV9pY2VHYXRoZXJpbmdTdGF0ZSB7IFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZTo6TmV3IH07CisgICAgUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSBtX2ljZUNvbm5lY3Rpb25TdGF0ZSB7
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldyB9OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PiBtX3RyYW5zY2VpdmVyU2V0IHsgc3Rk
Ojp1bmlxdWVfcHRyPFJ0cFRyYW5zY2VpdmVyU2V0PihuZXcgUnRwVHJhbnNjZWl2ZXJTZXQoKSkg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA5MDgyODFlLi44MDVkMzU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmlkbApAQCAtMzQsMTAgKzM0LDEyIEBACiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRp
dGlvbmFsPVdFQl9SVEMsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LAotICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAotICAgIEN1c3RvbUNvbnN0
cnVjdG9yKERpY3Rpb25hcnkgcnRjQ29uZmlndXJhdGlvbiksCisgICAgSlNCdWlsdGluQ29uc3Ry
dWN0b3IsCiAgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRSVENQZWVyQ29ubmVjdGlvbiwKIF0gaW50
ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uIDogRXZlbnRUYXJnZXQgeworICAgIC8vIFByaXZhdGUg
aW5pdGlhbGl6ZXIKKyAgICBbUHJpdmF0ZSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGluaXRpYWxp
emVXaXRoKERpY3Rpb25hcnkgcGFyYW1ldGVycyk7CisKICAgICAvLyBSVFAgTWVkaWEgQVBJIGV4
dGVuc2lvbnMKICAgICBzZXF1ZW5jZTxSVENSdHBTZW5kZXI+IGdldFNlbmRlcnMoKTsKICAgICBz
ZXF1ZW5jZTxSVENSdHBSZWNlaXZlcj4gZ2V0UmVjZWl2ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcwppbmRl
eCA5Yjc4OGY2Li44ODBkNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMKQEAgLTMwLDYgKzMwLDI2IEBACiAK
IC8vIEBjb25kaXRpb25hbD1FTkFCTEUoV0VCX1JUQykKIAorZnVuY3Rpb24gaW5pdGlhbGl6ZVJU
Q1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKworICAgIGlmICghQGlzT2JqZWN0KGNvbmZpZ3Vy
YXRpb24pKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24g
YXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnkiKTsKKworICAgIHRyeSB7CisgICAg
ICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGNvbmZpZ3VyYXRpb24pOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgY29uc3QgbWVzc2FnZSA9IGUubmFtZSA9PT0gIlR5cGVNaXNtYXRjaEVycm9y
IiA/ICJJbnZhbGlkIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyIKKyAg
ICAgICAgICAgIDogIkVycm9yIGNyZWF0aW5nIFJUQ1BlZXJDb25uZWN0aW9uIjsKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IobWVzc2FnZSk7CisgICAgfQorICAgIHJldHVybiB0aGlzOwor
fQorCiBmdW5jdGlvbiBjcmVhdGVPZmZlcigpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJk
OGM3ZGYuLjA0NTVlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTMwNSw3ICszMDUsNiBAQAogCQkwN0M1OUI2ODE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVk
aWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87IH07CiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAv
KiBNZWRpYVNvdXJjZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0
aW5ncy5oICovOyB9OwogCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0
b20uY3BwICovOyB9OwotCQkwN0NBMTIwRTE4MkQ2N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29u
bmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwN0NBMTIwRDE4MkQ2N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1
c3RvbS5jcHAgKi87IH07CiAJCTA3Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
LmggKi87IH07CiAJCTA3RDYzNzQxMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSAqLzsgfTsKQEAgLTc3MjEsNyArNzcyMCw2IEBACiAJCTA3QzU5QjZEMTdGNzk0
RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFW
Rm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0M4QUQxMjFEMDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlN
RVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRp
b25NSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Q0ExMjBE
MTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVB
NDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3RDYzNzNFMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIyNTU2LDcgKzIyNTU0LDYgQEAKIAkJCQlGREJEMURGQjE2N0ZFMjdEMDA1MUExMUUgLyogSlNP
c2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4QUE2M0QxNjk1MTRBNzAwRDJFQTY4
IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJQTg1RjIyMDgxNDMwMzc3RDAwN0ND
ODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCi0JCQkJMDdDQTEyMEQxODJENjdE
ODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTA3REM1
RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovLAog
CQkJCTUxRENFODAxMENBQzlGMUMwMDQ4ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwICovLAogCQkJCTFBRDIzMTZEMENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0
aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMwNjQxLDcgKzMwNjM4LDYgQEAKIAkJCQkwNzk2OURCNzE3
RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJY2VDYW5kaWRhdGVFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzM3OTRFQjE5RUUzNDFFMDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQjkxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDUGVlckNv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdDQTEyMEUxODJENjdEODAwRDEyMTk3
IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUy
QzQzNzExQkNGMEQ3NTAwMDFFMkJDIC8qIEpTUlRDUnRwUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUUyQzQzNzMxQkNGMEQ3NTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3OTY5REJCMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Np
b25EZXNjcmlwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZDhkYzQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVkZSAi
SlNSVENQZWVyQ29ubmVjdGlvbi5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNS
VENQZWVyQ29ubmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgLy8gU3BlYyBzYXlzIHRo
YXQgd2UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBhcnVtZW50LCB0aGUgUlRDQ29uZmlndXJhdGlv
bi4KLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBEaWN0aW9uYXJ5IHJ0Y0NvbmZpZ3VyYXRp
b24oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAg
IGlmICghcnRjQ29uZmlndXJhdGlvbi5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gYXJn
dW1lbnQgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnkiKSk7Ci0KLSAgICBET01Db25zdHJ1Y3Rv
ck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4
ZWMtPmNhbGxlZSgpKTsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gY29u
c3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKLQotICAgIGF1
dG8gcGVlckNvbm5lY3Rpb24gPSBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBydGNDb25maWd1cmF0aW9uLCBlYyk7Ci0gICAgaWYgKGVjID09IFRZUEVf
TUlTTUFUQ0hfRVJSKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZh
bGlkIFJUQ1BlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyIpKTsKLSAgICB9Ci0K
LSAgICBpZiAoZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkVycm9y
IGNyZWF0aW5nIFJUQ1BlZXJDb25uZWN0aW9uIikpOwotICAgIH0KLQotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVj
dCgpLCBSVENQZWVyQ29ubmVjdGlvbiwgcGVlckNvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JU
QykK
</data>
<flag name="review"
          id="305491"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281714</attachid>
            <date>2016-06-20 22:38:29 -0700</date>
            <delta_ts>2016-06-20 22:43:39 -0700</delta_ts>
            <desc>Updated patch (for landing)</desc>
            <filename>pc-js-built-in-constructor_2.patch</filename>
            <type>text/plain</type>
            <size>16364</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQyYmNmOC4uNTY5NjVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDEsNyArMTIwMSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDZkNmViLi4xMDI4YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYtMDYtMjAg
IEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAg
IFdlYlJUQzogUmVwbGFjZSBSVENQZWVyQ29ubmVjdGlvbiBjdXN0b20gY29uc3RydWN0b3Igd2l0
aCBhIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24gYW5kIFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXNlIGEgSlMgYnVpbHQtaW4gY29u
c3RydWN0b3IgaW5zdGVhZCBvZiBhIGN1c3RvbSBjb25zdHJ1Y3Rvci4gVGhpcyBtYWtlcyBpdCBl
YXNpZXIgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBwcml2YXRlIGZpZWxkcyBmb3IgZnVuY3Rpb25z
IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucy4gVGhlIGNvbnN0cnVjdG9yCisgICAgICAgIGJl
aGF2aW9yIGlzIGluIG5lZWQgb2YgdXBkYXRpbmcsIGJ1dCB0aGF0IGlzIGxlZnQgdG8gYSBmb2xs
b3ctdXAgY2hhbmdlIFsxXS4KKworICAgICAgICBbMV0gaHR0cDovL3dlYmtpdC5vcmcvYi8xNTg5
MzYKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0aCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanM6CisgICAgICAgIChpbml0aWFs
aXplUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICBBZGQgSlMgYnVpbHQtaW4gY29uc3RydWN0
b3IgZnVuY3Rpb24uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbik6
IERlbGV0ZWQuCisKIDIwMTYtMDYtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSB0aW1lIGxpdGVyYWxzIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggM2M1Mjk3MS4uNjI3MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTU5LDQxICs1OSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb247
CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb25TdGF0ZXM7CiAKLVJlZlB0cjxSVENQZWVy
Q29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxSVEND
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gUlRDQ29uZmlndXJhdGlvbjo6Y3JlYXRlKHJ0
Y0NvbmZpZ3VyYXRpb24sIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0
UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
LCBlYykpOworICAgIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBhZG9w
dFJlZigqbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQpKTsKICAgICBwZWVyQ29ubmVjdGlv
bi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbjsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb246
OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0
cjxSVENDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX3Np
Z25hbGluZ1N0YXRlKFNpZ25hbGluZ1N0YXRlOjpTdGFibGUpCi0gICAgLCBtX2ljZUdhdGhlcmlu
Z1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpOZXcpCi0gICAgLCBtX2ljZUNvbm5lY3Rpb25TdGF0
ZShJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldykKLSAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKQorICAgICwgbV9iYWNrZW5kKFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlKHRoaXMpKQogewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KTsKLQotICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9i
YWNrZW5kID0gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFt
X2JhY2tlbmQpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+c2V0Q29uZmlndXJhdGlvbigqbV9jb25maWd1
cmF0aW9uKTsKIH0KIAogUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigpCkBA
IC0xMDEsNiArNzgsMjEgQEAgUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigp
CiAgICAgc3RvcCgpOwogfQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0
aChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgeworICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFtX2JhY2tlbmQpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldENvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJh
dGlvbiwgZWMpOworfQorCiBSZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6
YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxNZWRp
YVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWdu
YWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXgg
Zjg1ZWM2NC4uYTI5MGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjAsOSArNjAsMTEgQEAgY2xhc3Mg
UlRDU3RhdHNDYWxsYmFjazsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmRDbGllbnQsIHB1YmxpYyBSVENSdHBTZW5kZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdm9pZCBpbml0
aWFsaXplV2l0aChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZp
Z3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRD
UnRwU2VuZGVyPj4mIGdldFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0
LT5nZXRTZW5kZXJzKCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFJlY2VpdmVy
Pj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQtPmdldFJl
Y2VpdmVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+
JiBnZXRUcmFuc2NlaXZlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RyYW5zY2VpdmVy
U2V0LT5saXN0KCk7IH0KQEAgLTExNyw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVm
Q291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4mJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gY29tcGxl
dGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYsIGNvbnN0IFJ0cFRyYW5z
Y2VpdmVySW5pdCYpOwogCkBAIC0xNDcsOSArMTQ5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBSVENS
dHBTZW5kZXJDbGllbnQKICAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYpIG92
ZXJyaWRlOwogCi0gICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIG1fc2ln
bmFsaW5nU3RhdGU7Ci0gICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdhdGhlcmluZ1N0YXRl
IG1faWNlR2F0aGVyaW5nU3RhdGU7Ci0gICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5l
Y3Rpb25TdGF0ZSBtX2ljZUNvbm5lY3Rpb25TdGF0ZTsKKyAgICBQZWVyQ29ubmVjdGlvblN0YXRl
czo6U2lnbmFsaW5nU3RhdGUgbV9zaWduYWxpbmdTdGF0ZSB7IFBlZXJDb25uZWN0aW9uU3RhdGVz
OjpTaWduYWxpbmdTdGF0ZTo6U3RhYmxlIH07CisgICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6Oklj
ZUdhdGhlcmluZ1N0YXRlIG1faWNlR2F0aGVyaW5nU3RhdGUgeyBQZWVyQ29ubmVjdGlvblN0YXRl
czo6SWNlR2F0aGVyaW5nU3RhdGU6Ok5ldyB9OworICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJ
Y2VDb25uZWN0aW9uU3RhdGUgbV9pY2VDb25uZWN0aW9uU3RhdGUgeyBQZWVyQ29ubmVjdGlvblN0
YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlOjpOZXcgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
dHBUcmFuc2NlaXZlclNldD4gbV90cmFuc2NlaXZlclNldCB7IHN0ZDo6dW5pcXVlX3B0cjxSdHBU
cmFuc2NlaXZlclNldD4obmV3IFJ0cFRyYW5zY2VpdmVyU2V0KCkpIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwKaW5kZXggOTA4MjgxZS4uZTcwMTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTM0LDEwICsz
NCwxMiBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJfUlRDLAog
ICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKLSAgICBDb25z
dHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKLSAgICBDdXN0b21Db25zdHJ1Y3RvcihEaWN0aW9uYXJ5
IHJ0Y0NvbmZpZ3VyYXRpb24pLAorICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yLAogICAgIEludGVy
ZmFjZU5hbWU9d2Via2l0UlRDUGVlckNvbm5lY3Rpb24sCiBdIGludGVyZmFjZSBSVENQZWVyQ29u
bmVjdGlvbiA6IEV2ZW50VGFyZ2V0IHsKKyAgICAvLyBQcml2YXRlIGluaXRpYWxpemVyCisgICAg
W1ByaXZhdGUsIENhbGxXaXRoPURvY3VtZW50LCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgaW5pdGlh
bGl6ZVdpdGgoRGljdGlvbmFyeSBwYXJhbWV0ZXJzKTsKKwogICAgIC8vIFJUUCBNZWRpYSBBUEkg
ZXh0ZW5zaW9ucwogICAgIHNlcXVlbmNlPFJUQ1J0cFNlbmRlcj4gZ2V0U2VuZGVycygpOwogICAg
IHNlcXVlbmNlPFJUQ1J0cFJlY2VpdmVyPiBnZXRSZWNlaXZlcnMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCmlu
ZGV4IDliNzg4ZjYuLjg4MGQ0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcwpAQCAtMzAsNiArMzAsMjYgQEAK
IAogLy8gQGNvbmRpdGlvbmFsPUVOQUJMRShXRUJfUlRDKQogCitmdW5jdGlvbiBpbml0aWFsaXpl
UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworCisgICAgaWYgKCFAaXNPYmplY3QoY29uZmln
dXJhdGlvbikpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSVENQZWVyQ29ubmVjdGlv
biBhcmd1bWVudCBtdXN0IGJlIGEgdmFsaWQgRGljdGlvbmFyeSIpOworCisgICAgdHJ5IHsKKyAg
ICAgICAgdGhpcy5AaW5pdGlhbGl6ZVdpdGgoY29uZmlndXJhdGlvbik7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBjb25zdCBtZXNzYWdlID0gZS5uYW1lID09PSAiVHlwZU1pc21hdGNoRXJy
b3IiID8gIkludmFsaWQgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIgor
ICAgICAgICAgICAgOiAiRXJyb3IgY3JlYXRpbmcgUlRDUGVlckNvbm5lY3Rpb24iOworICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcihtZXNzYWdlKTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXM7
Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZU9mZmVyKCkKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YmQ4YzdkZi4uMDQ1NWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzA1LDcgKzMwNSw2IEBACiAJCTA3QzU5QjY4MTdGNzg0
QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBN
ZWRpYVNvdXJjZVNldHRpbmdzLmNwcCAqLzsgfTsKIAkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JC
IC8qIE1lZGlhU291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNl
dHRpbmdzLmggKi87IH07CiAJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3Ry
ZWFtVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1
c3RvbS5jcHAgKi87IH07Ci0JCTA3Q0ExMjBFMTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9u
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDdENjM3NDAxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0Q2MzczRTFCQjBCMTEzMDAyNTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMuaCAqLzsgfTsKIAkJMDdENjM3NDExQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdENjM3M0YxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLm1tICovOyB9OwpAQCAtNzcyMSw3ICs3NzIwLDYgQEAKIAkJMDdDNTlCNkQxN0Y3
OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMTFEMDczRDYzMDA4N0M1Q0UgLyog
QVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QzhBRDEyMUQwNzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25N
SU1FVHlwZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWRm91bmRh
dGlvbk1JTUVUeXBlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDQTEy
MEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSVENQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1
NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5IC8qIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3RDYzNzNGMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjI1NTYsNyArMjI1NTQsNiBAQAogCQkJCUZEQkQxREZCMTY3RkUyN0QwMDUxQTExRSAvKiBK
U09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhBQTYzRDE2OTUxNEE3MDBEMkVB
NjggLyogSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQlBODVGMjIwODE0MzAzNzdEMDA3
Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKLQkJCQkwN0NBMTIwRDE4MkQ2
N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJMDdE
QzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8s
CiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwICovLApAQCAtMzA2NDEsNyArMzA2MzgsNiBAQAogCQkJCTA3OTY5REI3
MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3Mzc5NEVCMTlFRTM0MUUwMEU1QTA0NSAvKiBKU1JUQ0ljZVNlcnZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURCOTE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVy
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwN0NBMTIwRTE4MkQ2N0Q4MDBEMTIx
OTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
RTJDNDM3MTFCQ0YwRDc1MDAwMUUyQkMgLyogSlNSVENSdHBSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1RTJDNDM3MzFCQ0YwRDc1MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQkIxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNkOGRjNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0KLSNpbmNsdWRl
ICJKU1JUQ1BlZXJDb25uZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1JUQ1BlZXJDb25uZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICAvLyBTcGVjIHNheXMg
dGhhdCB3ZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFydW1lbnQsIHRoZSBSVENDb25maWd1cmF0
aW9uLgotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsK
LQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERpY3Rpb25hcnkgcnRjQ29uZmlndXJh
dGlvbihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0g
ICAgaWYgKCFydGNDb25maWd1cmF0aW9uLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSVENQZWVyQ29ubmVjdGlvbiBh
cmd1bWVudCBtdXN0IGJlIGEgdmFsaWQgRGljdGlvbmFyeSIpKTsKLQotICAgIERPTUNvbnN0cnVj
dG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4o
ZXhlYy0+Y2FsbGVlKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJSVENQZWVyQ29ubmVjdGlvbiBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwotCi0gICAg
YXV0byBwZWVyQ29ubmVjdGlvbiA9IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGUoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKLSAgICBpZiAoZWMgPT0gVFlQ
RV9NSVNNQVRDSF9FUlIpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIklu
dmFsaWQgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIikpOwotICAgIH0K
LQotICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXJy
b3IgY3JlYXRpbmcgUlRDUGVlckNvbm5lY3Rpb24iKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoanNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCksIFJUQ1BlZXJDb25uZWN0aW9uLCBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlTm9uTnVsbCgp
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281716</attachid>
            <date>2016-06-20 22:50:06 -0700</date>
            <delta_ts>2016-06-21 22:57:47 -0700</delta_ts>
            <desc>Updated patch (for landing)</desc>
            <filename>pc-js-built-in-constructor_3.patch</filename>
            <type>text/plain</type>
            <size>16338</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQyYmNmOC4uNTY5NjVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDEsNyArMTIwMSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDZkNmViLi4xMDI4YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYtMDYtMjAg
IEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAg
IFdlYlJUQzogUmVwbGFjZSBSVENQZWVyQ29ubmVjdGlvbiBjdXN0b20gY29uc3RydWN0b3Igd2l0
aCBhIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24gYW5kIFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXNlIGEgSlMgYnVpbHQtaW4gY29u
c3RydWN0b3IgaW5zdGVhZCBvZiBhIGN1c3RvbSBjb25zdHJ1Y3Rvci4gVGhpcyBtYWtlcyBpdCBl
YXNpZXIgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBwcml2YXRlIGZpZWxkcyBmb3IgZnVuY3Rpb25z
IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucy4gVGhlIGNvbnN0cnVjdG9yCisgICAgICAgIGJl
aGF2aW9yIGlzIGluIG5lZWQgb2YgdXBkYXRpbmcsIGJ1dCB0aGF0IGlzIGxlZnQgdG8gYSBmb2xs
b3ctdXAgY2hhbmdlIFsxXS4KKworICAgICAgICBbMV0gaHR0cDovL3dlYmtpdC5vcmcvYi8xNTg5
MzYKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0aCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanM6CisgICAgICAgIChpbml0aWFs
aXplUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICBBZGQgSlMgYnVpbHQtaW4gY29uc3RydWN0
b3IgZnVuY3Rpb24uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbik6
IERlbGV0ZWQuCisKIDIwMTYtMDYtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSB0aW1lIGxpdGVyYWxzIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggM2M1Mjk3MS4uNjI3MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTU5LDQxICs1OSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb247
CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb25TdGF0ZXM7CiAKLVJlZlB0cjxSVENQZWVy
Q29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxSVEND
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gUlRDQ29uZmlndXJhdGlvbjo6Y3JlYXRlKHJ0
Y0NvbmZpZ3VyYXRpb24sIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0
UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
LCBlYykpOworICAgIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBhZG9w
dFJlZigqbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQpKTsKICAgICBwZWVyQ29ubmVjdGlv
bi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbjsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb246
OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0
cjxSVENDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX3Np
Z25hbGluZ1N0YXRlKFNpZ25hbGluZ1N0YXRlOjpTdGFibGUpCi0gICAgLCBtX2ljZUdhdGhlcmlu
Z1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpOZXcpCi0gICAgLCBtX2ljZUNvbm5lY3Rpb25TdGF0
ZShJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldykKLSAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKQorICAgICwgbV9iYWNrZW5kKFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlKHRoaXMpKQogewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KTsKLQotICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9i
YWNrZW5kID0gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFt
X2JhY2tlbmQpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+c2V0Q29uZmlndXJhdGlvbigqbV9jb25maWd1
cmF0aW9uKTsKIH0KIAogUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigpCkBA
IC0xMDEsNiArNzgsMjEgQEAgUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigp
CiAgICAgc3RvcCgpOwogfQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0
aChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgeworICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFtX2JhY2tlbmQpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldENvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJh
dGlvbiwgZWMpOworfQorCiBSZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6
YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxNZWRp
YVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWdu
YWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXgg
Zjg1ZWM2NC4uNTllODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjAsOSArNjAsMTEgQEAgY2xhc3Mg
UlRDU3RhdHNDYWxsYmFjazsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmRDbGllbnQsIHB1YmxpYyBSVENSdHBTZW5kZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdm9pZCBpbml0
aWFsaXplV2l0aChEb2N1bWVudCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CisKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+Z2V0U2VuZGVycygpOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+JiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0LT5nZXRSZWNlaXZlcnMoKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgZ2V0VHJhbnNjZWl2ZXJzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+bGlzdCgpOyB9CkBAIC0xMTcsNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+
OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBS
ZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPiYmLCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmKTsKIApAQCAtMTQ3LDkg
KzE0OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDUnRwU2VuZGVyQ2xpZW50CiAgICAgdm9pZCBy
ZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFBl
ZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYmKSBvdmVycmlkZTsKIAotICAgIFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBtX3NpZ25hbGluZ1N0YXRlOwotICAgIFBlZXJDb25u
ZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdhdGhlcmluZ1N0YXRlOwotICAg
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGUgbV9pY2VDb25uZWN0aW9u
U3RhdGU7CisgICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIG1fc2lnbmFs
aW5nU3RhdGUgeyBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OlN0YWJsZSB9
OworICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdhdGhl
cmluZ1N0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdhdGhlcmluZ1N0YXRlOjpOZXcg
fTsKKyAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlIG1faWNlQ29u
bmVjdGlvblN0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6
TmV3IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+IG1fdHJhbnNj
ZWl2ZXJTZXQgeyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+KG5ldyBSdHBUcmFu
c2NlaXZlclNldCgpKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDkwODI4MWUuLmU3MDEzOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCkBAIC0zNCwxMCArMzQsMTIgQEAKICAgICBBY3RpdmVET01PYmpl
Y3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCi0g
ICAgQ3VzdG9tQ29uc3RydWN0b3IoRGljdGlvbmFyeSBydGNDb25maWd1cmF0aW9uKSwKKyAgICBK
U0J1aWx0aW5Db25zdHJ1Y3RvciwKICAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uLAogXSBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb24gOiBFdmVudFRhcmdldCB7Cisg
ICAgLy8gUHJpdmF0ZSBpbml0aWFsaXplcgorICAgIFtQcml2YXRlLCBDYWxsV2l0aD1Eb2N1bWVu
dCwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGluaXRpYWxpemVXaXRoKERpY3Rpb25hcnkgcGFyYW1l
dGVycyk7CisKICAgICAvLyBSVFAgTWVkaWEgQVBJIGV4dGVuc2lvbnMKICAgICBzZXF1ZW5jZTxS
VENSdHBTZW5kZXI+IGdldFNlbmRlcnMoKTsKICAgICBzZXF1ZW5jZTxSVENSdHBSZWNlaXZlcj4g
Z2V0UmVjZWl2ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcwppbmRleCA5Yjc4OGY2Li44ODBkNDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uanMKQEAgLTMwLDYgKzMwLDI2IEBACiAKIC8vIEBjb25kaXRpb25hbD1FTkFCTEUo
V0VCX1JUQykKIAorZnVuY3Rpb24gaW5pdGlhbGl6ZVJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3Vy
YXRpb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PCAxKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMi
KTsKKworICAgIGlmICghQGlzT2JqZWN0KGNvbmZpZ3VyYXRpb24pKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlk
IERpY3Rpb25hcnkiKTsKKworICAgIHRyeSB7CisgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRo
KGNvbmZpZ3VyYXRpb24pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc3QgbWVzc2Fn
ZSA9IGUubmFtZSA9PT0gIlR5cGVNaXNtYXRjaEVycm9yIiA/ICJJbnZhbGlkIFJUQ1BlZXJDb25u
ZWN0aW9uIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyIKKyAgICAgICAgICAgIDogIkVycm9yIGNyZWF0
aW5nIFJUQ1BlZXJDb25uZWN0aW9uIjsKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IobWVz
c2FnZSk7CisgICAgfQorICAgIHJldHVybiB0aGlzOworfQorCiBmdW5jdGlvbiBjcmVhdGVPZmZl
cigpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOGM3ZGYuLjA0NTVlZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMw
NSw3ICszMDUsNiBAQAogCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87
IH07CiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3
Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovOyB9OwogCQkwN0M1OUI2
RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovOyB9OwotCQkwN0NBMTIw
RTE4MkQ2N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NBMTIwRDE4MkQ2N0Q4
MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTA3Q0U3
N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEy
QTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMw
MDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5
IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJC
MEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMw
MDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKQEAgLTc3
MjEsNyArNzcyMCw2IEBACiAJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3Ry
ZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25N
SU1FVHlwZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMjFE
MDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JU
Q1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYz
NzNFMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTU2LDcgKzIyNTU0LDYgQEAKIAkJ
CQlGREJEMURGQjE2N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJRkQ4QUE2M0QxNjk1MTRBNzAwRDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5j
cHAgKi8sCiAJCQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJMDdDQTEyMEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBK
U1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovLAogCQkJCTUxRENFODAxMENBQzlGMUMwMDQ4
ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwICovLAogCQkJCTFBRDIzMTZE
MENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMw
NjQxLDcgKzMwNjM4LDYgQEAKIAkJCQkwNzk2OURCNzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJ
Y2VDYW5kaWRhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzM3OTRFQjE5RUUzNDFF
MDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlE
QjkxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMDdDQTEyMEUxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzExQkNGMEQ3NTAwMDFFMkJDIC8q
IEpTUlRDUnRwUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzMxQkNGMEQ3
NTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5
REJCMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDUGVl
ckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAz
ZDhkYzQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVkZSAiSlNSVENQZWVyQ29ubmVjdGlvbi5oIgot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgLy8gU3BlYyBzYXlzIHRoYXQgd2UgbXVzdCBoYXZlIGF0IGxlYXN0
IG9uZSBhcnVtZW50LCB0aGUgUlRDQ29uZmlndXJhdGlvbi4KLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBEaWN0aW9uYXJ5IHJ0Y0NvbmZpZ3VyYXRpb24oZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIGlmICghcnRjQ29uZmlndXJhdGlvbi5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIERp
Y3Rpb25hcnkiKSk7Ci0KLSAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1
bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKLQotICAgIGF1dG8gcGVlckNvbm5lY3Rpb24gPSBSVENQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBydGNDb25maWd1
cmF0aW9uLCBlYyk7Ci0gICAgaWYgKGVjID09IFRZUEVfTUlTTUFUQ0hfRVJSKSB7Ci0gICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIFJUQ1BlZXJDb25uZWN0aW9uIGNv
bnN0cnVjdG9yIGFyZ3VtZW50cyIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZWMpIHsKLSAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkVycm9yIGNyZWF0aW5nIFJUQ1BlZXJDb25uZWN0
aW9uIikpOwotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9X
UkFQUEVSKGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBSVENQZWVyQ29ubmVjdGlvbiwg
cGVlckNvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281819</attachid>
            <date>2016-06-21 22:57:47 -0700</date>
            <delta_ts>2016-06-22 11:12:57 -0700</delta_ts>
            <desc>Updated patch (for landing)</desc>
            <filename>pc-js-built-in-constructor_4.patch</filename>
            <type>text/plain</type>
            <size>16452</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWQyYmNmOC4uNTY5NjVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEyMDEsNyArMTIwMSw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5k
aW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU1JUQ1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDZkNmViLi4xMDI4YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYtMDYtMjAg
IEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAg
IFdlYlJUQzogUmVwbGFjZSBSVENQZWVyQ29ubmVjdGlvbiBjdXN0b20gY29uc3RydWN0b3Igd2l0
aCBhIEpTIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MzIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24gYW5kIFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVXNlIGEgSlMgYnVpbHQtaW4gY29u
c3RydWN0b3IgaW5zdGVhZCBvZiBhIGN1c3RvbSBjb25zdHJ1Y3Rvci4gVGhpcyBtYWtlcyBpdCBl
YXNpZXIgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBwcml2YXRlIGZpZWxkcyBmb3IgZnVuY3Rpb25z
IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucy4gVGhlIGNvbnN0cnVjdG9yCisgICAgICAgIGJl
aGF2aW9yIGlzIGluIG5lZWQgb2YgdXBkYXRpbmcsIGJ1dCB0aGF0IGlzIGxlZnQgdG8gYSBmb2xs
b3ctdXAgY2hhbmdlIFsxXS4KKworICAgICAgICBbMV0gaHR0cDovL3dlYmtpdC5vcmcvYi8xNTg5
MzYKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1BlZXJDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0aCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanM6CisgICAgICAgIChpbml0aWFs
aXplUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICBBZGQgSlMgYnVpbHQtaW4gY29uc3RydWN0
b3IgZnVuY3Rpb24uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbik6
IERlbGV0ZWQuCisKIDIwMTYtMDYtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSB0aW1lIGxpdGVyYWxzIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggM2M1Mjk3MS4uNjI3MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTU5LDQxICs1OSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb247
CiB1c2luZyBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb25TdGF0ZXM7CiAKLVJlZlB0cjxSVENQZWVy
Q29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxSVEND
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gUlRDQ29uZmlndXJhdGlvbjo6Y3JlYXRlKHJ0
Y0NvbmZpZ3VyYXRpb24sIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0
UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
LCBlYykpOworICAgIFJlZjxSVENQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBhZG9w
dFJlZigqbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQpKTsKICAgICBwZWVyQ29ubmVjdGlv
bi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbjsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb246
OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0
cjxSVENDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX3Np
Z25hbGluZ1N0YXRlKFNpZ25hbGluZ1N0YXRlOjpTdGFibGUpCi0gICAgLCBtX2ljZUdhdGhlcmlu
Z1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlOjpOZXcpCi0gICAgLCBtX2ljZUNvbm5lY3Rpb25TdGF0
ZShJY2VDb25uZWN0aW9uU3RhdGU6Ok5ldykKLSAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKQorICAgICwgbV9iYWNrZW5kKFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlKHRoaXMpKQogewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KTsKLQotICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9i
YWNrZW5kID0gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFt
X2JhY2tlbmQpIHsKLSAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+c2V0Q29uZmlndXJhdGlvbigqbV9jb25maWd1
cmF0aW9uKTsKIH0KIAogUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigpCkBA
IC0xMDEsNiArNzgsMjEgQEAgUlRDUGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigp
CiAgICAgc3RvcCgpOwogfQogCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0
aChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgeworICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFtX2JhY2tlbmQpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldENvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJh
dGlvbiwgZWMpOworfQorCiBSZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6
YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxNZWRp
YVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWdu
YWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXgg
Zjg1ZWM2NC4uNTllODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjAsOSArNjAsMTEgQEAgY2xhc3Mg
UlRDU3RhdHNDYWxsYmFjazsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmRDbGllbnQsIHB1YmxpYyBSVENSdHBTZW5kZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgUmVmPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwogCisgICAgdm9pZCBpbml0
aWFsaXplV2l0aChEb2N1bWVudCYsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CisKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+Z2V0U2VuZGVycygpOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+JiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0LT5nZXRSZWNlaXZlcnMoKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+PiYgZ2V0VHJhbnNjZWl2ZXJzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+bGlzdCgpOyB9CkBAIC0xMTcsNyAr
MTE5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+
OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBS
ZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPiYmLCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmKTsKIApAQCAtMTQ3LDkg
KzE0OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gUlRDUnRwU2VuZGVyQ2xpZW50CiAgICAgdm9pZCBy
ZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFBl
ZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYmKSBvdmVycmlkZTsKIAotICAgIFBlZXJDb25uZWN0
aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBtX3NpZ25hbGluZ1N0YXRlOwotICAgIFBlZXJDb25u
ZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdhdGhlcmluZ1N0YXRlOwotICAg
IFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGUgbV9pY2VDb25uZWN0aW9u
U3RhdGU7CisgICAgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlIG1fc2lnbmFs
aW5nU3RhdGUgeyBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGU6OlN0YWJsZSB9
OworICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSBtX2ljZUdhdGhl
cmluZ1N0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdhdGhlcmluZ1N0YXRlOjpOZXcg
fTsKKyAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlIG1faWNlQ29u
bmVjdGlvblN0YXRlIHsgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZTo6
TmV3IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+IG1fdHJhbnNj
ZWl2ZXJTZXQgeyBzdGQ6OnVuaXF1ZV9wdHI8UnRwVHJhbnNjZWl2ZXJTZXQ+KG5ldyBSdHBUcmFu
c2NlaXZlclNldCgpKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDkwODI4MWUuLmVjNTgxYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCkBAIC0zNCwxMCArMzQsMTIgQEAKICAgICBBY3RpdmVET01PYmpl
Y3QsCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCi0g
ICAgQ3VzdG9tQ29uc3RydWN0b3IoRGljdGlvbmFyeSBydGNDb25maWd1cmF0aW9uKSwKKyAgICBK
U0J1aWx0aW5Db25zdHJ1Y3RvciwKICAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uLAogXSBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb24gOiBFdmVudFRhcmdldCB7Cisg
ICAgLy8gUHJpdmF0ZSBpbml0aWFsaXplcgorICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ2FsbFdp
dGg9RG9jdW1lbnQsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBpbml0aWFsaXplV2l0aChEaWN0aW9u
YXJ5IHBhcmFtZXRlcnMpOworCiAgICAgLy8gUlRQIE1lZGlhIEFQSSBleHRlbnNpb25zCiAgICAg
c2VxdWVuY2U8UlRDUnRwU2VuZGVyPiBnZXRTZW5kZXJzKCk7CiAgICAgc2VxdWVuY2U8UlRDUnRw
UmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMKaW5kZXggOWI3ODhmNi4uOTFl
N2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmpzCkBAIC0zMCw2ICszMCwyNyBAQAogCiAvLyBAY29uZGl0aW9u
YWw9RU5BQkxFKFdFQl9SVEMpCiAKK2Z1bmN0aW9uIGluaXRpYWxpemVSVENQZWVyQ29ubmVjdGlv
bihjb25maWd1cmF0aW9uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoIDwgMSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIk5vdCBlbm91Z2gg
YXJndW1lbnRzIik7CisKKyAgICBpZiAoIUBpc09iamVjdChjb25maWd1cmF0aW9uKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJUQ1BlZXJDb25uZWN0aW9uIGFyZ3VtZW50IG11c3Qg
YmUgYSB2YWxpZCBEaWN0aW9uYXJ5Iik7CisKKyAgICAvLyBGSVhNRTogSGFuZGxlIGVycm9ycyBp
biBhIGJldHRlciB3YXkgdGhhbiBjYXRjaGluZyBhbmQgcmUtdGhyb3dpbmcgKGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTU4OTM2KQorICAgIHRyeSB7CisgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRo
KGNvbmZpZ3VyYXRpb24pOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc3QgbWVzc2Fn
ZSA9IGUubmFtZSA9PT0gIlR5cGVNaXNtYXRjaEVycm9yIiA/ICJJbnZhbGlkIFJUQ1BlZXJDb25u
ZWN0aW9uIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyIKKyAgICAgICAgICAgIDogIkVycm9yIGNyZWF0
aW5nIFJUQ1BlZXJDb25uZWN0aW9uIjsKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IobWVz
c2FnZSk7CisgICAgfQorICAgIHJldHVybiB0aGlzOworfQorCiBmdW5jdGlvbiBjcmVhdGVPZmZl
cigpCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkOGM3ZGYuLjA0NTVlZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMw
NSw3ICszMDUsNiBAQAogCQkwN0M1OUI2ODE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgKi87
IH07CiAJCTA3QzU5QjY5MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI2NjE3
Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovOyB9OwogCQkwN0M1OUI2
RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjZEMTdGNzk0RjYw
MDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovOyB9OwotCQkwN0NBMTIw
RTE4MkQ2N0Q4MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NBMTIwRDE4MkQ2N0Q4
MDBEMTIxOTcgLyogSlNSVENQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTA3Q0U3
N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0NFNzdENDE2NzEy
QTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3RDYzNzQwMUJCMEIxMTMw
MDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdENjM3M0UxQkIwQjExMzAwMjU2Q0U5
IC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi87IH07CiAJCTA3RDYzNzQxMUJC
MEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RDYzNzNGMUJCMEIxMTMw
MDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLzsgfTsKQEAgLTc3
MjEsNyArNzcyMCw2IEBACiAJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3Ry
ZWFtVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25N
SU1FVHlwZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M4QUQxMjFE
MDczRDYzMDA4N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5NyAvKiBKU1JU
Q1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3RDYz
NzNFMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Q2MzczRjFCQjBCMTEzMDAy
NTZDRTkgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTU2LDcgKzIyNTU0LDYgQEAKIAkJ
CQlGREJEMURGQjE2N0ZFMjdEMDA1MUExMUUgLyogSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAg
Ki8sCiAJCQkJRkQ4QUE2M0QxNjk1MTRBNzAwRDJFQTY4IC8qIEpTUGFubmVyTm9kZUN1c3RvbS5j
cHAgKi8sCiAJCQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1
c3RvbS5jcHAgKi8sCi0JCQkJMDdDQTEyMEQxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTA3REM1RkQzMTdEM0VFRTkwMDk5Rjg5MCAvKiBK
U1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwICovLAogCQkJCTUxRENFODAxMENBQzlGMUMwMDQ4
ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwICovLAogCQkJCTFBRDIzMTZE
MENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTMw
NjQxLDcgKzMwNjM4LDYgQEAKIAkJCQkwNzk2OURCNzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENJ
Y2VDYW5kaWRhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzM3OTRFQjE5RUUzNDFF
MDBFNUEwNDUgLyogSlNSVENJY2VTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlE
QjkxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMDdDQTEyMEUxODJENjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzExQkNGMEQ3NTAwMDFFMkJDIC8q
IEpTUlRDUnRwUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUUyQzQzNzMxQkNGMEQ3
NTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5
REJCMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDUGVl
ckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAz
ZDhkYzQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVkZSAiSlNSVENQZWVyQ29ubmVjdGlvbi5oIgot
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSVENQZWVyQ29ubmVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgLy8gU3BlYyBzYXlzIHRoYXQgd2UgbXVzdCBoYXZlIGF0IGxlYXN0
IG9uZSBhcnVtZW50LCB0aGUgUlRDQ29uZmlndXJhdGlvbi4KLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBEaWN0aW9uYXJ5IHJ0Y0NvbmZpZ3VyYXRpb24oZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIGlmICghcnRjQ29uZmlndXJhdGlvbi5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIERp
Y3Rpb25hcnkiKSk7Ci0KLSAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCAiUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1
bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKLQotICAgIGF1dG8gcGVlckNvbm5lY3Rpb24gPSBSVENQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBydGNDb25maWd1
cmF0aW9uLCBlYyk7Ci0gICAgaWYgKGVjID09IFRZUEVfTUlTTUFUQ0hfRVJSKSB7Ci0gICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIFJUQ1BlZXJDb25uZWN0aW9uIGNv
bnN0cnVjdG9yIGFyZ3VtZW50cyIpKTsKLSAgICB9Ci0KLSAgICBpZiAoZWMpIHsKLSAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkVycm9yIGNyZWF0aW5nIFJUQ1BlZXJDb25uZWN0
aW9uIikpOwotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9X
UkFQUEVSKGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBSVENQZWVyQ29ubmVjdGlvbiwg
cGVlckNvbm5lY3Rpb24ucmVsZWFzZU5vbk51bGwoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>