<?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>51522</bug_id>
          
          <creation_ts>2010-12-22 23:29:26 -0800</creation_ts>
          <short_desc>Use deviceRGBColorSpaceRef() instead of calling CGColorSpaceCreateDeviceRGB()</short_desc>
          <delta_ts>2010-12-28 23:45:49 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325908</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-12-22 23:29:26 -0800</bug_when>
    <thetext>We now have a function that returns the device color space - deviceRGBColorSpaceRef(). It is defined in GraphicsContextCG.cpp. We should use that in other CG source code files instead of calling CGColorSpaceCreateDeviceRGB().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325916</commentid>
    <comment_count>1</comment_count>
      <attachid>77311</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-12-22 23:53:45 -0800</bug_when>
    <thetext>Created attachment 77311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325963</commentid>
    <comment_count>2</comment_count>
      <attachid>77311</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 00:59:55 -0800</bug_when>
    <thetext>Comment on attachment 77311
Patch

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

Looks OK.

&gt; WebCore/platform/graphics/cg/GradientCG.cpp:32
&gt;  #include &quot;GraphicsContext.h&quot;
&gt; +#include &quot;GraphicsContextCG.h&quot;

Do we need bot of these includes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326082</commentid>
    <comment_count>3</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-12-23 08:20:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 77311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77311&amp;action=review
&gt; 
&gt; Looks OK.
&gt; 
&gt; &gt; WebCore/platform/graphics/cg/GradientCG.cpp:32
&gt; &gt;  #include &quot;GraphicsContext.h&quot;
&gt; &gt; +#include &quot;GraphicsContextCG.h&quot;
&gt; 
&gt; Do we need bot of these includes?

Yes. Otherwise I get a compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326111</commentid>
    <comment_count>4</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-12-23 09:26:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 77311 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77311&amp;action=review
&gt; &gt; 
&gt; &gt; Looks OK.
&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/graphics/cg/GradientCG.cpp:32
&gt; &gt; &gt;  #include &quot;GraphicsContext.h&quot;
&gt; &gt; &gt; +#include &quot;GraphicsContextCG.h&quot;
&gt; &gt; 
&gt; &gt; Do we need bot of these includes?
&gt; 
&gt; Yes. Otherwise I get a compile error.

Oh, I was wrong. I can just include GraphicsContextCG.h and leave out the include for GraphicsContext.h. Updated patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326157</commentid>
    <comment_count>5</comment_count>
      <attachid>77349</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2010-12-23 10:49:45 -0800</bug_when>
    <thetext>Created attachment 77349
Patch with headers fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327487</commentid>
    <comment_count>6</comment_count>
      <attachid>77349</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-28 22:39:07 -0800</bug_when>
    <thetext>Comment on attachment 77349
Patch with headers fix

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327491</commentid>
    <comment_count>7</comment_count>
      <attachid>77349</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-28 23:45:42 -0800</bug_when>
    <thetext>Comment on attachment 77349
Patch with headers fix

Clearing flags on attachment: 77349

Committed r74734: &lt;http://trac.webkit.org/changeset/74734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327492</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-28 23:45:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77311</attachid>
            <date>2010-12-22 23:53:45 -0800</date>
            <delta_ts>2010-12-23 10:49:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51522-20101222235344.patch</filename>
            <type>text/plain</type>
            <size>28040</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGE2ZTc0MzQ1MzJjZDAwYzYyZTQ2NzBkNGIxYjM3ODEzNDg2NDk4Ny4uNTQ0MDIyOTYxODk3MGJm
NDExODA2M2Y5YjQ1YjAxODQyMzljMTFiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0xMi0yMiAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUxNTIyCisgICAgICAgIFVzZSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgaW5z
dGVhZCBvZiBjYWxsaW5nIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpCisKKyAgICAgICAg
KiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbVJl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBsYXRmb3JtR3JhZGllbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ0cubW06CisgICAgICAgIChJbWFnZUdTdHJlYW1lcjo6SW1h
Z2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRXaXRoSERDKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpbmRvd3NCaXRtYXApOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphbGxvY0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNnQ29u
dGV4dEZyb21CaXRtYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3Jh
ZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRy
YWNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJh
Y2spOgorCiAyMDEwLTEyLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2lu
LmNwcAppbmRleCA2MmQzM2VmYTU0MGRmMzMwOWJmZTVmZWFiNTk2YTBkYWEwYzE4YWU4Li5iYTY2
Y2VjYjE5OWQwNWFlNjMzMGI0NjRkYmVlYWZlZjczNTBjMDljIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dp
bi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiAjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgpAQCAtNjMsMTAgKzY0LDggQEAgc3RhdGljIEhC
SVRNQVAgaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQogCiAg
ICAgSEJJVE1BUCBoYm1wID0gQ3JlYXRlRElCU2VjdGlvbigwLCAmYm1wLCBESUJfUkdCX0NPTE9S
Uywgc3RhdGljX2Nhc3Q8dm9pZCoqPigmYml0cyksIDAsIDApOwogICAgIEhCSVRNQVAgaGJtcE9s
ZCA9IHN0YXRpY19jYXN0PEhCSVRNQVA+KFNlbGVjdE9iamVjdChoZGMsIGhibXApKTsKLSAgICBD
R0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoc3RhdGlj
X2Nhc3Q8dm9pZCo+KGJpdHMpLCB3LCBoLAotICAgICAgICA4LCB3ICogc2l6ZW9mKFJHQlFVQUQp
LCBkZXZpY2VSR0IsIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShkZXZpY2VSR0IpOwor
ICAgICAgICA4LCB3ICogc2l6ZW9mKFJHQlFVQUQpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRG
aXJzdCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCBnYyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhZGllbnRDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRp
ZW50Q0cuY3BwCmluZGV4IDRhYWFlYWY0NWQ3MTM3YTIwZTBhYmU0ZjAzY2IxM2M1OTgzYzZkNmEu
LjBiYTRlYmQ4YjliMDYxMzg1M2IwOWYyMzIzYjBkMmVjYzUxNGZiMjQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2Vz
L0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAg
LTY1LDcgKzY2LDcgQEAgQ0dTaGFkaW5nUmVmIEdyYWRpZW50OjpwbGF0Zm9ybUdyYWRpZW50KCkK
ICAgICBjb25zdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGdyYWRpZW50Q2FsbGJhY2tzID0geyAwLCBn
cmFkaWVudENhbGxiYWNrLCAwIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IGNvbG9y
RnVuY3Rpb24oQWRvcHRDRiwgQ0dGdW5jdGlvbkNyZWF0ZSh0aGlzLCAxLCBpbnRlcnZhbFJhbmdl
cywgNCwgY29sb3JDb21wb25lbnRSYW5nZXMsICZncmFkaWVudENhbGxiYWNrcykpOwogCi0gICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CiAKICAgICBpZiAobV9yYWRpYWwpCiAgICAgICAgIG1fZ3JhZGllbnQgPSBD
R1NoYWRpbmdDcmVhdGVSYWRpYWwoY29sb3JTcGFjZSwgbV9wMCwgbV9yMCwgbV9wMSwgbV9yMSwg
Y29sb3JGdW5jdGlvbi5nZXQoKSwgdHJ1ZSwgdHJ1ZSk7CkBAIC04MCw4ICs4MSw2IEBAIENHR3Jh
ZGllbnRSZWYgR3JhZGllbnQ6OnBsYXRmb3JtR3JhZGllbnQoKQogICAgIGlmIChtX2dyYWRpZW50
KQogICAgICAgICByZXR1cm4gbV9ncmFkaWVudDsKIAotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotCiAgICAgc29y
dFN0b3BzSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBjb25zdCBpbnQgY1Jlc2VydmVkU3RvcHMg
PSAzOwpAQCAtMTAwLDcgKzk5LDcgQEAgQ0dHcmFkaWVudFJlZiBHcmFkaWVudDo6cGxhdGZvcm1H
cmFkaWVudCgpCiAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQobV9zdG9wc1tpXS5z
dG9wKTsKICAgICB9CiAgICAgCi0gICAgbV9ncmFkaWVudCA9IENHR3JhZGllbnRDcmVhdGVXaXRo
Q29sb3JDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0
aW9ucy5kYXRhKCksIG1fc3RvcHMuc2l6ZSgpKTsKKyAgICBtX2dyYWRpZW50ID0gQ0dHcmFkaWVu
dENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHMoZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xv
ckNvbXBvbmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBtX3N0b3BzLnNpemUoKSk7CiAK
ICAgICByZXR1cm4gbV9ncmFkaWVudDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IGY5OTcyNzdlMWUzNzc1NTM0
ZDE0YjRlNzFjNjJlMGRlMTg0Nzg4OGEuLmY3NzEyYjQ3NTU1ZGFkMGM2NTM0YzA1MGNjNjBmZjg2
YWU1NTY3NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRSgzRF9DQU5W
QVMpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgogCkBAIC0yMzYsOCArMjM3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFy
KiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIGludCByb3dCeXRl
cyA9IGltYWdlV2lkdGggKiA0OwogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgaW1hZ2VQ
aXhlbHMsIHJvd0J5dGVzICogaW1hZ2VIZWlnaHQsIDApKTsKLSAgICBSZXRhaW5QdHI8Q0dDb2xv
clNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJH
QigpKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZShBZG9wdENGLCBDR0ltYWdl
Q3JlYXRlKGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCA4LCAzMiwgcm93Qnl0ZXMsIGNvbG9yU3Bh
Y2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QsCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UoQWRvcHRDRiwg
Q0dJbWFnZUNyZWF0ZShpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgOCwgMzIsIHJvd0J5dGVzLCBk
ZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCiAgICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICAvLyBDU1Mgc3R5bGlu
ZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8v
IHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVj
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYzdlZDBjOGM5
ZDYwZTNmYjQ3ZTcyYTgwMWMyN2U1OTUxM2I1N2IwNy4uZGZlZTk2YTAxYzAwZmM5YTkwNjc0ZGY2
N2IyZjVmZjgwMDhhZjA5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUNHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCkBAIC0xMTIsOCArMTEyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKCkKICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4g
dGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCiAgICAgaWYgKGltYWdl
ICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KSA9PSAxKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICAg
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBzcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmlj
ZVJHQigpOwotICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBibWFwKEFkb3B0Q0YsIENH
Qml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc3BhY2Us
CisgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJtYXAoQWRvcHRDRiwgQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCksCiAgICAgICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwogICAgICAgICBpZiAoIWJtYXApCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lckNHLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VHU3RyZWFtZXJDRy5tbQppbmRleCBjNzNhZGMwMTU0MDUwNzZkODAyMTI1MjAy
ZjQwNjk4YmZkY2Y3ODMzLi5lNjUxMWE5YzU2NGM2ZTkxNWRlNWIwNjc2MjVkNDE5NjlhOWIzMTM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdT
dHJlYW1lckNHLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyQ0cubW0KQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlICJJbWFnZUdT
dHJlYW1lci5oIgogI2lmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTQzLDggKzQ0LDcgQEAgSW1hZ2VH
U3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciomIGJ1ZmZlciwgSW50U2l6ZSBzaXpl
KQogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoMCwgc3RhdGljX2Nhc3Q8VUludDgqPihHU1RfQlVGRkVSX0RBVEEoYnVm
ZmVyKSksIEdTVF9CVUZGRVJfU0laRShidWZmZXIpLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwotICAgIHN0YXRpYyBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENH
SW1hZ2VSZWYgZnJhbWVJbWFnZSA9IENHSW1hZ2VDcmVhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCA4LCAzMiwgc2l6ZS53aWR0aCgpKjQsIGNvbG9yU3BhY2UsCisgICAgQ0dJbWFnZVJl
ZiBmcmFtZUltYWdlID0gQ0dJbWFnZUNyZWF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCks
IDgsIDMyLCBzaXplLndpZHRoKCkqNCwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLAogICAgICAg
ICBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFGaXJzdCwgcHJvdmlk
ZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKICAgICBtX2lt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShmcmFtZUltYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRl
eCBiNDJlNTFjNWQzMGU2YjUyNjVhMjA5MTQxZGMwYTU3NDlhYTYwZGEyLi5hOTAyMjA0ODY4NDFk
YzY4MjA1Njk3MjdlY2E3MjEwZWI0ZThkMTU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtNDAsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29udGV4dFdpdGhIREMoSERDIGhkYywgYm9v
bCBoYXNBbHBoYSkKIHsKICAgICBIQklUTUFQIGJpdG1hcCA9IHN0YXRpY19jYXN0PEhCSVRNQVA+
KEdldEN1cnJlbnRPYmplY3QoaGRjLCBPQkpfQklUTUFQKSk7Ci0gICAgQ0dDb2xvclNwYWNlUmVm
IGRldmljZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogICAgIEJJVE1BUCBp
bmZvOwogCiAgICAgR2V0T2JqZWN0KGJpdG1hcCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7CkBAIC00
OCw4ICs0OCw3IEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMgaGRj
LCBib29sIGhhc0FscGhhKQogCiAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0
aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCLCBiaXRtYXBJbmZvKTsK
LSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGRldmljZVJHQik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMsIGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbyk7CiAKICAgICAvLyBGbGlwIGNvb3JkcwogICAg
IENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBpbmZvLmJtSGVpZ2h0KTsKQEAgLTEw
MSwxMSArMTAwLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29udGV4
dChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib28KICAgICBHZXRPYmplY3QoYml0
bWFwLCBzaXplb2YoaW5mbyksICZpbmZvKTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9
PSAzMik7CiAKLSAgICBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCk7CiAgICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1h
cENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwg
OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRs
ZSB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1h
cEJ5dGVPcmRlcjMyTGl0dGxlIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3VwcG9ydEFscGhhQmxlbmQgPyBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKLSAgICBDR0Nv
bG9yU3BhY2VSZWxlYXNlKGRldmljZVJHQik7CiAKICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dCk7CiAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKG1fZGF0YS0+bV9jZ0NvbnRleHQuZ2V0KCksIGRzdFJlY3QsIGltYWdlKTsKQEAgLTEx
OSwxMiArMTE2LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3V2luZG93c0JpdG1hcChXaW5kb3dzQml0bWFwKiBpbWFnZSwgY29uc3QgSW50
UG9pbnQmIHBvaW50KQogewotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGRldmljZVJH
QihBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAgICAgLy8gRklYTUU6
IENyZWF0aW5nIENGRGF0YSBpcyBub24tb3B0aW1hbCwgYnV0IG5lZWRlZCB0byBhdm9pZCBjcmFz
aGluZyB3aGVuIHByaW50aW5nLiAgSWRlYWxseSB3ZSBzaG91bGQgCiAgICAgLy8gbWFrZSBhIGN1
c3RvbSBDR0RhdGFQcm92aWRlciB0aGF0IGNvbnRyb2xzIHRoZSBXaW5kb3dzQml0bWFwIGxpZmV0
aW1lLiAgc2VlIDxyZGFyOi8vNjM5NDQ1NT4KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBpbWFn
ZURhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGltYWdlLT5i
dWZmZXIoKSwgaW1hZ2UtPmJ1ZmZlckxlbmd0aCgpKSk7CiAgICAgUmV0YWluUHRyPENHRGF0YVBy
b3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGltYWdlRGF0YS5nZXQoKSkpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlKEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGUoaW1hZ2UtPnNpemUoKS53aWR0aCgpLCBpbWFnZS0+
c2l6ZSgpLmhlaWdodCgpLCA4LCAzMiwgaW1hZ2UtPmJ5dGVzUGVyUm93KCksIGRldmljZVJHQi5n
ZXQoKSwKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZShBZG9wdENGLCBDR0ltYWdl
Q3JlYXRlKGltYWdlLT5zaXplKCkud2lkdGgoKSwgaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSwgOCwg
MzIsIGltYWdlLT5ieXRlc1BlclJvdygpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFGaXJzdCwgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKG1fZGF0YS0+bV9jZ0NvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UocG9pbnQu
eCgpLCBwb2ludC55KCksIGltYWdlLT5zaXplKCkud2lkdGgoKSwgaW1hZ2UtPnNpemUoKS5oZWln
aHQoKSksIGNnSW1hZ2UuZ2V0KCkpOyAgIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCBlNjViODU5MzM4N2Q1M2VkYzE1Mzg4Y2MxNGQ1ODE5
YTdiMWI0NGEzLi45M2M2MjRhNzk0NjdkYWNlNDdhYTVlNGE0MTQwOTA2NDA3MTUxY2ZiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQml0bWFwSW5mby5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dENHLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxBcHBsaWNhdGlv
blNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBA
IC01MCw5ICs1MSw4IEBAIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVh
dGUoSEJJVE1BUCBoQml0bWFwKQogICAgIGlmICghZGliU2VjdGlvbi5kc0JtLmJtQml0cykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBkZXZpY2VS
R0IoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwogICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKGRpYlNlY3Rpb24uZHNCbS5ibUJpdHMsIGRpYlNlY3Rpb24uZHNCbS5ibVdpZHRoLCBkaWJT
ZWN0aW9uLmRzQm0uYm1IZWlnaHQsIDgsCi0gICAgICAgIGRpYlNlY3Rpb24uZHNCbS5ibVdpZHRo
Qnl0ZXMsIGRldmljZVJHQi5nZXQoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisgICAgICAgIGRpYlNlY3Rpb24uZHNCbS5i
bVdpZHRoQnl0ZXMsIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVy
MzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CiAKICAgICAvLyBU
aGUgQml0bWFwSW1hZ2UgdGFrZXMgb3duZXJzaGlwIG9mIHRoaXMuCiAgICAgQ0dJbWFnZVJlZiBj
Z0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSk7
CkBAIC03MCw5ICs3MCw4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJ
VE1BUCBibXAsIExQU0laRSBzaXplKQogICAgIEFTU0VSVChibXBJbmZvLmJtQml0c1BpeGVsID09
IDMyKTsKICAgICBpbnQgYnVmZmVyU2l6ZSA9IGJtcEluZm8uYm1XaWR0aEJ5dGVzICogYm1wSW5m
by5ibUhlaWdodDsKICAgICAKLSAgICBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xv
clNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IENH
Qml0bWFwQ29udGV4dENyZWF0ZShibXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0LAotICAgICAgICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdC
LCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QpOworICAgICAgICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QpOwogICAKICAgICBHcmFwaGljc0NvbnRleHQgZ2MoY2dDb250ZXh0KTsK
IApAQCAtODQsNyArODMsNiBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhC
SVRNQVAgYm1wLCBMUFNJWkUgc2l6ZSkKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRl
eHRSZWxlYXNlKGNnQ29udGV4dCk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShkZXZpY2VSR0Ip
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDM5NzRmMGVmOGViZDQ1MWE4
MmEyMGRmZTQyZTE4ZjQzNWEzYTgzZWEuLjAzYjRjOGY4NTEzNmIxMGRiYjkyY2NkZDRiMjMxMDIy
NWZiMjJiNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRDRy5oIgorCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29sb3JTcGFjZS5oPgogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0ltYWdlLmg+CiAKQEAgLTgzLDEwICs4NSw5IEBAIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgY3JlYXRlQ29sb3JTcGFjZShjb25zdCBDb2xvclByb2ZpbGUmIGNvbG9y
UHJvZmlsZSkKICNpZiAhZGVmaW5lZChUQVJHRVRJTkdfVElHRVIpICYmICFkZWZpbmVkKFRBUkdF
VElOR19MRU9QQVJEKQogICAgIHJldHVybiBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoSUNDUHJvZmls
ZShkYXRhLmdldCgpKTsKICNlbHNlCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gZGV2
aWNlQ29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAg
ICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm9maWxlRGF0YVByb3ZpZGVyKEFkb3B0
Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7CiAgICAgQ0dG
bG9hdCByYW5nZXNbXSA9IHswLjAsIDI1NS4wLCAwLjAsIDI1NS4wLCAwLjAsIDI1NS4wfTsKLSAg
ICByZXR1cm4gQ0dDb2xvclNwYWNlQ3JlYXRlSUNDQmFzZWQoMywgcmFuZ2VzLCBwcm9maWxlRGF0
YVByb3ZpZGVyLmdldCgpLCBkZXZpY2VDb2xvclNwYWNlLmdldCgpKTsKKyAgICByZXR1cm4gQ0dD
b2xvclNwYWNlQ3JlYXRlSUNDQmFzZWQoMywgcmFuZ2VzLCBwcm9maWxlRGF0YVByb3ZpZGVyLmdl
dCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCBmZmQyMTYyZWVjMDY2Mjg4MGU0YTEzMjIx
NjE3M2MzNzljODc3ZDc3Li43NTBlNjY0Yjc2YTJjYmUxNDNiOGU2YTRiOGIwMmZhMWZlNWNjNDk4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlJldGFpblB0ci5oIgogCkBAIC01Mywx
MSArNTQsOSBAQCBIQklUTUFQIGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29u
dGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIGlmICghdGFyZ2V0UmVmKQogICAgICAgICByZXR1cm4g
aGJtcDsKIAotICAgIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVh
dGVEZXZpY2VSR0IoKTsKICAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFw
Q29udGV4dENyZWF0ZShiaXRzLCBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoLCBibXBJbmZvLmJt
aUhlYWRlci5iaUhlaWdodCwgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICogNCwgZGV2aWNl
UkdCLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBibXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoICogNCwgZGV2aWNlUkdCQ29sb3JTcGFjZVJl
ZigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmly
c3QpOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoZGV2aWNlUkdCKTsKICAgICBpZiAoIWJpdG1h
cENvbnRleHQpIHsKICAgICAgICAgRGVsZXRlT2JqZWN0KGhibXApOwogICAgICAgICByZXR1cm4g
MDsKQEAgLTczLDEwICs3Miw4IEBAIHN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRlQ2dDb250ZXh0
RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXplb2Yo
aW5mbyksICZpbmZvKTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAKLSAg
ICBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdC
KCk7CiAgICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lk
dGhCeXRlcywgZGV2aWNlUkdCLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdl
QWxwaGFOb25lU2tpcEZpcnN0KTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGRldmljZVJHQik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5mby5ibVdpZHRoQnl0ZXMsIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CiAgICAgcmV0dXJu
IGJpdG1hcENvbnRleHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXgg
YjYzMmQ5YTdkNTIzOWU0OGY5MDkyZWZlOWQ3NTJmMWFhODE2MDdiYi4uZGViYWQ2MWQ0YzkyZTAx
YWE2NmE3NDE3MzYxNzRlMjdmYmQ5OWM2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkVsZW1lbnQuaCIKICNpbXBvcnQgIkZyYW1l
Vmlldy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE1l
ZGlhRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCkBAIC0xMDQxLDI1ICsxMDQyLDI1
IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJh
ZGl1cy53aWR0aCgpOwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3NwYWNlKEFk
b3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBDR0NvbG9yU3BhY2VS
ZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgRmxvYXRSZWN0IHRv
cEdyYWRpZW50KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpIC8gMi4wZik7CiAg
ICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgdG9wQ2FsbGJhY2tzID0geyAwLCBUb3BHcmFk
aWVudEludGVycG9sYXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IHRv
cEZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVM
TCwgJnRvcENhbGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNoYWRp
bmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFr
ZSh0b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKHRvcEdyYWRp
ZW50LngoKSwgdG9wR3JhZGllbnQuYm90dG9tKCkpLCB0b3BGdW5jdGlvbi5nZXQoKSwgZmFsc2Us
IGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gdG9wU2hhZGluZyhBZG9wdENG
LCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50Lngo
KSwgdG9wR3JhZGllbnQueSgpKSwgQ0dQb2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFk
aWVudC5ib3R0b20oKSksIHRvcEZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAg
IEZsb2F0UmVjdCBib3R0b21HcmFkaWVudChyLngoKSArIHJhZGl1cywgci55KCkgKyByLmhlaWdo
dCgpIC8gMi4wZiwgci53aWR0aCgpIC0gMi4wZiAqIHJhZGl1cywgci5oZWlnaHQoKSAvIDIuMGYp
OwogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGJvdHRvbUNhbGxiYWNrcyA9IHsgMCwg
Qm90dG9tR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0
aW9uUmVmPiBib3R0b21GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEs
IE5VTEwsIDQsIE5VTEwsICZib3R0b21DYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8Q0dTaGFk
aW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZS5nZXQoKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQu
eSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5ib3R0
b20oKSksIGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5Q
dHI8Q0dTaGFkaW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGll
bnQueSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5i
b3R0b20oKSksIGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHN0
cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIE1haW5HcmFkaWVu
dEludGVycG9sYXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1haW5G
dW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEws
ICZtYWluQ2FsbGJhY2tzKSk7Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRp
bmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFr
ZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCksIHIuYm90dG9tKCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+
IG1haW5TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2lu
dE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpLCByLmJvdHRvbSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIFJldGFpblB0cjxDR1NoYWRp
bmdSZWY+IGxlZnRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5n
ZXQoKSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFk
aXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54
KCkgKyByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
IAotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1No
YWRpbmdDcmVhdGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIu
eSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlv
bi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmln
aHRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1h
a2Uoci5yaWdodCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSByYWRpdXMsIHIu
eSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVz
LCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwpA
QCAtMTI4OSw3ICsxMjkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKIAogICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOwotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNzcGFjZShBZG9wdENGLCBD
R0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFj
ZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMpOwpAQCAtMTI5
OCw5ICsxMjk5LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKICAgICBSZXRhaW5QdHI8Q0dG
dW5jdGlvblJlZj4gbWFpbkZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwg
MSwgTlVMTCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKICAgICBSZXRhaW5QdHI8Q0dTaGFk
aW5nUmVmPiBtYWluU2hhZGluZzsKICAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09
IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRp
bmdDcmVhdGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBib3Vu
ZHMuYm90dG9tKCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91bmRzLmJvdHRvbSgp
KSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbWFpblNoYWRp
bmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5k
cy54KCksICBib3VuZHMuYm90dG9tKCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91
bmRzLmJvdHRvbSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBl
bHNlCi0gICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLmdldCgpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRN
YWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFs
c2UsIGZhbHNlKSk7CisgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9p
bnRNYWtlKGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tS
YWRpdXMpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRz
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDhkNjZiYTcyMGJl
Y2Y3NjQxYWQ3MjdmZDRjY2NjNWUzOTY2M2U4ZDAuLmRhZGRjZGQ2NjM0YTU2ZmJjNjRmYThlMjMz
ZTU1ZmM3N2NjYzExZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTc2MCwyNSArNzYxLDI1
IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWluCiAKICAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJh
ZGl1cy53aWR0aCgpOwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3NwYWNlKEFk
b3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBDR0NvbG9yU3BhY2VS
ZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgRmxvYXRSZWN0IHRv
cEdyYWRpZW50KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpIC8gMi4wZik7CiAg
ICAgc3RydWN0IENHRnVuY3Rpb25DYWxsYmFja3MgdG9wQ2FsbGJhY2tzID0geyAwLCBUb3BHcmFk
aWVudEludGVycG9sYXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IHRv
cEZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVM
TCwgJnRvcENhbGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNoYWRp
bmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFr
ZSh0b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKHRvcEdyYWRp
ZW50LngoKSwgdG9wR3JhZGllbnQuYm90dG9tKCkpLCB0b3BGdW5jdGlvbi5nZXQoKSwgZmFsc2Us
IGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gdG9wU2hhZGluZyhBZG9wdENG
LCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50Lngo
KSwgdG9wR3JhZGllbnQueSgpKSwgQ0dQb2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFk
aWVudC5ib3R0b20oKSksIHRvcEZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAg
IEZsb2F0UmVjdCBib3R0b21HcmFkaWVudChyLngoKSArIHJhZGl1cywgci55KCkgKyByLmhlaWdo
dCgpIC8gMi4wZiwgci53aWR0aCgpIC0gMi4wZiAqIHJhZGl1cywgci5oZWlnaHQoKSAvIDIuMGYp
OwogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGJvdHRvbUNhbGxiYWNrcyA9IHsgMCwg
Qm90dG9tR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0
aW9uUmVmPiBib3R0b21GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEs
IE5VTEwsIDQsIE5VTEwsICZib3R0b21DYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8Q0dTaGFk
aW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZS5nZXQoKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQu
eSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5ib3R0
b20oKSksIGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5Q
dHI8Q0dTaGFkaW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGll
bnQueSgpKSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5i
b3R0b20oKSksIGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHN0
cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIE1haW5HcmFkaWVu
dEludGVycG9sYXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1haW5G
dW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEws
ICZtYWluQ2FsbGJhY2tzKSk7Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRp
bmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFr
ZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCksIHIuYm90dG9tKCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+
IG1haW5TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2lu
dE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpLCByLmJvdHRvbSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIFJldGFpblB0cjxDR1NoYWRp
bmdSZWY+IGxlZnRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5n
ZXQoKSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFk
aXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRl
QXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54
KCkgKyByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
IAotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1No
YWRpbmdDcmVhdGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIu
eSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlv
bi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmln
aHRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1h
a2Uoci5yaWdodCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSByYWRpdXMsIHIu
eSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVz
LCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwpA
QCAtOTY4LDcgKzk2OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJh
Y2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgfQogCiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3NwYWNlKEFkb3B0Q0YsIENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0g
ZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kcyk7CkBAIC05NzcsOSAr
OTc4LDkgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICBSZXRhaW5QdHI8Q0dGdW5jdGlv
blJlZj4gbWFpbkZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVM
TCwgNCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVm
PiBtYWluU2hhZGluZzsKICAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRl
clZlcnRpY2FsUGFydCkKLSAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVh
dGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBib3VuZHMuYm90
dG9tKCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91bmRzLmJvdHRvbSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbWFpblNoYWRpbmcuYWRv
cHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCks
ICBib3VuZHMuYm90dG9tKCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91bmRzLmJv
dHRvbSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCi0g
ICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdl
dCgpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJv
dW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwo
Y3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtl
KGJvdW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2Us
IGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMp
OwogICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77349</attachid>
            <date>2010-12-23 10:49:45 -0800</date>
            <delta_ts>2010-12-28 23:45:42 -0800</delta_ts>
            <desc>Patch with headers fix</desc>
            <filename>bug-51522-20101223104944.patch</filename>
            <type>text/plain</type>
            <size>28110</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGE1ZWY4ZGQ4ZGZjMjUzNTFkODA5NTA4NzM1MWNjNmNlMTRlZWU2ZC4uMjU5YTEwNTgzMGJiOTQy
N2U3ZTNhMjkyOGJhNDZlNWE2ZWYxNDI3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMC0xMi0yMiAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUxNTIyCisgICAgICAgIFVzZSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkgaW5z
dGVhZCBvZiBjYWxsaW5nIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpCisKKyAgICAgICAg
KiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlRnJvbVJl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OnBsYXRmb3JtR3JhZGllbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ0cubW06CisgICAgICAgIChJbWFnZUdTdHJlYW1lcjo6SW1h
Z2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbnRleHRXaXRoSERDKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpbmRvd3NCaXRtYXApOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphbGxvY0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNnQ29u
dGV4dEZyb21CaXRtYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3Jh
ZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRy
YWNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJh
Y2spOgorCiAyMDEwLTEyLTIzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZUNHV2luLmNwcAppbmRl
eCA2MmQzM2VmYTU0MGRmMzMwOWJmZTVmZWFiNTk2YTBkYWEwYzE4YWU4Li5jOTM1MWEyOGRlMmZh
ZTY5N2NmNDFhNWFlYmQ2NTRiNjY2MTI5NDhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC02MywxMCArNjMsOCBAQCBzdGF0aWMgSEJJVE1BUCBp
bWFnZUZyb21SZWN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgSW50UmVjdCYgaXIpCiAKICAgICBIQklU
TUFQIGhibXAgPSBDcmVhdGVESUJTZWN0aW9uKDAsICZibXAsIERJQl9SR0JfQ09MT1JTLCBzdGF0
aWNfY2FzdDx2b2lkKio+KCZiaXRzKSwgMCwgMCk7CiAgICAgSEJJVE1BUCBoYm1wT2xkID0gc3Rh
dGljX2Nhc3Q8SEJJVE1BUD4oU2VsZWN0T2JqZWN0KGhkYywgaGJtcCkpOwotICAgIENHQ29sb3JT
cGFjZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKICAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2
b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIGRldmlj
ZVJHQiwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0KTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGRldmljZVJHQik7CisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0
bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsK
ICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
IGdjKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKaW5kZXggNGFhYWVhZjQ1ZDcxMzdhMjBlMGFiZTRmMDNjYjEzYzU5ODNjNmQ2YS4uODUwMzdl
MjFmNjVhOWZmYjUyMzQ3NTQ0MzQyYTg3ODNjMmVkZmYzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
R3JhZGllbnQuaCIKIAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCkBAIC02NSw3ICs2NSw3IEBAIENHU2hhZGluZ1JlZiBHcmFkaWVudDo6cGxh
dGZvcm1HcmFkaWVudCgpCiAgICAgY29uc3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBncmFkaWVudENh
bGxiYWNrcyA9IHsgMCwgZ3JhZGllbnRDYWxsYmFjaywgMCB9OwogICAgIFJldGFpblB0cjxDR0Z1
bmN0aW9uUmVmPiBjb2xvckZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUodGhpcywg
MSwgaW50ZXJ2YWxSYW5nZXMsIDQsIGNvbG9yQ29tcG9uZW50UmFuZ2VzLCAmZ3JhZGllbnRDYWxs
YmFja3MpKTsKIAotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
ID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgaWYgKG1fcmFkaWFsKQogICAgICAg
ICBtX2dyYWRpZW50ID0gQ0dTaGFkaW5nQ3JlYXRlUmFkaWFsKGNvbG9yU3BhY2UsIG1fcDAsIG1f
cjAsIG1fcDEsIG1fcjEsIGNvbG9yRnVuY3Rpb24uZ2V0KCksIHRydWUsIHRydWUpOwpAQCAtODAs
OCArODAsNiBAQCBDR0dyYWRpZW50UmVmIEdyYWRpZW50OjpwbGF0Zm9ybUdyYWRpZW50KCkKICAg
ICBpZiAobV9ncmFkaWVudCkKICAgICAgICAgcmV0dXJuIG1fZ3JhZGllbnQ7CiAKLSAgICBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VS
R0IoKTsKLQogICAgIHNvcnRTdG9wc0lmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgY29uc3QgaW50
IGNSZXNlcnZlZFN0b3BzID0gMzsKQEAgLTEwMCw3ICs5OCw3IEBAIENHR3JhZGllbnRSZWYgR3Jh
ZGllbnQ6OnBsYXRmb3JtR3JhZGllbnQoKQogICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBw
ZW5kKG1fc3RvcHNbaV0uc3RvcCk7CiAgICAgfQogICAgIAotICAgIG1fZ3JhZGllbnQgPSBDR0dy
YWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhjb2xvclNwYWNlLCBjb2xvckNvbXBvbmVu
dHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBtX3N0b3BzLnNpemUoKSk7CisgICAgbV9ncmFk
aWVudCA9IENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKGRldmljZVJHQkNvbG9y
U3BhY2VSZWYoKSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbV9z
dG9wcy5zaXplKCkpOwogCiAgICAgcmV0dXJuIG1fZ3JhZGllbnQ7CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCBm
OTk3Mjc3ZTFlMzc3NTUzNGQxNGI0ZTcxYzYyZTBkZTE4NDc4ODhhLi5mNzcxMmI0NzU1NWRhZDBj
NjUzNGMwNTBjYzYwZmY4NmFlNTU2Nzc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoM0RfQ0FOVkFTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIApAQCAt
MjM2LDggKzIzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgICAgIHJldHVybjsK
ICAgICBpbnQgcm93Qnl0ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRh
UHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhEYXRhKDAsIGltYWdlUGl4ZWxzLCByb3dCeXRlcyAqIGltYWdlSGVpZ2h0LCAwKSk7Ci0gICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Uo
QWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZShpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgOCwgMzIsIHJv
d0J5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAorICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
Z0ltYWdlKEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGUoaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIDgs
IDMyLCByb3dCeXRlcywgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LAogICAgICAgICBkYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAg
ICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJl
c2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUgQ2FudmFzIHRvIGZpZ3Vy
ZSBvdXQgdGhlIGNvcnJlY3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3Bw
CmluZGV4IGM3ZWQwYzhjOWQ2MGUzZmI0N2U3MmE4MDFjMjdlNTk1MTNiNTdiMDcuLmRmZWU5NmEw
MWMwMGZjOWE5MDY3NGRmNjdiMmY1ZmY4MDA4YWYwOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUNHLmNwcApAQCAtMTEyLDggKzExMiw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9y
IHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdl
LgogICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJbWFn
ZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRd
OyAvLyBSR0JBCi0gICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Ym1hcChBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVv
ZihwaXhlbCksIHNwYWNlLAorICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBibWFwKEFk
b3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVs
KSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLAogICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKICAgICAgICAgaWYg
KCFibWFwKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDRy5tbSBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ0cubW0KaW5kZXggYzczYWRjMDE1
NDA1MDc2ZDgwMjEyNTIwMmY0MDY5OGJmZGNmNzgzMy4uYzlhNmNhOGY0YzkyZWRjYjExZTE1MjE0
NjhiZmUxZTgwNzg3OGZlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDRy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNHLm1tCkBAIC0xOCw2ICsxOCw4IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIK
ICNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgogI2lmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTQz
LDggKzQ1LDcgQEAgSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciomIGJ1
ZmZlciwgSW50U2l6ZSBzaXplKQogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YShBZG9w
dENGLCBDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgc3RhdGljX2Nhc3Q8VUludDgqPihH
U1RfQlVGRkVSX0RBVEEoYnVmZmVyKSksIEdTVF9CVUZGRVJfU0laRShidWZmZXIpLCBrQ0ZBbGxv
Y2F0b3JOdWxsKSk7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBwcm92aWRlcihB
ZG9wdENGLCBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwotICAg
IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZVJHQigpOwotICAgIENHSW1hZ2VSZWYgZnJhbWVJbWFnZSA9IENHSW1hZ2VDcmVhdGUoc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCA4LCAzMiwgc2l6ZS53aWR0aCgpKjQsIGNvbG9yU3Bh
Y2UsCisgICAgQ0dJbWFnZVJlZiBmcmFtZUltYWdlID0gQ0dJbWFnZUNyZWF0ZShzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCksIDgsIDMyLCBzaXplLndpZHRoKCkqNCwgZGV2aWNlUkdCQ29sb3JT
cGFjZVJlZigpLAogICAgICAgICBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdl
QWxwaGFGaXJzdCwgcHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KTsKICAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShmcmFtZUltYWdlKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcAppbmRleCBiNDJlNTFjNWQzMGU2YjUyNjVhMjA5MTQxZGMwYTU3NDlhYTYw
ZGEyLi5lNjZhYTFhYTgwNGZjZDI4ZTY5Y2E3OTk4N2FiNzA4OGM3ZThmYzUzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAK
ICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJQYXRoLmgiCkBAIC00MCw3
ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBDR0NvbnRleHRSZWYgQ0dDb250
ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQogewogICAgIEhCSVRNQVAgYml0bWFw
ID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oR2V0Q3VycmVudE9iamVjdChoZGMsIE9CSl9CSVRNQVAp
KTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCk7CiAgICAgQklUTUFQIGluZm87CiAKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXpl
b2YoaW5mbyksICZpbmZvKTsKQEAgLTQ4LDggKzQ3LDcgQEAgc3RhdGljIENHQ29udGV4dFJlZiBD
R0NvbnRleHRXaXRoSERDKEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBDR0JpdG1hcElu
Zm8gYml0bWFwSW5mbyA9IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwgKGhhc0FscGhhID8g
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZp
cnN0KTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShp
bmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBk
ZXZpY2VSR0IsIGJpdG1hcEluZm8pOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoZGV2aWNlUkdC
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZv
LmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvKTsKIAog
ICAgIC8vIEZsaXAgY29vcmRzCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAs
IGluZm8uYm1IZWlnaHQpOwpAQCAtMTAxLDExICs5OSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZWxlYXNlV2luZG93c0NvbnRleHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwg
Ym9vCiAgICAgR2V0T2JqZWN0KGJpdG1hcCwgc2l6ZW9mKGluZm8pLCAmaW5mbyk7CiAgICAgQVNT
RVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIpOwogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGRldmlj
ZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogICAgIENHQ29udGV4dFJlZiBi
aXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBpbmZvLmJt
V2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMsIGRldmljZVJHQiwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRBbHBoYUJs
ZW5kID8ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25l
U2tpcEZpcnN0KSk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShkZXZpY2VSR0IpOwogCiAgICAg
Q0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRl
eHQpOwogICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBk
c3RSZWN0LCBpbWFnZSk7CkBAIC0xMTksMTIgKzExNSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3Qs
IGJvbwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1dpbmRvd3NCaXRtYXAoV2luZG93c0Jp
dG1hcCogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBkZXZpY2VSR0IoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNl
UkdCKCkpOwogICAgIC8vIEZJWE1FOiBDcmVhdGluZyBDRkRhdGEgaXMgbm9uLW9wdGltYWwsIGJ1
dCBuZWVkZWQgdG8gYXZvaWQgY3Jhc2hpbmcgd2hlbiBwcmludGluZy4gIElkZWFsbHkgd2Ugc2hv
dWxkIAogICAgIC8vIG1ha2UgYSBjdXN0b20gQ0dEYXRhUHJvdmlkZXIgdGhhdCBjb250cm9scyB0
aGUgV2luZG93c0JpdG1hcCBsaWZldGltZS4gIHNlZSA8cmRhcjovLzYzOTQ0NTU+CiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gaW1hZ2VEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBpbWFnZS0+YnVmZmVyKCksIGltYWdlLT5idWZmZXJMZW5ndGgoKSkpOwog
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyKEFkb3B0Q0YsIENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShpbWFnZURhdGEuZ2V0KCkpKTsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZShBZG9wdENGLCBDR0ltYWdlQ3JlYXRlKGltYWdlLT5z
aXplKCkud2lkdGgoKSwgaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSwgOCwgMzIsIGltYWdlLT5ieXRl
c1BlclJvdygpLCBkZXZpY2VSR0IuZ2V0KCksCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNn
SW1hZ2UoQWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZShpbWFnZS0+c2l6ZSgpLndpZHRoKCksIGltYWdl
LT5zaXplKCkuaGVpZ2h0KCksIDgsIDMyLCBpbWFnZS0+Ynl0ZXNQZXJSb3coKSwgZGV2aWNlUkdC
Q29sb3JTcGFjZVJlZigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFs
cGhhRmlyc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50
RGVmYXVsdCkpOwogICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0Lmdl
dCgpLCBDR1JlY3RNYWtlKHBvaW50LngoKSwgcG9pbnQueSgpLCBpbWFnZS0+c2l6ZSgpLndpZHRo
KCksIGltYWdlLT5zaXplKCkuaGVpZ2h0KCkpLCBjZ0ltYWdlLmdldCgpKTsgICAKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggZTY1Yjg1OTMz
ODdkNTNlZGMxNTM4OGNjMTRkNTgxOWE3YjFiNDRhMy4uNmNjNWQ2ZGQxZWIzZGEzZjIxMDVkNzkw
NzllMWQ2MTYxMzRhZTU2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgi
CiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
ICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC01MCw5ICs1MCw4IEBAIFBhc3NSZWZQdHI8Qml0bWFw
SW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAgIGlmICghZGli
U2VjdGlvbi5kc0JtLmJtQml0cykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBkZXZpY2VSR0IoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQoQWRv
cHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRpYlNlY3Rpb24uZHNCbS5ibUJpdHMsIGRpYlNl
Y3Rpb24uZHNCbS5ibVdpZHRoLCBkaWJTZWN0aW9uLmRzQm0uYm1IZWlnaHQsIDgsCi0gICAgICAg
IGRpYlNlY3Rpb24uZHNCbS5ibVdpZHRoQnl0ZXMsIGRldmljZVJHQi5nZXQoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7Cisg
ICAgICAgIGRpYlNlY3Rpb24uZHNCbS5ibVdpZHRoQnl0ZXMsIGRldmljZVJHQkNvbG9yU3BhY2VS
ZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0KSk7CiAKICAgICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFrZXMgb3duZXJzaGlwIG9m
IHRoaXMuCiAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSk7CkBAIC03MCw5ICs2OSw4IEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIExQU0laRSBzaXplKQogICAgIEFTU0VS
VChibXBJbmZvLmJtQml0c1BpeGVsID09IDMyKTsKICAgICBpbnQgYnVmZmVyU2l6ZSA9IGJtcElu
Zm8uYm1XaWR0aEJ5dGVzICogYm1wSW5mby5ibUhlaWdodDsKICAgICAKLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CiAgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShibXBJbmZvLmJtQml0
cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0LAotICAgICAgICA4LCBibXBJbmZv
LmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpOworICAgICAgICA4LCBibXBJbmZvLmJtV2lk
dGhCeXRlcywgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxp
dHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpOwogICAKICAgICBHcmFwaGlj
c0NvbnRleHQgZ2MoY2dDb250ZXh0KTsKIApAQCAtODQsNyArODIsNiBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBMUFNJWkUgc2l6ZSkKIAogICAgIC8v
IERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7Ci0gICAgQ0dDb2xv
clNwYWNlUmVsZWFzZShkZXZpY2VSR0IpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IDM5NzRmMGVmOGViZDQ1MWE4MmEyMGRmZTQyZTE4ZjQzNWEzYTgzZWEuLjAzYjRjOGY4
NTEzNmIxMGRiYjkyY2NkZDRiMjMxMDIyNWZiMjJiNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNiw2ICsy
Niw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0ltYWdlLmg+CiAKQEAg
LTgzLDEwICs4NSw5IEBAIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY3JlYXRlQ29sb3JTcGFjZShj
b25zdCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKICNpZiAhZGVmaW5lZChUQVJHRVRJTkdf
VElHRVIpICYmICFkZWZpbmVkKFRBUkdFVElOR19MRU9QQVJEKQogICAgIHJldHVybiBDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoSUNDUHJvZmlsZShkYXRhLmdldCgpKTsKICNlbHNlCi0gICAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gZGV2aWNlQ29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VSR0IoKSk7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBw
cm9maWxlRGF0YVByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0
YShkYXRhLmdldCgpKSk7CiAgICAgQ0dGbG9hdCByYW5nZXNbXSA9IHswLjAsIDI1NS4wLCAwLjAs
IDI1NS4wLCAwLjAsIDI1NS4wfTsKLSAgICByZXR1cm4gQ0dDb2xvclNwYWNlQ3JlYXRlSUNDQmFz
ZWQoMywgcmFuZ2VzLCBwcm9maWxlRGF0YVByb3ZpZGVyLmdldCgpLCBkZXZpY2VDb2xvclNwYWNl
LmdldCgpKTsKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlQ3JlYXRlSUNDQmFzZWQoMywgcmFuZ2Vz
LCBwcm9maWxlRGF0YVByb3ZpZGVyLmdldCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCkpOwog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNH
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCBm
ZmQyMTYyZWVjMDY2Mjg4MGU0YTEzMjIxNjE3M2MzNzljODc3ZDc3Li5iYzQ1ZTIyYzMxODRjZjNi
ODI4Yjg3YzMxZDgzNTk0YmRlYzE1MDFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiUmV0YWluUHRyLmgiCiAKQEAgLTUzLDExICs1Myw5IEBAIEhCSVRNQVAgYWxsb2NJbWFnZShI
REMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0UmVmICp0YXJnZXRSZWYpCiAgICAgaWYgKCF0
YXJnZXRSZWYpCiAgICAgICAgIHJldHVybiBoYm1wOwogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGRl
dmljZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogICAgIENHQ29udGV4dFJl
ZiBiaXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJpdHMsIGJtcEluZm8uYm1p
SGVhZGVyLmJpV2lkdGgsIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0LCA4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcEluZm8uYm1p
SGVhZGVyLmJpV2lkdGggKiA0LCBkZXZpY2VSR0IsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpV2lkdGgg
KiA0LCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUg
fCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShk
ZXZpY2VSR0IpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkgewogICAgICAgICBEZWxldGVPYmpl
Y3QoaGJtcCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNzMsMTAgKzcxLDggQEAgc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhCSVRNQVAgYml0bWFwKQogICAg
IEdldE9iamVjdChiaXRtYXAsIHNpemVvZihpbmZvKSwgJmluZm8pOwogICAgIEFTU0VSVChpbmZv
LmJtQml0c1BpeGVsID09IDMyKTsKIAotICAgIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0IgPSBD
R0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKICAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29u
dGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBp
bmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBkZXZpY2VSR0IsIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIENHQ29s
b3JTcGFjZVJlbGVhc2UoZGV2aWNlUkdCKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KTsKICAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBiNjMyZDlhN2Q1MjM5ZTQ4ZjkwOTJlZmU5ZDc1MmYx
YWE4MTYwN2JiLi5hMTNiNGFhNDkzNjAwYTg4MGMxYjY4ZDAwOTIwODhhMWJkMGJmNzVmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAi
RG9jdW1lbnQuaCIKICNpbXBvcnQgIkVsZW1lbnQuaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgot
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5o
IgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCkBAIC0xMDQxLDI1ICsxMDQxLDI1IEBAIHZvaWQg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluCiAKICAgICBpbnQgcmFkaXVzID0gdG9wTGVmdFJhZGl1cy53aWR0
aCgpOwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3NwYWNlKEFkb3B0Q0YsIENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNl
ID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCiAgICAgRmxvYXRSZWN0IHRvcEdyYWRpZW50
KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpIC8gMi4wZik7CiAgICAgc3RydWN0
IENHRnVuY3Rpb25DYWxsYmFja3MgdG9wQ2FsbGJhY2tzID0geyAwLCBUb3BHcmFkaWVudEludGVy
cG9sYXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IHRvcEZ1bmN0aW9u
KEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwgNCwgTlVMTCwgJnRvcENh
bGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNoYWRpbmcoQWRvcHRD
RiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZSh0b3BHcmFk
aWVudC54KCksIHRvcEdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50LngoKSwg
dG9wR3JhZGllbnQuYm90dG9tKCkpLCB0b3BGdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7
CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gdG9wU2hhZGluZyhBZG9wdENGLCBDR1NoYWRp
bmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50LngoKSwgdG9wR3Jh
ZGllbnQueSgpKSwgQ0dQb2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFkaWVudC5ib3R0
b20oKSksIHRvcEZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEZsb2F0UmVj
dCBib3R0b21HcmFkaWVudChyLngoKSArIHJhZGl1cywgci55KCkgKyByLmhlaWdodCgpIC8gMi4w
Ziwgci53aWR0aCgpIC0gMi4wZiAqIHJhZGl1cywgci5oZWlnaHQoKSAvIDIuMGYpOwogICAgIHN0
cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGJvdHRvbUNhbGxiYWNrcyA9IHsgMCwgQm90dG9tR3Jh
ZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVmPiBi
b3R0b21GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQs
IE5VTEwsICZib3R0b21DYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBi
b3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQoKSwg
Q0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQueSgpKSwgQ0dQ
b2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5ib3R0b20oKSksIGJv
dHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0dTaGFk
aW5nUmVmPiBib3R0b21TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCAgYm90dG9tR3JhZGllbnQueSgpKSwg
Q0dQb2ludE1ha2UoYm90dG9tR3JhZGllbnQueCgpLCBib3R0b21HcmFkaWVudC5ib3R0b20oKSks
IGJvdHRvbUZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHN0cnVjdCBDR0Z1
bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIE1haW5HcmFkaWVudEludGVycG9s
YXRlLCBOVUxMIH07CiAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1haW5GdW5jdGlvbihB
ZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZtYWluQ2Fs
bGJhY2tzKSk7Ci0gICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbWFpblNoYWRpbmcoQWRvcHRD
RiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShyLngoKSwg
IHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCksIHIuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0
KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IG1haW5TaGFk
aW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci54
KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpLCByLmJvdHRvbSgpKSwgbWFpbkZ1bmN0aW9u
LmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGxl
ZnRTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQoKSwgQ0dQ
b2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVzLCByLnko
KSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENH
U2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShyLngoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci54KCkgKyByYWRp
dXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIFJl
dGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVh
dGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIueSgpKSwgQ0dQ
b2ludE1ha2Uoci5yaWdodCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5n
KEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5yaWdo
dCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLnJpZ2h0KCkgLSByYWRpdXMsIHIueSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcik7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xpcChyLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdo
dFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwpAQCAtMTI4OSw3
ICsxMjg5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKIAogICAgIExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNzcGFjZShBZG9wdENGLCBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmlj
ZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAg
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMpOwpAQCAtMTI5OCw5ICsxMjk4
LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmYKICAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJl
Zj4gbWFpbkZ1bmN0aW9uKEFkb3B0Q0YsIENHRnVuY3Rpb25DcmVhdGUoTlVMTCwgMSwgTlVMTCwg
NCwgTlVMTCwgJm1haW5DYWxsYmFja3MpKTsKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiBt
YWluU2hhZGluZzsKICAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlclZl
cnRpY2FsUGFydCkKLSAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVB
eGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBib3VuZHMuYm90dG9t
KCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91bmRzLmJvdHRvbSgpKSwgbWFpbkZ1
bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgbWFpblNoYWRpbmcuYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBi
b3VuZHMuYm90dG9tKCkpLCBDR1BvaW50TWFrZShib3VuZHMucmlnaHQoKSwgYm91bmRzLmJvdHRv
bSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgp
LCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJvdW5k
cy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNl
KSk7CisgICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCAgYm91bmRzLnkoKSksIENHUG9pbnRNYWtlKGJv
dW5kcy54KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwog
ICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoYm91bmRzLApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDhkNjZiYTcyMGJlY2Y3NjQxYWQ3
MjdmZDRjY2NjNWUzOTY2M2U4ZDAuLjZkNWQzMjI4ODkwODY4M2Y0ZjlhMjYxNDI5YWNiMzc1YTFl
YmQyNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC03
NjAsMjUgKzc2MCwyNSBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0
dG9uR3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbgogCiAgICAgaW50IHJhZGl1
cyA9IHRvcExlZnRSYWRpdXMud2lkdGgoKTsKIAotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IGNzcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAg
Q0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAogICAg
IEZsb2F0UmVjdCB0b3BHcmFkaWVudChyLngoKSwgci55KCksIHIud2lkdGgoKSwgci5oZWlnaHQo
KSAvIDIuMGYpOwogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIHRvcENhbGxiYWNrcyA9
IHsgMCwgVG9wR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1
bmN0aW9uUmVmPiB0b3BGdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRlKE5VTEwsIDEs
IE5VTEwsIDQsIE5VTEwsICZ0b3BDYWxsYmFja3MpKTsKLSAgICBSZXRhaW5QdHI8Q0dTaGFkaW5n
UmVmPiB0b3BTaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQo
KSwgQ0dQb2ludE1ha2UodG9wR3JhZGllbnQueCgpLCB0b3BHcmFkaWVudC55KCkpLCBDR1BvaW50
TWFrZSh0b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50LmJvdHRvbSgpKSwgdG9wRnVuY3Rpb24u
Z2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHRvcFNo
YWRpbmcoQWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZSh0
b3BHcmFkaWVudC54KCksIHRvcEdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKHRvcEdyYWRpZW50
LngoKSwgdG9wR3JhZGllbnQuYm90dG9tKCkpLCB0b3BGdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7CiAKICAgICBGbG9hdFJlY3QgYm90dG9tR3JhZGllbnQoci54KCkgKyByYWRpdXMsIHIu
eSgpICsgci5oZWlnaHQoKSAvIDIuMGYsIHIud2lkdGgoKSAtIDIuMGYgKiByYWRpdXMsIHIuaGVp
Z2h0KCkgLyAyLjBmKTsKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBib3R0b21DYWxs
YmFja3MgPSB7IDAsIEJvdHRvbUdyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKICAgICBSZXRh
aW5QdHI8Q0dGdW5jdGlvblJlZj4gYm90dG9tRnVuY3Rpb24oQWRvcHRDRiwgQ0dGdW5jdGlvbkNy
ZWF0ZShOVUxMLCAxLCBOVUxMLCA0LCBOVUxMLCAmYm90dG9tQ2FsbGJhY2tzKSk7Ci0gICAgUmV0
YWluUHRyPENHU2hhZGluZ1JlZj4gYm90dG9tU2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVh
dGVBeGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwgIGJv
dHRvbUdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwgYm90dG9t
R3JhZGllbnQuYm90dG9tKCkpLCBib3R0b21GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7
CisgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gYm90dG9tU2hhZGluZyhBZG9wdENGLCBDR1No
YWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwg
IGJvdHRvbUdyYWRpZW50LnkoKSksIENHUG9pbnRNYWtlKGJvdHRvbUdyYWRpZW50LngoKSwgYm90
dG9tR3JhZGllbnQuYm90dG9tKCkpLCBib3R0b21GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNl
KSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAw
LCBNYWluR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwogICAgIFJldGFpblB0cjxDR0Z1bmN0
aW9uUmVmPiBtYWluRnVuY3Rpb24oQWRvcHRDRiwgQ0dGdW5jdGlvbkNyZWF0ZShOVUxMLCAxLCBO
VUxMLCA0LCBOVUxMLCAmbWFpbkNhbGxiYWNrcykpOwotICAgIFJldGFpblB0cjxDR1NoYWRpbmdS
ZWY+IG1haW5TaGFkaW5nKEFkb3B0Q0YsIENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZS5nZXQo
KSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpLCByLmJvdHRv
bSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8
Q0dTaGFkaW5nUmVmPiBtYWluU2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChj
c3BhY2UsIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLngoKSwgci5i
b3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiBsZWZ0U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVB
eGlhbChjc3BhY2UuZ2V0KCksIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFr
ZShyLngoKSArIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxz
ZSkpOworICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGxlZnRTaGFkaW5nKEFkb3B0Q0YsIENH
U2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENH
UG9pbnRNYWtlKHIueCgpICsgcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFs
c2UsIGZhbHNlKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmco
QWRvcHRDRiwgQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShy
LnJpZ2h0KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIucmlnaHQoKSAtIHJhZGl1cywgci55KCkp
LCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDR1No
YWRpbmdSZWY+IHJpZ2h0U2hhZGluZyhBZG9wdENGLCBDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3Bh
Y2UsIENHUG9pbnRNYWtlKHIucmlnaHQoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5yaWdodCgp
IC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIHIpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAociwg
dG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJp
Z2h0UmFkaXVzKTsKQEAgLTk2OCw3ICs5NjgsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAog
ICAgIH0KIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOwotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNzcGFjZShB
ZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgQ0dDb2xvclNwYWNl
UmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAogICAgIHBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMp
OwpAQCAtOTc3LDkgKzk3Nyw5IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVy
VHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgUmV0YWlu
UHRyPENHRnVuY3Rpb25SZWY+IG1haW5GdW5jdGlvbihBZG9wdENGLCBDR0Z1bmN0aW9uQ3JlYXRl
KE5VTEwsIDEsIE5VTEwsIDQsIE5VTEwsICZtYWluQ2FsbGJhY2tzKSk7CiAgICAgUmV0YWluUHRy
PENHU2hhZGluZ1JlZj4gbWFpblNoYWRpbmc7CiAgICAgaWYgKG8tPnN0eWxlKCktPmFwcGVhcmFu
Y2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCi0gICAgICAgIG1haW5TaGFkaW5nLmFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLmdldCgpLCBDR1BvaW50TWFrZShib3VuZHMueCgp
LCAgYm91bmRzLmJvdHRvbSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJpZ2h0KCksIGJvdW5kcy5i
b3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIG1h
aW5TaGFkaW5nLmFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFr
ZShib3VuZHMueCgpLCAgYm91bmRzLmJvdHRvbSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJpZ2h0
KCksIGJvdW5kcy5ib3R0b20oKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7
CiAgICAgZWxzZQotICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4
aWFsKGNzcGFjZS5nZXQoKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBD
R1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24uZ2V0
KCksIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBtYWluU2hhZGluZy5hZG9wdENGKENHU2hhZGlu
Z0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkp
LCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMuYm90dG9tKCkpLCBtYWluRnVuY3Rpb24u
Z2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgSW50U2l6ZSByYWRpdXModHJhY2tSYWRpdXMs
IHRyYWNrUmFkaXVzKTsKICAgICBwYWludEluZm8uY29udGV4dC0+YWRkUm91bmRlZFJlY3RDbGlw
KGJvdW5kcywK
</data>

          </attachment>
      

    </bug>

</bugzilla>