<?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>28089</bug_id>
          
          <creation_ts>2009-08-07 17:25:19 -0700</creation_ts>
          <short_desc>[V8] Renamed all NPN_ functions to _NPN_ to match JSC and make them &quot;private&quot;</short_desc>
          <delta_ts>2009-08-10 21:17:50 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>andersca</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>138227</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-08-07 17:25:19 -0700</bug_when>
    <thetext>[V8] Renamed all NPN_ functions to _NPN_ to match JSC and make them &quot;private&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138229</commentid>
    <comment_count>1</comment_count>
      <attachid>34346</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-08-07 17:31:30 -0700</bug_when>
    <thetext>Created attachment 34346
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138271</commentid>
    <comment_count>2</comment_count>
      <attachid>34346</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 20:53:33 -0700</bug_when>
    <thetext>Comment on attachment 34346
Patch v1

I&apos;m not sure why we have this prefix.  But sounds fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138272</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 20:53:48 -0700</bug_when>
    <thetext>cc&apos;d anders so he sees this go by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138608</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-09 22:56:06 -0700</bug_when>
    <thetext>In WebKit style if a parameter name doesn&apos;t add information in a function declaration, then the name isn&apos;t included.  For example &quot;identifier&quot; shouldn&apos;t be included here:
   bool _NPN_IdentifierIsString(NPIdentifier identifier);

Feel free to clean these up on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138901</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-08-10 21:17:50 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/bindings/v8/NPV8Object.cpp
Sending        WebCore/bindings/v8/ScriptController.cpp
Sending        WebCore/bindings/v8/V8NPObject.cpp
Sending        WebCore/bindings/v8/V8NPUtils.cpp
Sending        WebCore/bindings/v8/npruntime.cpp
Sending        WebCore/bindings/v8/npruntime_impl.h
Transmitting file data .......
Committed revision 47021.
http://trac.webkit.org/changeset/47021</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34346</attachid>
            <date>2009-08-07 17:31:30 -0700</date>
            <delta_ts>2009-08-07 20:53:33 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-28089-20090807173129.patch</filename>
            <type>text/plain</type>
            <size>21380</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjkzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDktMDgtMDcgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lZCBhbGwgVjggTlBOXyBmdW5jdGlvbnMgdG8gX05QTl8gdG8gbWF0Y2ggSlNDIGFuZCBt
YWtlIHRoZW0gInByaXZhdGUiLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgwODkKKworICAgICAgICBSZW5hbWUgYWxsIHRoZSBOUE5fZm9vIGZ1bmN0
aW9ucyB0byBfTlBOX2ZvbyBzbyB0aGF0IHRoZXkgY2FuJ3QgZGlyZWN0bHkgYmUKKyAgICAgICAg
Y2FsbGVkIGJ5IG1pc3Rha2UuICBUaGlzIHJvdWdobHkgbWF0Y2hlcyB0aGUgd2F5IEpTQyBkb2Vz
IGl0LCB3aGljaCBpcyBhbgorICAgICAgICBhZGRpdGlvbmFsIGFkdmFudGFnZS4KKworICAgICAg
ICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAobnBDcmVhdGVWOFNjcmlw
dE9iamVjdCk6CisgICAgICAgIChfTlBOX0ludm9rZSk6CisgICAgICAgIChfTlBOX0ludm9rZURl
ZmF1bHQpOgorICAgICAgICAoX05QTl9FdmFsdWF0ZSk6CisgICAgICAgIChfTlBOX0V2YWx1YXRl
SGVscGVyKToKKyAgICAgICAgKF9OUE5fR2V0UHJvcGVydHkpOgorICAgICAgICAoX05QTl9TZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChfTlBOX1JlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKF9OUE5f
SGFzUHJvcGVydHkpOgorICAgICAgICAoX05QTl9IYXNNZXRob2QpOgorICAgICAgICAoX05QTl9T
ZXRFeGNlcHRpb24pOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorICAgICAgICAoX05QTl9D
b25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNl
Rm9yV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNsZWFudXBT
Y3JpcHRPYmplY3RzRm9yUGx1Z2luKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcDoKKyAgICAgICAgKG5wT2JqZWN0SW52b2tlSW1wbCk6CisgICAgICAgIChucE9iamVjdEdl
dFByb3BlcnR5KToKKyAgICAgICAgKG5wT2JqZWN0SW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAg
ICAgICAgKG5wT2JqZWN0R2V0SW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKG5wT2JqZWN0U2V0
UHJvcGVydHkpOgorICAgICAgICAobnBPYmplY3RJbmRleGVkUHJvcGVydHlTZXR0ZXIpOgorICAg
ICAgICAobnBPYmplY3RTZXRJbmRleGVkUHJvcGVydHkpOgorICAgICAgICAod2Vha05QT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoY3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdCk6CisgICAgICAg
IChmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5Q
VXRpbHMuY3BwOgorICAgICAgICAoZ2V0U3RyaW5nSWRlbnRpZmllcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvbnBydW50aW1lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ucHJ1bnRpbWVf
aW1wbC5oOgorCiAyMDA5LTA4LTA3ICBOaWNvbGFzIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBUZWFjaCBXZWJLaXQgaG93IHRvIGRlY29kZSBqcGVncyBpbiBjbXlrIGFu
ZCB5Y2NrIGNvbG9yIHNwYWNlcy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAko
cmV2aXNpb24gNDY4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiVjhOUFV0aWxzLmgiCiAj
aW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgImJpbmRpbmdzL25wcnVudGltZS5oIgorI2lu
Y2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKIAog
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMDgsMTIgKzEwOSwxMiBAQCBOUE9iamVjdCogbnBDcmVh
dGVWOFNjcmlwdE9iamVjdChOUFAgbnBwCiAgICAgICAgIGlmICh0eXBlSW5kZXgtPklzTnVtYmVy
KCkgJiYgdHlwZUluZGV4LT5VaW50MzJWYWx1ZSgpID09IFY4Q2xhc3NJbmRleDo6TlBPQkpFQ1Qp
IHsKIAogICAgICAgICAgICAgTlBPYmplY3QqIHJldHVyblZhbHVlID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8TlBPYmplY3Q+KFY4Q2xhc3NJbmRleDo6TlBPQkpFQ1QsIG9i
amVjdCk7Ci0gICAgICAgICAgICBOUE5fUmV0YWluT2JqZWN0KHJldHVyblZhbHVlKTsKKyAgICAg
ICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHJldHVyblZhbHVlKTsKICAgICAgICAgICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFY4TlBPYmplY3QqIHY4bnBP
YmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihOUE5fQ3JlYXRlT2JqZWN0KG5w
cCwgJlY4TlBPYmplY3RDbGFzcykpOworICAgIFY4TlBPYmplY3QqIHY4bnBPYmplY3QgPSByZWlu
dGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAsICZWOE5QT2Jq
ZWN0Q2xhc3MpKTsKICAgICB2OG5wT2JqZWN0LT52OE9iamVjdCA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+OjpOZXcob2JqZWN0KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgVjhHQ0NvbnRyb2xs
ZXI6OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKFdlYkNvcmU6Ok5QT0JKRUNULCB2OG5wT2JqZWN0LCB2
OG5wT2JqZWN0LT52OE9iamVjdCk7CkBAIC0xMjIsNyArMTIzLDcgQEAgTlBPYmplY3QqIG5wQ3Jl
YXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5Q
T2JqZWN0Kj4odjhucE9iamVjdCk7CiB9CiAKLWJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9i
amVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQq
IGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpCiti
b29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVy
IG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVu
dENvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDksMTIgKzE1MCwxMiBAQCBib29sIE5QTl9JbnZva2UoTlBQ
IG5wcCwgTlBPYmplY3QqIG5wT2JqCiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUoY29u
dGV4dCk7CiAKLSAgICBpZiAobWV0aG9kTmFtZSA9PSBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcigi
ZXZhbCIpKSB7CisgICAgaWYgKG1ldGhvZE5hbWUgPT0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVy
KCJldmFsIikpIHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGFyZ3VtZW50c1swXS50eXBlICE9IE5QVmFyaWFu
dFR5cGVfU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4g
TlBOX0V2YWx1YXRlKG5wcCwgbnBPYmplY3QsIGNvbnN0X2Nhc3Q8TlBTdHJpbmcqPigmYXJndW1l
bnRzWzBdLnZhbHVlLnN0cmluZ1ZhbHVlKSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIF9OUE5f
RXZhbHVhdGUobnBwLCBucE9iamVjdCwgY29uc3RfY2FzdDxOUFN0cmluZyo+KCZhcmd1bWVudHNb
MF0udmFsdWUuc3RyaW5nVmFsdWUpLCByZXN1bHQpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBmdW5jdGlvbk9iamVjdCA9IHY4TnBPYmplY3QtPnY4T2JqZWN0LT5HZXQodjg6
OlN0cmluZzo6TmV3KGlkZW50aWZpZXItPnZhbHVlLnN0cmluZykpOwpAQCAtMTg0LDggKzE4NSw4
IEBAIGJvb2wgTlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmoKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotLy8gRklYTUU6IEZpeCBpdCBzYW1lIGFzIE5QTl9JbnZva2UgKEhhbmRsZVNj
b3BlIGFuZCBzdWNoKS4KLWJvb2wgTlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplY3Qq
IG5wT2JqZWN0LCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRD
b3VudCwgTlBWYXJpYW50KiByZXN1bHQpCisvLyBGSVhNRTogRml4IGl0IHNhbWUgYXMgX05QTl9J
bnZva2UgKEhhbmRsZVNjb3BlIGFuZCBzdWNoKS4KK2Jvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5Q
UCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVp
bnQzMl90IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmICghbnBP
YmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMiwxMyArMjMzLDEzIEBAIGJvb2wg
TlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBOUE5fRXZhbHVhdGUoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmlu
ZyogbnBTY3JpcHQsIE5QVmFyaWFudCogcmVzdWx0KQorYm9vbCBfTlBOX0V2YWx1YXRlKE5QUCBu
cHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBTdHJpbmcqIG5wU2NyaXB0LCBOUFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICBib29sIHBvcHVwc0FsbG93ZWQgPSBXZWJDb3JlOjpDaHJvbWl1bUJyaWRn
ZTo6cG9wdXBzQWxsb3dlZChucHApOwotICAgIHJldHVybiBOUE5fRXZhbHVhdGVIZWxwZXIobnBw
LCBwb3B1cHNBbGxvd2VkLCBucE9iamVjdCwgbnBTY3JpcHQsIHJlc3VsdCk7CisgICAgcmV0dXJu
IF9OUE5fRXZhbHVhdGVIZWxwZXIobnBwLCBwb3B1cHNBbGxvd2VkLCBucE9iamVjdCwgbnBTY3Jp
cHQsIHJlc3VsdCk7CiB9CiAKLWJvb2wgTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBucHAsIGJvb2wg
cG9wdXBzQWxsb3dlZCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5Q
VmFyaWFudCogcmVzdWx0KQorYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBucHAsIGJvb2wg
cG9wdXBzQWxsb3dlZCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5Q
VmFyaWFudCogcmVzdWx0KQogewogICAgIFZPSURfVE9fTlBWQVJJQU5UKCpyZXN1bHQpOwogICAg
IGlmICghbnBPYmplY3QpCkBAIC0yNzEsNyArMjcyLDcgQEAgYm9vbCBOUE5fRXZhbHVhdGVIZWxw
ZXIoTlBQIG5wcCwgYm9vbCBwbwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5QTl9HZXRQ
cm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIE5QVmFyaWFudCogcmVzdWx0KQorYm9vbCBfTlBOX0dldFByb3BlcnR5KE5QUCBucHAs
IE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgTlBWYXJpYW50
KiByZXN1bHQpCiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzAyLDcgKzMwMyw3IEBAIGJvb2wgTlBOX0dldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0
KiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTlBOX1NldFByb3BlcnR5KE5QUCBucHAs
IE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgY29uc3QgTlBW
YXJpYW50KiB2YWx1ZSkKK2Jvb2wgX05QTl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCog
bnBPYmplY3QsIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGNvbnN0IE5QVmFyaWFudCogdmFs
dWUpCiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI5
LDcgKzMzMCw3IEBAIGJvb2wgTlBOX1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTlBOX1JlbW92ZVByb3BlcnR5KE5QUCBucHAsIE5Q
T2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKK2Jvb2wgX05QTl9S
ZW1vdmVQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzUwLDcgKzM1MSw3IEBAIGJvb2wgTlBOX1JlbW92ZVByb3BlcnR5KE5QUCBucHAsIE5Q
T2JqZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQIG5w
cCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQorYm9vbCBf
TlBOX0hhc1Byb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoIW5wT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zNzMsNyArMzc0LDcgQEAgYm9vbCBOUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBP
YmplY3QqIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOUE5fSGFzTWV0aG9kKE5QUCBu
cHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCitib29sIF9O
UE5fSGFzTWV0aG9kKE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIG1l
dGhvZE5hbWUpCiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzk3LDcgKzM5OCw3IEBAIGJvb2wgTlBOX0hhc01ldGhvZChOUFAgbnBwLCBOUE9iamVjdCog
bnAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTlBOX1NldEV4Y2VwdGlvbihOUE9iamVj
dCogbnBPYmplY3QsIGNvbnN0IE5QVVRGOCAqbWVzc2FnZSkKK3ZvaWQgX05QTl9TZXRFeGNlcHRp
b24oTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBOUFVURjggKm1lc3NhZ2UpCiB7CiAgICAgaWYg
KG5wT2JqZWN0LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykKICAgICAgICAgcmV0dXJu
OwpAQCAtNDEwLDcgKzQxMSw3IEBAIHZvaWQgTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCogbnBP
YmplY3QKICAgICBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OkdlbmVyYWxFcnJvciwgbWVz
c2FnZSk7CiB9CiAKLWJvb2wgTlBOX0VudW1lcmF0ZShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmpl
Y3QsIE5QSWRlbnRpZmllcioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudCkKK2Jvb2wgX05Q
Tl9FbnVtZXJhdGUoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIqKiBp
ZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQpCiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY0LDcgKzQ2NSw3IEBAIGJvb2wgTlBOX0VudW1lcmF0ZShO
UFAgbnBwLCBOUE9iamVjdCogbnAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTlBOX0Nv
bnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IE5QVmFyaWFudCogYXJn
dW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCkKK2Jvb2wg
X05QTl9Db25zdHJ1Y3QoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBOUFZhcmlh
bnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwgTlBWYXJpYW50KiByZXN1bHQp
CiB7CiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA0Njg2OCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgi
CiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgpAQCAtMTA5LDcgKzExMCw3IEBAIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3QKICAgICBQbHVnaW5PYmplY3RNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9wbHVnaW5PYmplY3RzLmJlZ2luKCk7CiAgICAgZm9yICg7IGl0ICE9IG1f
cGx1Z2luT2JqZWN0cy5lbmQoKTsgKytpdCkgewogICAgICAgICBfTlBOX1VucmVnaXN0ZXJPYmpl
Y3QoaXQtPnNlY29uZCk7Ci0gICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0KGl0LT5zZWNvbmQpOwor
ICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QoaXQtPnNlY29uZCk7CiAgICAgfQogICAgIG1fcGx1
Z2luT2JqZWN0cy5jbGVhcigpOwogCkBAIC0zMDksNyArMzEwLDcgQEAgUGFzc1NjcmlwdEluc3Rh
bmNlIFNjcmlwdENvbnRyb2xsZXI6OmNyZQogICAgIC8vCiAgICAgLy8gSW5zaWRlIHRoZSBqYXZh
c2NyaXB0IGVuZ2luZSwgdGhlIGVuZ2luZSBjYW4ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUKICAg
ICAvLyBOUE9iamVjdCBhcyBwYXJ0IG9mIGl0cyB3cmFwcGVyLiBIb3dldmVyLCBiZWZvcmUgYWNj
ZXNzaW5nIHRoZSBvYmplY3QKLSAgICAvLyBpdCBtdXN0IGNvbnN1bHQgdGhlIE5QTl9SZWdpc3Ry
eS4KKyAgICAvLyBpdCBtdXN0IGNvbnN1bHQgdGhlIF9OUE5fUmVnaXN0cnkuCiAKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9IGNyZWF0ZVY4T2JqZWN0Rm9yTlBPYmplY3QobnBP
YmplY3QsIDApOwogCkBAIC0zMjUsNyArMzI2LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpj
bGVhbnVwU2NyaXB0T2JqZQogICAgIGlmIChpdCA9PSBtX3BsdWdpbk9iamVjdHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBfTlBOX1VucmVnaXN0ZXJPYmplY3QoaXQtPnNlY29uZCk7Ci0g
ICAgTlBOX1JlbGVhc2VPYmplY3QoaXQtPnNlY29uZCk7CisgICAgX05QTl9SZWxlYXNlT2JqZWN0
KGl0LT5zZWNvbmQpOwogICAgIG1fcGx1Z2luT2JqZWN0cy5yZW1vdmUoaXQpOwogfQogCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAJKHJldmlzaW9uIDQ2ODY4KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIlY4SGVscGVycy5oIgogI2luY2x1ZGUgIlY4TlBVdGlscy5oIgogI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUg
Im5wcnVudGltZV9wcml2LmgiCiAjaW5jbHVkZSAid3RmL093bkFycmF5UHRyLmgiCiAKQEAgLTEx
MywxMSArMTE0LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJbnYK
ICAgICB9CiAKICAgICBmb3IgKGludCBpPTA7IGkgPCBudW1BcmdzOyBpKyspCi0gICAgICAgIE5Q
Tl9SZWxlYXNlVmFyaWFudFZhbHVlKCZucEFyZ3NbaV0pOworICAgICAgICBfTlBOX1JlbGVhc2VW
YXJpYW50VmFsdWUoJm5wQXJnc1tpXSk7CiAKICAgICAvLyBVbndyYXAgcmV0dXJuIHZhbHVlcy4K
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmV0dXJuVmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50
VG9WOE9iamVjdCgmcmVzdWx0LCBucE9iamVjdCk7Ci0gICAgTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUoJnJlc3VsdCk7CisgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZyZXN1bHQpOwogCiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQpAQCAtMTcyLDcgKzE3Myw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXQKICAgICAgICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmV0dXJu
VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdCgmcmVzdWx0LCBucE9iamVjdCk7Ci0g
ICAgICAgIE5QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZyZXN1bHQpOworICAgICAgICBfTlBOX1Jl
bGVhc2VWYXJpYW50VmFsdWUoJnJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IAogICAgIH0gZWxzZSBpZiAoa2V5LT5Jc1N0cmluZygpICYmIG5wT2JqZWN0LT5fY2xhc3MtPmhh
c01ldGhvZCAmJiBucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QobnBPYmplY3QsIGlkZW50aWZp
ZXIpKSB7CkBAIC0yMDQsNyArMjA1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0
TmFtZWRQcm9wZQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkUHJvcGVy
dHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
Ci0gICAgTlBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBOUE5fR2V0SW50SWRlbnRpZmllcihpbmRl
eCk7CisgICAgTlBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBfTlBOX0dldEludElkZW50aWZpZXIo
aW5kZXgpOwogICAgIHJldHVybiBucE9iamVjdEdldFByb3BlcnR5KGluZm8uSG9sZGVyKCksIGlk
ZW50aWZpZXIsIHY4OjpOdW1iZXI6Ok5ldyhpbmRleCkpOwogfQogCkBAIC0yMTYsNyArMjE3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0R2V0TmFtZWRQcgogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRJbmRleGVkUHJvcGVydHkodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IHNlbGYsIHVpbnQzMl90IGluZGV4KQogewotICAgIE5QSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gTlBOX0dldEludElkZW50aWZpZXIoaW5kZXgpOworICAgIE5QSWRlbnRpZmllciBpZGVudGlm
aWVyID0gX05QTl9HZXRJbnRJZGVudGlmaWVyKGluZGV4KTsKICAgICByZXR1cm4gbnBPYmplY3RH
ZXRQcm9wZXJ0eShzZWxmLCBpZGVudGlmaWVyLCB2ODo6TnVtYmVyOjpOZXcoaW5kZXgpKTsKIH0K
IApAQCAtMjM3LDcgKzIzOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmpl
Y3RTZXQKICAgICAgICAgVk9JRF9UT19OUFZBUklBTlQobnBWYWx1ZSk7CiAgICAgICAgIGNvbnZl
cnRWOE9iamVjdFRvTlBWYXJpYW50KHZhbHVlLCBucE9iamVjdCwgJm5wVmFsdWUpOwogICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBucE9iamVjdC0+X2NsYXNzLT5zZXRQcm9wZXJ0eShucE9iamVjdCwg
aWRlbnRpZmllciwgJm5wVmFsdWUpOwotICAgICAgICBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgm
bnBWYWx1ZSk7CisgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmbnBWYWx1ZSk7CiAg
ICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOyAvLyBJbnRlcmNl
cHQgdGhlIGNhbGwuCiAgICAgfQpAQCAtMjU0LDcgKzI1NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBucE9iamVjdE5hbWVkUHJvcGUKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0
SW5kZXhlZFByb3BlcnR5U2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBOUElkZW50aWZp
ZXIgaWRlbnRpZmllciA9IE5QTl9HZXRJbnRJZGVudGlmaWVyKGluZGV4KTsKKyAgICBOUElkZW50
aWZpZXIgaWRlbnRpZmllciA9IF9OUE5fR2V0SW50SWRlbnRpZmllcihpbmRleCk7CiAgICAgcmV0
dXJuIG5wT2JqZWN0U2V0UHJvcGVydHkoaW5mby5Ib2xkZXIoKSwgaWRlbnRpZmllciwgdmFsdWUp
OwogfQogCkBAIC0yNjYsNyArMjY3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0
U2V0TmFtZWRQcgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RTZXRJbmRleGVkUHJv
cGVydHkodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHNlbGYsIHVpbnQzMl90IGluZGV4LCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSkKIHsKLSAgICBOUElkZW50aWZpZXIgaWRlbnRpZmllciA9IE5Q
Tl9HZXRJbnRJZGVudGlmaWVyKGluZGV4KTsKKyAgICBOUElkZW50aWZpZXIgaWRlbnRpZmllciA9
IF9OUE5fR2V0SW50SWRlbnRpZmllcihpbmRleCk7CiAgICAgcmV0dXJuIG5wT2JqZWN0U2V0UHJv
cGVydHkoc2VsZiwgaWRlbnRpZmllciwgdmFsdWUpOwogfQogCkBAIC0yODEsMTIgKzI4MiwxMiBA
QCBzdGF0aWMgdm9pZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2ODo6UGVyCiAgICAgQVNTRVJUKHN0
YXRpY05QT2JqZWN0TWFwLmNvbnRhaW5zKG5wT2JqZWN0KSk7CiAgICAgQVNTRVJUKG5wT2JqZWN0
KTsKIAotICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZvcmUgY2FsbGluZyBOUE5f
UmVsZWFzZU9iamVjdCgpLiBOUE5fUmVsZWFzZU9iamVjdCBjYW4gY2FsbCBGb3JnZXRWOE9iamVj
dEZvck5QT2JqZWN0LCB3aGljaAorICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZv
cmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmplY3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0IGNhbiBj
YWxsIEZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QsIHdoaWNoCiAgICAgLy8gdXNlcyB0aGUgdGFi
bGUgYXMgd2VsbC4KICAgICBzdGF0aWNOUE9iamVjdE1hcC5mb3JnZXQobnBPYmplY3QpOwogCiAg
ICAgaWYgKF9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIE5QTl9SZWxlYXNlT2JqZWN0
KG5wT2JqZWN0KTsKKyAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsKIH0KIAog
CkBAIC0zMjcsNyArMzI4LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0
Rm9yTgogICAgIHdyYXBOUE9iamVjdCh2YWx1ZSwgb2JqZWN0KTsKIAogICAgIC8vIEtKUyByZXRh
aW5zIHRoZSBvYmplY3QgYXMgcGFydCBvZiBpdHMgd3JhcHBlciAoc2VlIEJpbmRpbmdzOjpDSW5z
dGFuY2UpLgotICAgIE5QTl9SZXRhaW5PYmplY3Qob2JqZWN0KTsKKyAgICBfTlBOX1JldGFpbk9i
amVjdChvYmplY3QpOwogCiAgICAgX05QTl9SZWdpc3Rlck9iamVjdChvYmplY3QsIHJvb3QpOwog
CkBAIC0zNDUsNiArMzQ2LDYgQEAgdm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KE5QT2Jq
ZWN0KgogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBoYW5kbGUoc3RhdGljTlBP
YmplY3RNYXAuZ2V0KG9iamVjdCkpOwogICAgICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIoaGFuZGxlLCBXZWJDb3JlOjpWOENsYXNzSW5kZXg6Ok5QT0JKRUNULCAwKTsKICAgICAgICAg
c3RhdGljTlBPYmplY3RNYXAuZm9yZ2V0KG9iamVjdCk7Ci0gICAgICAgIE5QTl9SZWxlYXNlT2Jq
ZWN0KG9iamVjdCk7CisgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAgIH0K
IH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAJKHJldmlzaW9uIDQ2ODY4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiTlBWOE9iamVjdC5oIgogI2luY2x1ZGUgIlY4TlBPYmplY3Qu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNp
bmNsdWRlICJucHJ1bnRpbWVfcHJpdi5oIgogCiB2b2lkIGNvbnZlcnRWOE9iamVjdFRvTlBWYXJp
YW50KHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCwgTlBPYmplY3QqIG93bmVyLCBOUFZhcmlh
bnQqIHJlc3VsdCkKQEAgLTEyMSw5ICsxMjIsOSBAQCBOUElkZW50aWZpZXIgZ2V0U3RyaW5nSWRl
bnRpZmllcih2ODo6SGFuCiAgICAgICAgIC8vIHRoYW4gdGhlIHN0cmluZyBsZW5ndGguCiAgICAg
ICAgIGNoYXIgc3RhY2tCdWZmZXJba1N0YWNrQnVmZmVyU2l6ZV07CiAgICAgICAgIHN0ci0+V3Jp
dGVVdGY4KHN0YWNrQnVmZmVyLCBidWZmZXJMZW5ndGgpOwotICAgICAgICByZXR1cm4gTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXIoc3RhY2tCdWZmZXIpOworICAgICAgICByZXR1cm4gX05QTl9HZXRT
dHJpbmdJZGVudGlmaWVyKHN0YWNrQnVmZmVyKTsKICAgICB9CiAKICAgICB2ODo6U3RyaW5nOjpV
dGY4VmFsdWUgdXRmOChzdHIpOwotICAgIHJldHVybiBOUE5fR2V0U3RyaW5nSWRlbnRpZmllcigq
dXRmOCk7CisgICAgcmV0dXJuIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcigqdXRmOCk7CiB9Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCShyZXZpc2lvbiA0Njg2OCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTlBWOE9iamVjdC5oIgorI2lu
Y2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNp
bmNsdWRlICJWOE5QT2JqZWN0LmgiCiAKQEAgLTE0OCw3ICsxNDksNyBAQCBzdGF0aWMgSW50SWRl
bnRpZmllck1hcCogZ2V0SW50SWRlbnRpZmllCiAKIGV4dGVybiAiQyIgewogCi1OUElkZW50aWZp
ZXIgTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKQorTlBJZGVudGlm
aWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5hbWUpCiB7CiAgICAg
QVNTRVJUKG5hbWUpOwogCkBAIC0xNzYsMTggKzE3NywxOCBAQCBOUElkZW50aWZpZXIgTlBOX0dl
dFN0cmluZ0lkZW50aWZpZXIoY29uCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgTlBOX0dldFN0
cmluZ0lkZW50aWZpZXJzKGNvbnN0IE5QVVRGOCoqIG5hbWVzLCBpbnQzMl90IG5hbWVDb3VudCwg
TlBJZGVudGlmaWVyKiBpZGVudGlmaWVycykKK3ZvaWQgX05QTl9HZXRTdHJpbmdJZGVudGlmaWVy
cyhjb25zdCBOUFVURjgqKiBuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRpZmllciog
aWRlbnRpZmllcnMpCiB7CiAgICAgQVNTRVJUKG5hbWVzKTsKICAgICBBU1NFUlQoaWRlbnRpZmll
cnMpOwogCiAgICAgaWYgKG5hbWVzICYmIGlkZW50aWZpZXJzKSB7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbmFtZUNvdW50OyBpKyspCi0gICAgICAgICAgICBpZGVudGlmaWVyc1tpXSA9
IE5QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWVzW2ldKTsKKyAgICAgICAgICAgIGlkZW50aWZp
ZXJzW2ldID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKG5hbWVzW2ldKTsKICAgICB9CiB9CiAK
LU5QSWRlbnRpZmllciBOUE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludElkKQorTlBJZGVu
dGlmaWVyIF9OUE5fR2V0SW50SWRlbnRpZmllcihpbnQzMl90IGludElkKQogewogICAgIC8vIFNw
ZWNpYWwgY2FzZSBmb3IgLTEgYW5kIDAsIGJvdGggY2Fubm90IGJlIHVzZWQgYXMga2V5IGluIEhh
c2hNYXAuCiAgICAgaWYgKCFpbnRJZCB8fCBpbnRJZCA9PSAtMSkgewpAQCAtMjE1LDEzICsyMTYs
MTMgQEAgTlBJZGVudGlmaWVyIE5QTl9HZXRJbnRJZGVudGlmaWVyKGludDMyXwogICAgIHJldHVy
biAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7CiB9CiAKLWJvb2wgTlBOX0lkZW50aWZpZXJJc1N0
cmluZyhOUElkZW50aWZpZXIgaWRlbnRpZmllcikKK2Jvb2wgX05QTl9JZGVudGlmaWVySXNTdHJp
bmcoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIHBy
aXZhdGVJZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxQcml2YXRlSWRlbnRpZmllcio+KGlk
ZW50aWZpZXIpOwogICAgIHJldHVybiBwcml2YXRlSWRlbnRpZmllci0+aXNTdHJpbmc7CiB9CiAK
LU5QVVRGOCAqTlBOX1VURjhGcm9tSWRlbnRpZmllcihOUElkZW50aWZpZXIgaWRlbnRpZmllcikK
K05QVVRGOCAqX05QTl9VVEY4RnJvbUlkZW50aWZpZXIoTlBJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIHByaXZhdGVJZGVudGlmaWVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxQcml2YXRlSWRlbnRpZmllcio+KGlkZW50aWZpZXIpOwogICAgIGlmICghcHJpdmF0
ZUlkZW50aWZpZXItPmlzU3RyaW5nIHx8ICFwcml2YXRlSWRlbnRpZmllci0+dmFsdWUuc3RyaW5n
KQpAQCAtMjMwLDcgKzIzMSw3IEBAIE5QVVRGOCAqTlBOX1VURjhGcm9tSWRlbnRpZmllcihOUElk
ZW50aWYKICAgICByZXR1cm4gKE5QVVRGOCopIHN0cmR1cChwcml2YXRlSWRlbnRpZmllci0+dmFs
dWUuc3RyaW5nKTsKIH0KIAotaW50MzJfdCBOUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCitpbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIHByaXZhdGVJZGVudGlm
aWVyID0gcmVpbnRlcnByZXRfY2FzdDxQcml2YXRlSWRlbnRpZmllcio+KGlkZW50aWZpZXIpOwog
ICAgIGlmIChwcml2YXRlSWRlbnRpZmllci0+aXNTdHJpbmcpCkBAIC0yMzgsMTIgKzIzOSwxMiBA
QCBpbnQzMl90IE5QTl9JbnRGcm9tSWRlbnRpZmllcihOUElkZW50aWZpCiAgICAgcmV0dXJuIHBy
aXZhdGVJZGVudGlmaWVyLT52YWx1ZS5udW1iZXI7CiB9CiAKLXZvaWQgTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUoTlBWYXJpYW50KiB2YXJpYW50KQordm9pZCBfTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUoTlBWYXJpYW50KiB2YXJpYW50KQogewogICAgIEFTU0VSVCh2YXJpYW50KTsKIAogICAgIGlm
ICh2YXJpYW50LT50eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7Ci0gICAgICAgIE5QTl9S
ZWxlYXNlT2JqZWN0KHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlKTsKKyAgICAgICAgX05QTl9S
ZWxlYXNlT2JqZWN0KHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlKTsKICAgICAgICAgdmFyaWFu
dC0+dmFsdWUub2JqZWN0VmFsdWUgPSAwOwogICAgIH0gZWxzZSBpZiAodmFyaWFudC0+dHlwZSA9
PSBOUFZhcmlhbnRUeXBlX1N0cmluZykgewogICAgICAgICBmcmVlKCh2b2lkKil2YXJpYW50LT52
YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4Q2hhcmFjdGVycyk7CkBAIC0yNTQsNyArMjU1LDcgQEAgdm9p
ZCBOUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZShOUFZhcmlhbnQqIAogICAgIHZhcmlhbnQtPnR5cGUg
PSBOUFZhcmlhbnRUeXBlX1ZvaWQ7CiB9CiAKLU5QT2JqZWN0ICpOUE5fQ3JlYXRlT2JqZWN0KE5Q
UCBucHAsIE5QQ2xhc3MqIG5wQ2xhc3MpCitOUE9iamVjdCAqX05QTl9DcmVhdGVPYmplY3QoTlBQ
IG5wcCwgTlBDbGFzcyogbnBDbGFzcykKIHsKICAgICBBU1NFUlQobnBDbGFzcyk7CiAKQEAgLTI3
Myw3ICsyNzQsNyBAQCBOUE9iamVjdCAqTlBOX0NyZWF0ZU9iamVjdChOUFAgbnBwLCBOUENsCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLU5QT2JqZWN0KiBOUE5fUmV0YWluT2JqZWN0KE5QT2JqZWN0KiBu
cE9iamVjdCkKK05QT2JqZWN0KiBfTlBOX1JldGFpbk9iamVjdChOUE9iamVjdCogbnBPYmplY3Qp
CiB7CiAgICAgQVNTRVJUKG5wT2JqZWN0KTsKICAgICBBU1NFUlQobnBPYmplY3QtPnJlZmVyZW5j
ZUNvdW50ID4gMCk7CkBAIC0yODUsNyArMjg2LDcgQEAgTlBPYmplY3QqIE5QTl9SZXRhaW5PYmpl
Y3QoTlBPYmplY3QqIG5wTwogfQogCiAvLyBfTlBOX0RlYWxsb2NhdGVPYmplY3QgYWN0dWFsbHkg
ZGVsZXRlcyB0aGUgb2JqZWN0LiAgVGVjaG5pY2FsbHksCi0vLyBjYWxsZXJzIHNob3VsZCB1c2Ug
TlBOX1JlbGVhc2VPYmplY3QuICBXZWJraXQgZXhwb3NlcyB0aGlzIGZ1bmN0aW9uCisvLyBjYWxs
ZXJzIHNob3VsZCB1c2UgX05QTl9SZWxlYXNlT2JqZWN0LiAgV2Via2l0IGV4cG9zZXMgdGhpcyBm
dW5jdGlvbgogLy8gdG8ga2lsbCBvYmplY3RzIHdoaWNoIHBsdWdpbnMgbWF5IG5vdCBoYXZlIHBy
b3Blcmx5IHJlbGVhc2VkLgogdm9pZCBfTlBOX0RlYWxsb2NhdGVPYmplY3QoTlBPYmplY3QqIG5w
T2JqZWN0KQogewpAQCAtMzA4LDcgKzMwOSw3IEBAIHZvaWQgX05QTl9EZWFsbG9jYXRlT2JqZWN0
KE5QT2JqZWN0KiBucE8KICAgICB9CiB9CiAKLXZvaWQgTlBOX1JlbGVhc2VPYmplY3QoTlBPYmpl
Y3QqIG5wT2JqZWN0KQordm9pZCBfTlBOX1JlbGVhc2VPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0
KQogewogICAgIEFTU0VSVChucE9iamVjdCk7CiAgICAgQVNTRVJUKG5wT2JqZWN0LT5yZWZlcmVu
Y2VDb3VudCA+PSAxKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1lX2ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbXBsLmgJKHJl
dmlzaW9uIDQ2ODY4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWVfaW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwzNSBAQAogLy8gVGhpcyBmaWxlIGV4aXN0cyB0byBz
dXBwb3J0IFdlYkNvcmUsIHdoaWNoIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBjYWxsIHVwb24KIC8v
IHBvcnRpb25zIG9mIHRoZSBOUFJ1bnRpbWUgaW1wbGVtZW50YXRpb24uCiAKLS8vIEEgc2ltcGxl
IG1hcHBpbmcgZm9yIG5vdy4gIEZJWE1FIFdlIHNob3VsZCBwcm9iYWJseSBqdXN0IGFkb3B0IHRo
ZQotLy8gdW5kZXJzY29yZSBwcmVmaXggYXMgb3VyIG5hbWluZyBjb252ZW50aW9uIHRvby4KLSNk
ZWZpbmUgX05QTl9SZWxlYXNlT2JqZWN0IE5QTl9SZWxlYXNlT2JqZWN0CisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK05QSWRlbnRpZmllciBfTlBOX0dldFN0cmlu
Z0lkZW50aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKTsKK3ZvaWQgX05QTl9HZXRTdHJpbmdJZGVu
dGlmaWVycyhjb25zdCBOUFVURjgqKiBuYW1lcywgaW50MzJfdCBuYW1lQ291bnQsIE5QSWRlbnRp
ZmllciogaWRlbnRpZmllcnMpOworTlBJZGVudGlmaWVyIF9OUE5fR2V0SW50SWRlbnRpZmllcihp
bnQzMl90IGludElkKTsKK2Jvb2wgX05QTl9JZGVudGlmaWVySXNTdHJpbmcoTlBJZGVudGlmaWVy
IGlkZW50aWZpZXIpOworTlBVVEY4ICpfTlBOX1VURjhGcm9tSWRlbnRpZmllcihOUElkZW50aWZp
ZXIgaWRlbnRpZmllcik7CitpbnQzMl90IF9OUE5fSW50RnJvbUlkZW50aWZpZXIoTlBJZGVudGlm
aWVyIGlkZW50aWZpZXIpOwordm9pZCBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoTlBWYXJpYW50
KiB2YXJpYW50KTsKK05QT2JqZWN0ICpfTlBOX0NyZWF0ZU9iamVjdChOUFAgbnBwLCBOUENsYXNz
KiBucENsYXNzKTsKK05QT2JqZWN0KiBfTlBOX1JldGFpbk9iamVjdChOUE9iamVjdCogbnBPYmpl
Y3QpOwordm9pZCBfTlBOX1JlbGVhc2VPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KTsKK2Jvb2wg
X05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbWV0
aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKK2Jvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5QUCBucHAs
IE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90
IGFyZ3VtZW50Q291bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKK2Jvb2wgX05QTl9FdmFsdWF0ZShO
UFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIE5QU3RyaW5nKiBucFNjcmlwdCwgTlBWYXJpYW50
KiByZXN1bHQpOworYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBucHAsIGJvb2wgcG9wdXBz
QWxsb3dlZCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUFN0cmluZyogbnBTY3JpcHQsIE5QVmFyaWFu
dCogcmVzdWx0KTsKK2Jvb2wgX05QTl9HZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCogbnBP
YmplY3QsIE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5QVmFyaWFudCogcmVzdWx0KTsKK2Jv
b2wgX05QTl9TZXRQcm9wZXJ0eShOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIE5QSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIGNvbnN0IE5QVmFyaWFudCogdmFsdWUpOworYm9vbCBfTlBOX1Jl
bW92ZVByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSk7Citib29sIF9OUE5fSGFzUHJvcGVydHkoTlBQIG5wcCwgTlBPYmplY3QqIG5w
T2JqZWN0LCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKTsKK2Jvb2wgX05QTl9IYXNNZXRob2Qo
TlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSk7Cit2
b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgTlBVVEY4ICpt
ZXNzYWdlKTsKK2Jvb2wgX05QTl9FbnVtZXJhdGUoTlBQIG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0
LCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQpOworYm9vbCBfTlBO
X0NvbnN0cnVjdChOUFAgbnBwLCBOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IE5QVmFyaWFudCog
YXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfSAgLyogZW5kIGV4dGVybiAiQyIgKi8KKyNlbmRpZgogCiAj
ZW5kaWY=
</data>
<flag name="review"
          id="18523"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>