<?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>124554</bug_id>
          
          <creation_ts>2013-11-18 18:15:58 -0800</creation_ts>
          <short_desc>Upstream iOS&apos;s ResourceHandle implementation</short_desc>
          <delta_ts>2013-11-18 23:17:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>psolanki</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951913</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 18:15:58 -0800</bug_when>
    <thetext>Upstream iOS&apos;s ResourceHandle implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951914</commentid>
    <comment_count>1</comment_count>
      <attachid>217260</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 18:16:32 -0800</bug_when>
    <thetext>Created attachment 217260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951916</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 18:18:27 -0800</bug_when>
    <thetext>Attachment 217260 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/ResourceHandle.h:38:  CFURLConnectionClient_V6 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951924</commentid>
    <comment_count>3</comment_count>
      <attachid>217260</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-18 18:57:57 -0800</bug_when>
    <thetext>Comment on attachment 217260
Patch

Attachment 217260 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/28618041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951926</commentid>
    <comment_count>4</comment_count>
      <attachid>217264</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 19:07:47 -0800</bug_when>
    <thetext>Created attachment 217264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951927</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 19:09:02 -0800</bug_when>
    <thetext>Attachment 217264 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleClient.h&apos;, u&apos;Source/WebCore/platform/network/ResourceHandleInternal.h&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/ResourceHandle.h:75:  CFURLConnectionClient_V6 is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951930</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 19:52:50 -0800</bug_when>
    <thetext>I did some basic cleaning to reduce the numbers of #ifdefs.

I&apos;ll add the asynchronous implementation on top of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951936</commentid>
    <comment_count>7</comment_count>
      <attachid>217264</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 20:52:43 -0800</bug_when>
    <thetext>Comment on attachment 217264
Patch

Clearing flags on attachment: 217264

Committed r159479: &lt;http://trac.webkit.org/changeset/159479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951937</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-11-18 20:52:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951983</commentid>
    <comment_count>9</comment_count>
      <attachid>217264</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-18 23:17:02 -0800</bug_when>
    <thetext>Comment on attachment 217264
Patch

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

Looks good!

QuickLook integration at ResourceHandle level is a surprising place to see it.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:394
&gt; +#if PLATFORM(IOS)
&gt; +    ProtectionSpace coreProtectionSpace = core(protectionSpace);
&gt; +    if (coreProtectionSpace.authenticationScheme() == ProtectionSpaceAuthenticationSchemeUnknown)
&gt; +        return false;
&gt; +    return handle-&gt;canAuthenticateAgainstProtectionSpace(coreProtectionSpace);
&gt; +#else
&gt;      return handle-&gt;canAuthenticateAgainstProtectionSpace(core(protectionSpace));
&gt; +#endif

This looks like it could be cross-platform maybe. Did you blame the iOS side to see what this fix was for?

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:881
&gt; +CFURLConnectionClient_V6* ResourceHandle::connectionClientCallbacks()

The result of this function is copied anyway, why not return a const object pointer?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217260</attachid>
            <date>2013-11-18 18:16:32 -0800</date>
            <delta_ts>2013-11-18 19:07:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124554-20131118181631.patch</filename>
            <type>text/plain</type>
            <size>23811</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkyYTFlYjQ1MzA0NDcw
MjFkMjk5OTYwM2RlYmIwNjYxNzdhYmNmZS4uMzZjYTE5MDk1NTBlOGQ1YTQ2YzlhZGVkMjM3YjI2
YmIxMDljNThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTExLTE4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwc3RyZWFtIGlP
UydzIFJlc291cmNlSGFuZGxlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpxdWlja0xvb2tIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9va0hhbmRsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNvbm5lY3Rpb25Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRDYWNoZVJl
c3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNl
SGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNw
b25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MpOgorCiAyMDEzLTExLTE1ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIElEQkN1cnNv
ckJhY2tlbmQgb3BlcmF0aW9ucyBpbnRvIHRoZWlyIG93biBmaWxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDAyOTQ1ZTFiMjgx
NDc3YTI2ZDQ3ZGE1N2QwYTM5MDczNWIzOGY4M2EuLmZkZTY0N2RlNmQ0ODYwZDE5NWZhMTk2YWM1
MzdlMjA5NDk2MjZkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDExIEBA
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
KyNpZiBVU0UoUVVJQ0tfTE9PSykKKyNpbmNsdWRlICJRdWlja0xvb2suaCIKK3R5cGVkZWYgc3Ry
dWN0IENGVVJMQ29ubmVjdGlvbkNsaWVudF9WNiBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjY7Cisj
ZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCisKICNpZiBVU0UoU09VUCkKIHR5cGVkZWYgc3RydWN0
IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0NlcnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBT
ZXNzaW9uIFNvdXBTZXNzaW9uOwpAQCAtMTM0LDkgKzEzOSwxNyBAQCBwdWJsaWM6CiAgICAgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogICAgIENGVVJMQ29u
bmVjdGlvblJlZiBjb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIHJl
bGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKTsKKyAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGN1cnJlbnRSZXF1ZXN0KCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0Fu
eUhUVFBTQ2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xp
ZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwotI2VuZGlmCisK
KyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRs
ZSgpIHsgcmV0dXJuIG1fcXVpY2tMb29rLmdldCgpOyB9CisgICAgdm9pZCBzZXRRdWlja0xvb2tI
YW5kbGUoUGFzc093blB0cjxRdWlja0xvb2tIYW5kbGU+IGhhbmRsZSkgeyBtX3F1aWNrTG9vayA9
IGhhbmRsZTsgfQorICAgIHN0YXRpYyBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYqIGNvbm5lY3Rp
b25DbGllbnRDYWxsYmFja3MoKTsKKyNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKKworI2VuZGlm
IC8vIFVTRShDRk5FVFdPUkspCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKQogICAg
IHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmlu
ZyYpOwpAQCAtMjI3LDYgKzI0MCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxv
b3BNb2RlKCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCisg
ICAgc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21O
U1VSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKIAogI2lmIFVTRShO
RVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICB2b2lkIGhhbmRsZURhdGFBcnJheShD
RkFycmF5UmVmIGRhdGFBcnJheSk7CkBAIC0yNjEsMTEgKzI3NywxNSBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspCiAgICAgdm9pZCBjcmVhdGVOU1VSTENv
bm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmKTsKICNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCBj
cmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9v
bCBzaG91bGRDb250ZW50U25pZmYpOworICAgIHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBD
RkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcyk7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBj
bGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsOwogICAgIE93blB0cjxSZXNvdXJjZUhhbmRsZUlu
dGVybmFsPiBkOworCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgT3duUHRyPFF1aWNrTG9va0hh
bmRsZT4gbV9xdWlja0xvb2s7CisjZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKaW5kZXggYzBjYTg4YWMxYjQ0ZjNjMjJmZTcxZTA2ZjQzZjJkNTdkMDFlZThlNy4u
YTJkODcxZDIzYjc3M2EwOWI5ZDlmNzlmMzIwNDcwNmZiZmNhYjdkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApA
QCAtMzIsNiArMzIsNyBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC04OCw3ICs4OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2xp
ZW50IHdpbGwgcGFzcyBhbiB1cGRhdGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNv
bnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgpIHdoZW4gcmVhZHku
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JL
KQogICAgICAgICAvLyBDbGllbnQgd2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBS
ZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKTsKICNlbmRpZgpAQCAtMTEwLDE2ICsxMTEsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZl
ZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgeyB9CiAKLSNpZiBQTEFURk9STShNQUMpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAg
ICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkgeyByZXR1cm4gcmVz
cG9uc2U7IH0KLSNlbHNlCisgICAgICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gY29ubmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBudWxscHRy
OyB9CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsgcmV0dXJu
IHRydWU7IH0KKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisKKyNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiBy
ZXNwb25zZTsgfQotI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJ1ZmZlcmlu
Z0RhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KLSNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCi0jaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKaW5kZXggOWI4YTg5YWU2NmRhZDNjMmMzYjg3ZjE3MmE4MDkzNTQwZGU3NDY2
Mi4uYThlMDk3N2I1ZWRjNDEwZmZjZmIxOThiYTMxY2JmMWNjMGVmYjNkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKQEAgLTgzLDYgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
LCBtX3Nob3VsZENvbnRlbnRTbmlmZihzaG91bGRDb250ZW50U25pZmYpCiAjaWYgVVNFKENGTkVU
V09SSykKICAgICAgICAgICAgICwgbV9jb25uZWN0aW9uKDApCisgICAgICAgICAgICAsIG1fY3Vy
cmVudFJlcXVlc3QocmVxdWVzdCkKICNlbmRpZgogI2lmIFVTRShXSU5JTkVUKQogICAgICAgICAg
ICAgLCBtX2ZpbGVMb2FkVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGlt
ZXIpCkBAIC0xNDUsNiArMTQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IG1fc2hvdWxkQ29udGVudFNuaWZmOwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFp
blB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IG1fY29ubmVjdGlvbjsKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpICYmICFV
U0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBmYjg0ZDgxYjQ5ZGNkNWNlZTg2M2I4NDY0
ZWMxMjZlMTgxZjQ5YWY3Li42YzA5NDFjMDFmMjE5OTBmNDNhM2U5OTU2ZWM5NGU0MWE2NWJmZGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDEwIEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2lmIFVTRShDRk5FVFdPUkspCkBAIC0xMDgsMTQgKzExMiwz
NyBAQCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZp
ZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aGVudGljYXRpb25IZWFkZXIpOwogfQogCi1zdGF0aWMg
Q0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwg
Q0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVz
cG9uc2VSZWY+IHN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3Qs
IENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlmIChjZlJlZGly
ZWN0UmVzcG9uc2UpCisgICAgICAgIHJldHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7CisKKyAgICBD
RlVSTFJlZiBuZXdVUkwgPSBDRlVSTFJlcXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVtZShu
ZXdVUkwpKTsKKworICAgIC8vIElmIHRoZSBwcm90b2NvbHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFu
ZCB0aGUgY3VycmVudCByZXF1ZXN0IG1hdGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0
IGFuZCB3ZSBzaG91bGRuJ3Qgc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorICAgIGlm
IChjdXJyZW50UmVxdWVzdC51cmwoKS5wcm90b2NvbCgpID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0
KCkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3VycmVu
dFVSTCA9IGN1cnJlbnRSZXF1ZXN0LnVybCgpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRy
PENGSFRUUE1lc3NhZ2VSZWY+IHJlc3BvbnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2Fn
ZUNyZWF0ZVJlc3BvbnNlKDAsIDMwMiwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IG5ld0Fic29sdXRlVVJMID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0
ZVVSTChuZXdVUkwpKTsKKyAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNw
b25zZU1lc3NhZ2UuZ2V0KCksIENGU1RSKCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0cmluZyhuZXdB
YnNvbHV0ZVVSTC5nZXQoKSkpOworICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVl
KHJlc3BvbnNlTWVzc2FnZS5nZXQoKSwgQ0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5v
LXN0b3JlIikpOworCisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNl
ID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50
VVJMLmdldCgpLCByZXNwb25zZU1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFs
bG93ZWQpKTsKKyAgICByZXR1cm4gbmV3UmVzcG9uc2U7Cit9CisKK3N0YXRpYyBDRlVSTFJlcXVl
c3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVl
c3RSZWYgY2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25z
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICNpZiBMT0dfRElTQUJMRUQKICAgICBVTlVT
RURfUEFSQU0oY29ubik7CiAjZW5kaWYKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3Rh
dGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
CisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlZGlyZWN0UmVzcG9uc2UgPSBzeW50
aGVzaXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KGhhbmRsZS0+Y3VycmVudFJlcXVlc3Qo
KSwgY2ZSZXF1ZXN0LCBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpOwogCi0gICAgaWYgKCFjZlJl
ZGlyZWN0UmVzcG9uc2UpIHsKKyAgICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAg
Q0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKICAgICB9CkBA
IC0xMjMsOCArMTUwLDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSB3aWxsU2VuZFJlcXVlc3QoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29u
biwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgaWYgKGNmUmVkaXJl
Y3RSZXNwb25zZSkgewotICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZV
UkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShjZlJlZGlyZWN0UmVzcG9uc2UpOworICAgIGlmIChy
ZWRpcmVjdFJlc3BvbnNlKSB7CisgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2Ug
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwog
ICAgICAgICBpZiAoaHR0cE1lc3NhZ2UgJiYgQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVz
Q29kZShodHRwTWVzc2FnZSkgPT0gMzA3KSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZCA9
IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOwpA
QCAtMTUyLDcgKzE3OSw3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoIXJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCksICJodHRwcyIpICYmIGhhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVm
ZXJyZXIoKTsKIAotICAgIGhhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIGNmUmVkaXJl
Y3RSZXNwb25zZSk7CisgICAgaGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZS5nZXQoKSk7CiAKICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xNjUsNyArMTkyLDcgQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxs
U2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogCiBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENG
VVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSNp
ZiBMT0dfRElTQUJMRUQKKyNpZiBMT0dfRElTQUJMRUQgJiYgIVVTRShRVUlDS19MT09LKQogICAg
IFVOVVNFRF9QQVJBTShjb25uKTsKICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKTsKQEAgLTE4Myw4ICsyMTAsMTAgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG8KICAgICBp
ZiAoc3RhdHVzQ29kZSAhPSAzMDQpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnko
Y2ZSZXNwb25zZSk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChfQ0ZVUkxSZXF1ZXN0
Q29weVByb3RvY29sUHJvcGVydHlGb3JLZXkoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkK
ICAgICAgICAgd2tTZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRl
eHQvaHRtbCIpKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogI2Vsc2UKICAgICBpZiAoIUNG
VVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKSkgewogICAgICAgICAvLyBXZSBzaG91
bGQgbmV2ZXIgYmUgYXBwbHlpbmcgdGhlIGRlZmF1bHQgTUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUg
bmV0d29ya2luZyBsYXllciB0byBkbyBjb250ZW50IHNuaWZmaW5nIGZvciBoYW5kbGUuCkBAIC0x
OTIsNiArMjIxLDEyIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvCiAgICAgICAgIHNldERlZmF1
bHRNSU1FVHlwZShjZlJlc3BvbnNlKTsKICAgICB9CiAjZW5kaWYKKworI2lmIFVTRShRVUlDS19M
T09LKQorICAgIGhhbmRsZS0+c2V0UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3Jl
YXRlKGhhbmRsZSwgY29ubiwgY2ZSZXNwb25zZSkpOworICAgIGlmIChoYW5kbGUtPnF1aWNrTG9v
a0hhbmRsZSgpKQorICAgICAgICBjZlJlc3BvbnNlID0gaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUo
KS0+Y2ZSZXNwb25zZSgpOworI2VuZGlmCiAgICAgCiAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgY2ZSZXNwb25zZSk7CiB9CkBAIC0yMDgsNiArMjQzLDEx
IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZVUkxDb25uZWN0aW9uUmVmIGNv
bm4sIENGQXJyYXlSZWYgZGF0YUFycmF5LCBjCiAKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
ZGlkUmVjZWl2ZURhdGFBcnJheShjb25uPSVwLCBoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkg
KCVzKSIsIGNvbm4sIGhhbmRsZSwgQ0ZBcnJheUdldENvdW50KGRhdGFBcnJheSksIGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBVU0Uo
UVVJQ0tfTE9PSykKKyAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUt
PnF1aWNrTG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSkpCisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgaGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkoZGF0YUFy
cmF5KTsKIH0KICNlbmRpZgpAQCAtMjIzLDYgKzI2MywxMSBAQCBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlRGF0YShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZEYXRhUmVmIGRhdGEsIENGSW5kZXgg
b3JpZwogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShjb25uPSVwLCBo
YW5kbGU9JXAsIGJ5dGVzPSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgbGVuZ3RoLCBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAK
KyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAm
JiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRhKSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKICAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCA9IGhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlciho
YW5kbGUsIFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShkYXRhKSwgb3JpZ2luYWxMZW5ndGgpOwog
fQpAQCAtMjU5LDYgKzMwNCwxMSBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKENGVVJM
Q29ubmVjdGlvblJlZiBjb25uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIGRpZEZpbmlzaExvYWRpbmcoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMp
IiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgaWYgKGhhbmRsZS0+cXVp
Y2tMb29rSGFuZGxlKCkgJiYgaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9h
ZGluZygpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmIChoYW5kbGUtPmNsaWVu
dCgpKQogICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSwg
MCk7CiB9CkBAIC0yNzIsNiArMzIyLDExIEBAIHN0YXRpYyB2b2lkIGRpZEZhaWwoQ0ZVUkxDb25u
ZWN0aW9uUmVmIGNvbm4sIENGRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVuCiAKICAg
ICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkRmFpbChjb25uPSVwLCBoYW5kbGU9JXAsIGVycm9y
ID0gJXApICglcykiLCBjb25uLCBoYW5kbGUsIGVycm9yLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkpCisgICAgICAgIGhhbmRsZS0+cXVpY2tM
b29rSGFuZGxlKCktPmRpZEZhaWwoKTsKKyNlbmRpZgorCiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50
KCkpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVy
cm9yKGVycm9yKSk7CiB9CkBAIC0yNzksMTYgKzMzNCwxOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWls
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBj
bGllbgogc3RhdGljIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZV
UkxDb25uZWN0aW9uUmVmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KTsKLSAgICBDRlVSTFJlc3BvbnNlUmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVz
cG9uc2VHZXRXcmFwcGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2UpOwogCisjaWYgUExBVEZPUk0o
V0lOKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNo
aW5nIGRvZXMgbm90IHJlc3BlY3QgVmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTogV2Vi
Q29yZSBjYWNoZSBoYXMgaXNzdWVzIHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUw
OSkuCisgICAgQ0ZVUkxSZXNwb25zZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJl
c3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoQ0ZIVFRQ
TWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHdy
YXBwZWRSZXNwb25zZSkpIHsKICAgICAgICAgQVNTRVJUKENGSFRUUE1lc3NhZ2VJc0hlYWRlckNv
bXBsZXRlKGh0dHBSZXNwb25zZSkpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZh
cnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGh0dHBS
ZXNwb25zZSwgQ0ZTVFIoIlZhcnkiKSkpOwogICAgICAgICBpZiAodmFyeVZhbHVlKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogI2lmIFBM
QVRGT1JNKFdJTikKICAgICBpZiAoaGFuZGxlLT5jbGllbnQoKSAmJiAhaGFuZGxlLT5jbGllbnQo
KS0+c2hvdWxkQ2FjaGVSZXNwb25zZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKSkKQEAgLTMyNyw3
ICszODQsMTQgQEAgc3RhdGljIEJvb2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENG
VVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFByb3RlY3QKIAogICAgIExPRyhOZXR3b3JrLCAi
Q0ZOZXQgLSBjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoY29ubj0lcCwgaGFuZGxlPSVwICgl
cykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgUHJvdGVjdGlvblNwYWNl
IGNvcmVQcm90ZWN0aW9uU3BhY2UgPSBjb3JlKHByb3RlY3Rpb25TcGFjZSk7CisgICAgaWYgKGNv
cmVQcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gaGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNv
cmVQcm90ZWN0aW9uU3BhY2UpOworI2Vsc2UKICAgICByZXR1cm4gaGFuZGxlLT5jYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5k
aWYKIH0KICNlbmRpZgogCkBAIC0zNDQsNyArNDA4LDcgQEAgUmVzb3VyY2VIYW5kbGU6On5SZXNv
dXJjZUhhbmRsZSgpCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIERlc3Ryb3lpbmcgam9iICVw
ICglcykiLCB0aGlzLCBkLT5tX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQor
dm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBDRkRpY3Rpb25hcnlS
ZWYgY2xpZW50UHJvcGVydGllcykKIHsKICAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8
ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9u
bHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCkBAIC0zODIsNiArNDQ2LDkgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UsIGJvb2wKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiBzc2xQcm9wczsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBzc2xQcm9wcyA9IGFkb3B0Q0Yo
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGZpcnN0
UmVxdWVzdCgpKSk7CisjZWxzZQogICAgIGlmIChhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9z
dHMoKS5jb250YWlucyhmaXJzdFJlcXVlc3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSkpIHsKICAg
ICAgICAgc3NsUHJvcHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShzc2xQcm9wcy5nZXQoKSwga0NGU3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRy
dWUpOwpAQCAtMzk4LDYgKzQ2NSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgICAg
IHdrU2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoc3NsUHJvcHMuZ2V0KCksIChj
bGllbnRDZXJ0LT52YWx1ZSkuZ2V0KCkpOwogI2VuZGlmCiAgICAgfQorI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKIAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NM
UHJvcGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CkBAIC00MDksMTkgKzQ3
Nyw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgfQogI2VuZGlmCiAKLSAgICBDRlVS
TENvbm5lY3Rpb25DbGllbnRfVjYgY2xpZW50ID0geyA2LCB0aGlzLCAwLCAwLCAwLCBXZWJDb3Jl
Ojp3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2VpdmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIDAs
IGRpZEZpbmlzaExvYWRpbmcsIGRpZEZhaWwsIHdpbGxDYWNoZVJlc3BvbnNlLCBkaWRSZWNlaXZl
Q2hhbGxlbmdlLCBkaWRTZW5kQm9keURhdGEsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2Fs
bGJhY2ssIDAsCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICAg
ICAgY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlLAotI2Vsc2UKLSAgICAgICAgMCwKLSNlbmRp
ZgotICAgICAgICAwLAotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGFBcnJheQotI2Vsc2UgCi0gICAgICAgIDAKLSNlbmRpZgotICAg
IH07CisgICAgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9ICpSZXNvdXJjZUhhbmRs
ZTo6Y29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygpOworICAgIGNsaWVudC5jbGllbnRJbmZvID0g
dGhpczsKIAogICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgIGlmICghc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC00MzQsOSArNDkxLDE3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlLCBib29sCiAjZW5kaWYKIAogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxD
b25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3BlcnRpZXNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwgKGNv
bnN0IHZvaWQqKikma0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIChjb25z
dCB2b2lkKiopJnN0cmVhbVByb3BlcnRpZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CisgICAgaWYgKGNs
aWVudFByb3BlcnRpZXMpCisgICAgICAgIHByb3BlcnRpZXNEaWN0aW9uYXJ5ID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBjbGll
bnRQcm9wZXJ0aWVzKSk7CisgICAgZWxzZQorICAgICAgICBwcm9wZXJ0aWVzRGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25h
cnkuZ2V0KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Q
cm9wZXJ0aWVzKTsKICAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJl
cXVlc3QuZ2V0KCksIDEpOworI2VuZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uID0gYWRvcHRDRihD
RlVSTENvbm5lY3Rpb25DcmVhdGVXaXRoUHJvcGVydGllcygwLCByZXF1ZXN0LmdldCgpLCByZWlu
dGVycHJldF9jYXN0PENGVVJMQ29ubmVjdGlvbkNsaWVudCo+KCZjbGllbnQpLCBwcm9wZXJ0aWVz
RGljdGlvbmFyeS5nZXQoKSkpOwogfQogCkBAIC00NTQsMTAgKzUxOSwxMiBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpzdGFydCgpCiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
ID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlz
KTsKIAotICAgIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSwgZC0+bV9zaG91bGRDb250ZW50U25pZmYpOworICAgIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgZC0+bV9zaG91bGRDb250ZW50U25pZmYsIGNsaWVu
dCgpLT5jb25uZWN0aW9uUHJvcGVydGllcyh0aGlzKS5nZXQoKSk7CiAKICNpZiBQTEFURk9STShX
SU4pCiAgICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShk
LT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIENGVVJMQ29u
bmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBXZWJUaHJl
YWRSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAjZWxzZQogICAgIENGVVJMQ29u
bmVjdGlvblNjaGVkdWxlV2l0aFJ1bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBDRlJ1bkxv
b3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAjZW5kaWYKQEAgLTUwNyw4
ICs1NzQsMTEgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBjbGllbnQoKS0+d2lsbFNl
bmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8gQ2xp
ZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUg
cmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgotICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKKyAg
ICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKworICAgICAgICBkLT5tX2N1cnJlbnRS
ZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICB9CiB9CiAKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKQEAgLTY5Miw3ICs3NjIsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlLT5jcmVhdGVD
RlVSTENvbm5lY3Rpb24oc3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSk7
CisgICAgaGFuZGxlLT5jcmVhdGVDRlVSTENvbm5lY3Rpb24oc3RvcmVkQ3JlZGVudGlhbHMgPT0g
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlm
ZlVSTChyZXF1ZXN0LnVybCgpKSwgaGFuZGxlLT5jbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRp
ZXMoaGFuZGxlLmdldCgpKS5nZXQoKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdp
dGhSdW5Mb29wKGhhbmRsZS0+Y29ubmVjdGlvbigpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHN5
bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCkpOwogICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxl
RG93bmxvYWRXaXRoUnVuTG9vcChoYW5kbGUtPmNvbm5lY3Rpb24oKSwgQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCBzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpKTsKQEAgLTc2OSw2ICs4MzksMTAg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXIqIHBhaXIpCiB9
CiAjZW5kaWYKIAorY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Y3VycmVu
dFJlcXVlc3QoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OworfQog
I2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlf
Q0FMTEJBQ0spCkBAIC04MDMsNCArODc3LDI0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRs
ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIH0KICNlbmRpZgogCisjaWYgVVNFKFFV
SUNLX0xPT0spICYmIFVTRShDRk5FVFdPUkspCitDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYqIFJl
c291cmNlSGFuZGxlOjpjb25uZWN0aW9uQ2xpZW50Q2FsbGJhY2tzKCkKK3sKKyAgICBzdGF0aWMg
Q0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IGNsaWVudCA9IHsgNiwgMCwgMCwgMCwgMCwgV2ViQ29y
ZTo6d2lsbFNlbmRSZXF1ZXN0LCBkaWRSZWNlaXZlUmVzcG9uc2UsIGRpZFJlY2VpdmVEYXRhLCAw
LCBkaWRGaW5pc2hMb2FkaW5nLCBkaWRGYWlsLCB3aWxsQ2FjaGVSZXNwb25zZSwgZGlkUmVjZWl2
ZUNoYWxsZW5nZSwgZGlkU2VuZEJvZHlEYXRhLCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNh
bGxiYWNrLCAwLAorI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAg
ICAgIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSwKKyNlbHNlCisgICAgICAgIDAsCisjZW5k
aWYKKyAgICAgICAgMCwKKyNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhQXJyYXkKKyNlbHNlCisgICAgICAgIDAKKyNlbmRpZgorICAg
IH07CisgICAgcmV0dXJuICZjbGllbnQ7Cit9CisjZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spICYm
IFVTRShDRk5FVFdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217264</attachid>
            <date>2013-11-18 19:07:47 -0800</date>
            <delta_ts>2013-11-18 23:17:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124554-20131118190746.patch</filename>
            <type>text/plain</type>
            <size>24056</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkyYTFlYjQ1MzA0NDcw
MjFkMjk5OTYwM2RlYmIwNjYxNzdhYmNmZS4uMzZjYTE5MDk1NTBlOGQ1YTQ2YzlhZGVkMjM3YjI2
YmIxMDljNThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTExLTE4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwc3RyZWFtIGlP
UydzIFJlc291cmNlSGFuZGxlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpxdWlja0xvb2tIYW5kbGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9va0hhbmRsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNvbm5lY3Rpb25Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRDYWNoZVJl
c3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNl
SGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplUmVkaXJlY3RSZXNw
b25zZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3MpOgorCiAyMDEzLTExLTE1ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIElEQkN1cnNv
ckJhY2tlbmQgb3BlcmF0aW9ucyBpbnRvIHRoZWlyIG93biBmaWxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDAyOTQ1ZTFiMjgx
NDc3YTI2ZDQ3ZGE1N2QwYTM5MDczNWIzOGY4M2EuLmRhZjA2N2IxNDMxZjY0Y2EyODE3MWYzMDc5
ZmI0ZTEwOWY4Yzk4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
KyNpZiBVU0UoUVVJQ0tfTE9PSykKKyNpbmNsdWRlICJRdWlja0xvb2suaCIKKyNlbmRpZiAvLyBV
U0UoUVVJQ0tfTE9PSykKKwogI2lmIFVTRShTT1VQKQogdHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0
aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291
cFNlc3Npb247CkBAIC02OCw2ICs3Miw3IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICpp
ZDsKIHR5cGVkZWYgc3RydWN0IF9DRlVSTENvbm5lY3Rpb24qIENGVVJMQ29ubmVjdGlvblJlZjsK
IHR5cGVkZWYgaW50IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3k7CiB0eXBlZGVmIHN0
cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwor
dHlwZWRlZiBzdHJ1Y3QgQ0ZVUkxDb25uZWN0aW9uQ2xpZW50X1Y2IENGVVJMQ29ubmVjdGlvbkNs
aWVudF9WNjsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQpA
QCAtMTM0LDkgKzEzOSwxNyBAQCBwdWJsaWM6CiAgICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogICAgIENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9u
KCkgY29uc3Q7CiAgICAgQ0ZVUkxDb25uZWN0aW9uUmVmIHJlbGVhc2VDb25uZWN0aW9uRm9yRG93
bmxvYWQoKTsKKyAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGN1cnJlbnRSZXF1ZXN0KCkgY29u
c3Q7CiAgICAgc3RhdGljIHZvaWQgc2V0SG9zdEFsbG93c0FueUhUVFBTQ2VydGlmaWNhdGUoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgc2V0Q2xpZW50Q2VydGlmaWNhdGUoY29uc3Qg
U3RyaW5nJiBob3N0LCBDRkRhdGFSZWYpOwotI2VuZGlmCisgICAgc3RhdGljIENGVVJMQ29ubmVj
dGlvbkNsaWVudF9WNiogY29ubmVjdGlvbkNsaWVudENhbGxiYWNrcygpOworCisjaWYgVVNFKFFV
SUNLX0xPT0spCisgICAgUXVpY2tMb29rSGFuZGxlKiBxdWlja0xvb2tIYW5kbGUoKSB7IHJldHVy
biBtX3F1aWNrTG9vay5nZXQoKTsgfQorICAgIHZvaWQgc2V0UXVpY2tMb29rSGFuZGxlKFBhc3NP
d25QdHI8UXVpY2tMb29rSGFuZGxlPiBoYW5kbGUpIHsgbV9xdWlja0xvb2sgPSBoYW5kbGU7IH0K
KyNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKKworI2VuZGlmIC8vIFVTRShDRk5FVFdPUkspCiAK
ICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKQogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RB
bGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYpOwpAQCAtMjI3LDYgKzI0MCw5
IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlKCk7CiAjZW5kaWYKKyNp
ZiBQTEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCisgICAgc3RhdGljIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgY3JlYXRlU1NMUHJvcGVydGllc0Zyb21OU1VSTFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9D
QUxMQkFDSykKICAgICB2b2lkIGhhbmRsZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSk7
CkBAIC0yNjEsMTEgKzI3NywxNSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVT
RShDRk5FVFdPUkspCiAgICAgdm9pZCBjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUs
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZm
KTsKICNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgdm9pZCBjcmVhdGVDRlVSTENvbm5lY3Rpb24o
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25pZmYp
OworICAgIHZvaWQgY3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50
UHJvcGVydGllcyk7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOwogICAgIE93blB0cjxSZXNvdXJjZUhhbmRsZUludGVybmFsPiBkOworCisjaWYgVVNF
KFFVSUNLX0xPT0spCisgICAgT3duUHRyPFF1aWNrTG9va0hhbmRsZT4gbV9xdWlja0xvb2s7Cisj
ZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYzBjYTg4
YWMxYjQ0ZjNjMjJmZTcxZTA2ZjQzZjJkNTdkMDFlZThlNy4uYTJkODcxZDIzYjc3M2EwOWI5ZDlm
NzlmMzIwNDcwNmZiZmNhYjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2lm
IFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAj
aW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC04OCw3ICs4OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2xpZW50IHdpbGwgcGFzcyBhbiB1cGRh
dGVkIHJlcXVlc3QgdXNpbmcgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSgpIHdoZW4gcmVhZHkuCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgICAgICAvLyBDbGllbnQg
d2lsbCBwYXNzIGFuIHVwZGF0ZWQgcmVxdWVzdCB1c2luZyBSZXNvdXJjZUhhbmRsZTo6Y29udGlu
dWVXaWxsQ2FjaGVSZXNwb25zZSgpIHdoZW4gcmVhZHkuCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKTsKICNlbmRpZgpAQCAtMTEwLDE2ICsxMTEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAKLSNpZiBQTEFU
Rk9STShNQUMpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgdmlydHVhbCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiByZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2U7IH0KLSNlbHNlCisgICAg
ICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRp
ZXMoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBudWxscHRyOyB9CisjaWYgUExBVEZPUk0oV0lO
KQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRs
ZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZiAvLyBQ
TEFURk9STShXSU4pCisKKyNlbGlmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdmlydHVhbCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlKSB7IHJldHVybiByZXNwb25zZTsgfQotI2VuZGlmCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBjaGFyKiwgaW50KSB7IH0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0jaWYgUExB
VEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIHsg
cmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggOWI4
YTg5YWU2NmRhZDNjMmMzYjg3ZjE3MmE4MDkzNTQwZGU3NDY2Mi4uYThlMDk3N2I1ZWRjNDEwZmZj
ZmIxOThiYTMxY2JmMWNjMGVmYjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTgzLDYgKzgzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3Nob3VsZENvbnRlbnRTbmlm
ZihzaG91bGRDb250ZW50U25pZmYpCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAgICAgICAgICwg
bV9jb25uZWN0aW9uKDApCisgICAgICAgICAgICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkK
ICNlbmRpZgogI2lmIFVTRShXSU5JTkVUKQogICAgICAgICAgICAgLCBtX2ZpbGVMb2FkVGltZXIo
bG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIpCkBAIC0xNDUsNiArMTQ2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkQ29udGVudFNuaWZm
OwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25S
ZWY+IG1fY29ubmVjdGlvbjsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVl
c3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAppbmRleCBmYjg0ZDgxYjQ5ZGNkNWNlZTg2M2I4NDY0ZWMxMjZlMTgxZjQ5YWY3Li5mZTYy
MDExYmQ1YjEzMjJhNzA1YjYwNDNkODRhY2U5MzExMjgxYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAx
MSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9T
KQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisK
ICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgog
I2lmIFVTRShDRk5FVFdPUkspCkBAIC0xMDgsMTQgKzExMiwzNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eUJhc2ljQXV0aG9yaXphdGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IENyZWRlbgogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRob3JpemF0aW9uIiwg
YXV0aGVudGljYXRpb25IZWFkZXIpOwogfQogCi1zdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxT
ZW5kUmVxdWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVx
dWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHN5bnRoZXNpemVS
ZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50
UmVxdWVzdCwgQ0ZVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZWRpcmVjdFJlc3BvbnNlKQoreworICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpCisgICAgICAg
IHJldHVybiBjZlJlZGlyZWN0UmVzcG9uc2U7CisKKyAgICBDRlVSTFJlZiBuZXdVUkwgPSBDRlVS
TFJlcXVlc3RHZXRVUkwobmV3UmVxdWVzdCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBu
ZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVtZShuZXdVUkwpKTsKKworICAgIC8vIElm
IHRoZSBwcm90b2NvbHMgb2YgdGhlIG5ldyByZXF1ZXN0IGFuZCB0aGUgY3VycmVudCByZXF1ZXN0
IG1hdGNoLCB0aGlzIGlzIG5vdCBhbiBIU1RTIHJlZGlyZWN0IGFuZCB3ZSBzaG91bGRuJ3Qgc3lu
dGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorICAgIGlmIChjdXJyZW50UmVxdWVzdC51cmwo
KS5wcm90b2NvbCgpID09IFN0cmluZyhuZXdTY2hlbWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY3VycmVudFVSTCA9IGN1cnJlbnRSZXF1ZXN0
LnVybCgpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHJl
c3BvbnNlTWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKDAsIDMw
MiwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG5ld0Fi
c29sdXRlVVJMID0gYWRvcHRDRihDRlVSTENvcHlBYnNvbHV0ZVVSTChuZXdVUkwpKTsKKyAgICBD
RkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShyZXNwb25zZU1lc3NhZ2UuZ2V0KCksIENG
U1RSKCJMb2NhdGlvbiIpLCBDRlVSTEdldFN0cmluZyhuZXdBYnNvbHV0ZVVSTC5nZXQoKSkpOwor
ICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKHJlc3BvbnNlTWVzc2FnZS5nZXQo
KSwgQ0ZTVFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIm5vLXN0b3JlIikpOworCisgICAgUmV0
YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IG5ld1Jlc3BvbnNlID0gYWRvcHRDRihDRlVSTFJlc3Bv
bnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZSgwLCBjdXJyZW50VVJMLmdldCgpLCByZXNwb25zZU1l
c3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQpKTsKKyAgICByZXR1cm4g
bmV3UmVzcG9uc2U7Cit9CisKK3N0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0
KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlVS
TFJlc3BvbnNlUmVmIG9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKICNpZiBMT0dfRElTQUJMRUQKICAgICBVTlVTRURfUEFSQU0oY29ubik7CiAjZW5k
aWYKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5k
bGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVzcG9uc2VSZWY+IHJlZGlyZWN0UmVzcG9uc2UgPSBzeW50aGVzaXplUmVkaXJlY3RSZXNwb25z
ZUlmTmVjZXNzYXJ5KGhhbmRsZS0+Y3VycmVudFJlcXVlc3QoKSwgY2ZSZXF1ZXN0LCBvcmlnaW5h
bFJlZGlyZWN0UmVzcG9uc2UpOwogCi0gICAgaWYgKCFjZlJlZGlyZWN0UmVzcG9uc2UpIHsKKyAg
ICBpZiAoIXJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsK
ICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKICAgICB9CkBAIC0xMjMsOCArMTUwLDggQEAgc3Rh
dGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVmIGNv
bm4sIENGVVJMUmVxdWVzdFJlZgogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSB3aWxsU2VuZFJl
cXVlc3QoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgaWYgKGNmUmVkaXJlY3RSZXNwb25zZSkgewotICAgICAg
ICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNw
b25zZShjZlJlZGlyZWN0UmVzcG9uc2UpOworICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKSB7Cisg
ICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRU
UFJlc3BvbnNlKHJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICBpZiAoaHR0cE1lc3Nh
Z2UgJiYgQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVzc2FnZSkgPT0g
MzA3KSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9k
ID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOwpAQCAtMTUyLDcgKzE3OSw3IEBAIHN0
YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygi
aHR0cHMiKSAmJiBwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpICYm
IGhhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KCkpCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKIAotICAgIGhhbmRs
ZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIGNmUmVkaXJlY3RSZXNwb25zZSk7CisgICAgaGFu
ZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5nZXQoKSk7CiAK
ICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjUsNyAr
MTkyLDcgQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25u
ZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogCiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNw
b25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSNpZiBMT0dfRElTQUJMRUQKKyNpZiBM
T0dfRElTQUJMRUQgJiYgIVVTRShRVUlDS19MT09LKQogICAgIFVOVVNFRF9QQVJBTShjb25uKTsK
ICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTE4Myw4ICsyMTAs
MTAgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG8KICAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQp
CiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CiAKKyNpZiAh
UExBVEZPUk0oSU9TKQogICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVydHlG
b3JLZXkoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQ
Qm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKICAgICAgICAgd2tTZXRDRlVSTFJl
c3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQogI2Vsc2UKICAgICBpZiAoIUNGVVJMUmVzcG9uc2VHZXRNSU1FVHlw
ZShjZlJlc3BvbnNlKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYXBwbHlpbmcg
dGhlIGRlZmF1bHQgTUlNRVR5cGUgaWYgd2UgdG9sZCB0aGUgbmV0d29ya2luZyBsYXllciB0byBk
byBjb250ZW50IHNuaWZmaW5nIGZvciBoYW5kbGUuCkBAIC0xOTIsNiArMjIxLDEyIEBAIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxS
ZXNwb25zZVJlZiBjZlJlc3BvCiAgICAgICAgIHNldERlZmF1bHRNSU1FVHlwZShjZlJlc3BvbnNl
KTsKICAgICB9CiAjZW5kaWYKKworI2lmIFVTRShRVUlDS19MT09LKQorICAgIGhhbmRsZS0+c2V0
UXVpY2tMb29rSGFuZGxlKFF1aWNrTG9va0hhbmRsZTo6Y3JlYXRlKGhhbmRsZSwgY29ubiwgY2ZS
ZXNwb25zZSkpOworICAgIGlmIChoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpKQorICAgICAgICBj
ZlJlc3BvbnNlID0gaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+Y2ZSZXNwb25zZSgpOworI2Vu
ZGlmCiAgICAgCiAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRs
ZSwgY2ZSZXNwb25zZSk7CiB9CkBAIC0yMDgsNiArMjQzLDExIEBAIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVEYXRhQXJyYXkoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGQXJyYXlSZWYgZGF0YUFy
cmF5LCBjCiAKICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZURhdGFBcnJheShj
b25uPSVwLCBoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwg
Q0ZBcnJheUdldENvdW50KGRhdGFBcnJheSksIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKyAgICBpZiAo
aGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpLT5k
aWRSZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgor
CiAgICAgaGFuZGxlLT5oYW5kbGVEYXRhQXJyYXkoZGF0YUFycmF5KTsKIH0KICNlbmRpZgpAQCAt
MjIzLDYgKzI2MywxMSBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShDRlVSTENvbm5lY3Rp
b25SZWYgY29ubiwgQ0ZEYXRhUmVmIGRhdGEsIENGSW5kZXggb3JpZwogICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShjb25uPSVwLCBoYW5kbGU9JXAsIGJ5dGVzPSVsZCkg
KCVzKSIsIGNvbm4sIGhhbmRsZSwgbGVuZ3RoLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAKKyNpZiBVU0UoUVVJQ0tfTE9PSykK
KyAgICBpZiAoaGFuZGxlLT5xdWlja0xvb2tIYW5kbGUoKSAmJiBoYW5kbGUtPnF1aWNrTG9va0hh
bmRsZSgpLT5kaWRSZWNlaXZlRGF0YShkYXRhKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisK
ICAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xpZW50KCkp
CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6
d3JhcENGRGF0YShkYXRhKSwgb3JpZ2luYWxMZW5ndGgpOwogfQpAQCAtMjU5LDYgKzMwNCwxMSBA
QCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZEZp
bmlzaExvYWRpbmcoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5k
bGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCisjaWYg
VVNFKFFVSUNLX0xPT0spCisgICAgaWYgKGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCkgJiYgaGFu
ZGxlLT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKwogICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKQogICAgICAgICBoYW5kbGUt
PmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSwgMCk7CiB9CkBAIC0yNzIsNiArMzIy
LDExIEBAIHN0YXRpYyB2b2lkIGRpZEZhaWwoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGRXJy
b3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVuCiAKICAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gZGlkRmFpbChjb25uPSVwLCBoYW5kbGU9JXAsIGVycm9yID0gJXApICglcykiLCBjb25uLCBo
YW5kbGUsIGVycm9yLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgaWYgKGhhbmRsZS0+cXVpY2tM
b29rSGFuZGxlKCkpCisgICAgICAgIGhhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZEZhaWwo
KTsKKyNlbmRpZgorCiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9yKSk7CiB9CkBAIC0y
NzksMTYgKzMzNCwxOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsKENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRkVycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbgogc3RhdGljIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUmVmLCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhh
bmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBDRlVSTFJlc3BvbnNl
UmVmIHdyYXBwZWRSZXNwb25zZSA9IENGQ2FjaGVkVVJMUmVzcG9uc2VHZXRXcmFwcGVkUmVzcG9u
c2UoY2FjaGVkUmVzcG9uc2UpOwogCisjaWYgUExBVEZPUk0oV0lOKQogICAgIC8vIFdvcmthcm91
bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MzAwOTkwPiBDYWNoaW5nIGRvZXMgbm90IHJlc3BlY3Qg
VmFyeSBIVFRQIGhlYWRlci4KICAgICAvLyBGSVhNRTogV2ViQ29yZSBjYWNoZSBoYXMgaXNzdWVz
IHdpdGggVmFyeSwgdG9vIChidWcgNTg3OTcsIGJ1ZyA3MTUwOSkuCisgICAgQ0ZVUkxSZXNwb25z
ZVJlZiB3cmFwcGVkUmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3Bv
bnNlKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9u
c2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHdyYXBwZWRSZXNwb25zZSkpIHsKICAg
ICAgICAgQVNTRVJUKENGSFRUUE1lc3NhZ2VJc0hlYWRlckNvbXBsZXRlKGh0dHBSZXNwb25zZSkp
OwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhcnlWYWx1ZSA9IGFkb3B0Q0YoQ0ZI
VFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGh0dHBSZXNwb25zZSwgQ0ZTVFIoIlZhcnki
KSkpOwogICAgICAgICBpZiAodmFyeVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAo
aGFuZGxlLT5jbGllbnQoKSAmJiAhaGFuZGxlLT5jbGllbnQoKS0+c2hvdWxkQ2FjaGVSZXNwb25z
ZShoYW5kbGUsIGNhY2hlZFJlc3BvbnNlKSkKQEAgLTMyNyw3ICszODQsMTQgQEAgc3RhdGljIEJv
b2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25u
LCBDRlVSTFByb3RlY3QKIAogICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBjYW5SZXNwb25kVG9Q
cm90ZWN0aW9uU3BhY2UoY29ubj0lcCwgaGFuZGxlPSVwICglcykiLCBjb25uLCBoYW5kbGUsIGhh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgUHJvdGVjdGlvblNwYWNlIGNvcmVQcm90ZWN0aW9uU3BhY2Ug
PSBjb3JlKHByb3RlY3Rpb25TcGFjZSk7CisgICAgaWYgKGNvcmVQcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZVVua25vd24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaGFuZGxlLT5jYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwor
I2Vsc2UKICAgICByZXR1cm4gaGFuZGxlLT5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGNvcmUocHJvdGVjdGlvblNwYWNlKSk7CisjZW5kaWYKIH0KICNlbmRpZgogCkBAIC0z
NDQsNyArNDA4LDcgQEAgUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCiAgICAgTE9H
KE5ldHdvcmssICJDRk5ldCAtIERlc3Ryb3lpbmcgam9iICVwICglcykiLCB0aGlzLCBkLT5tX2Zp
cnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKQordm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmLCBDRkRpY3Rpb25hcnlSZWYgY2xpZW50UHJvcGVydGllcykK
IHsKICAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgp
KSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAg
ICAgICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFzc2VkIGluIFVSTCwg
dGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBkZWxlZ2F0ZSBjYWxsIHdvbid0
IGJlIG1hZGUuCkBAIC0zODIsNiArNDQ2LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
Q0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKIAog
ICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBzc2xQcm9wczsKIAorI2lmIFBM
QVRGT1JNKElPUykKKyAgICBzc2xQcm9wcyA9IGFkb3B0Q0YoUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZVNTTFByb3BlcnRpZXNGcm9tTlNVUkxSZXF1ZXN0KGZpcnN0UmVxdWVzdCgpKSk7CisjZWxzZQog
ICAgIGlmIChhbGxvd3NBbnlIVFRQU0NlcnRpZmljYXRlSG9zdHMoKS5jb250YWlucyhmaXJzdFJl
cXVlc3QoKS51cmwoKS5ob3N0KCkubG93ZXIoKSkpIHsKICAgICAgICAgc3NsUHJvcHMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShzc2xQcm9wcy5nZXQoKSwga0NG
U3RyZWFtU1NMQWxsb3dzQW55Um9vdCwga0NGQm9vbGVhblRydWUpOwpAQCAtMzk4LDYgKzQ2NSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgICAgIHdrU2V0Q2xpZW50Q2VydGlmaWNh
dGVJblNTTFByb3BlcnRpZXMoc3NsUHJvcHMuZ2V0KCksIChjbGllbnRDZXJ0LT52YWx1ZSkuZ2V0
KCkpOwogI2VuZGlmCiAgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogICAgIGlmIChz
c2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJvcGVydGllcyhyZXF1ZXN0Lmdl
dCgpLCBzc2xQcm9wcy5nZXQoKSk7CkBAIC00MDksMTkgKzQ3Nyw4IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlLCBib29sCiAgICAgfQogI2VuZGlmCiAKLSAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYg
Y2xpZW50ID0geyA2LCB0aGlzLCAwLCAwLCAwLCBXZWJDb3JlOjp3aWxsU2VuZFJlcXVlc3QsIGRp
ZFJlY2VpdmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIDAsIGRpZEZpbmlzaExvYWRpbmcsIGRp
ZEZhaWwsIHdpbGxDYWNoZVJlc3BvbnNlLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCBkaWRTZW5kQm9k
eURhdGEsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssIDAsCi0jaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICAgICAgY2FuUmVzcG9uZFRvUHJvdGVj
dGlvblNwYWNlLAotI2Vsc2UKLSAgICAgICAgMCwKLSNlbmRpZgotICAgICAgICAwLAotI2lmIFVT
RShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFB
cnJheQotI2Vsc2UgCi0gICAgICAgIDAKLSNlbmRpZgotICAgIH07CisgICAgQ0ZVUkxDb25uZWN0
aW9uQ2xpZW50X1Y2IGNsaWVudCA9ICpSZXNvdXJjZUhhbmRsZTo6Y29ubmVjdGlvbkNsaWVudENh
bGxiYWNrcygpOworICAgIGNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKIAogICAgIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwogICAgIGlmICghc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Up
CkBAIC00MzQsOSArNDkxLDE3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29u
bmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFt
UHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGll
cyIpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXNEaWN0aW9uYXJ5
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikma0NGVVJMQ29u
bmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIChjb25zdCB2b2lkKiopJnN0cmVhbVByb3Bl
cnRpZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gcHJvcGVydGllc0RpY3Rpb25hcnk7CisgICAgaWYgKGNsaWVudFByb3BlcnRpZXMpCisgICAg
ICAgIHByb3BlcnRpZXNEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBjbGllbnRQcm9wZXJ0aWVzKSk7CisgICAg
ZWxzZQorICAgICAgICBwcm9wZXJ0aWVzRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENvbm5l
Y3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKICAgICBDRlJl
bGVhc2Uoc3RyZWFtUHJvcGVydGllcyk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ0ZVUkxS
ZXF1ZXN0U2V0U2hvdWxkU3RhcnRTeW5jaHJvbm91c2x5KHJlcXVlc3QuZ2V0KCksIDEpOworI2Vu
ZGlmCiAgICAgZC0+bV9jb25uZWN0aW9uID0gYWRvcHRDRihDRlVSTENvbm5lY3Rpb25DcmVhdGVX
aXRoUHJvcGVydGllcygwLCByZXF1ZXN0LmdldCgpLCByZWludGVycHJldF9jYXN0PENGVVJMQ29u
bmVjdGlvbkNsaWVudCo+KCZjbGllbnQpLCBwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSkpOwog
fQogCkBAIC00NTQsMTAgKzUxOSwxMiBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAK
ICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVu
dCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIAotICAgIGNyZWF0ZUNGVVJM
Q29ubmVjdGlvbihzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgZC0+bV9zaG91bGRDb250ZW50
U25pZmYpOworICAgIGNyZWF0ZUNGVVJMQ29ubmVjdGlvbihzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgZC0+bV9zaG91bGRDb250ZW50U25pZmYsIGNsaWVudCgpLT5jb25uZWN0aW9uUHJvcGVy
dGllcyh0aGlzKS5nZXQoKSk7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgQ0ZVUkxDb25uZWN0
aW9uU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkp
OworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1
bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBXZWJUaHJlYWRSdW5Mb29wKCksIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7CiAjZWxzZQogICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlV2l0aFJ1
bkxvb3AoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7CiAjZW5kaWYKQEAgLTUwNyw4ICs1NzQsMTEgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXMKICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVz
ZXJ2ZSB0aGUgc2Vzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIg
SVBDLgotICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKKyAgICBpZiAoIXJlcXVlc3QuaXNOdWxs
KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNz
aW9uLmdldCgpKTsKKworICAgICAgICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKKyAg
ICB9CiB9CiAKIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KCkKQEAgLTY5Miw3ICs3NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlLT5jcmVhdGVDRlVSTENvbm5lY3Rpb24oc3RvcmVk
Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VIYW5kbGU6OnNo
b3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSk7CisgICAgaGFuZGxlLT5jcmVhdGVD
RlVSTENvbm5lY3Rpb24oc3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwg
aGFuZGxlLT5jbGllbnQoKS0+Y29ubmVjdGlvblByb3BlcnRpZXMoaGFuZGxlLmdldCgpKS5nZXQo
KSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25TY2hlZHVsZVdpdGhSdW5Mb29wKGhhbmRsZS0+Y29u
bmVjdGlvbigpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHN5bmNocm9ub3VzTG9hZFJ1bkxvb3BN
b2RlKCkpOwogICAgIENGVVJMQ29ubmVjdGlvblNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcCho
YW5kbGUtPmNvbm5lY3Rpb24oKSwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzeW5jaHJvbm91c0xv
YWRSdW5Mb29wTW9kZSgpKTsKQEAgLTc2OSw2ICs4MzksMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6dW5zY2hlZHVsZShTY2hlZHVsZVBhaXIqIHBhaXIpCiB9CiAjZW5kaWYKIAorY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFJlcXVlc3QoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5tX2N1cnJlbnRSZXF1ZXN0OworfQogI2VuZGlmIC8vIFVTRShDRk5FVFdP
UkspCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkBAIC04MDMsNCAr
ODc3LDI0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRsZURhdGFBcnJheShDRkFycmF5UmVm
IGRhdGFBcnJheSkKIH0KICNlbmRpZgogCisjaWYgVVNFKENGTkVUV09SSykKK0NGVVJMQ29ubmVj
dGlvbkNsaWVudF9WNiogUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rpb25DbGllbnRDYWxsYmFja3Mo
KQoreworICAgIHN0YXRpYyBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjYgY2xpZW50ID0geyA2LCAw
LCAwLCAwLCAwLCBXZWJDb3JlOjp3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2VpdmVSZXNwb25zZSwg
ZGlkUmVjZWl2ZURhdGEsIDAsIGRpZEZpbmlzaExvYWRpbmcsIGRpZEZhaWwsIHdpbGxDYWNoZVJl
c3BvbnNlLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCBkaWRTZW5kQm9keURhdGEsIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssIDAsCisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKKyAgICAgICAgY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlLAorI2Vsc2UK
KyAgICAgICAgMCwKKyNlbmRpZgorICAgICAgICAwLAorI2lmIFVTRShORVRXT1JLX0NGREFUQV9B
UlJBWV9DQUxMQkFDSykKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFBcnJheQorI2Vsc2UKKyAgICAg
ICAgMAorI2VuZGlmCisgICAgfTsKKyAgICByZXR1cm4gJmNsaWVudDsKK30KKyNlbmRpZiAvLyBV
U0UoUVVJQ0tfTE9PSykgJiYgVVNFKENGTkVUV09SSykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>