<?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>159321</bug_id>
          
          <creation_ts>2016-06-30 16:01:30 -0700</creation_ts>
          <short_desc>Update JSC_functionOverrides to handle the new SourceCode strings that have params.</short_desc>
          <delta_ts>2016-07-01 09:39:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1206917</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-30 16:01:30 -0700</bug_when>
    <thetext>And add tests so that this won&apos;t fail silently and bit rot anymore.  Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206922</commentid>
    <comment_count>1</comment_count>
      <attachid>282487</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-30 16:07:06 -0700</bug_when>
    <thetext>Created attachment 282487
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206952</commentid>
    <comment_count>2</comment_count>
      <attachid>282498</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-30 17:58:35 -0700</bug_when>
    <thetext>Created attachment 282498
proposed patch 2: fixed EWS complaint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207142</commentid>
    <comment_count>3</comment_count>
      <attachid>282498</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-01 09:24:57 -0700</bug_when>
    <thetext>Comment on attachment 282498
proposed patch 2: fixed EWS complaint.

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

&gt; Source/JavaScriptCore/tools/FunctionOverrides.cpp:153
&gt; +    String sourceString = origCode.view().toString();
&gt; +    size_t sourceBodyStart = sourceString.find(&apos;{&apos;);
&gt; +    if (sourceBodyStart == notFound)
&gt; +        return false;
&gt; +    String sourceBodyString = sourceString.substring(sourceBodyStart);
&gt; +
&gt; +    auto it = overrides.m_entries.find(sourceBodyString);

This is OK -- but I think it might be better to allow the author to override parameter declaration too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207147</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-01 09:32:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 282498 [details]
&gt; proposed patch 2: fixed EWS complaint.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282498&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/tools/FunctionOverrides.cpp:153
&gt; &gt; +    String sourceString = origCode.view().toString();
&gt; &gt; +    size_t sourceBodyStart = sourceString.find(&apos;{&apos;);
&gt; &gt; +    if (sourceBodyStart == notFound)
&gt; &gt; +        return false;
&gt; &gt; +    String sourceBodyString = sourceString.substring(sourceBodyStart);
&gt; &gt; +
&gt; &gt; +    auto it = overrides.m_entries.find(sourceBodyString);
&gt; 
&gt; This is OK -- but I think it might be better to allow the author to override
&gt; parameter declaration too.

I&apos;ll leave overriding parameters to another patch.  As far as I can tell, the uses of overriding parameters are:

1. Ability to use different argument names for better readability (especially if we&apos;re replacing an obfuscated function).
2. Ability to force stack arity adjustments.

I think (2) is the more meaningful reason for overriding parameters, but the need for that is probably rare.  I filed https://bugs.webkit.org/show_bug.cgi?id=159355 to track this for future work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207156</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-01 09:39:32 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r202737: &lt;http://trac.webkit.org/r202737&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282487</attachid>
            <date>2016-06-30 16:07:06 -0700</date>
            <delta_ts>2016-06-30 17:58:35 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-159321.patch</filename>
            <type>text/plain</type>
            <size>19152</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNzE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTA2LTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzIHRvIGhhbmRsZSB0aGUgbmV3IFNvdXJjZUNvZGUg
c3RyaW5ncyB0aGF0IGhhdmUgcGFyYW1zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQW5kIGFkZCB0ZXN0cyBzbyB0aGF0IHRoaXMgd29uJ3QgZmFpbCBz
aWxlbnRseSBhbmQgYml0IHJvdCBhbnltb3JlLgorCisgICAgICAgICogQVBJL3Rlc3RzL0Z1bmN0
aW9uT3ZlcnJpZGVzVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEZ1bmN0aW9uT3ZlcnJp
ZGVzKToKKyAgICAgICAgKiBBUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0Lmg6IEFkZGVk
LgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qczogQWRk
ZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayk6CisgICAgICAgICogc2hlbGwvUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6RnVuY3Rpb25PdmVycmlkZXMpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6cmVpbnN0YWxsT3ZlcnJpZGVzKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
T3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVGb3IpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpjbGVhcik6
CisKIDIwMTYtMDYtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIGFycmF5UHJvdG9GdW5jUmV2ZXJzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9GdW5jdGlvbk92ZXJyaWRlc1Rlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRnVuY3Rp
b25PdmVycmlkZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVz
LmgiCisjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkpTQ29udGV4
dFJlZlByaXZhdGUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5oIgorI2luY2x1ZGUgIk9w
dGlvbnMuaCIKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorCit1c2luZyBKU0M6Ok9wdGlvbnM7CisKK2ludCB0ZXN0RnVuY3Rpb25PdmVycmlk
ZXMoKQoreworICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CisKKyAgICBKU0M6OmluaXRpYWxpemVU
aHJlYWRpbmcoKTsKKyAgICBPcHRpb25zOjppbml0aWFsaXplKCk7IC8vIEVuc3VyZSBvcHRpb25z
IGlzIGluaXRpYWxpemVkIGZpcnN0LgorCisgICAgY29uc3QgY2hhciogb2xkRnVuY3Rpb25PdmVy
cmlkZXMgPSBPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpOworICAgIAorICAgIE9wdGlvbnM6
OmZ1bmN0aW9uT3ZlcnJpZGVzKCkgPSAidGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMiOwor
ICAgIEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OnJlaW5zdGFsbE92ZXJyaWRlcygpOworCisgICAg
SlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3Vw
KG51bGxwdHIsIG51bGxwdHIpOworCisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICBjb25zdCBjaGFyKiBzY3JpcHRTdHJp
bmcgPQorICAgICAgICAidmFyIHN0ciA9ICcnOyIgIlxuIgorICAgICAgICAiZnVuY3Rpb24gZjEo
KSB7IC8qIE9yaWdpbmFsIGYxICovIH0iICJcbiIKKyAgICAgICAgInN0ciArPSBmMSArICdcXG4n
OyIgIlxuIgorICAgICAgICAidmFyIGYyID0gZnVuY3Rpb24oKSB7IiAiXG4iCisgICAgICAgICIg
ICAgLy8gT3JpZ2luYWwgZjIiICJcbiIKKyAgICAgICAgIn0iICJcbiIKKyAgICAgICAgInN0ciAr
PSBmMiArICdcXG4nOyIgIlxuIgorICAgICAgICAic3RyICs9IChmdW5jdGlvbigpIHsgLyogT3Jp
Z2luYWwgZjMgKi8gfSkgKyAnXFxuJzsiICJcbiIKKyAgICAgICAgInZhciBmNFNvdXJjZSA9ICcv
KiBPcmlnaW5hbCBmNCAqLyciICJcbiIKKyAgICAgICAgInZhciBmNCA9ICBuZXcgRnVuY3Rpb24o
ZjRTb3VyY2UpOyIgIlxuIgorICAgICAgICAic3RyICs9IGY0ICsgJ1xcbic7IiAiXG4iCisgICAg
ICAgICJcbiIKKyAgICAgICAgInZhciBleHBlY3RlZFN0ciA9IiAiXG4iCisgICAgICAgICInZnVu
Y3Rpb24gZjEoKSB7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfVxcbiIKKyAgICAgICAgImZ1bmN0aW9u
ICgpIHsgLyogT3ZlcnJpZGRlbiBmMiAqLyB9XFxuIgorICAgICAgICAiZnVuY3Rpb24gKCkgeyAv
KiBPdmVycmlkZGVuIGYzICovIH1cXG4iCisgICAgICAgICJmdW5jdGlvbiBhbm9ueW1vdXMoKSB7
IC8qIE92ZXJyaWRkZW4gZjQgKi8gfVxcbic7IgorICAgICAgICAidmFyIHJlc3VsdCA9IChzdHIg
PT0gZXhwZWN0ZWRTdHIpOyIgIlxuIgorICAgICAgICAicmVzdWx0IjsKKworICAgIEpTU3RyaW5n
UmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdFN0cmluZyk7
CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOworICAgIEpTVmFsdWVSZWYgcmVz
dWx0UmVmID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG51bGxwdHIsIG51bGxw
dHIsIDEsICZleGNlcHRpb24pOworCisgICAgaWYgKCFKU1ZhbHVlSXNCb29sZWFuKGNvbnRleHQs
IHJlc3VsdFJlZikgfHwgIUpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgcmVzdWx0UmVmKSkKKyAg
ICAgICAgZmFpbGVkID0gdHJ1ZTsKKworICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4
dCk7CisgICAgCisgICAgSlNDOjpPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpID0gb2xkRnVu
Y3Rpb25PdmVycmlkZXM7CisgICAgSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6cmVpbnN0YWxsT3Zl
cnJpZGVzKCk7CisKKyAgICBwcmludGYoIiVzOiBmdW5jdGlvbiBvdmVycmlkZSB0ZXN0cy5cbiIs
IGZhaWxlZCA/ICJGQUlMIiA6ICJQQVNTIik7CisKKyAgICByZXR1cm4gZmFpbGVkOworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9GdW5jdGlvbk92ZXJyaWRlc1Rlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0Z1bmN0aW9u
T3ZlcnJpZGVzVGVzdC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFJldHVybnMgMSBpZiBmYWlsdXJlcyB3ZXJlIGVu
Y291bnRlcmVkLiAgRWxzZSwgcmV0dXJucyAwLiAqLworaW50IHRlc3RGdW5jdGlvbk92ZXJyaWRl
cygpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLyogZXh0ZXJuICJDIiAqLworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3Zl
cnJpZGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvLyB0ZXN0YXBpIGZ1bmN0aW9uIG92ZXJyaWRl
cyBmb3IgdGVzdGluZy4KK292ZXJyaWRlICUlJXsgLyogT3JpZ2luYWwgZjEgKi8gfSUlJQord2l0
aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfSUlJQorCitvdmVycmlkZSAjJCV7CisgICAgLy8g
T3JpZ2luYWwgZjIKK30jJCUKK3dpdGggJCQkeyAvKiBPdmVycmlkZGVuIGYyICovIH0kJCQKKwor
b3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMyAqLyB9JSUlCit3aXRoICUlJXsgLyogT3ZlcnJp
ZGRlbiBmMyAqLyB9JSUlCisKK292ZXJyaWRlICUlJXsKKy8qIE9yaWdpbmFsIGY0ICovCit9JSUl
Cit3aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmNCAqLyB9JSUlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gMjAyNjk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJDb21wYXJlQW5kU3dhcFRlc3QuaCIKICNpbmNsdWRlICJD
dXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKICNpbmNsdWRlICJFeGVjdXRpb25UaW1lTGlt
aXRUZXN0LmgiCisjaW5jbHVkZSAiRnVuY3Rpb25PdmVycmlkZXNUZXN0LmgiCiAjaW5jbHVkZSAi
R2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmgiCiAjaW5jbHVkZSAiUGluZ1BvbmdTdGFj
a092ZXJmbG93VGVzdC5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDVGVzdC5oIgpAQCAtMTg4NSw2
ICsxODg2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIAogICAgIGZhaWxl
ZCA9IHRlc3RUeXBlZEFycmF5Q0FQSSgpIHx8IGZhaWxlZDsKICAgICBmYWlsZWQgPSB0ZXN0RXhl
Y3V0aW9uVGltZUxpbWl0KCkgfHwgZmFpbGVkOworICAgIGZhaWxlZCA9IHRlc3RGdW5jdGlvbk92
ZXJyaWRlcygpIHx8IGZhaWxlZDsKICAgICBmYWlsZWQgPSB0ZXN0R2xvYmFsQ29udGV4dFdpdGhG
aW5hbGl6ZXIoKSB8fCBmYWlsZWQ7CiAgICAgZmFpbGVkID0gdGVzdFBpbmdQb25nU3RhY2tPdmVy
ZmxvdygpIHx8IGZhaWxlZDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIwMjY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMTA2LDYgKzIxMDYs
OCBAQAogCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2
ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNDE4N0I4QjE2
MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuY3BwICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyog
RXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3Bl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVD
QjhCMjcxRDI1QkI4NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUNCOEIyNTFEMjVCQjZF
MDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcCAqLzsgfTsKKwkJRkVDQjhCMkEx
RDI1Q0I1QTAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGluIENvcHkg
U3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDQjhC
MjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovOyB9
OwogCQlGRUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDI4N0IxMTVFQzlBNTcwMERB
ODE2MSAvKiBMTEludE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQjE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9OwogCQlGRUQ5NEYyRjE3MUUzRTIz
MDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjM0LDYgKzIy
MzYsNyBAQAogCQkJZHN0UGF0aCA9ICIiOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OwogCQkJ
ZmlsZXMgPSAoCisJCQkJRkVDQjhCMkExRDI1Q0I1QTAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rp
b24tb3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8sCiAJCQkJNURCQjE1MUIx
MzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLywK
IAkJCSk7CiAJCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3JpcHQiOwpAQCAtNDM2OCw2ICs0Mzcx
LDkgQEAKIAkJRkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBSZWdyZXNzMTQxODA5Lm1tOyBw
YXRoID0gQVBJL3Rlc3RzL1JlZ3Jlc3MxNDE4MDkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Njb3Bl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMxODdCOEIxNjAwOThF
RjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkVDQjhCMjUxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGdW5jdGlvbk92ZXJyaWRlc1Rlc3Qu
Y3BwOyBwYXRoID0gQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQ0I4QjI2MUQyNUJCNkUwMDZGMjQ2MyAvKiBGdW5jdGlv
bk92ZXJyaWRlc1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnVuY3Rp
b25PdmVycmlkZXNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQ0I4QjI5MUQyNUNBQkIwMDZGMjQ2
MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgbmFtZSA9ICJ0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyI7IHBhdGgg
PSAiQVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T3Bjb2RlLmg7IHBhdGgg
PSBsbGludC9MTEludE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQ5
NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ5NTMsNiArNDk1OSw4IEBACiAJCQkJQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8q
IERhdGVUZXN0cy5tbSAqLywKIAkJCQlGRTBENEEwNDFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0
aW9uVGltZUxpbWl0VGVzdC5jcHAgKi8sCiAJCQkJRkUwRDRBMDUxQUI4REQwQTAwMkY1NEJGIC8q
IEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCAqLywKKwkJCQlGRUNCOEIyNTFEMjVCQjZFMDA2RjI0
NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcCAqLywKKwkJCQlGRUNCOEIyNjFEMjVCQjZF
MDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmggKi8sCiAJCQkJRkUwRDRBMDcxQUJB
MjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5jcHAgKi8sCiAJ
CQkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVy
VGVzdC5oICovLAogCQkJCUMyMTgxRkMwMThBOTQ4RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3Rz
LmggKi8sCkBAIC00OTY2LDYgKzQ5NzQsNyBAQAogCQkJCUZFQjUxRjZCMUE5N0I2ODgwMDFGOTIx
QyAvKiBSZWdyZXNzMTQxODA5Lm1tICovLAogCQkJCTE0QkQ1QTJEMEEzRTkxRjYwMEJBRjU5QyAv
KiB0ZXN0YXBpLmMgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGku
anMgKi8sCisJCQkJRkVDQjhCMjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24t
b3ZlcnJpZGVzLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBp
Lm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAq
LywKIAkJCSk7CkBAIC04NjE3LDYgKzg2MjYsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBD
b21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVDQjhCMjcxRDI1QkI4
NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjAzMjgyMDE5ODE5NzlEMDA4OEI0OTkgLyog
Q3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgaW4gU291cmNlcyAqLywKIAkJCQlDMjg4QjJE
RTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwMjY5NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2Vk
RnVuY3Rpb25FeGVjCiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZnVuY3Rpb25PdmVycmlk
ZXMoKSkpIHsKICAgICAgICAgaGFzRnVuY3Rpb25PdmVycmlkZSA9IEZ1bmN0aW9uT3ZlcnJpZGVz
Ojppbml0aWFsaXplT3ZlcnJpZGVGb3IoY29kZSwgb3ZlcnJpZGVJbmZvKTsKLSAgICAgICAgaWYg
KGhhc0Z1bmN0aW9uT3ZlcnJpZGUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGhhc0Z1bmN0aW9u
T3ZlcnJpZGUpKSB7CiAgICAgICAgICAgICBmaXJzdExpbmUgPSBvdmVycmlkZUluZm8uZmlyc3RM
aW5lOwogICAgICAgICAgICAgbGluZUNvdW50ID0gb3ZlcnJpZGVJbmZvLmxpbmVDb3VudDsKICAg
ICAgICAgICAgIHN0YXJ0Q29sdW1uID0gb3ZlcnJpZGVJbmZvLnN0YXJ0Q29sdW1uOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9QbGF0Zm9ybVdpbi5jbWFrZQkocmV2aXNp
b24gMjAyNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL1BsYXRmb3JtV2luLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBAIGFkZF9saWJyYXJ5KHRlc3RhcGlM
aWIgU0hBUkVECiAgICAgLi4vQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHAKICAgICAu
Li9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMKICAgICAuLi9BUEkvdGVz
dHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKKyAgICAuLi9BUEkvdGVzdHMvRnVuY3Rpb25P
dmVycmlkZXNUZXN0LmNwcAogICAgIC4uL0FQSS90ZXN0cy9HbG9iYWxDb250ZXh0V2l0aEZpbmFs
aXplclRlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3Qu
Y3BwCiAgICAgLi4vQVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAtNDcsMyArNDgsOCBAQCBmaWxlKENP
UFkKICAgICBERVNUSU5BVElPTgogICAgICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
fQogKQorZmlsZShDT1BZCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkvdGVzdHMvdGVz
dGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMiCisgICAgREVTVElOQVRJT04KKyAgICAke0NNQUtF
X1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0KKykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAkocmV2aXNpb24gMjAyNjk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMDQsMTEgKzEwNCwyMCBAQCBGdW5jdGlvbk92ZXJyaWRlczo6RnVuY3Rpb25P
dmVycmlkZXMoY29uCiAgICAgcGFyc2VPdmVycmlkZXNJbkZpbGUob3ZlcnJpZGVzRmlsZU5hbWUp
OwogfQogCit2b2lkIEZ1bmN0aW9uT3ZlcnJpZGVzOjpyZWluc3RhbGxPdmVycmlkZXMoKQorewor
ICAgIEZ1bmN0aW9uT3ZlcnJpZGVzJiBvdmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3Zl
cnJpZGVzKCk7CisgICAgY29uc3QgY2hhciogb3ZlcnJpZGVzRmlsZU5hbWUgPSBPcHRpb25zOjpm
dW5jdGlvbk92ZXJyaWRlcygpOworICAgIG92ZXJyaWRlcy5jbGVhcigpOworICAgIG92ZXJyaWRl
cy5wYXJzZU92ZXJyaWRlc0luRmlsZShvdmVycmlkZXNGaWxlTmFtZSk7Cit9CisKIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUsIGNv
bnN0IFN0cmluZyYgbmV3Qm9keSwgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5mbyYgaW5m
bykKIHsKICAgICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0gb3JpZ0NvZGUucHJvdmlkZXIoKS0+
c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdD
b2RlLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmln
UHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ0JyYWNlU3RhcnQpOworICAg
IHVuc2lnbmVkIG9yaWdTdGFydCA9IG9yaWdDb2RlLnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWdu
ZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0
aW9uIiwgb3JpZ1N0YXJ0KTsKKyAgICB1bnNpZ25lZCBvcmlnQnJhY2VTdGFydCA9IG9yaWdQcm92
aWRlclN0ci5maW5kKCJ7Iiwgb3JpZ1N0YXJ0KTsKICAgICB1bnNpZ25lZCBoZWFkZXJMZW5ndGgg
PSBvcmlnQnJhY2VTdGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0OwogICAgIFN0cmluZyBvcmlnSGVh
ZGVyID0gb3JpZ1Byb3ZpZGVyU3RyLnN1YnN0cmluZyhvcmlnRnVuY3Rpb25TdGFydCwgaGVhZGVy
TGVuZ3RoKTsKIApAQCAtMTI3LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVy
cmlkZUluZm8oY29uc3QKICAgICBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBuZXdQcm92
aWRlclN0ci5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNvdXJjZUNvZGUgPQotICAgICAgICBT
b3VyY2VDb2RlKFdURk1vdmUobmV3UHJvdmlkZXIpLCBpbmZvLnR5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ICsgMSwgMSwgMSk7CisgICAgICAgIFNv
dXJjZUNvZGUoV1RGTW92ZShuZXdQcm92aWRlciksIGluZm8ucGFyYW1ldGVyc1N0YXJ0T2Zmc2V0
LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgKyAxLCAxLCAxKTsKIH0KICAgICAKIGJvb2wg
RnVuY3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlkZUZvcihjb25zdCBTb3VyY2VDb2Rl
JiBvcmlnQ29kZSwgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5mbyYgcmVzdWx0KQpAQCAt
MTM1LDcgKzE0NCwxMyBAQCBib29sIEZ1bmN0aW9uT3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJp
CiAgICAgQVNTRVJUKE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJpZGVzKCkpOwogICAgIEZ1bmN0aW9u
T3ZlcnJpZGVzJiBvdmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CiAK
LSAgICBhdXRvIGl0ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5maW5kKG9yaWdDb2RlLnZpZXcoKS50
b1N0cmluZygpKTsKKyAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gb3JpZ0NvZGUudmlldygpLnRv
U3RyaW5nKCk7CisgICAgc2l6ZV90IHNvdXJjZUJvZHlTdGFydCA9IHNvdXJjZVN0cmluZy5maW5k
KCd7Jyk7CisgICAgaWYgKHNvdXJjZUJvZHlTdGFydCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIFN0cmluZyBzb3VyY2VCb2R5U3RyaW5nID0gc291cmNlU3RyaW5nLnN1
YnN0cmluZyhzb3VyY2VCb2R5U3RhcnQpOworCisgICAgYXV0byBpdCA9IG92ZXJyaWRlcy5tX2Vu
dHJpZXMuZmluZChzb3VyY2VCb2R5U3RyaW5nKTsKICAgICBpZiAoaXQgPT0gb3ZlcnJpZGVzLm1f
ZW50cmllcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuaAkocmV2aXNpb24gMjAy
Njk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTMsOCArNTMsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBPdmVycmlk
ZUluZm8mIHJlc3VsdCk7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWlu
c3RhbGxPdmVycmlkZXMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlT3ZlcnJpZGVzSW5G
aWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1lKTsKKyAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMu
Y2xlYXIoKTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9lbnRyaWVzOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282498</attachid>
            <date>2016-06-30 17:58:35 -0700</date>
            <delta_ts>2016-07-01 09:24:57 -0700</delta_ts>
            <desc>proposed patch 2: fixed EWS complaint.</desc>
            <filename>bug-159321.patch</filename>
            <type>text/plain</type>
            <size>19173</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNzE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE2LTA2LTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgSlNDX2Z1bmN0aW9uT3ZlcnJpZGVzIHRvIGhhbmRsZSB0aGUgbmV3IFNvdXJjZUNvZGUg
c3RyaW5ncyB0aGF0IGhhdmUgcGFyYW1zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQW5kIGFkZCB0ZXN0cyBzbyB0aGF0IHRoaXMgd29uJ3QgZmFpbCBz
aWxlbnRseSBhbmQgYml0IHJvdCBhbnltb3JlLgorCisgICAgICAgICogQVBJL3Rlc3RzL0Z1bmN0
aW9uT3ZlcnJpZGVzVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAodGVzdEZ1bmN0aW9uT3ZlcnJp
ZGVzKToKKyAgICAgICAgKiBBUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0Lmg6IEFkZGVk
LgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qczogQWRk
ZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayk6CisgICAgICAgICogc2hlbGwvUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgICogdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6RnVuY3Rpb25PdmVycmlkZXMpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6cmVpbnN0YWxsT3ZlcnJpZGVzKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
T3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVGb3IpOgorICAgICAgICAqIHRvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpjbGVhcik6
CisKIDIwMTYtMDYtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIGFycmF5UHJvdG9GdW5jUmV2ZXJzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9GdW5jdGlvbk92ZXJyaWRlc1Rlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRnVuY3Rp
b25PdmVycmlkZXNUZXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuaCIKKworI2luY2x1ZGUgIkZ1bmN0aW9uT3ZlcnJpZGVz
LmgiCisjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkpTQ29udGV4
dFJlZlByaXZhdGUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q29yZS5oIgorI2luY2x1ZGUgIk9w
dGlvbnMuaCIKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorCit1c2luZyBKU0M6Ok9wdGlvbnM7CisKK2ludCB0ZXN0RnVuY3Rpb25PdmVycmlk
ZXMoKQoreworICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7CisKKyAgICBKU0M6OmluaXRpYWxpemVU
aHJlYWRpbmcoKTsKKyAgICBPcHRpb25zOjppbml0aWFsaXplKCk7IC8vIEVuc3VyZSBvcHRpb25z
IGlzIGluaXRpYWxpemVkIGZpcnN0LgorCisgICAgY29uc3QgY2hhciogb2xkRnVuY3Rpb25PdmVy
cmlkZXMgPSBPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpOworICAgIAorICAgIE9wdGlvbnM6
OmZ1bmN0aW9uT3ZlcnJpZGVzKCkgPSAidGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMiOwor
ICAgIEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OnJlaW5zdGFsbE92ZXJyaWRlcygpOworCisgICAg
SlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3Vw
KG51bGxwdHIsIG51bGxwdHIpOworCisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlND
b250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICBj
b25zdCBjaGFyKiBzY3JpcHRTdHJpbmcgPQorICAgICAgICAidmFyIHN0ciA9ICcnOyIgIlxuIgor
ICAgICAgICAiZnVuY3Rpb24gZjEoKSB7IC8qIE9yaWdpbmFsIGYxICovIH0iICJcbiIKKyAgICAg
ICAgInN0ciArPSBmMSArICdcXG4nOyIgIlxuIgorICAgICAgICAidmFyIGYyID0gZnVuY3Rpb24o
KSB7IiAiXG4iCisgICAgICAgICIgICAgLy8gT3JpZ2luYWwgZjIiICJcbiIKKyAgICAgICAgIn0i
ICJcbiIKKyAgICAgICAgInN0ciArPSBmMiArICdcXG4nOyIgIlxuIgorICAgICAgICAic3RyICs9
IChmdW5jdGlvbigpIHsgLyogT3JpZ2luYWwgZjMgKi8gfSkgKyAnXFxuJzsiICJcbiIKKyAgICAg
ICAgInZhciBmNFNvdXJjZSA9ICcvKiBPcmlnaW5hbCBmNCAqLyciICJcbiIKKyAgICAgICAgInZh
ciBmNCA9ICBuZXcgRnVuY3Rpb24oZjRTb3VyY2UpOyIgIlxuIgorICAgICAgICAic3RyICs9IGY0
ICsgJ1xcbic7IiAiXG4iCisgICAgICAgICJcbiIKKyAgICAgICAgInZhciBleHBlY3RlZFN0ciA9
IiAiXG4iCisgICAgICAgICInZnVuY3Rpb24gZjEoKSB7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfVxc
biIKKyAgICAgICAgImZ1bmN0aW9uICgpIHsgLyogT3ZlcnJpZGRlbiBmMiAqLyB9XFxuIgorICAg
ICAgICAiZnVuY3Rpb24gKCkgeyAvKiBPdmVycmlkZGVuIGYzICovIH1cXG4iCisgICAgICAgICJm
dW5jdGlvbiBhbm9ueW1vdXMoKSB7IC8qIE92ZXJyaWRkZW4gZjQgKi8gfVxcbic7IgorICAgICAg
ICAidmFyIHJlc3VsdCA9IChzdHIgPT0gZXhwZWN0ZWRTdHIpOyIgIlxuIgorICAgICAgICAicmVz
dWx0IjsKKworICAgIEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHNjcmlwdFN0cmluZyk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgIEpTVmFsdWVSZWYgcmVzdWx0UmVmID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBz
Y3JpcHQsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb24pOworCisgICAgaWYgKCFKU1Zh
bHVlSXNCb29sZWFuKGNvbnRleHQsIHJlc3VsdFJlZikgfHwgIUpTVmFsdWVUb0Jvb2xlYW4oY29u
dGV4dCwgcmVzdWx0UmVmKSkKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKworICAgIEpTR2xvYmFs
Q29udGV4dFJlbGVhc2UoY29udGV4dCk7CisgICAgCisgICAgSlNDOjpPcHRpb25zOjpmdW5jdGlv
bk92ZXJyaWRlcygpID0gb2xkRnVuY3Rpb25PdmVycmlkZXM7CisgICAgSlNDOjpGdW5jdGlvbk92
ZXJyaWRlczo6cmVpbnN0YWxsT3ZlcnJpZGVzKCk7CisKKyAgICBwcmludGYoIiVzOiBmdW5jdGlv
biBvdmVycmlkZSB0ZXN0cy5cbiIsIGZhaWxlZCA/ICJGQUlMIiA6ICJQQVNTIik7CisKKyAgICBy
ZXR1cm4gZmFpbGVkOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9G
dW5jdGlvbk92ZXJyaWRlc1Rlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJpZGVzVGVzdC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFJldHVybnMg
MSBpZiBmYWlsdXJlcyB3ZXJlIGVuY291bnRlcmVkLiAgRWxzZSwgcmV0dXJucyAwLiAqLworaW50
IHRlc3RGdW5jdGlvbk92ZXJyaWRlcygpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLyogZXh0
ZXJuICJDIiAqLworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLWZ1bmN0
aW9uLW92ZXJyaWRlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvLyB0ZXN0
YXBpIGZ1bmN0aW9uIG92ZXJyaWRlcyBmb3IgdGVzdGluZy4KK292ZXJyaWRlICUlJXsgLyogT3Jp
Z2luYWwgZjEgKi8gfSUlJQord2l0aCAlJSV7IC8qIE92ZXJyaWRkZW4gZjEgKi8gfSUlJQorCitv
dmVycmlkZSAjJCV7CisgICAgLy8gT3JpZ2luYWwgZjIKK30jJCUKK3dpdGggJCQkeyAvKiBPdmVy
cmlkZGVuIGYyICovIH0kJCQKKworb3ZlcnJpZGUgJSUleyAvKiBPcmlnaW5hbCBmMyAqLyB9JSUl
Cit3aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmMyAqLyB9JSUlCisKK292ZXJyaWRlICUlJXsKKy8q
IE9yaWdpbmFsIGY0ICovCit9JSUlCit3aXRoICUlJXsgLyogT3ZlcnJpZGRlbiBmNCAqLyB9JSUl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNp
b24gMjAyNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDb21wYXJlQW5kU3dh
cFRlc3QuaCIKICNpbmNsdWRlICJDdXN0b21HbG9iYWxPYmplY3RDbGFzc1Rlc3QuaCIKICNpbmNs
dWRlICJFeGVjdXRpb25UaW1lTGltaXRUZXN0LmgiCisjaW5jbHVkZSAiRnVuY3Rpb25PdmVycmlk
ZXNUZXN0LmgiCiAjaW5jbHVkZSAiR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmgiCiAj
aW5jbHVkZSAiUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5oIgogI2luY2x1ZGUgIlR5cGVkQXJy
YXlDVGVzdC5oIgpAQCAtMTg4NSw2ICsxODg2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkKIAogICAgIGZhaWxlZCA9IHRlc3RUeXBlZEFycmF5Q0FQSSgpIHx8IGZhaWxlZDsK
ICAgICBmYWlsZWQgPSB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkgfHwgZmFpbGVkOworICAgIGZh
aWxlZCA9IHRlc3RGdW5jdGlvbk92ZXJyaWRlcygpIHx8IGZhaWxlZDsKICAgICBmYWlsZWQgPSB0
ZXN0R2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXIoKSB8fCBmYWlsZWQ7CiAgICAgZmFpbGVkID0g
dGVzdFBpbmdQb25nU3RhY2tPdmVyZmxvdygpIHx8IGZhaWxlZDsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMjY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTA2LDYgKzIxMDYsOCBAQAogCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyog
UmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovOyB9
OwogCQlGRUI1OEMxNDE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEyMTg3
QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwICovOyB9OwogCQlGRUI1OEMx
NTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIg
LyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRkVDQjhCMjcxRDI1QkI4NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3Zl
cnJpZGVzVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUNCOEIyNTFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNw
cCAqLzsgfTsKKwkJRkVDQjhCMkExRDI1Q0I1QTAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rpb24t
b3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDQjhCMjkxRDI1Q0FCQjAwNkYyNDYzIC8qIHRlc3RhcGktZnVuY3Rp
b24tb3ZlcnJpZGVzLmpzICovOyB9OwogCQlGRUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJ
bnRPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFRDI4N0IxMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9
OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdB
NCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yMjM0LDYgKzIyMzYsNyBAQAogCQkJZHN0UGF0aCA9ICIiOwogCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDE2OwogCQkJZmlsZXMgPSAoCisJCQkJRkVDQjhCMkExRDI1Q0I1QTAwNkYy
NDYzIC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzIGluIENvcHkgU3VwcG9ydCBTY3Jp
cHQgKi8sCiAJCQkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29w
eSBTdXBwb3J0IFNjcmlwdCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkNvcHkgU3VwcG9ydCBTY3Jp
cHQiOwpAQCAtNDM2OCw2ICs0MzcxLDkgQEAKIAkJRkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8q
IFJlZ3Jlc3MxNDE4MDkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBSZWdyZXNzMTQxODA5Lm1tOyBwYXRoID0gQVBJL3Rlc3RzL1JlZ3Jlc3MxNDE4MDkubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBF
cnJvckhhbmRsaW5nU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXJyb3JIYW5kbGluZ1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDQjhCMjUxRDI1QkI2RTAwNkYyNDYzIC8qIEZ1bmN0aW9u
T3ZlcnJpZGVzVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBG
dW5jdGlvbk92ZXJyaWRlc1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL0Z1bmN0aW9uT3ZlcnJp
ZGVzVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQ0I4QjI2MUQyNUJC
NkUwMDZGMjQ2MyAvKiBGdW5jdGlvbk92ZXJyaWRlc1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRnVuY3Rpb25PdmVycmlkZXNUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMv
RnVuY3Rpb25PdmVycmlkZXNUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
Q0I4QjI5MUQyNUNBQkIwMDZGMjQ2MyAvKiB0ZXN0YXBpLWZ1bmN0aW9uLW92ZXJyaWRlcy5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9ICJ0ZXN0YXBpLWZ1bmN0aW9u
LW92ZXJyaWRlcy5qcyI7IHBhdGggPSAiQVBJL3Rlc3RzL3Rlc3RhcGktZnVuY3Rpb24tb3ZlcnJp
ZGVzLmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEMjg3QjExNUVDOUE1NzAw
REE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50T3Bjb2RlLmg7IHBhdGggPSBsbGludC9MTEludE9wY29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2F0Y2hkb2cuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5NTMsNiArNDk1OSw4IEBACiAJCQkJQzI4OEIy
REQxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSAqLywKIAkJCQlGRTBENEEwNDFBQjhE
RDBBMDAyRjU0QkYgLyogRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAgKi8sCiAJCQkJRkUwRDRB
MDUxQUI4REQwQTAwMkY1NEJGIC8qIEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuaCAqLywKKwkJCQlG
RUNCOEIyNTFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcCAqLywK
KwkJCQlGRUNCOEIyNjFEMjVCQjZFMDA2RjI0NjMgLyogRnVuY3Rpb25PdmVycmlkZXNUZXN0Lmgg
Ki8sCiAJCQkJRkUwRDRBMDcxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmlu
YWxpemVyVGVzdC5jcHAgKi8sCiAJCQkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2Jh
bENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5oICovLAogCQkJCUMyMTgxRkMwMThBOTQ4RkIwMDI1
QTIzNSAvKiBKU0V4cG9ydFRlc3RzLmggKi8sCkBAIC00OTY2LDYgKzQ5NzQsNyBAQAogCQkJCUZF
QjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovLAogCQkJCTE0QkQ1
QTJEMEEzRTkxRjYwMEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8sCiAJCQkJMTREODU3NzQwQTQ2OTZD
ODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCisJCQkJRkVDQjhCMjkxRDI1Q0FCQjAwNkYyNDYz
IC8qIHRlc3RhcGktZnVuY3Rpb24tb3ZlcnJpZGVzLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5
NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAx
RCAvKiB0ZXN0UmVnRXhwLmNwcCAqLywKIAkJCSk7CkBAIC04NjE3LDYgKzg2MjYsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUZFRjA0MDUx
MUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRkVDQjhCMjcxRDI1QkI4NTAwNkYyNDYzIC8qIEZ1bmN0aW9uT3ZlcnJpZGVzVGVzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVu
dFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMjAzMjgy
MDE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgaW4gU291
cmNlcyAqLywKIAkJCQlDMjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIw
MjY5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjCiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZnVuY3Rpb25PdmVycmlkZXMoKSkpIHsKICAgICAgICAgaGFzRnVuY3Rpb25PdmVycmlk
ZSA9IEZ1bmN0aW9uT3ZlcnJpZGVzOjppbml0aWFsaXplT3ZlcnJpZGVGb3IoY29kZSwgb3ZlcnJp
ZGVJbmZvKTsKLSAgICAgICAgaWYgKGhhc0Z1bmN0aW9uT3ZlcnJpZGUpIHsKKyAgICAgICAgaWYg
KFVOTElLRUxZKGhhc0Z1bmN0aW9uT3ZlcnJpZGUpKSB7CiAgICAgICAgICAgICBmaXJzdExpbmUg
PSBvdmVycmlkZUluZm8uZmlyc3RMaW5lOwogICAgICAgICAgICAgbGluZUNvdW50ID0gb3ZlcnJp
ZGVJbmZvLmxpbmVDb3VudDsKICAgICAgICAgICAgIHN0YXJ0Q29sdW1uID0gb3ZlcnJpZGVJbmZv
LnN0YXJ0Q29sdW1uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL1BsYXRmb3Jt
V2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9QbGF0
Zm9ybVdpbi5jbWFrZQkocmV2aXNpb24gMjAyNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3NoZWxsL1BsYXRmb3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
IGFkZF9saWJyYXJ5KHRlc3RhcGlMaWIgU0hBUkVECiAgICAgLi4vQVBJL3Rlc3RzL0NvbXBhcmVB
bmRTd2FwVGVzdC5jcHAKICAgICAuLi9BUEkvdGVzdHMvQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NU
ZXN0LmMKICAgICAuLi9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKKyAgICAu
Li9BUEkvdGVzdHMvRnVuY3Rpb25PdmVycmlkZXNUZXN0LmNwcAogICAgIC4uL0FQSS90ZXN0cy9H
bG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL1BpbmdQ
b25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCiAgICAgLi4vQVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAt
NDcsMyArNDgsOCBAQCBmaWxlKENPUFkKICAgICBERVNUSU5BVElPTgogICAgICR7Q01BS0VfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfQogKQorZmlsZShDT1BZCisgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9BUEkvdGVzdHMvdGVzdGFwaS1mdW5jdGlvbi1vdmVycmlkZXMuanMiCisgICAgREVT
VElOQVRJT04KKyAgICAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0KKykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNw
cAkocmV2aXNpb24gMjAyNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uT3ZlcnJpZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQsMTEgKzEwNCwyMCBAQCBGdW5jdGlv
bk92ZXJyaWRlczo6RnVuY3Rpb25PdmVycmlkZXMoY29uCiAgICAgcGFyc2VPdmVycmlkZXNJbkZp
bGUob3ZlcnJpZGVzRmlsZU5hbWUpOwogfQogCit2b2lkIEZ1bmN0aW9uT3ZlcnJpZGVzOjpyZWlu
c3RhbGxPdmVycmlkZXMoKQoreworICAgIEZ1bmN0aW9uT3ZlcnJpZGVzJiBvdmVycmlkZXMgPSBG
dW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CisgICAgY29uc3QgY2hhciogb3ZlcnJpZGVz
RmlsZU5hbWUgPSBPcHRpb25zOjpmdW5jdGlvbk92ZXJyaWRlcygpOworICAgIG92ZXJyaWRlcy5j
bGVhcigpOworICAgIG92ZXJyaWRlcy5wYXJzZU92ZXJyaWRlc0luRmlsZShvdmVycmlkZXNGaWxl
TmFtZSk7Cit9CisKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291
cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3Qm9keSwgRnVuY3Rpb25PdmVycmlk
ZXM6Ok92ZXJyaWRlSW5mbyYgaW5mbykKIHsKICAgICBTdHJpbmcgb3JpZ1Byb3ZpZGVyU3RyID0g
b3JpZ0NvZGUucHJvdmlkZXIoKS0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICB1bnNpZ25lZCBv
cmlnQnJhY2VTdGFydCA9IG9yaWdDb2RlLnN0YXJ0T2Zmc2V0KCk7Ci0gICAgdW5zaWduZWQgb3Jp
Z0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJTdHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwg
b3JpZ0JyYWNlU3RhcnQpOworICAgIHVuc2lnbmVkIG9yaWdTdGFydCA9IG9yaWdDb2RlLnN0YXJ0
T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgb3JpZ0Z1bmN0aW9uU3RhcnQgPSBvcmlnUHJvdmlkZXJT
dHIucmV2ZXJzZUZpbmQoImZ1bmN0aW9uIiwgb3JpZ1N0YXJ0KTsKKyAgICB1bnNpZ25lZCBvcmln
QnJhY2VTdGFydCA9IG9yaWdQcm92aWRlclN0ci5maW5kKCJ7Iiwgb3JpZ1N0YXJ0KTsKICAgICB1
bnNpZ25lZCBoZWFkZXJMZW5ndGggPSBvcmlnQnJhY2VTdGFydCAtIG9yaWdGdW5jdGlvblN0YXJ0
OwogICAgIFN0cmluZyBvcmlnSGVhZGVyID0gb3JpZ1Byb3ZpZGVyU3RyLnN1YnN0cmluZyhvcmln
RnVuY3Rpb25TdGFydCwgaGVhZGVyTGVuZ3RoKTsKIApAQCAtMTI3LDcgKzEzNiw3IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QKICAgICBpbmZvLnR5cGVQcm9maWxp
bmdFbmRPZmZzZXQgPSBuZXdQcm92aWRlclN0ci5sZW5ndGgoKSAtIDE7CiAKICAgICBpbmZvLnNv
dXJjZUNvZGUgPQotICAgICAgICBTb3VyY2VDb2RlKFdURk1vdmUobmV3UHJvdmlkZXIpLCBpbmZv
LnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCwgaW5mby50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ICsg
MSwgMSwgMSk7CisgICAgICAgIFNvdXJjZUNvZGUoV1RGTW92ZShuZXdQcm92aWRlciksIGluZm8u
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0LCBpbmZvLnR5cGVQcm9maWxpbmdFbmRPZmZzZXQgKyAxLCAx
LCAxKTsKIH0KICAgICAKIGJvb2wgRnVuY3Rpb25PdmVycmlkZXM6OmluaXRpYWxpemVPdmVycmlk
ZUZvcihjb25zdCBTb3VyY2VDb2RlJiBvcmlnQ29kZSwgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJy
aWRlSW5mbyYgcmVzdWx0KQpAQCAtMTM1LDcgKzE0NCwxMyBAQCBib29sIEZ1bmN0aW9uT3ZlcnJp
ZGVzOjppbml0aWFsaXplT3ZlcnJpCiAgICAgQVNTRVJUKE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJp
ZGVzKCkpOwogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzJiBvdmVycmlkZXMgPSBGdW5jdGlvbk92ZXJy
aWRlczo6b3ZlcnJpZGVzKCk7CiAKLSAgICBhdXRvIGl0ID0gb3ZlcnJpZGVzLm1fZW50cmllcy5m
aW5kKG9yaWdDb2RlLnZpZXcoKS50b1N0cmluZygpKTsKKyAgICBTdHJpbmcgc291cmNlU3RyaW5n
ID0gb3JpZ0NvZGUudmlldygpLnRvU3RyaW5nKCk7CisgICAgc2l6ZV90IHNvdXJjZUJvZHlTdGFy
dCA9IHNvdXJjZVN0cmluZy5maW5kKCd7Jyk7CisgICAgaWYgKHNvdXJjZUJvZHlTdGFydCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmluZyBzb3VyY2VCb2R5U3Ry
aW5nID0gc291cmNlU3RyaW5nLnN1YnN0cmluZyhzb3VyY2VCb2R5U3RhcnQpOworCisgICAgYXV0
byBpdCA9IG92ZXJyaWRlcy5tX2VudHJpZXMuZmluZChzb3VyY2VCb2R5U3RyaW5nKTsKICAgICBp
ZiAoaXQgPT0gb3ZlcnJpZGVzLm1fZW50cmllcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVy
cmlkZXMuaAkocmV2aXNpb24gMjAyNjk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsOCArNTMsMTEgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZU92ZXJyaWRlRm9yKGNvbnN0IFNvdXJjZUNv
ZGUmIG9yaWdDb2RlLCBPdmVycmlkZUluZm8mIHJlc3VsdCk7CiAKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCByZWluc3RhbGxPdmVycmlkZXMoKTsKKwogcHJpdmF0ZToKICAgICB2
b2lkIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1lKTsKKyAgICB2b2lk
IGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gbV9lbnRyaWVzOwogfTsK
</data>
<flag name="review"
          id="306301"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>