<?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>47922</bug_id>
          
          <creation_ts>2010-10-19 13:12:21 -0700</creation_ts>
          <short_desc>Merge ColorSpace and ImageColorSpace enums</short_desc>
          <delta_ts>2010-10-20 06:40:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296356</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-19 13:12:21 -0700</bug_when>
    <thetext>I think we should merge the ColorSpace and ImageColorSpace enumerations. This mean adding linearRGB to ColorSpace and will be necessary for implementing color-interpolation as well as color-interpolation-filters on SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296364</commentid>
    <comment_count>1</comment_count>
      <attachid>71198</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-19 13:29:31 -0700</bug_when>
    <thetext>Created attachment 71198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296699</commentid>
    <comment_count>2</comment_count>
      <attachid>71198</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 01:40:22 -0700</bug_when>
    <thetext>Comment on attachment 71198
Patch

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

Looks good overall, except for some minor things. But I&apos;d really like to see whether we can avoid code duplication, by not using RetainPtr for the colorspace in ImageBuffer.

&gt; WebCore/css/CSSPrimitiveValueMappings.h:2198
&gt; +        default:

default is not added here on purpose, so the compiler warns if anything is missing. If you need to add sth. add the real case value.

&gt; WebCore/platform/graphics/ColorSpace.h:34
&gt; +    sRGBColorSpace,
&gt; +    linearRGBColorSpace

I don&apos;t like these names, style guide says &quot;Enum members should user InterCaps with an initial capital letter.&quot;.
So rename to SRGB and LinearRGB..

&gt; WebCore/platform/graphics/cg/ImageBufferCG.cpp:83
&gt; +    case DeviceColorSpace:
&gt; +        m_data.m_colorSpace.adoptCF(CGColorSpaceCreateDeviceRGB());
&gt; +        break;

Can you investigate, if it&apos;s possible to not use a RetainPtr for m_colorSpace. Then we could use the deviceRGBRef() static methods, instead of duplication code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296733</commentid>
    <comment_count>3</comment_count>
      <attachid>71272</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-20 04:30:01 -0700</bug_when>
    <thetext>Created attachment 71272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296734</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-20 04:48:21 -0700</bug_when>
    <thetext>Attachment 71272 did not build on qt:
Build output: http://queues.webkit.org/results/4516016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296735</commentid>
    <comment_count>5</comment_count>
      <attachid>71272</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 05:00:30 -0700</bug_when>
    <thetext>Comment on attachment 71272
Patch

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

Other than that, looks good to me!

&gt; WebCore/css/CSSPrimitiveValueMappings.h:2199
&gt; +        ASSERT_NOT_REACHED();

You should comment here, that linearRgb is not available, through css &quot;-webkit-color-correction&quot;. Otherwhise this is a bit confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296737</commentid>
    <comment_count>6</comment_count>
      <attachid>71274</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-20 05:09:17 -0700</bug_when>
    <thetext>Created attachment 71274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296750</commentid>
    <comment_count>7</comment_count>
      <attachid>71274</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-20 06:04:38 -0700</bug_when>
    <thetext>Comment on attachment 71274
Patch

Looks great, r=me.
Please do a leaks run first, as I&apos;m not 100% certain about the removal of RetainPtr for m_colorSpace. Looks fine according to the CoreGraphics docs though, but better be safe than sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296751</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-20 06:07:24 -0700</bug_when>
    <thetext>I checked. No leaks found. *Phew* ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296754</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-20 06:10:29 -0700</bug_when>
    <thetext>Committed r70143: &lt;http://trac.webkit.org/changeset/70143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296770</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-20 06:40:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70143 might have broken Qt Linux Release
The following tests are not passing:
http/tests/security/mixedContent/insecure-css-in-main-frame.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71198</attachid>
            <date>2010-10-19 13:29:31 -0700</date>
            <delta_ts>2010-10-20 04:29:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47922-20101019222927.patch</filename>
            <type>text/plain</type>
            <size>25484</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDA3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTAtMTAtMTkgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJn
ZSBDb2xvclNwYWNlIGFuZCBJbWFnZUNvbG9yU3BhY2UgZW51bXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTIyCisKKyAgICAgICAgTWVyZ2luZyB0
aGVzZSB0d28gZW51bXMgbWFrZXMgaXQgZWFzaWVyIHRvIGltcGxlbWVudCBjb2xvci1pbnRlcnBv
bGF0aW9uIGFzIHdlbGwgYXMKKyAgICAgICAgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXIgZm9y
IFNWRy4KKyAgICAgICAgQWRkZWQgbGluZWFyUkdCQ29sb3JTcGFjZSB0byB0aGUgQ29sb3JTcGFj
ZSBlbnVtIGFuZCBjaGFuZ2VkIEltYWdlQ29sb3JTcGFjZSB0byBDb2xvclNwYWNlIGluIGFsbCBy
ZWxhdGVkCisgICAgICAgIGZpbGVzLgorICAgICAgICBSZW1vdmVkIGdyYXkgc2NhbGUgc3VwcG9y
dCBpbiBJbWFnZUJ1ZmZlciBzaW5jZSBpdCBpcyBub3QgdXNlZCBhbnltb3JlIG9uIFdlYktpdC4K
KworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dHJh
bnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3JT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpsaW5lYXJSR0JDb2xvclNwYWNlUmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VXaXRoQ29sb3JTcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjplZmZlY3RDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmg6CisgICAgICAgICogc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVt
ZW50OjpidWlsZCk6CisKIDIwMTAtMTAtMTkgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9uIDY5ODc0
KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTk1LDYgKzIxOTUsMTAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTUwogICAgICAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgogICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3JnYjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBt
X3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVEZWZhdWx0OworICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2aXNp
b24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgZW51bSBDb2xvclNwYWNlIHsgRGV2aWNlQ29sb3JTcGFjZSwgc1JHQkNvbG9yU3BhY2UgfTsK
K2VudW0gQ29sb3JTcGFjZSB7CisgICAgRGV2aWNlQ29sb3JTcGFjZSwKKyAgICBzUkdCQ29sb3JT
cGFjZSwKKyAgICBsaW5lYXJSR0JDb2xvclNwYWNlCit9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShJbWFnZUNv
bG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgSW1hZ2VDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpCit2
b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQogewogICAgIGlmIChzcmNDb2xvclNwYWNl
ID09IGRzdENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8
LT4gbGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29s
b3JTcGFjZSAhPSBMaW5lYXJSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXZpY2VSR0IpIHx8IAot
ICAgICAgICAoZHN0Q29sb3JTcGFjZSAhPSBMaW5lYXJSR0IgJiYgZHN0Q29sb3JTcGFjZSAhPSBE
ZXZpY2VSR0IpKQorICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBsaW5lYXJSR0JDb2xvclNwYWNl
ICYmIHNyY0NvbG9yU3BhY2UgIT0gRGV2aWNlQ29sb3JTcGFjZSkgCisgICAgICAgIHx8IChkc3RD
b2xvclNwYWNlICE9IGxpbmVhclJHQkNvbG9yU3BhY2UgJiYgZHN0Q29sb3JTcGFjZSAhPSBEZXZp
Y2VDb2xvclNwYWNlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRzdENvbG9yU3BhY2Ug
PT0gTGluZWFyUkdCKSB7CisgICAgaWYgKGRzdENvbG9yU3BhY2UgPT0gbGluZWFyUkdCQ29sb3JT
cGFjZSkgewogICAgICAgICBpZiAobV9saW5lYXJSZ2JMVVQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAg
ICBmbG9hdCBjb2xvciA9IGkgIC8gMjU1LjBmOwpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEltYWdl
QnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKEltCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKG1fbGluZWFyUmdiTFVUKTsKLSAg
ICB9IGVsc2UgaWYgKGRzdENvbG9yU3BhY2UgPT0gRGV2aWNlUkdCKSB7CisgICAgfSBlbHNlIGlm
IChkc3RDb2xvclNwYWNlID09IERldmljZUNvbG9yU3BhY2UpIHsKICAgICAgICAgaWYgKG1fZGV2
aWNlUmdiTFVULmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBm
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
Njk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgSW1hZ2VCdWZmZXJfaAogCiAjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgpAQCAtNDQsMTMgKzQ1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEltYWdl
RGF0YTsKICAgICBjbGFzcyBJbnRQb2ludDsKICAgICBjbGFzcyBJbnRSZWN0OwotICAgIAotICAg
IGVudW0gSW1hZ2VDb2xvclNwYWNlIHsKLSAgICAgICAgVW5rbm93biwKLSAgICAgICAgRGV2aWNl
UkdCLCAvLyBsaWtlIHNSR0IKLSAgICAgICAgR3JheVNjYWxlLAotICAgICAgICBMaW5lYXJSR0IK
LSAgICB9OwogCiAgICAgZW51bSBNdWx0aXBseSB7CiAgICAgICAgIFByZW11bHRpcGxpZWQsCkBA
IC02MCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbWFnZUJ1ZmZl
ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICAvLyBXaWxsIHJl
dHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgICAgIHN0YXRp
YyBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1h
Z2VDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBEZXZpY2VSR0IpCisgICAgICAgIHN0YXRpYyBQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlID0gRGV2aWNlQ29sb3JTcGFjZSkKICAgICAgICAgewogICAgICAgICAgICAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1
ZihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwgY29sb3JTcGFjZSwgc3VjY2VzcykpOwpAQCAtODksNyAr
ODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5ID0gMCkgY29uc3Q7CiAj
aWYgIVBMQVRGT1JNKENHKQogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9Ci0gICAgICAgIHZvaWQgdHJhbnNm
b3JtQ29sb3JTcGFjZShJbWFnZUNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgSW1hZ2VDb2xvclNw
YWNlIGRzdENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29s
b3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwogICAgICAg
ICB2b2lkIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYpOwog
I2Vsc2UKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIG1fc2l6ZS5oZWlnaHQoKSk7IH0K
QEAgLTExOSw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciB3aWxsIHBsYWNlIGl0cyBzdWNjZXNzIGludG8gdGhlIGdpdmVuIG91dC12
YXJpYWJsZQogICAgICAgICAvLyBzbyB0aGF0IGNyZWF0ZSgpIGtub3dzIHdoZW4gaXQgc2hvdWxk
IHJldHVybiBmYWlsdXJlLgotICAgICAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgSW1h
Z2VDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJvb2wmIHN1Y2Nlc3MpOworICAgICAgICBJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBib29sJiBzdWNjZXNz
KTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlz
aW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBJbWFnZUJ1ZmZlckRh
dGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJCiB7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUNvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNl
LCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUm
IHNpemUsIENvbG9yU3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAg
ICAsIG1fc2l6ZShzaXplKQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDggQEAgc3RhdGljIGlu
bGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDbwogICAgICAgICByZXR1cm4gZGV2aWNlUkdC
Q29sb3JTcGFjZVJlZigpOwogICAgIGNhc2Ugc1JHQkNvbG9yU3BhY2U6CiAgICAgICAgIHJldHVy
biBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIGNhc2UgbGluZWFyUkdCQ29sb3JTcGFjZToKKyAg
ICAgICAgcmV0dXJuIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKQEAg
LTEzNSw2ICsxMzcsOCBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNv
CiAgICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yPERldmljZUNvbG9yU3BhY2U+KGNvbG9yKTsK
ICAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgogICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxz
UkdCQ29sb3JTcGFjZT4oY29sb3IpOworICAgIGNhc2UgbGluZWFyUkdCQ29sb3JTcGFjZToKKyAg
ICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8bGluZWFyUkdCQ29sb3JTcGFjZT4oY29sb3IpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gY2FjaGVkQ0dDb2xv
cihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gNjk4NzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTYsNiArOTYsMTcgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNw
YWNlUmVmKCkKICNlbmRpZgogfQogCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFj
ZVJlZigpCit7CisgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGtD
R0NvbG9yU3BhY2VHZW5lcmljUkdCTGluZWFyLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dl
YmtpdC5vcmcvYi8zMTM2My4KKyNpZiBQTEFURk9STShXSU4pIHx8IGRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpCisgICAgcmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisg
ICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VHZW5lcmljUkdCTGluZWFyKTsKKyAgICByZXR1cm4g
bGluZWFyUkdCU3BhY2U7CisjZW5kaWYKK30KKwogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0Nv
bnRleHQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICA6IG1fY29tbW9uKGNyZWF0ZUdyYXBo
aWNzQ29udGV4dFByaXZhdGUoKSkKICAgICAsIG1fZGF0YShuZXcgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKGNnQ29udGV4dCkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENHQ29sb3JTcGFjZVJl
ZiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiAKIH0K
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgSW1hZ2VCdWZm
ZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSQogewogfQogCi1JbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VDb2xvclNwYWNlIGltYWdlQ29sb3JT
cGFjZSwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplLCBDb2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKICAg
ICA6IG1fZGF0YShzaXplKQogICAgICwgbV9zaXplKHNpemUpCiB7CkBAIC02NCwxMiArNjQsMTEg
QEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIAogICAgICAgICByZXR1
cm47CiAKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IHNpemUud2lkdGgoKTsKLSAgICBpZiAo
aW1hZ2VDb2xvclNwYWNlICE9IEdyYXlTY2FsZSkgewotICAgICAgICAvLyBQcm90ZWN0IGFnYWlu
c3Qgb3ZlcmZsb3cKLSAgICAgICAgaWYgKGJ5dGVzUGVyUm93ID4gMHgzRkZGRkZGRikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgYnl0ZXNQZXJSb3cgKj0gNDsKLSAgICB9CisKKyAgICAv
LyBQcm90ZWN0IGFnYWluc3Qgb3ZlcmZsb3cKKyAgICBpZiAoYnl0ZXNQZXJSb3cgPiAweDNGRkZG
RkZGKQorICAgICAgICByZXR1cm47CisgICAgYnl0ZXNQZXJSb3cgKj0gNDsKICAgICBtX2RhdGEu
bV9ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93OwogCiAgICAgc2l6ZV90IGRhdGFTaXplID0gc2l6
ZS5oZWlnaHQoKSAqIGJ5dGVzUGVyUm93OwpAQCAtNzksMjUgKzc4LDI4IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiAKICAgICBBU1NFUlQoKHJlaW50ZXJwcmV0X2Nh
c3Q8c2l6ZV90PihtX2RhdGEubV9kYXRhKSAmIDIpID09IDApOwogCiAgICAgc3dpdGNoKGltYWdl
Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERldmljZVJHQjoKLSAgICAgICAgICAgIG1fZGF0
YS5tX2NvbG9yU3BhY2UuYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHcmF5U2NhbGU6Ci0gICAgICAgICAgICBt
X2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotI2lmICgoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShD
SFJPTUlVTSkpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSkKLSAgICAgICAgY2FzZSBM
aW5lYXJSR0I6Ci0gICAgICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUdlbmVyaWNSR0JMaW5lYXIpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgY2FzZSBEZXZpY2VDb2xvclNwYWNl
OgorICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
RGV2aWNlUkdCKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgor
I2lmIFBMQVRGT1JNKFdJTikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikKKyAgICAgICAg
Ly8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGtDR0NvbG9yU3BhY2VTUkdC
LCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi8zMTM2My4KKyAgICAgICAg
bV9kYXRhLm1fY29sb3JTcGFjZS5hZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
KTsKKyNlbHNlCisgICAgICAgIG1fZGF0YS5tX2NvbG9yU3BhY2UuYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworI2VuZGlmCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgbGluZWFyUkdCQ29sb3JTcGFjZToKKyNpZiBQTEFURk9STShXSU4pIHx8
IGRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpCisgICAgICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNo
b3VsZCBiZSBhYmxlIHRvIHVzZSBrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQkxpbmVhciwgdGhpcyBp
cyB0cmFja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvMzEzNjMuCisgICAgICAgIG1fZGF0YS5t
X2NvbG9yU3BhY2UuYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisjZWxz
ZQorICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRl
V2l0aE5hbWUoa0NHQ29sb3JTcGFjZUdlbmVyaWNSR0JMaW5lYXIpKTsKICNlbmRpZgotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZS5hZG9wdENGKENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBtX2RhdGEubV9ncmF5U2NhbGUgPSBpbWFnZUNvbG9yU3BhY2Ug
PT0gR3JheVNjYWxlOwotICAgIG1fZGF0YS5tX2JpdG1hcEluZm8gPSBtX2RhdGEubV9ncmF5U2Nh
bGUgPyBrQ0dJbWFnZUFscGhhTm9uZSA6IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsK
KyAgICBtX2RhdGEubV9iaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
OwogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dChBZG9wdENGLCBDR0JpdG1h
cENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LCA4LCBieXRlc1BlclJvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YS5tX2NvbG9yU3BhY2UuZ2V0KCks
IG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKICAgICBpZiAoIWNnQ29udGV4dCkKQEAgLTEzNCw3ICsx
MzYsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlCiAKIHN0YXRp
YyBDR0ltYWdlUmVmIGNnSW1hZ2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW1hZ2VCdWZm
ZXJEYXRhJiBkYXRhKQogewotICAgIHJldHVybiBDR0ltYWdlQ3JlYXRlKHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSwgOCwgZGF0YS5tX2dyYXlTY2FsZSA/IDggOiAzMiwgZGF0YS5tX2J5dGVz
UGVyUm93LAorICAgIHJldHVybiBDR0ltYWdlQ3JlYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwgOCwgMzIsIGRhdGEubV9ieXRlc1BlclJvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm1fY29sb3JTcGFjZS5nZXQoKSwgZGF0YS5tX2JpdG1hcEluZm8sIGRhdGEubV9kYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOwogfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRh
LmgJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92aWRlcjsKICAg
ICBDR0JpdG1hcEluZm8gbV9iaXRtYXBJbmZvOwotICAgIGJvb2wgbV9ncmF5U2NhbGU7CiAgICAg
dW5zaWduZWQgbV9ieXRlc1BlclJvdzsKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBt
X2NvbG9yU3BhY2U7CiB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
Q0cuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsOCBAQCBzdGF0aWMgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlV2l0aENvCiAgICAgICAgIHJldHVybiBvcmlnaW5hbElt
YWdlOwogICAgIGNhc2Ugc1JHQkNvbG9yU3BhY2U6CiAgICAgICAgIHJldHVybiBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4oQWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmln
aW5hbEltYWdlLCBzUkdCQ29sb3JTcGFjZVJlZigpKSk7CisgICAgY2FzZSBsaW5lYXJSR0JDb2xv
clNwYWNlOgorICAgICAgICByZXR1cm4gUmV0YWluUHRyPENHSW1hZ2VSZWY+KEFkb3B0Q0YsIENH
SW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgbGluZWFyUkdCQ29s
b3JTcGFjZVJlZigpKSk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNp
b24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEZFVGlsZTo6YXBwbHkoRmls
dGVyKiBmaWx0ZXIpCiAgICAgfQogCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7
Ci0gICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVj
dCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNWR0ltYWdlQnVm
ZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgdGlsZUltYWdl
LCBEZXZpY2VDb2xvclNwYWNlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAko
cmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBHcmFwaGljc0Nv
bnRleHQqIEZpbHRlckVmZmVjdDo6ZWZmZWN0Q29uCiAgICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoZmlsdGVyKTsKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIG1fZWZmZWN0QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgTGluZWFyUkdCKTsKKyAgICBtX2VmZmVjdEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIGxp
bmVhclJHQkNvbG9yU3BhY2UpOwogICAgIGlmICghbV9lZmZlY3RCdWZmZXIpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIHJldHVybiBtX2VmZmVjdEJ1ZmZlci0+Y29udGV4dCgpOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCShyZXZpc2lv
biA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgSW1hZ2VCdWZmZXJEYXRhOjpJbWFn
ZUJ1ZmZlckRhdGEoY29uc3QgSQogICAgIG1faW1hZ2UgPSBTdGlsbEltYWdlOjpjcmVhdGVGb3JS
ZW5kZXJpbmcoJm1fcGl4bWFwKTsKIH0KIAotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb2xvclNwYWNlLCBib29sJiBz
dWNjZXNzKQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEu
Y3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9J
bWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIEltYWdl
QnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEkKIHsKIH0KIAotSW1hZ2VCdWZmZXI6
OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFjZSBpbWFnZUNv
bG9yU3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShz
aXplKQogICAgICwgbV9zaXplKHNpemUpCiB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXAKICAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCA9IFNWR0ltYWdlQnVm
ZmVyVG9vbHM6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3RGb3JSZW5kZXJlcihvYmplY3QsIGFi
c29sdXRlVGFyZ2V0UmVjdCk7CiAKICAgICBpZiAoc2hvdWxkQ3JlYXRlQ2xpcERhdGEgJiYgIWNs
YW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghU1ZHSW1h
Z2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFt
cGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBjbGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZSwgRGV2aWNl
UkdCKSkKKyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZl
cihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIGNsaXBwZXJE
YXRhLT5jbGlwTWFza0ltYWdlLCBEZXZpY2VDb2xvclNwYWNlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBl
ckRhdGEtPmNsaXBNYXNrSW1hZ2UtPmNvbnRleHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlS
ZXNvdQogICAgIGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2Fs
ZS5oZWlnaHQoKSk7CiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWM7Ci0g
ICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZURy
YXdpbmdSZWdpb24sIGFic29sdXRlRHJhd2luZ1JlZ2lvbiwgc291cmNlR3JhcGhpYywgTGluZWFy
UkdCKSkKKyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFi
c29sdXRlRHJhd2luZ1JlZ2lvbiwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBzb3VyY2VHcmFwaGlj
LCBsaW5lYXJSR0JDb2xvclNwYWNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IEdyYXBoaWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5j
b250ZXh0KCk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UgogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQgPSAwOwogI2lm
ICFQTEFURk9STShDRykKICAgICAgICAgaWYgKGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZm
ZXIpCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyLT50cmFuc2Zv
cm1Db2xvclNwYWNlKERldmljZVJHQiwgTGluZWFyUkdCKTsKKyAgICAgICAgICAgIGZpbHRlckRh
dGEtPnNvdXJjZUdyYXBoaWNCdWZmZXItPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGV2aWNlQ29sb3JT
cGFjZSwgbGluZWFyUkdCQ29sb3JTcGFjZSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAjaWYgIVBM
QVRGT1JNKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVm
ZmVjdC0+cmVzdWx0SW1hZ2UoKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkKLSAgICAg
ICAgICAgICAgICByZXN1bHRJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShMaW5lYXJSR0IsIERl
dmljZVJHQik7CisgICAgICAgICAgICAgICAgcmVzdWx0SW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3Bh
Y2UobGluZWFyUkdCQ29sb3JTcGFjZSwgRGV2aWNlQ29sb3JTcGFjZSk7CiAjZW5kaWYKICAgICAg
ICAgICAgIGZpbHRlckRhdGEtPmJ1aWxkZWQgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNp
b24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
Y3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE93blB0
cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6
Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJn
ZXRSZWN0LCBtYXNrSW1hZ2UsIERldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRv
b2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0
ZVRhcmdldFJlY3QsIG1hc2tJbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJ
bWFnZS0+Y29udGV4dCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcs
NyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgICAgIGlm
ICghbWFza0VsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJl
Y3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgTGlu
ZWFyUkdCKSkKKyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1
ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tl
ckRhdGEtPm1hc2tJbWFnZSwgbGluZWFyUkdCQ29sb3JTcGFjZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0g
bWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbgogICAgIG1hc2tJbWFnZUNvbnRl
eHQtPnJlc3RvcmUoKTsKIAogI2lmICFQTEFURk9STShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGV2aWNlUkdCLCBMaW5lYXJSR0IpOworICAgIG1h
c2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXZpY2VDb2xvclNwYWNl
LCBsaW5lYXJSR0JDb2xvclNwYWNlKTsKICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIHRoZSBsdW1p
bmFuY2UgbWFzay4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNyArMjYyLDcg
QEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyYwogCiAgICAgT3duUHRy
PEltYWdlQnVmZmVyPiB0aWxlSW1hZ2U7CiAKLSAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6
OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2UsIERldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFn
ZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBEZXZpY2VDb2xvclNwYWNl
KSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+KCk7CiAKICAgICBHcmFw
aGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCShyZXZpc2lvbiA2
OTg3NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2Fs
Y3VsYXRlVHJhbnMKICAgICB9CiB9CiAKLWJvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIsIEltYWdlQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorYm9vbCBTVkdJbWFnZUJ1
ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFy
Z2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25Q
dHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewog
ICAgIEludFNpemUgaW1hZ2VTaXplKHJvdW5kZWRJbWFnZUJ1ZmZlclNpemUoY2xhbXBlZEFic29s
dXRlVGFyZ2V0UmVjdC5zaXplKCkpKTsKICAgICBJbnRTaXplIHVuY2xhbXBlZEltYWdlU2l6ZShT
VkdJbWFnZUJ1ZmZlclRvb2xzOjpyb3VuZGVkSW1hZ2VCdWZmZXJTaXplKGFic29sdXRlVGFyZ2V0
UmVjdC5zaXplKCkpKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9v
bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xz
LmgJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW1hZ2VCdWZmZXJU
b29scy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFJlbmRlck9iamVj
dDsKIAogY2xhc3MgU1ZHSW1hZ2VCdWZmZXJUb29scyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGFy
Z2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYsIEltYWdlQ29sb3JTcGFjZSk7CisgICAgc3Rh
dGljIGJvb2wgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRy
PEltYWdlQnVmZmVyPiYsIENvbG9yU3BhY2UpOwogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRy
ZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+
Jik7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY5ODc0KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgpAQCAtMTM0LDcgKzEzNSw3IEBAIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWUKICAgICAgICAgICAgIHJldHVybiAwOwog
CiAgICAgICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocmVuZGVyZXIt
Pm9iamVjdEJvdW5kaW5nQm94KCkpOwotICAgICAgICBtX3RhcmdldEltYWdlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgTGluZWFyUkdCKTsKKyAgICAgICAgbV90YXJn
ZXRJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIGxpbmVhclJH
QkNvbG9yU3BhY2UpOwogCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3Jt
YXRpb247CiAgICAgICAgIFNWR0ltYWdlQnVmZmVyVG9vbHM6OnJlbmRlclN1YnRyZWVUb0ltYWdl
QnVmZmVyKG1fdGFyZ2V0SW1hZ2UuZ2V0KCksIHJlbmRlcmVyLCBjb250ZW50VHJhbnNmb3JtYXRp
b24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71272</attachid>
            <date>2010-10-20 04:30:01 -0700</date>
            <delta_ts>2010-10-20 05:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47922-20101020132958.patch</filename>
            <type>text/plain</type>
            <size>127734</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIwIEBACisyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVy
Z2UgQ29sb3JTcGFjZSBhbmQgSW1hZ2VDb2xvclNwYWNlIGVudW1zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkyMgorCisgICAgICAgIE1lcmdpbmcg
dGhlc2UgdHdvIGVudW1zIG1ha2VzIGl0IGVhc2llciB0byBpbXBsZW1lbnQgY29sb3ItaW50ZXJw
b2xhdGlvbiBhcyB3ZWxsIGFzCisgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyIGZv
ciBTVkcuCisgICAgICAgIEFkZGVkIENvbG9yU3BhY2VMaW5lYXJSR0IgdG8gdGhlIENvbG9yU3Bh
Y2UgZW51bSBhbmQgY2hhbmdlZCBJbWFnZUNvbG9yU3BhY2UgdG8gQ29sb3JTcGFjZSBpbiBhbGwg
cmVsYXRlZAorICAgICAgICBmaWxlcy4gUmVuYW1lZCBlbnVtIGVudHJpZXMgRGV2aWNlQ29sb3JT
cGFjZSBhbmQgc1JHQkNvbG9yU3BhY2UgdG8gQ29sb3JTcGFjZURldmljZVJHQiBhbmQgQ29sb3JT
cGFjZVNSR0IKKyAgICAgICAgdG8gZm9sbG93IHdlYmtpdCBzdHlsZSBydWxlcy4KKyAgICAgICAg
UmVtb3ZlZCBncmF5IHNjYWxlIHN1cHBvcnQgaW4gSW1hZ2VCdWZmZXIgc2luY2UgaXQgaXMgbm90
IHVzZWQgYW55bW9yZSBvbiBXZWJLaXQuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBDb2xvclNwYWNlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAg
ICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRDYXJldCk6CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFp
bnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dHJp
YnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ry
b2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9y
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3T3V0bGluZWRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFp
bnQpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQpOgorICAgICAgICAqIG1hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
b3Q6OnBhaW50KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpwYWludCk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6cGFpbnRSb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FjaGVkQ0dDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVhclJHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2dJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVdpdGhDb2xvclNwYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHTEVTMkNhbnZhczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdMRVMyQ2FudmFzOjpmaWxsUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhbnNwYXJlbmN5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eVdpbjo6c2V0dXBMYXllckZvcldoaXRlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9y
TWF0cml4OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6YXBwbHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUZsb29kOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFT2Zmc2V0OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjphcHBseSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjplZmZlY3RDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
b250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNldExheWVyQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TGF5ZXJC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
U2tpYTo6dXBsb2FkU29mdHdhcmVUb0hhcmR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlw
aHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRMYXllckJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldExheWVyQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJ
VE1BUE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkxheWVyOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9JbWFnZVdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRI
QklUTUFQT2ZTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0Nv
bnRleHRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNo
RmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYUJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1
bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1BvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkb0RyYXdUZXh0QXRQb2ludCk6CisgICAgICAgICogcGxhdGZv
cm0vd3gvd3hjb2RlL21hYy9jYXJib24vbm9uLWtlcm5lZC1kcmF3aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdUZXh0V2l0aFNwYWNpbmcpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWludE1pc3NpbmdQbHVn
aW5JY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJr
ZXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRNZWRpYVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludE1lZGlh
Vm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFUaW1lbGluZUNvbnRh
aW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lbnVMaXN0QnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5D
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OnBh
aW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6CisKIDIwMTAtMTAtMjAgIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAko
cmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxODksMjUgKzIxODksMjkgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogICAgICwgbV9oYXNDYWNoZWRDU1NUZXh0KGZhbHNl
KQogewogICAgIHN3aXRjaCAoc3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXZpY2VDb2xvclNwYWNl
OgotICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVmYXVsdDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgotICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3JnYjsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29sb3JTcGFjZURldmljZVJHQjoKKyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVm
YXVsdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlU1JHQjoKKyAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3JnYjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2xvclNwYWNlTGluZWFyUkdCOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVmYXVsdDsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ29s
b3JTcGFjZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3ZhbHVlLmlkZW50KSB7Ci0gICAgICAg
IGNhc2UgQ1NTVmFsdWVEZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIERldmljZUNvbG9yU3Bh
Y2U7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVTcmdiOgotICAgICAgICAgICAgcmV0dXJuIHNSR0JD
b2xvclNwYWNlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gRGV2aWNlQ29sb3JTcGFjZTsKKyAgICBjYXNlIENT
U1ZhbHVlRGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2VEZXZpY2VSR0I7CisgICAg
Y2FzZSBDU1NWYWx1ZVNyZ2I6CisgICAgICAgIHJldHVybiBDb2xvclNwYWNlU1JHQjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIENv
bG9yU3BhY2VEZXZpY2VSR0I7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQ3Nyw3ICs1NDc3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBpZiAoaXNJbmhlcml0KSAKICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldENvbG9yU3BhY2UobV9wYXJlbnRTdHlsZS0+Y29sb3JTcGFjZSgpKTsK
ICAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
b3JTcGFjZShEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbG9y
U3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
aWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdl
YkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpwYWludENhcmV0KEdy
YQogICAgICAgICByZXR1cm47CiAKICAgICBDb2xvciBjYXJldENvbG9yID0gQ29sb3I6OmJsYWNr
OwotICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IERldmljZUNvbG9yU3BhY2U7CisgICAgQ29s
b3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gcm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1l
bnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgY2FyZXRDb2xvciA9IGVsZW1lbnQtPnJlbmRlcmVy
KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsOSAr
MjYwLDkgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDbwogICAgICAg
ICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBidWZmZXIoKTsKICAgICAgICAgaWYgKGltYWdl
QnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXItPmRyYXdzVXNpbmdDb3B5KCkp
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGNvcGllZEltYWdlKCksIERldmlj
ZUNvbG9yU3BhY2UsIHIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShjb3Bp
ZWRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIERldmlj
ZUNvbG9yU3BhY2UsIHIpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgcik7CiAgICAgICAgIH0KICAgICB9
CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRBbGxBdHQKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnRleHQtPnNldFNoYWRvdyhGbG9hdFNpemUo
KSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0
LT5zZXRTaGFkb3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgY29udGV4dC0+c2V0QWxwaGEoMSk7CiAgICAgY29udGV4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogfQpAQCAtMTAxMiw3ICsx
MDEyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIGlm
ICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgs
IC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdo
dCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYg
Y29sb3IsIGZsb2F0IGFscGhhKQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hh
ZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBj
LT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVy
LCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCkBAIC0xMDQz
LDcgKzEwNDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAg
ICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3
aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAt
aGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwg
ZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUo
KS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hh
ZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9h
dCBrLCBmbG9hdCBhKQpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdwogICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihkYy0+
cGxhdGZvcm1Db250ZXh0KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJs
dXIsIHNoYWRvd0NvbG9yKTsKICAgICBDR0NvbG9yUmVsZWFzZShzaGFkb3dDb2xvcik7CiAjZWxz
ZQotICAgIGRjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHN0YXRl
KCkubV9zaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgogfQogCkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkCiAKICAgICBmbG9hdCB3aWR0aCA9
IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0
ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwotICAgIGMtPnNldFNoYWRvdyhGbG9hdFNpemUo
d2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coRmxvYXRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRNTEltYWdl
RWxlbWVudCogaW1hZ2UpCkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAKICAgICBGbG9hdFJlY3Qgc291cmNlUmVjdCA9IGMtPnJv
dW5kVG9EZXZpY2VQaXhlbHMobm9ybWFsaXplZFNyY1JlY3QpOwogICAgIEZsb2F0UmVjdCBkZXN0
UmVjdCA9IGMtPnJvdW5kVG9EZXZpY2VQaXhlbHMobm9ybWFsaXplZERzdFJlY3QpOwotICAgIGMt
PmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJl
Y3QsIHNvdXJjZVJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOworICAgIGMtPmRyYXdJ
bWFnZShjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwogICAgIGRpZERyYXcoZGVz
dFJlY3QpOwogfQogCkBAIC0xMjgwLDcgKzEyODAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlCiAgICAgc291cmNlQ2FudmFzLT5tYWtlUmVuZGVyaW5nUmVzdWx0
c0F2YWlsYWJsZSgpOwogI2VuZGlmCiAKLSAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBE
ZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc291cmNlUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENv
bXBvc2l0ZSk7CisgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKGJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZGVzdFJlY3QsIHNvdXJjZVJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwog
ICAgIGRpZERyYXcoZGVzdFJlY3QpOwogfQogCkBAIC0xMzgzLDcgKzEzODMsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlCiAgICAgICAgIG9wID0gQ29tcG9zaXRl
U291cmNlT3ZlcjsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChkeCwgZHks
IGR3LCBkaCk7Ci0gICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZSgpLCBEZXZpY2VD
b2xvclNwYWNlLCBkZXN0UmVjdCwgRmxvYXRSZWN0KHN4LCBzeSwgc3csIHNoKSwgb3ApOworICAg
IGMtPmRyYXdJbWFnZShjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIEZsb2F0UmVjdChzeCwgc3ksIHN3LCBzaCksIG9wKTsKICAgICBkaWREcmF3KGRl
c3RSZWN0KTsKIH0KIApAQCAtMTgzMCw5ICsxODMwLDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmRyYXdUZXh0SQogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNv
bnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgICAgICBpZiAoZmlsbCkKLSAgICAg
ICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIERldmlj
ZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBt
YXNrSW1hZ2VDb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkp
OwogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZp
c2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJv
a2VDb2xvcihHcmFwaAogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICBjYXNlIFJHQkE6Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fcmdiYSwgRGV2
aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fcmdiYSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsK
ICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBH
cmFwaGljc0NvbnRleHQgQVBJLgpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6
OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGgKICAgICAgICAgY3VycmVudFBlbi5zZXRDb2xvcihjbHIp
OwogICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4p
OwogI2Vsc2UKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9yZ2JhLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNjYs
NyArMjY2LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpYwogICAg
ICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFJHQkE6Ci0gICAg
ICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewogICAgICAgICAvLyBGSVhNRTogRG8g
dGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCkBA
IC0yODAsNyArMjgwLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhp
YwogICAgICAgICBjdXJyZW50QnJ1c2guc2V0Q29sb3IoY2xyKTsKICAgICAgICAgY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPnNldEJydXNoKGN1cnJlbnRCcnVzaCk7CiAjZWxzZQotICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdiYSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAj
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzksNyArMTc3
OSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3JhcGhpY3NDb24KIAogICAgICAg
ICBjb250ZXh0LmFkZFBhdGgocXVhZFBhdGgpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRo
aWNrbmVzcyhvdXRsaW5lVGhpY2tuZXNzKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cihvdXRsaW5lQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKG91dGxpbmVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNv
bnRleHQuc3Ryb2tlUGF0aCgpOwogCiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwpAQCAtMTc4
Nyw3ICsxNzg3LDcgQEAgc3RhdGljIHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0Nvbgog
CiAgICAgLy8gTm93IGRvIHRoZSBmaWxsCiAgICAgY29udGV4dC5hZGRQYXRoKHF1YWRQYXRoKTsK
LSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgY29udGV4dC5maWxsUGF0aCgpOwogfQogCkBAIC0xOTY5LDExICsxOTY5LDExIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZHJhd0VsZW1lbnRUaXQKICAgICBpZiAodGl0bGVSZWN0
LmJvdHRvbSgpID4gb3ZlcmxheVJlY3QuYm90dG9tKCkpCiAgICAgICAgIGR5ICs9IG92ZXJsYXlS
ZWN0LmJvdHRvbSgpIC0gdGl0bGVSZWN0LmJvdHRvbSgpIC0gYm9yZGVyV2lkdGhQeDsKICAgICB0
aXRsZVJlY3QubW92ZShkeCwgZHkpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodG9vbHRp
cEJvcmRlckNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKHRvb2x0aXBCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdCh0aXRsZVJlY3QpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgbm9kZVRpdGxlUnVuLCBJbnRQb2ludCh0aXRsZVJl
Y3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuaGVpZ2h0KCkpKTsK
IH0KIApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gNjk4
NzQpCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJ
bmZvJgogICAgIAogICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwog
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgc1JHQkNvbG9yU3BhY2Up
OworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29s
b3JTcGFjZVNSR0IpOwogICAgIAogICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQo
dHgsIHR5KSwgSW50UG9pbnQodHggKyBvZmZzZXRXaWR0aCgpLCB0eSkpOwogICAgIGluZm8uY29u
dGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQodHggKyBvZmZzZXRXaWR0aCgpLCB0eSksIEludFBvaW50
KHR4ICsgb2Zmc2V0V2lkdGgoKSwgdHkgKyBvZmZzZXRIZWlnaHQoKSkpOwpAQCAtOTgsMTMgKzk4
LDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYKICAgICAKICAg
ICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBzUkdCQ29sb3JTcGFjZSk7CisgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JH
Qik7CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludCh0eCwgdHkgKyB0
b3BTdGFydCksIEludFBvaW50KHR4ICsgb2Zmc2V0V2lkdGgoKSwgdHkgKyB0b3BTdGFydCkpOwog
ICAgIAogICAgIGludCBiYXNlbGluZSA9IGJhc2VsaW5lUG9zaXRpb24odHJ1ZSk7CiAgICAgCi0g
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBzUkdCQ29s
b3JTcGFjZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAs
IDApLCBDb2xvclNwYWNlU1JHQik7CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJ
bnRQb2ludCh0eCwgdHkgKyBiYXNlbGluZSksIEludFBvaW50KHR4ICsgb2Zmc2V0V2lkdGgoKSwg
dHkgKyBiYXNlbGluZSkpOwogICAgIApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludEluCiAgICAgCiAgICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VUaGlja25lc3Moc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbGluZVRoaWNrbmVzcykp
OwogICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBzUkdCQ29sb3JTcGFjZSk7CisgICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5l
KEludFBvaW50KHR4LCB0eSksIEludFBvaW50KHR4ICsgb2Zmc2V0V2lkdGgoKSwgdHkpKTsKICAg
ICAKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCShyZXZpc2lvbiA2OTg3NCkK
KysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8m
IAogICAgIAogICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGlu
ZVRoaWNrbmVzcyAqIHN0eWxlKCktPmZvbnRTaXplKCkpOwogICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgaW5mby5jb250ZXh0LT5zZXRMaW5lSm9pbihNaXRlckpvaW4pOwogICAgIGlu
Zm8uY29udGV4dC0+c2V0TWl0ZXJMaW1pdChzdHlsZSgpLT5mb250U2l6ZSgpKTsKICAgICAKSW5k
ZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCShyZXZpc2lvbiA2
OTg3NCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcXVhcmVSb290
OjpwYWludChQYWludAogICAgIAogICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KGdSYWRpY2FsTGluZVRoaWNrbmVzcyAqIHN0eWxlKCktPmZvbnRTaXplKCkpOwogICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAgICAgaW5mby5jb250ZXh0LT5zZXRMaW5lSm9pbihNaXRlckpv
aW4pOwogICAgIGluZm8uY29udGV4dC0+c2V0TWl0ZXJMaW1pdChzdHlsZSgpLT5mb250U2l6ZSgp
KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQ2LDcgKzE5NDYsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvCiAgICAgICAgIGZpbGxXaXRo
UmVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIHAtPmZpbGxS
ZWN0KHJlY3QsIENvbG9yKDB4RkYsIDAsIDApLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
cC0+ZmlsbFJlY3QocmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogI2VuZGlmCiAKICAgICBib29sIGlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRU
aW1lU3RhbXA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBX
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3
MSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW4KICAgICBpbnQg
dG90YWxIZWlnaHQgPSBwYWdlUmVjdHMuc2l6ZSgpICogKHBhZ2VTaXplSW5QaXhlbHMuaGVpZ2h0
KCkgKyAxKSAtIDE7CiAKICAgICAvLyBGaWxsIHRoZSB3aG9sZSBiYWNrZ3JvdW5kIGJ5IHdoaXRl
LgotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSks
IERldmljZUNvbG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3IoMjU1LCAyNTUsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGdyYXBoaWNzQ29u
dGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgcGFnZVdpZHRoLCB0b3RhbEhlaWdodCkpOwog
CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKQEAgLTI4Myw4ICsyODMsOCBAQCB2b2lkIFBy
aW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuCiAgICAgICAgIC8vIERyYXcgYSBsaW5l
IGZvciBhIHBhZ2UgYm91bmRhcnkgaWYgdGhpcyBpc24ndCB0aGUgZmlyc3QgcGFnZS4KICAgICAg
ICAgaWYgKHBhZ2VJbmRleCA+IDApIHsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZl
KCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwg
MCwgMjU1KSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDI1NSksIERldmljZUNvbG9yU3BhY2UpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2ludCgwLCBjdXJyZW50SGVpZ2h0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlV2lkdGgsIGN1
cnJlbnRIZWlnaHQpKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODA0LDcgKzgwNCw3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKEdyYXBoaWMKIHZvaWQgU2Nyb2xsVmll
dzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBz
dGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InBhbkljb24iKS5yZWxlYXNlUmVmKCk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKHBhblNjcm9s
bEljb24sIERldmljZUNvbG9yU3BhY2UsIG1fcGFuU2Nyb2xsSWNvblBvaW50KTsKKyAgICBjb250
ZXh0LT5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgbV9wYW5T
Y3JvbGxJY29uUG9pbnQpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lLmgJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSB7
fQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgY29udGV4
dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQt
PmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50U2Nyb2wK
ICAgICBQYWdlKiBwYWdlID0gZnJhbWVWaWV3LT5mcmFtZSgpID8gZnJhbWVWaWV3LT5mcmFtZSgp
LT5wYWdlKCkgOiAwOwogICAgIGlmIChwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCktPnNob3VsZFBh
aW50Q3VzdG9tU2Nyb2xsYmFycygpICYmIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFpbnRD
dXN0b21TY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIERldmljZUNv
bG9yU3BhY2UpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTg3NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6cGFpbnRCb3Jk
ZXIoR3JhcGhpYwogICAgIENvbG9yIGJvcmRlckNvbG9yKDEyNywgMTU3LCAxODUpOwogCiAgICAg
Z2MtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICBnYy0+c2V0RmlsbENvbG9yKGJvcmRl
ckNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBnYy0+c2V0RmlsbENvbG9yKGJvcmRlckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIGludCB0eCA9IHgoKTsKICAgICBpbnQg
dHkgPSB5KCk7CkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50KEdy
YXBoaWNzQ29udGV4dAogCiAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhbiBlbXB0eSBwb3B1cC4K
ICAgICBpZiAobnVtSXRlbXMoKSA9PSAwKQotICAgICAgICBnYy0+ZmlsbFJlY3QociwgQ29sb3I6
OndoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgZ2MtPmZpbGxSZWN0KHIsIENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBnYy0+cmVzdG9yZSgpOwogCkBA
IC04OTQsMjMgKzg5NCwyMyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3ND
b250CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQsIG1ha2Ugc3Vy
ZSBpdCBoYXMgYSBjb2xvciB0byBibGVuZAogICAgIC8vIGFnYWluc3QuCiAgICAgaWYgKGJhY2tD
b2xvci5oYXNBbHBoYSgpKQotICAgICAgICBnYy0+ZmlsbFJlY3Qocm93UmVjdCwgQ29sb3I6Ondo
aXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgZ2MtPmZpbGxSZWN0KHJvd1JlY3QsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKLSAgICBnYy0+ZmlsbFJlY3Qocm93
UmVjdCwgYmFja0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBnYy0+ZmlsbFJlY3Qocm93
UmVjdCwgYmFja0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAKICAgICBpZiAobV9w
b3B1cENsaWVudC0+aXRlbUlzU2VwYXJhdG9yKHJvd0luZGV4KSkgewogICAgICAgICBJbnRSZWN0
IHNlcGFyYXRvclJlY3QoCiAgICAgICAgICAgICByb3dSZWN0LngoKSArIHNlcGFyYXRvclBhZGRp
bmcsCiAgICAgICAgICAgICByb3dSZWN0LnkoKSArIChyb3dSZWN0LmhlaWdodCgpIC0gc2VwYXJh
dG9ySGVpZ2h0KSAvIDIsCiAgICAgICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogc2VwYXJh
dG9yUGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0KTsKLSAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFy
YXRvclJlY3QsIHRleHRDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdjLT5maWxs
UmVjdChzZXBhcmF0b3JSZWN0LCB0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmICghc3R5bGUuaXNWaXNpYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdjLT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICBnYy0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICBGb250IGl0ZW1Gb250ID0gZ2V0Um93Rm9udChyb3dJbmRleCk7CiAg
ICAgLy8gRklYTUU6IGh0dHA6Ly9jcmJ1Zy5jb20vMTk4NzIgV2Ugc2hvdWxkIGdldCB0aGUgcGFk
ZGluZyBvZiBpbmRpdmlkdWFsIG9wdGlvbgpAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQgUG9wdXBM
aXN0Qm94OjpwYWludFJvdyhHcmFwaGljc0NvbnQKICAgICAgICAgcmVtYWluaW5nV2lkdGggLT0g
KGltYWdlUmVjdC53aWR0aCgpICsga0xhYmVsVG9JY29uUGFkZGluZyk7CiAgICAgICAgIGltYWdl
UmVjdC5zZXRYKHJvd1JlY3Qud2lkdGgoKSAtIHJpZ2h0UGFkZGluZyAtIGltYWdlUmVjdC53aWR0
aCgpKTsKICAgICAgICAgaW1hZ2VSZWN0LnNldFkocm93UmVjdC55KCkgKyAocm93UmVjdC5oZWln
aHQoKSAtIGltYWdlUmVjdC5oZWlnaHQoKSkgLyAyKTsKLSAgICAgICAgZ2MtPmRyYXdJbWFnZShp
bWFnZS5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgaW1hZ2VSZWN0KTsKKyAgICAgICAgZ2MtPmRy
YXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKICAg
ICB9CiAKICAgICAvLyBEcmF3IHRoZSB0aGUgbGFiZWwgaWYgYXBwbGljYWJsZS4KQEAgLTk4NSw3
ICs5ODUsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250CiAgICAg
ZWxzZQogICAgICAgICB0ZXh0WCA9IHJlbWFpbmluZ1dpZHRoIC0gaXRlbUZvbnQud2lkdGgobGFi
ZWxUZXh0UnVuKTsKIAotICAgIGdjLT5zZXRGaWxsQ29sb3IobGFiZWxDb2xvciwgRGV2aWNlQ29s
b3JTcGFjZSk7CisgICAgZ2MtPnNldEZpbGxDb2xvcihsYWJlbENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKICAgICBnYy0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCBsYWJlbFRleHRSdW4sIElu
dFBvaW50KHRleHRYLCB0ZXh0WSkpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDY5ODc0
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6cGFpbnRUaWNrbWEKICAgICAgICAgY29uc3QgaW50IHlQb3MgPSByZWN0LnRvcExl
ZnQoKS55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOwogCiAgICAgICAgIEludFBvaW50
IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
ZGFzaC5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgdGljayk7CisgICAgICAgIGNvbnRleHQtPmRy
YXdJbWFnZShkYXNoLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aWNrKTsKICAgICB9CiAK
ICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCShyZXZpc2lvbiA2OTg3
NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDE3LDggKzQxNyw4IEBAIGJvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYzo6cGFpbnQoU2MKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsU2Nyb2xsYmFyICYmIHRpY2ttYXJrcy5zaXplKCkpIHsKICAgICAgICAgZHJh
d2luZ0NvbnRleHQtPnNhdmUoKTsKICAgICAgICAgZHJhd2luZ0NvbnRleHQtPnNldFNob3VsZEFu
dGlhbGlhcyhmYWxzZSk7Ci0gICAgICAgIGRyYXdpbmdDb250ZXh0LT5zZXRTdHJva2VDb2xvcihD
b2xvcigweENDLCAweEFBLCAweDAwLCAweEZGKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAg
IGRyYXdpbmdDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhGRiwgMHhERCwgMHgwMCwgMHhG
RiksIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBkcmF3aW5nQ29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMHhDQywgMHhBQSwgMHgwMCwgMHhGRiksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBkcmF3aW5nQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDB4RkYsIDB4REQs
IDB4MDAsIDB4RkYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBJbnRSZWN0IHRo
dW1iQXJlYSA9IHRyYWNrUmVjdChzY3JvbGxiYXIsIGZhbHNlKTsKICAgICAgICAgaWYgKCFjYW5E
cmF3RGlyZWN0bHkpIHsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnBhaW50KFNjCiAgICAgfQogCiAgICAgaWYgKCFjYW5EcmF3RGlyZWN0bHkpCi0g
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgRGV2aWNl
Q29sb3JTcGFjZSwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICAgICAg
Y29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkocmV2
aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgZW51bSBDb2xvclNwYWNlIHsgRGV2aWNlQ29sb3JTcGFjZSwgc1JHQkNvbG9yU3BhY2Ug
fTsKK2VudW0gQ29sb3JTcGFjZSB7CisgICAgQ29sb3JTcGFjZURldmljZVJHQiwKKyAgICBDb2xv
clNwYWNlU1JHQiwKKyAgICBDb2xvclNwYWNlTGluZWFyUkdCCit9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFAKIHsKICAgICBBU1NF
UlQocGF0dGVybik7CiAgICAgaWYgKCFwYXR0ZXJuKSB7Ci0gICAgICAgIHNldFN0cm9rZUNvbG9y
KENvbG9yOjpibGFjaywgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIHNldFN0cm9rZUNvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9jb21tb24tPnN0YXRlLnN0cm9rZUdyYWRpZW50LmNsZWFyKCk7CkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKFBhcwogewog
ICAgIEFTU0VSVChwYXR0ZXJuKTsKICAgICBpZiAoIXBhdHRlcm4pIHsKLSAgICAgICAgc2V0Rmls
bENvbG9yKENvbG9yOjpibGFjaywgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIHNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQuY2xlYXIoKTsKQEAgLTI0
Myw3ICsyNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoCiB7
CiAgICAgQVNTRVJUKGdyYWRpZW50KTsKICAgICBpZiAoIWdyYWRpZW50KSB7Ci0gICAgICAgIHNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIHNl
dFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9jb21tb24tPnN0YXRlLnN0cm9rZUdyYWRpZW50ID0gZ3Jh
ZGllbnQ7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxH
cmFkaWVudChQYQogewogICAgIEFTU0VSVChncmFkaWVudCk7CiAgICAgaWYgKCFncmFkaWVudCkg
ewotICAgICAgICBzZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICAgICAgc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVu
dCA9IGdyYWRpZW50OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRQcml2YXRlLmgJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDEwICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIHN0cm9r
ZVN0eWxlKFNvbGlkU3Ryb2tlKQogICAgICAgICAgICAgLCBzdHJva2VUaGlja25lc3MoMCkKICAg
ICAgICAgICAgICwgc3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrKQotICAgICAgICAgICAgLCBzdHJv
a2VDb2xvclNwYWNlKERldmljZUNvbG9yU3BhY2UpCisgICAgICAgICAgICAsIHN0cm9rZUNvbG9y
U3BhY2UoQ29sb3JTcGFjZURldmljZVJHQikKICAgICAgICAgICAgICwgZmlsbFJ1bGUoUlVMRV9O
T05aRVJPKQogICAgICAgICAgICAgLCBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKQotICAgICAgICAg
ICAgLCBmaWxsQ29sb3JTcGFjZShEZXZpY2VDb2xvclNwYWNlKQorICAgICAgICAgICAgLCBmaWxs
Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBzaG91bGRBbnRp
YWxpYXModHJ1ZSkKICAgICAgICAgICAgICwgcGFpbnRpbmdEaXNhYmxlZChmYWxzZSkKICAgICAg
ICAgICAgICwgc2hhZG93Qmx1cigwKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwxNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9y
U3BhY2UoSW1hZ2VDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIEltYWdlQ29sb3JTcGFjZSBkc3RD
b2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNw
YWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAo
c3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKLSAg
ICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gTGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGV2
aWNlUkdCKSB8fCAKLSAgICAgICAgKGRzdENvbG9yU3BhY2UgIT0gTGluZWFyUkdCICYmIGRzdENv
bG9yU3BhY2UgIT0gRGV2aWNlUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JT
cGFjZUxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9IENvbG9yU3BhY2VEZXZpY2VSR0IpIAor
ICAgICAgICB8fCAoZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlTGluZWFyUkdCICYmIGRzdENv
bG9yU3BhY2UgIT0gQ29sb3JTcGFjZURldmljZVJHQikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChkc3RDb2xvclNwYWNlID09IExpbmVhclJHQikgeworICAgIGlmIChkc3RDb2xvclNwYWNl
ID09IENvbG9yU3BhY2VMaW5lYXJSR0IpIHsKICAgICAgICAgaWYgKG1fbGluZWFyUmdiTFVULmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpICAvIDI1NS4wZjsKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShJbQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZSht
X2xpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkc3RDb2xvclNwYWNlID09IERldmljZVJH
QikgeworICAgIH0gZWxzZSBpZiAoZHN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNlRGV2aWNlUkdC
KSB7CiAgICAgICAgIGlmIChtX2RldmljZVJnYkxVVC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZs
b2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5l
IEltYWdlQnVmZmVyX2gKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTQ0LDEzICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBJbWFnZURhdGE7CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xh
c3MgSW50UmVjdDsKLSAgICAKLSAgICBlbnVtIEltYWdlQ29sb3JTcGFjZSB7Ci0gICAgICAgIFVu
a25vd24sCi0gICAgICAgIERldmljZVJHQiwgLy8gbGlrZSBzUkdCCi0gICAgICAgIEdyYXlTY2Fs
ZSwKLSAgICAgICAgTGluZWFyUkdCCi0gICAgfTsKIAogICAgIGVudW0gTXVsdGlwbHkgewogICAg
ICAgICBQcmVtdWx0aXBsaWVkLApAQCAtNjAsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBm
YWlsdXJlLgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gRGV2aWNlUkdC
KQorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0Ip
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAg
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWYobmV3IEltYWdlQnVmZmVyKHNpemUsIGNvbG9yU3Bh
Y2UsIHN1Y2Nlc3MpKTsKQEAgLTg5LDcgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJs
ZSogcXVhbGl0eSA9IDApIGNvbnN0OwogI2lmICFQTEFURk9STShDRykKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
KTsgfQotICAgICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoSW1hZ2VDb2xvclNwYWNlIHNy
Y0NvbG9yU3BhY2UsIEltYWdlQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKTsKKyAgICAgICAgdm9p
ZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFj
ZSBkc3RDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3Bh
Y2UoY29uc3QgVmVjdG9yPGludD4mKTsKICNlbHNlCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0x
LCAwLCBtX3NpemUuaGVpZ2h0KCkpOyB9CkBAIC0xMTksNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBwbGFjZSBpdHMgc3Vj
Y2VzcyBpbnRvIHRoZSBnaXZlbiBvdXQtdmFyaWFibGUKICAgICAgICAgLy8gc28gdGhhdCBjcmVh
dGUoKSBrbm93cyB3aGVuIGl0IHNob3VsZCByZXR1cm4gZmFpbHVyZS4KLSAgICAgICAgSW1hZ2VC
dWZmZXIoY29uc3QgSW50U2l6ZSYsIEltYWdlQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBib29sJiBz
dWNjZXNzKTsKKyAgICAgICAgSW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAgSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSQogewog
fQogCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VD
b2xvclNwYWNlIGltYWdlQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKK0ltYWdlQnVmZmVyOjpJ
bWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb2xvclNwYWNlLCBib29sJiBzdWNjZXNz
KQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MywxMCArNzMsMTIgQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IpCiBzdGF0aWMg
aW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGV2aWNlQ29s
b3JTcGFjZToKKyAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6CiAgICAgICAgIHJldHVybiBk
ZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7Ci0gICAgY2FzZSBzUkdCQ29sb3JTcGFjZToKKyAgICBj
YXNlIENvbG9yU3BhY2VTUkdCOgogICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
KyAgICBjYXNlIENvbG9yU3BhY2VMaW5lYXJSR0I6CisgICAgICAgIHJldHVybiBsaW5lYXJSR0JD
b2xvclNwYWNlUmVmKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CkBAIC0xMzEsMTMgKzEzMywxNSBAQCB0ZW1w
bGF0ZTxDb2xvclNwYWNlIGNvbG9yU3BhY2U+IHN0YXRpYyBDCiBDR0NvbG9yUmVmIGNhY2hlZENH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAg
c3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXZpY2VDb2xvclNwYWNlOgotICAgICAg
ICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxEZXZpY2VDb2xvclNwYWNlPihjb2xvcik7Ci0gICAgY2Fz
ZSBzUkdCQ29sb3JTcGFjZToKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8c1JHQkNvbG9y
U3BhY2U+KGNvbG9yKTsKKyAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6CisgICAgICAgIHJl
dHVybiBjYWNoZWRDR0NvbG9yPENvbG9yU3BhY2VEZXZpY2VSR0I+KGNvbG9yKTsKKyAgICBjYXNl
IENvbG9yU3BhY2VTUkdCOgorICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNl
U1JHQj4oY29sb3IpOworICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKKyAgICAgICAgcmV0
dXJuIGNhY2hlZENHQ29sb3I8Q29sb3JTcGFjZUxpbmVhclJHQj4oY29sb3IpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xvciwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNiArOTYsMTcgQEAgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNl
UmVmKCkKICNlbmRpZgogfQogCitDR0NvbG9yU3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJl
ZigpCit7CisgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGtDR0Nv
bG9yU3BhY2VHZW5lcmljUkdCTGluZWFyLCB0aGlzIGlzIHRyYWNrZWQgYnkgaHR0cDovL3dlYmtp
dC5vcmcvYi8zMTM2My4KKyNpZiBQTEFURk9STShXSU4pIHx8IGRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpCisgICAgcmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAg
c3RhdGljIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VHZW5lcmljUkdCTGluZWFyKTsKKyAgICByZXR1cm4gbGlu
ZWFyUkdCU3BhY2U7CisjZW5kaWYKK30KKwogR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRl
eHQoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKICAgICA6IG1fY29tbW9uKGNyZWF0ZUdyYXBoaWNz
Q29udGV4dFByaXZhdGUoKSkKICAgICAsIG1fZGF0YShuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKGNnQ29udGV4dCkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENHQ29sb3JTcGFjZVJlZiBk
ZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiBDR0NvbG9yU3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCk7CiAKIH0KIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJC
YXNlNjQuaCIKICNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW1hZ2VE
YXRhLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPEFwcGxpY2F0
aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgpAQCAtNTUsNyArNTYsNyBAQCBJbWFn
ZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJCiB7CiB9CiAKLUltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUNvbG9yU3BhY2UgaW1hZ2VD
b2xvclNwYWNlLCBib29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUsIENvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBib29sJiBzdWNjZXNz
KQogICAgIDogbV9kYXRhKHNpemUpCiAgICAgLCBtX3NpemUoc2l6ZSkKIHsKQEAgLTY0LDEyICs2
NSwxMSBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgCiAgICAgICAg
IHJldHVybjsKIAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gc2l6ZS53aWR0aCgpOwotICAg
IGlmIChpbWFnZUNvbG9yU3BhY2UgIT0gR3JheVNjYWxlKSB7Ci0gICAgICAgIC8vIFByb3RlY3Qg
YWdhaW5zdCBvdmVyZmxvdwotICAgICAgICBpZiAoYnl0ZXNQZXJSb3cgPiAweDNGRkZGRkZGKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBieXRlc1BlclJvdyAqPSA0OwotICAgIH0KKwor
ICAgIC8vIFByb3RlY3QgYWdhaW5zdCBvdmVyZmxvdworICAgIGlmIChieXRlc1BlclJvdyA+IDB4
M0ZGRkZGRkYpCisgICAgICAgIHJldHVybjsKKyAgICBieXRlc1BlclJvdyAqPSA0OwogICAgIG1f
ZGF0YS5tX2J5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3c7CiAKICAgICBzaXplX3QgZGF0YVNpemUg
PSBzaXplLmhlaWdodCgpICogYnl0ZXNQZXJSb3c7CkBAIC03OSwyNyArNzksMjAgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIAogICAgIEFTU0VSVCgocmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KG1fZGF0YS5tX2RhdGEpICYgMikgPT0gMCk7CiAKICAgICBzd2l0Y2go
aW1hZ2VDb2xvclNwYWNlKSB7Ci0gICAgICAgIGNhc2UgRGV2aWNlUkdCOgotICAgICAgICAgICAg
bV9kYXRhLm1fY29sb3JTcGFjZS5hZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXlTY2FsZToKLSAgICAgICAg
ICAgIG1fZGF0YS5tX2NvbG9yU3BhY2UuYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VH
cmF5KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0jaWYgKChQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKENIUk9NSVVNKSkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpKQotICAgICAgICBj
YXNlIExpbmVhclJHQjoKLSAgICAgICAgICAgIG1fZGF0YS5tX2NvbG9yU3BhY2UuYWRvcHRDRihD
R0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQkxpbmVhcikp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSNlbmRpZgotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZS5hZG9wdENGKENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JT
cGFjZURldmljZVJHQjoKKyAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZSA9IGRldmljZVJHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlU1JHQjoK
KyAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKKyAgICAgICAgbV9kYXRh
Lm1fY29sb3JTcGFjZSA9IGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgbV9kYXRhLm1fZ3JheVNjYWxlID0gaW1hZ2VDb2xvclNwYWNlID09IEdy
YXlTY2FsZTsKLSAgICBtX2RhdGEubV9iaXRtYXBJbmZvID0gbV9kYXRhLm1fZ3JheVNjYWxlID8g
a0NHSW1hZ2VBbHBoYU5vbmUgOiBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q7CisgICAg
bV9kYXRhLm1fYml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDsKICAg
ICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjZ0NvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKG1fZGF0YS5tX2RhdGEsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgOCwg
Ynl0ZXNQZXJSb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmdldCgpLCBtX2Rh
dGEubV9iaXRtYXBJbmZvKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLCBtX2Rh
dGEubV9iaXRtYXBJbmZvKSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTM0LDggKzEyNyw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5
SW1hZ2UKIAogc3RhdGljIENHSW1hZ2VSZWYgY2dJbWFnZShjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIENHSW1hZ2VDcmVhdGUo
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCA4LCBkYXRhLm1fZ3JheVNjYWxlID8gOCA6IDMy
LCBkYXRhLm1fYnl0ZXNQZXJSb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tX2Nv
bG9yU3BhY2UuZ2V0KCksIGRhdGEubV9iaXRtYXBJbmZvLCBkYXRhLm1fZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKKyAgICByZXR1cm4gQ0dJ
bWFnZUNyZWF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDgsIDMyLCBkYXRhLm1fYnl0
ZXNQZXJSb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tX2NvbG9yU3BhY2UsIGRh
dGEubV9iaXRtYXBJbmZvLCBkYXRhLm1fZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBrQ0dS
ZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LApAQCAtMTQ0
LDcgKzEzNyw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiAKICAg
ICBpZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSB7CiAgICAgICAgIC8vIFdlJ3JlIGRyYXdp
bmcgaW50byBvdXIgb3duIGJ1ZmZlci4gIEluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmssIHdlIG5l
ZWQgdG8gY29weSB0aGUgc291cmNlIGJ1ZmZlciBmaXJzdC4KICAgICAgICAgUmVmUHRyPEltYWdl
PiBjb3B5ID0gY29weUltYWdlKCk7Ci0gICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1hZ2UoY29w
eS5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCB1c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgICAgICBkZXN0Q29udGV4dC0+ZHJhd0ltYWdlKGNvcHkuZ2V0KCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0
eVNjYWxlKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVu
ZGVyaW5nID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKG1fc2l6ZSwgbV9kYXRhKSk7CiAg
ICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2VGb3JSZW5kZXJpbmcuZ2V0KCksIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0
YS5oCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDggQEAgcHVibGljOgog
ICAgIAogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJvdmlkZXI7CiAg
ICAgQ0dCaXRtYXBJbmZvIG1fYml0bWFwSW5mbzsKLSAgICBib29sIG1fZ3JheVNjYWxlOwogICAg
IHVuc2lnbmVkIG1fYnl0ZXNQZXJSb3c7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
bV9jb2xvclNwYWNlOworICAgIENHQ29sb3JTcGFjZVJlZiBtX2NvbG9yU3BhY2U7CiB9OwogCiB9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQ0cuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCwxMCArMTM4LDEyIEBAIHN0
YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2VXaXRoQ28KICAgICAgICAgcmV0dXJuIG9y
aWdpbmFsSW1hZ2U7CiAKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERldmlj
ZUNvbG9yU3BhY2U6CisgICAgY2FzZSBDb2xvclNwYWNlRGV2aWNlUkdCOgogICAgICAgICByZXR1
cm4gb3JpZ2luYWxJbWFnZTsKLSAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgorICAgIGNhc2UgQ29s
b3JTcGFjZVNSR0I6CiAgICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oQWRvcHRD
RiwgQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBzUkdCQ29s
b3JTcGFjZVJlZigpKSk7CisgICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgorICAgICAgICBy
ZXR1cm4gUmV0YWluUHRyPENHSW1hZ2VSZWY+KEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2Uob3JpZ2luYWxJbWFnZSwgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpKSk7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmNwcAkocmV2aXNpb24gNjk4
NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEdMRVMyQ2FudmFzOjpjbGVh
clJlY3QoY29uc3QgRmxvYXRSCiAgICAgfSBlbHNlIHsKICAgICAgICAgc2F2ZSgpOwogICAgICAg
ICBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ2xlYXIpOwotICAgICAgICBmaWxsUmVj
dChyZWN0LCBDb2xvcihSR0JBMzIoMCkpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgZmls
bFJlY3QocmVjdCwgQ29sb3IoUkdCQTMyKDApKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
ICAgIHJlc3RvcmUoKTsKICAgICB9CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBHTEVTMkNh
bnZhczo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZQogCiB2b2lkIEdMRVMyQ2FudmFzOjpmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgZmlsbFJlY3QocmVjdCwgbV9zdGF0ZS0+
bV9maWxsQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGZpbGxSZWN0KHJlY3QsIG1fc3Rh
dGUtPm1fZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBHTEVTMkNh
bnZhczo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFuc3BhcmVu
Y3lXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhbnNwYXJlbmN5V2luLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYW5zcGFyZW5jeVdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFRyYW5zcGFyZW5jeVdpbjo6c2V0dXBMYXllckZvcldo
aXRlCiAgICAgaWYgKCFtX3ZhbGlkTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJh
d0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fbGF5ZXJTaXplKSwg
Q29sb3I6OndoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBtX2RyYXdDb250ZXh0LT5maWxs
UmVjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX2xheWVyU2l6ZSksIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgLy8gTGF5ZXIgcmVjdCByZXByZXNlbnRzIHRoZSBw
YXJ0IG9mIHRoZSBvcmlnaW5hbCBsYXllci4KIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAkocmV2aXNpb24gNjk4
NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6
OmFwcGx5KEZpbHRlciogZmlsdGVyCiAgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdElt
YWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW4tPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKIAogICAgIEludFJlY3QgaW1hZ2VS
ZWN0KEludFBvaW50KCksIHJlc3VsdEltYWdlKCktPnNpemUoKSk7CiAgICAgUGFzc1JlZlB0cjxJ
bWFnZURhdGE+IGltYWdlRGF0YShyZXN1bHRJbWFnZSgpLT5nZXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoaW1hZ2VSZWN0KSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUxLDI2ICsxNTEsMjYgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIp
CiAgICAgRmxvYXRSZWN0IHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKTsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUjoKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluMi0+cmVzdWx0SW1hZ2UoKSwg
RGV2aWNlQ29sb3JTcGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlu
LT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbjItPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAg
ICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2UoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX0lOOgogICAgICAgICBmaWx0ZXJDb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIGZpbHRlckNv
bnRleHQtPmNsaXBUb0ltYWdlQnVmZmVyKGluMi0+cmVzdWx0SW1hZ2UoKSwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVy
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNw
YWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2Uo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJz
b2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBmaWx0ZXJDb250ZXh0LT5yZXN0b3JlKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmlj
ZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluMi0+cmVz
dWx0SW1hZ2UoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpLCBzcmNSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbk91
dCk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1h
Z2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW4yLT5yZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIHNyY1JlY3QsIENvbXBv
c2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW4yLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBzcmNSZWN0
LCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKGluMi0+cmVzdWx0SW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmls
dGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKSwgc3JjUmVjdCwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW4yLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmlj
ZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpLCBzcmNSZWN0LCBDb21wb3NpdGVYT1IpOworICAgICAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW4yLT5yZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBzcmNSZWN0LCBDb21wb3NpdGVYT1IpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM6IHsKICAgICAgICAgSW50UmVj
dCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGlu
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgRkVGbG9vZDo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENvbG9yIGNvbG9yID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENv
bG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgpKTsKLSAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNv
bG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVjdChGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAJKHJldmlzaW9u
IDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVNZXJnZTo6YXBwbHkoRmls
dGVyKiBmaWx0ZXIpCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKLSAgICAgICAgZmls
dGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xv
clNwYWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1h
Z2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBGRU9mZnNldDo6YXBwbHkoRmlsdGVyKiBmaWx0
ZXIpCiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIGRyYXdpbmdSZWdpb24ubW92ZShm
aWx0ZXItPmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBmaWx0ZXItPmFwcGx5VmVydGljYWxT
Y2FsZShtX2R5KSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1
bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3aW5nUmVnaW9uKTsKKyAgICBmaWx0ZXJD
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCShyZXZpc2lv
biA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMiArNzUsMTIgQEAgdm9pZCBGRVRpbGU6OmFwcGx5KEZp
bHRlciogZmlsdGVyKQogICAgIH0KIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gdGlsZUltYWdl
OwotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJl
Y3QsIHRpbGVSZWN0LCB0aWxlSW1hZ2UsIERldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFnZUJ1
ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQikpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwogICAgIHRp
bGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1h
eEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGluLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoaW4tPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm4gPSBQ
YXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLT5jb3B5SW1hZ2UoKSwgdHJ1ZSwgdHJ1ZSk7CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIEdy
YXBoaWNzQ29udGV4dCogRmlsdGVyRWZmZWN0OjplZmZlY3RDb24KICAgICBkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdChmaWx0ZXIpOwogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9lZmZlY3RCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBMaW5lYXJSR0IpOworICAgIG1f
ZWZmZWN0QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSwgQ29sb3JTcGFjZUxpbmVhclJHQik7CiAgICAgaWYgKCFtX2VmZmVjdEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1fZWZmZWN0QnVmZmVyLT5jb250ZXh0KCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lk
IFNvdXJjZUFscGhhOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAgICBGbG9hdFJlY3QgaW1hZ2VS
ZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwogICAgIGZpbHRl
ckNvbnRleHQtPnNhdmUoKTsKICAgICBmaWx0ZXJDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihm
aWx0ZXItPnNvdXJjZUltYWdlKCksIGltYWdlUmVjdCk7Ci0gICAgZmlsdGVyQ29udGV4dC0+Zmls
bFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2ssIERldmljZUNvbG9yU3BhY2UpOworICAgIGZp
bHRlckNvbnRleHQtPmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICBmaWx0ZXJDb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5j
cHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
U291cmNlR3JhcGhpYzo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIKICAgICBpZiAoIWZpbHRlckNvbnRl
eHQgfHwgIWZpbHRlci0+c291cmNlSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmls
dGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+c291cmNlSW1hZ2UoKSwgRGV2aWNl
Q29sb3JTcGFjZSwgSW50UG9pbnQoKSk7CisgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGZpbHRlci0+c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQo
KSk7CiB9CiAKIHZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBhaW50KAogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1h
Z2UtPmltYWdlKCkuZ2V0KCkpLCBzUkdCQ29sb3JTcGFjZSwKKyAgICBjb250ZXh0LT5kcmF3SW1h
Z2UocmVpbnRlcnByZXRfY2FzdDxJbWFnZSo+KGdzdEltYWdlLT5pbWFnZSgpLmdldCgpKSwgQ29s
b3JTcGFjZVNSR0IsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QsIENvbXBvc2l0ZUNvcHks
IGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Rm9udEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRlCiAKICAgICAvLyBSZS1lbmFibGUgdGhlIHBs
YXRmb3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBlYXJsaWVyCiAgICAgaWYgKGhhc1NoYWRvdykKLSAg
ICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICAvLyBQYW5nbyBzb21ldGltZXMgbGVhdmVzIGJlaGluZCBwYXRocyB3ZSBkb24ndCB3
YW50CiAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQkocmV2aXNpb24gNjk4NzQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdGb2N1c1JpbmcoY29ucwogICAgIAogICAgIGludCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDI7
CiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKLSAgICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3Iu
aXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSkgOiAwOwor
ICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9y
KGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSA6IDA7CiAKICAgICBSZXRhaW5QdHI8Q0dNdXRh
YmxlUGF0aFJlZj4gZm9jdXNSaW5nUGF0aChBZG9wdENGLCBDR1BhdGhDcmVhdGVNdXRhYmxlKCkp
OwogICAgIHVuc2lnbmVkIHBhdGhDb3VudCA9IHBhdGhzLnNpemUoKTsKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29ucwogCiAgICAgaW50IHJh
ZGl1cyA9ICh3aWR0aCAtIDEpIC8gMjsKICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29s
b3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBE
ZXZpY2VDb2xvclNwYWNlKSA6IDA7CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlz
VmFsaWQoKSA/IGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpIDogMDsK
IAogICAgIFJldGFpblB0cjxDR011dGFibGVQYXRoUmVmPiBmb2N1c1JpbmdQYXRoKEFkb3B0Q0Ys
IENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMu
c2l6ZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXll
ckNBLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzTGF5ZXJDQS5tbQkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUs
NyBAQCBzdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBnZXRDQU1lZGlhCiAKIHN0YXRpYyB2
b2lkIHNldExheWVyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IENvbG9y
JiBjb2xvcikKIHsKLSAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xv
ciwgRGV2aWNlQ29sb3JTcGFjZSldOworICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRD
R0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CiB9CiAKIHN0YXRpYyB2b2lkIGNs
ZWFyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCkBAIC0yNzUsNyArMjc1LDcgQEAg
c3RhdGljIHZvaWQgY2xlYXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheQogCiBzdGF0aWMgdm9pZCBz
ZXRMYXllckJhY2tncm91bmRDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3Im
IGNvbG9yKQogewotICAgIFtsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
b2xvciwgRGV2aWNlQ29sb3JTcGFjZSldOworICAgIFtsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQildOwogfQogCiBzdGF0aWMg
dm9pZCBjbGVhckxheWVyQmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw4ICsyNTUsOCBAQCBH
cmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9yCiAgICAgc2V0UGFpbnRpbmdE
aXNhYmxlZCghY29udGV4dCk7CiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBz
ZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAg
ICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgRGV2aWNlQ29sb3JTcGFj
ZSk7CisgICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugc3RhcnQg
d2l0aCB0aGUgY29ycmVjdCBqb2luIG1vZGUuCiAgICAgICAgIHNldExpbmVKb2luKE1pdGVySm9p
bik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJR
dC5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBJbWFnZUJ1
ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJCiAgICAgbV9pbWFnZSA9IFN0aWxsSW1h
Z2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9waXhtYXApOwogfQogCi1JbWFnZUJ1ZmZlcjo6SW1h
Z2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VDb2xvclNwYWNlLCBib29sJiBzdWNj
ZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbG9y
U3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAsIG1fc2l6ZShz
aXplKQogewpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiAKICAgICBpZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSB7CiAgICAgICAg
IC8vIFdlJ3JlIGRyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlci4gIEluIG9yZGVyIGZvciB0aGlz
IHRvIHdvcmssIHdlIG5lZWQgdG8gY29weSB0aGUgc291cmNlIGJ1ZmZlciBmaXJzdC4KICAgICAg
ICAgUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKCk7Ci0gICAgICAgIGRlc3RDb250ZXh0
LT5kcmF3SW1hZ2UoY29weS5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICBkZXN0Q29udGV4dC0+ZHJhd0lt
YWdlKGNvcHkuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICB9IGVsc2UKICAgICAgICAgZGVzdENvbnRleHQt
PmRyYXdJbWFnZShtX2RhdGEubV9pbWFnZS5nZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNp
b24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJT
a2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBJbWFnZUJ1ZmZlckRhdGE6
OkltYWdlQnVmZmVyRGF0YShjb25zdCBJCiB7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUNvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBi
b29sJiBzdWNjZXNzKQorSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUsIENvbG9yU3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAs
IG1fc2l6ZShzaXplKQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OnVwbG9hZFNvZnR3YXJlCiAKICAgICBtX3VwbG9hZFRleHR1cmUtPnVwZGF0ZVN1YlJlY3QoYml0
bWFwLmdldFBpeGVscygpLCBtX3NvZnR3YXJlRGlydHlSZWN0KTsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gaWRlbnRpdHk7Ci0gICAgZ3B1Q2FudmFzKCktPmRyYXdUZXh0dXJlZFJlY3QobV91cGxvYWRU
ZXh0dXJlLmdldCgpLCBtX3NvZnR3YXJlRGlydHlSZWN0LCBtX3NvZnR3YXJlRGlydHlSZWN0LCBp
ZGVudGl0eSwgMS4wLCBEZXZpY2VDb2xvclNwYWNlLCBvcCk7CisgICAgZ3B1Q2FudmFzKCktPmRy
YXdUZXh0dXJlZFJlY3QobV91cGxvYWRUZXh0dXJlLmdldCgpLCBtX3NvZnR3YXJlRGlydHlSZWN0
LCBtX3NvZnR3YXJlRGlydHlSZWN0LCBpZGVudGl0eSwgMS4wLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBvcCk7CiAgICAgLy8gQ2xlYXIgb3V0IHRoZSByZWdpb24gb2YgdGhlIHNvZnR3YXJlIGNhbnZh
cyB3ZSBqdXN0IHVwbG9hZGVkLgogICAgIG1fY2FudmFzLT5zYXZlKCk7CiAgICAgbV9jYW52YXMt
PnJlc2V0TWF0cml4KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDR1dpbi5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDE0ICszNjAsMTQgQEAg
dm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsZWFyU2hhZG93KCk7CiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBo
aWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihz
aGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgp
LCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwotICAgICAg
ICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIERldmljZUNv
bG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dG
aWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBDR0NvbnRleHRTZXRUZXh0
UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgc2hh
ZG93T2Zmc2V0LndpZHRoKCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hh
ZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xk
T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRl
eHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgo
KSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24u
aGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0
U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9t
KSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgICAgIH0KLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICB9CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9z
aXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpLCBwb2ludC55
KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBGb250
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogICAgIH0KIAogICAgIGlmIChoYXNTaW1w
bGVTaGFkb3cpCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIHdrUmVzdG9yZUZvbnRTbW9vdGhp
bmdTdHlsZShjZ0NvbnRleHQsIG9sZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dX
aW4uY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsOCArNzAsOCBA
QCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjCiAgICAgc2V0UGFpbnRp
bmdEaXNhYmxlZCghbV9kYXRhLT5tX2NnQ29udGV4dCk7CiAgICAgaWYgKG1fZGF0YS0+bV9jZ0Nv
bnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5j
IHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3Io
KSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ry
b2tlQ29sb3IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIHNldFBsYXRmb3JtRmlsbENv
bG9yKGZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2V0UGxhdGZv
cm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICB9
CiB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zCiAKICAgICBmbG9hdCByYWRpdXMgPSAod2lkdGggLSAxKSAvIDIuMGY7CiAgICAg
b2Zmc2V0ICs9IHJhZGl1czsKLSAgICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxp
ZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSkgOiAwOworICAgIENH
Q29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSA6IDA7CiAKICAgICBDR011dGFibGVQYXRoUmVmIGZvY3Vz
UmluZ1BhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7CiAgICAgdW5zaWduZWQgcmVjdENvdW50
ID0gcmVjdHMuc2l6ZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NMYXllckNBQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDcgKzk5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ0FUb1RyYW5zZm9ybTNE
KGNvbgogCiBzdGF0aWMgdm9pZCBzZXRMYXllckJvcmRlckNvbG9yKFdLQ0FDRkxheWVyKiBsYXll
ciwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGxheWVyLT5zZXRCb3JkZXJDb2xvcihjYWNo
ZWRDR0NvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKSk7CisgICAgbGF5ZXItPnNldEJvcmRl
ckNvbG9yKGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKIH0KIAog
c3RhdGljIHZvaWQgY2xlYXJCb3JkZXJDb2xvcihXS0NBQ0ZMYXllciogbGF5ZXIpCkBAIC0xMDks
NyArMTA5LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJCb3JkZXJDb2xvcihXS0NBQ0ZMYXllcgogCiBz
dGF0aWMgdm9pZCBzZXRMYXllckJhY2tncm91bmRDb2xvcihXS0NBQ0ZMYXllciogbGF5ZXIsIGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNhY2hl
ZENHQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2UpKTsKKyAgICBsYXllci0+c2V0QmFja2dy
b3VuZENvbG9yKGNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKIH0K
IAogc3RhdGljIHZvaWQgY2xlYXJMYXllckJhY2tncm91bmRDb2xvcihXS0NBQ0ZMYXllciogbGF5
ZXIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNw
cAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsOSArNzgsOSBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAKICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IEJp
dG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNo
aW5nU291cmNlU2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgs
IGJtcEluZm8uYm1IZWlnaHQpLCBJbnRTaXplKCpzaXplKSwgRGV2aWNlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2MsIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBJ
bnRTaXplKCpzaXplKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CiAgICAg
ZWxzZQotICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1X
aWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUu
d2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgRGV2aWNlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
Q29weSk7CisgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5i
bVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21w
b3NpdGVDb3B5KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNn
Q29udGV4dCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOSArODIsOSBA
QCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNCiAKICAgICBJbnRTaXpl
IGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAg
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBi
bXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBJbnRTaXplKCpzaXplKSwgRGV2aWNl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291
cmNlU2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcElu
Zm8uYm1IZWlnaHQpLCBJbnRTaXplKCpzaXplKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9z
aXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgRGV2aWNlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWly
b19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfaGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0
KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50
RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsK
LSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNy
Y1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIERldmljZUNvbG9yU3BhY2UsIGNvbXBv
c2l0ZU9wKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGNvbXBvc2l0ZU9wKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVu
dEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8g
aW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcg
dGhlIGN1cnJlbnQgZnJhbWUKICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpz
aXplKCk7Ci0gICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIERldmljZUNvbG9yU3BhY2UsIGNv
bXBvc2l0ZU9wKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgY29tcG9zaXRlT3ApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3BwCShyZXZpc2lvbiA2OTg3
NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViTGF5ZXI6OmRyYXdJbkNvbnRleHQo
UGxhdGZvcm1HcmEKICAgICAgICAgZm9udC51cGRhdGUoMCk7CiAKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0IGNnKGNvbnRleHQpOwotICAgICAgICBjZy5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY2cuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNnLmRyYXdUZXh0KGZvbnQsIFRleHRS
dW4odGV4dCksIEludFBvaW50KGFCb3VuZHMub3JpZ2luLnggKyA1LCBhQm91bmRzLm9yaWdpbi55
ICsgMTcpKTsKIAogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOyAgICAg
ICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4
dFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA4MSw3ICsxMDgxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVj
dChjb25zdCBGbAogICAgICAgICByZXR1cm47CiAgICAgfSAKIAotICAgIGZpbGxSZWN0KHJlY3Qs
IENvbG9yKENvbG9yOjp3aGl0ZSksIERldmljZUNvbG9yU3BhY2UpOworICAgIGZpbGxSZWN0KHJl
Y3QsIENvbG9yKENvbG9yOjp3aGl0ZSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IHdpZHRoKQpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsbwogICAgIGlmIChudW1TdG9wcyA9PSAxKSB7CiAgICAgICAgIGNvbnN0IEdy
YWRpZW50OjpDb2xvclN0b3AmIHN0b3AgPSBzdG9wcy5maXJzdCgpOwogICAgICAgICBDb2xvciBj
b2xvcihzdG9wLnJlZCwgc3RvcC5ncmVlbiwgc3RvcC5ibHVlLCBzdG9wLmFscGhhKTsKLSAgICAg
ICAgZmlsbFJlY3QociwgY29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBmaWxsUmVj
dChyLCBjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAgICB9
IAogICAgIApAQCAtMTUyNiw3ICsxNTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsbwogICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50KQogICAg
ICAgICBmaWxsUmVjdChyZWN0LCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LmdldCgpKTsK
ICAgICBlbHNlCi0gICAgICAgIGZpbGxSZWN0KHJlY3QsIGZpbGxDb2xvcigpLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICAgICAgZmlsbFJlY3QocmVjdCwgZmlsbENvbG9yKCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCiAgICAgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKIH0KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VXaW5DRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcAkocmV2aXNpb24g
Njk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw5ICs4Miw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE0KIAogICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcElt
YWdlOjpzaXplKCk7CiAgICAgICAgIGlmIChzaXplKQotICAgICAgICAgICAgZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAsIDAsIGJtcEluZm8uYm1XaWR0aCwgYm1w
SW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBEZXZpY2VDb2xvclNwYWNlLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2MsIEZs
b2F0UmVjdCgwLCAwLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBJbnRTaXpl
KCpzaXplKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMCwgMCwgYm1wSW5mby5ibVdpZHRo
LCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBEZXZpY2VDb2xvclNwYWNlLCBDb21wb3NpdGVDb3B5KTsKKyAg
ICAgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMCwgMCwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAgICB9
CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoT2xkQm1wKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCShyZXZp
c2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250
ZXh0V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOCArMTIwLDggQEAgR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHQoUGxhdGZvcgogICAgIHNldFBhaW50aW5nRGlzYWJsZWQoIWNv
bnRleHQpOwogICAgIGlmIChjb250ZXh0KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29u
dGV4dCBzdGFydHMgaW4gc3luYyB3aXRoIG91ciBzdGF0ZS4KLSAgICAgICAgc2V0UGxhdGZvcm1G
aWxsQ29sb3IoZmlsbENvbG9yKCksIERldmljZUNvbG9yU3BhY2UpOwotICAgICAgICBzZXRQbGF0
Zm9ybVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCksIERldmljZUNvbG9yU3BhY2UpOworICAgICAg
ICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgfQogI2lmIFVTRShXWEdDKQogICAgIG1fZGF0YS0+Y29udGV4dCA9
ICh3eEdDREMqKWNvbnRleHQ7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
dGsuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIzLDcgKzUyMyw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRSZXMKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHNlYXJj
aEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVRoZW1lSWNvbihHVEtfU1RPQ0tfRklORCwgcmVj
dC53aWR0aCgpKS5yZWxlYXNlUmVmKCk7CiAgICAgSW50UmVjdCBjZW50ZXJlZFJlY3QoY2VudGVy
UmVjdFZlcnRpY2FsbHlJblBhcmVudElucHV0RWxlbWVudChvYmplY3QsIHJlY3QpKTsKLSAgICBp
LmNvbnRleHQtPmRyYXdJbWFnZShzZWFyY2hJbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwgY2VudGVy
ZWRSZWN0KTsKKyAgICBpLmNvbnRleHQtPmRyYXdJbWFnZShzZWFyY2hJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgY2VudGVyZWRSZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU0
Myw3ICs1NDMsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuCiAg
ICAgLy8gVE9ETzogQnJpZ2h0ZW5pbmcgdXAgdGhlIGltYWdlIG9uIGhvdmVyIGlzIGRlc2lyYWJs
ZSBoZXJlLCBJIGJlbGlldmUuCiAgICAgc3RhdGljIEltYWdlKiBjYW5jZWxJbWFnZSA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1UaGVtZUljb24oR1RLX1NUT0NLX0NMRUFSLCByZWN0LndpZHRoKCkpLnJl
bGVhc2VSZWYoKTsKICAgICBJbnRSZWN0IGNlbnRlcmVkUmVjdChjZW50ZXJSZWN0VmVydGljYWxs
eUluUGFyZW50SW5wdXRFbGVtZW50KG9iamVjdCwgcmVjdCkpOwotICAgIGkuY29udGV4dC0+ZHJh
d0ltYWdlKGNhbmNlbEltYWdlLCBEZXZpY2VDb2xvclNwYWNlLCBjZW50ZXJlZFJlY3QpOworICAg
IGkuY29udGV4dC0+ZHJhd0ltYWdlKGNhbmNlbEltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
ZW50ZXJlZFJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtODA1LDggKzgwNSw4IEBA
IFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFNZWRpYUNvbnRyb2wKIAogc3RhdGljIGlubGlu
ZSBib29sIHBhaW50TWVkaWFCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByLCBJbWFnZSogaW1hZ2UsIENvbG9yIHBhbmVsQ29sb3IsIGludCBtZWRpYUljb25T
aXplKQogewotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyKSwgcGFuZWxDb2xvciwg
RGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VD
b2xvclNwYWNlLAorICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyKSwgcGFuZWxDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLAogICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KHIueCgp
ICsgKHIud2lkdGgoKSAtIG1lZGlhSWNvblNpemUpIC8gMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByLnkoKSArIChyLmhlaWdodCgpIC0gbWVkaWFJY29uU2l6ZSkgLyAyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhSWNvblNpemUsIG1lZGlhSWNvblNpemUp
KTsKQEAgLTg1Miw5ICs4NTIsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xp
ZGVyVHJhCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7CiAKLSAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QociksIG1fcGFuZWxDb2xvciwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHIpLCBt
X3BhbmVsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQtPmZpbGxSZWN0
KEZsb2F0UmVjdChJbnRSZWN0KHIueCgpLCByLnkoKSArIChyLmhlaWdodCgpIC0gbV9tZWRpYVNs
aWRlckhlaWdodCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHIud2lkdGgoKSwgbV9tZWRpYVNsaWRlckhlaWdodCkpLCBtX3NsaWRlckNvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLndp
ZHRoKCksIG1fbWVkaWFTbGlkZXJIZWlnaHQpKSwgbV9zbGlkZXJDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBvLT5zdHlsZSgpOwogICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8pOwpA
QCAtOTExLDcgKzkxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJU
cmEKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewog
ICAgIC8vIE1ha2UgdGhlIHRodW1iIG5pY2VyIHdpdGggcm91bmRlZCBjb3JuZXJzLgotICAgIHBh
aW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QociwgSW50U2l6ZSgzLCAzKSwgSW50U2l6
ZSgzLCAzKSwgSW50U2l6ZSgzLCAzKSwgSW50U2l6ZSgzLCAzKSwgbV9zbGlkZXJUaHVtYkNvbG9y
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRS
ZWN0KHIsIEludFNpemUoMywgMyksIEludFNpemUoMywgMyksIEludFNpemUoMywgMyksIEludFNp
emUoMywgMyksIG1fc2xpZGVyVGh1bWJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxiYXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxiYXJUaGVtZU1hYy5tbQkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk1LDcgKzM5NSw3IEBA
IGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhcioKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgSElUaGVtZURyYXdUcmFjaygmdHJhY2tJbmZv
LCAwLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSwga0hJVGhlbWVP
cmllbnRhdGlvbk5vcm1hbCk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5s
b2NhdGlvbigpKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpLmxvY2F0
aW9uKCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9Qb3B1cE1lbnVXaW4uY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
d2luL1BvcHVwTWVudVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSwxMSArNjE5LDExIEBA
IHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiAKIAogICAgICAgICAvLyBE
cmF3IHRoZSBiYWNrZ3JvdW5kIGZvciB0aGlzIG1lbnUgaXRlbQogICAgICAgICBpZiAoaXRlbVN0
eWxlLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChpdGVtUmVjdCwg
b3B0aW9uQmFja2dyb3VuZENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QoaXRlbVJlY3QsIG9wdGlvbkJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAKICAgICAgICAgaWYgKGNsaWVudCgpLT5pdGVtSXNTZXBhcmF0b3IoaW5k
ZXgpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHNlcGFyYXRvclJlY3QoaXRlbVJlY3QueCgpICsg
c2VwYXJhdG9yUGFkZGluZywgaXRlbVJlY3QueSgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0gc2Vw
YXJhdG9ySGVpZ2h0KSAvIDIsIGl0ZW1SZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGlu
Zywgc2VwYXJhdG9ySGVpZ2h0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2VwYXJh
dG9yUmVjdCwgb3B0aW9uVGV4dENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgb3B0aW9uVGV4dENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTYz
Myw3ICs2MzMsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgCiAg
ICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSBpdGVtVGV4dC5jaGFyYWN0ZXJzKCk7CiAgICAg
ICAgIFRleHRSdW4gdGV4dFJ1bihzdHJpbmcsIGxlbmd0aCwgZmFsc2UsIDAsIDAsIGl0ZW1UZXh0
LmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCk7
CiAKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Iob3B0aW9uVGV4dENvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Iob3B0aW9uVGV4dENvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCiAgICAgICAgIEZvbnQgaXRlbUZvbnQg
PSBjbGllbnQoKS0+bWVudVN0eWxlKCkuZm9udCgpOwogICAgICAgICBpZiAoY2xpZW50KCktPml0
ZW1Jc0xhYmVsKGluZGV4KSkgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRl
eHRSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29y
ZVRleHRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93
aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDbwogewogICAgIFRleHRS
dW4gcnVuKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKTsKIAotICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKGlzT25lTGVmdFRv
UmlnaHRSdW4ocnVuKSkKICAgICAgICAgZm9udC5kcmF3VGV4dCgmY29udGV4dCwgcnVuLCBwb2lu
dCk7CiAgICAgZWxzZQpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQ
b2ludChHcmFwaGljc0NvCiAgICAgICAgIEludFBvaW50IHVuZGVybGluZVBvaW50KHBvaW50KTsK
ICAgICAgICAgdW5kZXJsaW5lUG9pbnQubW92ZShiZWZvcmVXaWR0aCwgMSk7CiAKLSAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAg
ICAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dCh1bmRlcmxpbmVQb2ludCwgdW5kZXJsaW5lZFdp
ZHRoLCBmYWxzZSk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUv
bWFjL2NhcmJvbi9ub24ta2VybmVkLWRyYXdpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24vbm9uLWtlcm5lZC1kcmF3aW5nLmNwcAkocmV2
aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS9tYWMvY2FyYm9uL25v
bi1rZXJuZWQtZHJhd2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9p
ZCBkcmF3VGV4dFdpdGhTcGFjaW5nKEdyYXBoaWNzQ29udGV4dAogICAgIHd4R0NEQyogZGMgPSBz
dGF0aWNfY2FzdDx3eEdDREMqPihncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsK
IAogICAgIHd4Rm9udCogd3hmb250ID0gZm9udC0+Z2V0V3hGb250KCk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRGaWxsQ29sb3IoZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3IoKSwgRGV2aWNl
Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZ3JhcGhpY3ND
b250ZXh0LT5maWxsQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dDb250ZXh0UmVmPihkYy0+R2V0R3JhcGhp
Y3NDb250ZXh0KCktPkdldE5hdGl2ZUNvbnRleHQoKSk7CiAKSW5kZXg6IFdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmll
dy5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUyLDcgKzEyNTIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBh
aW50TWlzc2luZ1BsdWdpbkljb24oCiAKICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgY29udGV4
dC0+Y2xpcCh3aW5kb3dDbGlwUmVjdCgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobnVsbFBs
dWdpbkltYWdlLmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7
CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKG51bGxQbHVnaW5JbWFnZS5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW1hZ2VSZWN0LmxvY2F0aW9uKCkpOwogICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNjk4NzQp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk2OSw3ICs5NjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
CiAgICAgICAgIHAtPmNsaXAoY2xpcFJlY3QpOwogICAgICAgICBwLT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKHJlbmRlcmVyKCktPm9wYWNpdHkoKSk7CiAjaWZkZWYgUkVWRUFMX1RSQU5TUEFSRU5D
WV9MQVlFUlMKLSAgICAgICAgcC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuNWYs
IDAuMmYpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgcC0+c2V0RmlsbENvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuNWYsIDAuMmYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAg
cC0+ZmlsbFJlY3QoY2xpcFJlY3QpOwogI2VuZGlmCiAgICAgfQpAQCAtMjIwMSw5ICsyMjAxLDkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQwogICAgICAgICBjb250
ZXh0LT5jbGlwKGFic1JlY3QpOwogICAgICAgICBJbnRSZWN0IGxhcmdlckNvcm5lciA9IGFic1Jl
Y3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKEludFNpemUobGFyZ2VyQ29ybmVyLndp
ZHRoKCkgKyAxLCBsYXJnZXJDb3JuZXIuaGVpZ2h0KCkgKyAxKSk7Ci0gICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigy
MTcsIDIxNywgMjE3KSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAg
ICAgICAgY29udGV4dC0+ZHJhd1JlY3QobGFyZ2VyQ29ybmVyKTsKICAgICAgICAgY29udGV4dC0+
cmVzdG9yZSgpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
Y3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU0LDcgKzExNTQsNyBAQCB2b2lkIFJlbmRlckxp
c3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxs
aXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIENpcmNsZToK
LSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBjb250ZXh0
LT5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNl
IFNxdWFyZToKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJv
bWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sc0Nocm9taXVtLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHN0YXRpYyBib29sIGhhc1NvdXJjZShjb25zdCBIVE1MTWVkaWFFbGUKIHN0YXRpYyBi
b29sIHBhaW50TWVkaWFCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBJbWFnZSogaW1hZ2UpCiB7CiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBpbWFn
ZS0+cmVjdCgpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFj
ZSwgcmVjdCk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCByZWN0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTIwLDkgKzEyMCw5IEBAIHN0
YXRpYyBib29sIHBhaW50TWVkaWFTbGlkZXIoUmVuZGVyT2JqZWMKICAgICBjb250ZXh0LT5zYXZl
KCk7CiAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwogICAgIGNvbnRleHQt
PnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9y
KSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCkpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzdHlsZS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgRGV2aWNlQ29s
b3JTcGFjZSk7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICBjb250ZXh0LT5kcmF3UmVjdChyZWN0KTsKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7
CiAKQEAgLTE4OSwxMyArMTg5LDEzIEBAIHN0YXRpYyBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlk
ZXIoUmVuZGUKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4
dDsKICAgICBDb2xvciBvcmlnaW5hbENvbG9yID0gY29udGV4dC0+c3Ryb2tlQ29sb3IoKTsKICAg
ICBpZiAob3JpZ2luYWxDb2xvciAhPSBDb2xvcjo6d2hpdGUpCi0gICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICBpbnQgeCA9IHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC8gMjsKICAgICBjb250ZXh0
LT5kcmF3TGluZShJbnRQb2ludCh4LCByZWN0LnkoKSksICBJbnRQb2ludCh4LCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpKTsKIAogICAgIGlmIChvcmlnaW5hbENvbG9yICE9IENvbG9yOjp3aGl0
ZSkKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob3JpZ2luYWxDb2xvciwgRGV2aWNl
Q29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9yaWdpbmFsQ29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjQs
MTcgKzIyNCwxNyBAQCBzdGF0aWMgYm9vbCBwYWludE1lZGlhVGltZWxpbmVDb250YWluZXIoCiAK
ICAgICAgICAgLy8gRHJhdyB0aGUgbGVmdCBib3JkZXIgdXNpbmcgQ1NTIGRlZmluZWQgd2lkdGgg
YW5kIGNvbG9yLgogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mob2JqZWN0LT5z
dHlsZSgpLT5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKG9iamVjdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yKS5yZ2IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKG9iamVjdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKS5yZ2IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIGNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KHJlY3QueCgpICsgMSwgcmVjdC55KCkp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChyZWN0LngoKSArIDEsIHJlY3Qu
eSgpICsgcmVjdC5oZWlnaHQoKSkpOwogCiAgICAgICAgIC8vIERyYXcgdGhlIHJpZ2h0IGJvcmRl
ciB1c2luZyBDU1MgZGVmaW5lZCB3aWR0aCBhbmQgY29sb3IuCiAgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcyhvYmplY3QtPnN0eWxlKCktPmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0g
ICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9iamVjdC0+c3R5bGUoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikucmdiKCksIERldmljZUNv
bG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvYmplY3QtPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLnJn
YigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmUoSW50
UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSAxLCByZWN0LnkoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludFBvaW50KHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gMSwgcmVj
dC55KCkgKyByZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3Iob3JpZ2luYWxDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKG9yaWdpbmFsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mob3JpZ2luYWxUaGlja25lc3MpOwogICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShvcmlnaW5hbFN0eWxlKTsKICAgICB9CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcg
KzEyOSw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICAg
ICAgICAgICAgICBpZiAoaW1hZ2VFbGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24o
KSAhPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05F
KQogICAgICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8o
KS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgICAgIGNo
aWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwg
ZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1Jl
Y3QpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjpmaW5p
c2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIGNoaWxkUGFpbnRJbmZvLCBzYXZlZEluZm8uY29udGV4
dCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAKICAgICBGbG9hdFJlY3QgY2xhbXBl
ZEFic29sdXRlVGFyZ2V0UmVjdCA9IFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNsYW1wZWRBYnNvbHV0
ZVRhcmdldFJlY3RGb3JSZW5kZXJlcihvYmplY3QsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAKICAg
ICBpZiAoc2hvdWxkQ3JlYXRlQ2xpcERhdGEgJiYgIWNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Qu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1h
Z2VCdWZmZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBj
bGlwcGVyRGF0YS0+Y2xpcE1hc2tJbWFnZSwgRGV2aWNlUkdCKSkKKyAgICAgICAgaWYgKCFTVkdJ
bWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNs
YW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBH
cmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2Ut
PmNvbnRleHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdQogICAgIGFic29sdXRlRHJh
d2luZ1JlZ2lvbi5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAKICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWM7Ci0gICAgaWYgKCFTVkdJbWFnZUJ1ZmZl
clRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZURyYXdpbmdSZWdpb24sIGFic29sdXRl
RHJhd2luZ1JlZ2lvbiwgc291cmNlR3JhcGhpYywgTGluZWFyUkdCKSkKKyAgICBpZiAoIVNWR0lt
YWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlRHJhd2luZ1JlZ2lvbiwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBzb3VyY2VHcmFwaGljLCBDb2xvclNwYWNlTGluZWFyUkdC
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dCogc291
cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7CkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UgogICAgICAg
ICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQgPSAwOwogI2lmICFQTEFURk9STShDRykKICAgICAg
ICAgaWYgKGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIpCi0gICAgICAgICAgICBmaWx0
ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyLT50cmFuc2Zvcm1Db2xvclNwYWNlKERldmljZVJH
QiwgTGluZWFyUkdCKTsKKyAgICAgICAgICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZm
ZXItPnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQiwgQ29sb3JTcGFjZUxp
bmVhclJHQik7CiAjZW5kaWYKICAgICB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAjaWYgIVBMQVRGT1JNKENHKQogICAgICAg
ICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+cmVzdWx0SW1hZ2Uo
KTsKICAgICAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkKLSAgICAgICAgICAgICAgICByZXN1bHRJ
bWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShMaW5lYXJSR0IsIERldmljZVJHQik7CisgICAgICAg
ICAgICAgICAgcmVzdWx0SW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZUxpbmVh
clJHQiwgQ29sb3JTcGFjZURldmljZVJHQik7CiAjZW5kaWYKICAgICAgICAgICAgIGZpbHRlckRh
dGEtPmJ1aWxkZWQgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3
YXBDb250CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
bWFza0ltYWdlOwotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBtYXNrSW1h
Z2UsIERldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIG1h
c2tJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4
dCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgICAgIGlmICghbWFza0VsZW1l
bnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFTVkdJbWFnZUJ1
ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRB
YnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgTGluZWFyUkdCKSkKKyAg
ICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0
ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJ
bWFnZSwgQ29sb3JTcGFjZUxpbmVhclJHQikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+
bWFza0ltYWdlLT5jb250ZXh0KCk7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbgogICAgIG1hc2tJbWFnZUNvbnRleHQtPnJlc3RvcmUo
KTsKIAogI2lmICFQTEFURk9STShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5z
Zm9ybUNvbG9yU3BhY2UoRGV2aWNlUkdCLCBMaW5lYXJSR0IpOworICAgIG1hc2tlckRhdGEtPm1h
c2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCLCBDb2xvclNw
YWNlTGluZWFyUkdCKTsKICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIHRoZSBsdW1pbmFuY2UgbWFz
ay4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNyArMjYyLDcgQEAgUGFzc093
blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyYwogCiAgICAgT3duUHRyPEltYWdlQnVm
ZmVyPiB0aWxlSW1hZ2U7CiAKLSAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUlt
YWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCB0aWxlSW1hZ2UsIERldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRv
b2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAg
ICAgICAgcmV0dXJuIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+KCk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAko
cmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVIKICAgICBBU1NFUlQocmVzb3VyY2VNb2RlICE9
IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSogc3ZnU3R5
bGUgPSBzdHlsZSA/IHN0eWxlLT5zdmdTdHlsZSgpIDogMDsKLSAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBzdHlsZSA/IHN0eWxlLT5jb2xvclNwYWNlKCkgOiBEZXZpY2VDb2xvclNwYWNlOwor
ICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlID8gc3R5bGUtPmNvbG9yU3BhY2UoKSA6
IENvbG9yU3BhY2VEZXZpY2VSR0I7CiAKICAgICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlUb0Zp
bGxNb2RlKSB7CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlID8gc3ZnU3R5bGUt
PmZpbGxPcGFjaXR5KCkgOiAxLjBmKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJUaGVtZS5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcg
QEAgSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVAogdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3
aGl0ZSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVj
dCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTY0LDcgKzk2NCw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoUmUKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgtMSwgMSkpOwogICAgIH0KICAgICAKLSAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBEZXZpY2VDb2xvclNwYWNl
LCByZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QubG9jYXRpb24o
KSk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTExNDEsMTEgKzExNDEsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbgogICAgIC8vIERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUg
YXJyb3dzCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsg
Ly8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBpdCBz
dGF5cyB0aGluLgogICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0
b3JDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3Is
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMuYm90dG9tKCkpKTsKIAotICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRTdHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBEZXZpY2VDb2xvclNw
YWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0
b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRy
YXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91
bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRF
ZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLmJvdHRvbSgpKSk7CiAKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAJKHJldmlzaW9uIDY5ODc0
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MzAsOCArODMwLDggQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51
TGlzdEJ1dAogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKIAotICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoTm9TdHJva2UsIERldmljZUNvbG9yU3BhY2UpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoTm9TdHJva2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogCiAgICAgRmxvYXRQb2ludCBhcnJvd1szXTsKICAgICBhcnJvd1swXSA9IEZsb2F0UG9p
bnQobGVmdEVkZ2UsIGNlbnRlclkgLSBhcnJvd0hlaWdodCAvIDIuMGYpOwpAQCAtODUxLDExICs4
NTEsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dAogICAgIC8v
IERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJ
bnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLmJv
dHRvbSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmlnaHRT
ZXBhcmF0b3JDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2Vw
YXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3Bh
Y2UsIGJvdW5kcy5ib3R0b20oKSkpOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbkNFLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDEyICszNzgsMTIgQEAgYm9vbCBS
ZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZpZWxkQwogICAgIEludFJlY3QgY2FuY2VsQm91
bmRzKEludFBvaW50KHgsIHkpLCBjYW5jZWxTaXplKTsKICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5hZGRSb3VuZGVkUmVjdENsaXAoY2FuY2Vs
Qm91bmRzLCBjYW5jZWxSYWRpdXMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxS
YWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChjYW5jZWxCb3VuZHMsIGJ1
dHRvbkNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+Zmls
bFJlY3QoY2FuY2VsQm91bmRzLCBidXR0b25Db2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAK
ICAgICAvLyBEcmF3IHRoZSAneCcKICAgICBJbnRTaXplIHhTaXplKDMsIDMpOwogICAgIEludFJl
Y3QgeEJvdW5kcyhjYW5jZWxCb3VuZHMubG9jYXRpb24oKSArIEludFNpemUoMywgMyksIHhTaXpl
KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0xpbmUoeEJvdW5kcy5sb2NhdGlvbigpLCAgeEJvdW5kcy5sb2NhdGlvbigpICsgeEJv
dW5kcy5zaXplKCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludCh4
Qm91bmRzLnJpZ2h0KCksIHhCb3VuZHMueSgpKSwgIEludFBvaW50KHhCb3VuZHMueCgpLCB4Qm91
bmRzLmJvdHRvbSgpKSk7CiAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBib29sIFJlbmRlclRoZW1lV2lu
Q0U6OnBhaW50U2xpZGVyVHJhY2soCiAgICAgYm9vbCByYyA9IFJlbmRlclRoZW1lOjpwYWludFNs
aWRlclRyYWNrKG8sIGksIHIpOwogICAgIEludFBvaW50IGxlZnQgPSBJbnRQb2ludChyLngoKSAr
IDIsIChyLnkoKSArIHIuYm90dG9tKCkpIC8gMik7CiAgICAgaS5jb250ZXh0LT5zYXZlKCk7Ci0g
ICAgaS5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JheSwgRGV2aWNlQ29sb3JTcGFj
ZSk7Ci0gICAgaS5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmdyYXksIERldmljZUNvbG9y
U3BhY2UpOworICAgIGkuY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyYXksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGkuY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpncmF5
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpLmNvbnRleHQtPmZpbGxSZWN0KHIpOwogI2lm
IEVOQUJMRShWSURFTykKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBtZWRp
YUVsZW1lbnRQYXJlbnQoby0+bm9kZSgpKTsKQEAgLTUwMiw3ICs1MDIsNyBAQCBib29sIFJlbmRl
clRoZW1lV2luQ0U6OnBhaW50U2xpZGVyVHJhY2soCiAgICAgICAgIGxlZnQgPSByaWdodDsKICAg
ICB9CiAjZW5kaWYKLSAgICBpLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgaS5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGkuY29udGV4dC0+ZHJhd0xpbmUobGVm
dCwgSW50UG9pbnQoci5yaWdodCgpIC0gMiwgbGVmdC55KCkpKTsKICAgICBpLmNvbnRleHQtPnJl
c3RvcmUoKTsKICAgICByZXR1cm4gcmM7CkBAIC01MTIsOCArNTEyLDggQEAgYm9vbCBSZW5kZXJU
aGVtZVdpbkNFOjpwYWludFNsaWRlclRodW1iKAogewogICAgIGJvb2wgcmMgPSBSZW5kZXJUaGVt
ZTo6cGFpbnRTbGlkZXJUaHVtYihvLCBpLCByKTsKICAgICBpLmNvbnRleHQtPnNhdmUoKTsKLSAg
ICBpLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgRGV2aWNlQ29sb3JTcGFj
ZSk7Ci0gICAgaS5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICBpLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgaS5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50UGFyZW50KG8tPm5vZGUoKSk7
CiAgICAgaWYgKG1lZGlhRWxlbWVudCkgewpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW1h
Z2VCdWZmZXJUb29scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW1h
Z2VCdWZmZXJUb29scy5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHSW1hZ2VCdWZmZXJUb29scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
dm9pZCBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjYWxjdWxhdGVUcmFucwogICAgIH0KIH0KIAotYm9v
bCBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJn
ZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgSW1hZ2VDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCitib29sIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNs
YW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUocm91bmRl
ZEltYWdlQnVmZmVyU2l6ZShjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwogICAg
IEludFNpemUgdW5jbGFtcGVkSW1hZ2VTaXplKFNWR0ltYWdlQnVmZmVyVG9vbHM6OnJvdW5kZWRJ
bWFnZUJ1ZmZlclNpemUoYWJzb2x1dGVUYXJnZXRSZWN0LnNpemUoKSkpOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuaAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogCiBjbGFzcyBTVkdJbWFnZUJ1ZmZlclRv
b2xzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+
JiwgSW1hZ2VDb2xvclNwYWNlKTsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFt
cGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSk7
CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIq
LCBSZW5kZXJPYmplY3QqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRh
cmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDY5
ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgdGV4dFNpemVBZGp1c3QoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0U2l6ZUFkanVzdCgpKQogICAgICwgcmVzaXplKFJlbmRlclN0eWxlOjppbml0aWFs
UmVzaXplKCkpCiAgICAgLCB1c2VyU2VsZWN0KFJlbmRlclN0eWxlOjppbml0aWFsVXNlclNlbGVj
dCgpKQotICAgICwgY29sb3JTcGFjZShEZXZpY2VDb2xvclNwYWNlKQorICAgICwgY29sb3JTcGFj
ZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICwgc3BlYWsoU3BlYWtOb3JtYWwpCiAgICAgLCBo
eXBoZW5zKEh5cGhlbnNNYW51YWwpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKQEAgLTEzNCw3
ICsxMzUsNyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KHJlbmRlcmVyLT5vYmplY3RCb3VuZGluZ0JveCgpKTsKLSAgICAgICAgbV90YXJn
ZXRJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIExpbmVhclJH
Qik7CisgICAgICAgIG1fdGFyZ2V0SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJl
Y3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFyUkdCKTsKIAogICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gY29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgICAgICBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpy
ZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihtX3RhcmdldEltYWdlLmdldCgpLCByZW5kZXJlciwg
Y29udGVudFRyYW5zZm9ybWF0aW9uKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJ
KHJldmlzaW9uIDY5ODc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQwogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpKTsKICAgICAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxl
ZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGRyYXco
YnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBEZXZpY2VDb2xvclNwYWNlLCBDb21w
b3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgp
LCByZWN0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAg
ICAgICBtX2ZyYW1lQ2FjaGUgPSBidWZmZXItPmNvcHlJbWFnZSgpOwogICAgIH0KICAgICByZXR1
cm4gbV9mcmFtZUNhY2hlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiA2OTg3
NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBGRUltYWdlOjphcHBseShGaWx0ZXIqIGZp
bHRlcikKICAgICBJbnRQb2ludCBwYWludExvY2F0aW9uID0gYWJzb2x1dGVQYWludFJlY3QoKS5s
b2NhdGlvbigpOwogICAgIGRlc3RSZWN0Lm1vdmUoLXBhaW50TG9jYXRpb24ueCgpLCAtcGFpbnRM
b2NhdGlvbi55KCkpOwogCi0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlKG1faW1hZ2UuZ2V0
KCksIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJl
Y3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpJbmRleDogV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDE0MikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1lcmdlIENvbG9yU3BhY2UgYW5kIEltYWdlQ29sb3JTcGFjZSBlbnVtcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5MjIKKworICAgICAgICBS
ZW5hbWVkIENvbG9yU3BhY2UgZW51bSBlbnRyaWVzIERldmljZUNvbG9yU3BhY2UgYW5kIHNSR0JD
b2xvclNwYWNlIHRvIENvbG9yU3BhY2VEZXZpY2VSR0IgYW5kIENvbG9yU3BhY2VTUkdCCisgICAg
ICAgIHRvIGZvbGxvdyB3ZWJraXQgc3R5bGUgcnVsZXMuCisKKyAgICAgICAgKiBzcmMvV2ViRm9u
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb250SW1wbDo6ZHJhd1RleHQpOgorICAg
ICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OnBhaW50V2l0aENvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyk6Cisg
ICAgICAgICogdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKwogMjAxMC0xMC0xOSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZvbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZvbnRJbXBsLmNwcAkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZvbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgV2ViRm9udEltcGw6OmRyYXdUZXh0KFdlYkNhbnZhcyogY2EKICNlbmRpZgogCiAgICAg
Z2Muc2F2ZSgpOwotICAgIGdjLnNldEZpbGxDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgZ2Muc2V0RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBn
Yy5jbGlwKFdlYkNvcmU6OkZsb2F0UmVjdChjbGlwKSk7CiAgICAgbV9mb250LmRyYXdUZXh0KCZn
YywgcnVuLCBsZWZ0QmFzZWxpbmUsIGZyb20sIHRvKTsKICAgICBnYy5yZXN0b3JlKCk7CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4
OCw3ICsxODg4LDcgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnBhaW50V2l0aENvbnRleHQoR3JhcAog
ICAgICAgICBmcmFtZVZpZXcoKS0+cGFpbnQoJmdjLCBkaXJ0eVJlY3QpOwogICAgICAgICBtX2Zy
YW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZHJhd05vZGVIaWdobGlnaHQoZ2Mp
OwogICAgIH0gZWxzZQotICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yOjp3aGl0
ZSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdjLmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBnYy5yZXN0b3JlKCk7CiB9CiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
ODYsNyArOTg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YQog
ICAgICAgICBnYy5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKICAgICAgICAgLy8gVXNl
IGludmVydFJlY3QgaW4gbmV4dCBsaW5lLCBzbyB0aGF0IHRyYW5zZm9ybSBhYm92ZSBpbnZlcnRz
IGl0IGJhY2sgdG8KICAgICAgICAgLy8gZGVzaXJlZCBkZXN0aW5hdGlvbiByZWN0LgotICAgICAg
ICBnYy5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIERldmljZUNvbG9yU3BhY2Us
IGludmVydFJlY3QubG9jYXRpb24oKSk7CisgICAgICAgIGdjLmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW52ZXJ0UmVjdC5sb2NhdGlvbigp
KTsKICAgICAgICAgZ2MucmVzdG9yZSgpOwogICAgIH0KIH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9UcmFuc3BhcmVuY3lXaW5UZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHAJKHJldmlzaW9uIDY5ODc0KQorKysg
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyYW5zcGFyZW5jeVdpblRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTUsMTAgKzMxNSwxMCBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwgT3BhcXVlQ29t
cG9zaXRlTGF5CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzcmMoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShJbnRTaXplKDE2LCAxNiksIERldmljZVJHQikpOwogCiAgICAgRmxvYXRSZWN0IGZ1bGxSZWN0
KDAsIDAsIDE2LCAxNik7Ci0gICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1bGxSZWN0LCBy
ZWQsIERldmljZUNvbG9yU3BhY2UpOworICAgIHNyYy0+Y29udGV4dCgpLT5maWxsUmVjdChmdWxs
UmVjdCwgcmVkLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBzcmMtPmNvbnRleHQoKS0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcigwLjUpOwogICAgIEZsb2F0UmVjdCByaWdodEhhbGYoOCwgMCwg
OCwgMTYpOwotICAgIHNyYy0+Y29udGV4dCgpLT5maWxsUmVjdChyaWdodEhhbGYsIGdyZWVuLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QocmlnaHRIYWxm
LCBncmVlbiwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBNYWtlIGEgdHJhbnNwYXJl
bmN5IGxheWVyIGluc2V0IGJ5IG9uZSBwaXhlbCwgYW5kIGZpbGwgaXQgaW5zZXQgYnkKICAgICAv
LyBhbm90aGVyIHBpeGVsIHdpdGggNTAlIGJsYWNrLgpAQCAtMzMwLDcgKzMzMCw3IEBAIFRFU1Qo
VHJhbnNwYXJlbmN5V2luLCBPcGFxdWVDb21wb3NpdGVMYXkKICAgICAgICAgICAgICAgICAgICAg
SW50UmVjdCgxLCAxLCAxNCwgMTQpKTsKIAogICAgICAgICBGbG9hdFJlY3QgaW5uZXIoMiwgMiwg
MTIsIDEyKTsKLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QoaW5uZXIsIENvbG9y
KDB4N2YwMDAwMDApLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQo
KS0+ZmlsbFJlY3QoaW5uZXIsIENvbG9yKDB4N2YwMDAwMDApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgLy8gVGhlc2UgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsYXll
ciwgd2hpc2ggaXMgaW5zZXQgYnkgMXgxCiAgICAgICAgIC8vIHBpeGVscyBmcm9tIHRoZSB0b3Ag
bGVmdC4gU28gd2UncmUgYWN0dWFsbHkgY2xlYXJpbmcgKDIsIDIpIGFuZAogICAgICAgICAvLyAo
MTMsMTMpLCB3aGljaCBhcmUgdGhlIGV4dHJlbWUgY29ybmVycyBvZiB0aGUgYmxhY2sgYXJlYSAo
YW5kIHdoaWNoCkBAIC0zNjgsNyArMzY4LDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFRyYW5z
bGF0ZU9wYXF1ZUNvbQogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc3JjKEltYWdlQnVmZmVyOjpj
cmVhdGUoSW50U2l6ZSgxNiwgMTYpLCBEZXZpY2VSR0IpKTsKICAgICBDb2xvciB3aGl0ZSgweEZG
RkZGRkZGKTsKICAgICBGbG9hdFJlY3QgZnVsbFJlY3QoMCwgMCwgMTYsIDE2KTsKLSAgICBzcmMt
PmNvbnRleHQoKS0+ZmlsbFJlY3QoZnVsbFJlY3QsIHdoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoZnVsbFJlY3QsIHdoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgIC8vIFNjcm9sbCBkb3duIGJ5IDggKGNvb3JkaW5hdGUgc3lzdGVt
IGdvZXMgdXApLgogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7CkBAIC0zODgsNyArMzg4LDcg
QEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFRyYW5zbGF0ZU9wYXF1ZUNvbQogICAgICAgICAvLyBE
cmF3IGEgcmVkIHBpeGVsIGF0ICgxNSwgMTUpLiBUaGlzIHNob3VsZCBiZSB0aGUgYXQgKDE1LCA3
KSBhZnRlcgogICAgICAgICAvLyB0aGUgdHJhbnNmb3JtLgogICAgICAgICBGbG9hdFJlY3QgYm90
dG9tUmlnaHQoMTUsIDE1LCAxLCAxKTsKLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJl
Y3QoYm90dG9tUmlnaHQsIGdyZWVuLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVy
LmNvbnRleHQoKS0+ZmlsbFJlY3QoYm90dG9tUmlnaHQsIGdyZWVuLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgaGVscGVyLmNvbXBvc2l0ZSgpOwogICAgIH0KIApAQCAtNDA3LDcgKzQw
Nyw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBSb3RhdGVPcGFxdWVDb21wb3MKICAgICAvLyBU
aGUgYmFja2dyb3VuZCBpcyB3aGl0ZS4KICAgICBDb2xvciB3aGl0ZSgweEZGRkZGRkZGKTsKICAg
ICBGbG9hdFJlY3QgZnVsbFJlY3QoMCwgMCwgMTYsIDE2KTsKLSAgICBzcmMtPmNvbnRleHQoKS0+
ZmlsbFJlY3QoZnVsbFJlY3QsIHdoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzcmMtPmNv
bnRleHQoKS0+ZmlsbFJlY3QoZnVsbFJlY3QsIHdoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAogICAgIC8vIFJvdGF0ZSB0aGUgaW1hZ2UgYnkgOTAgZGVncmVlcy4gVGhpcyBtYXRyaXggaXMg
dGhlIHNhbWUgYXMKICAgICAvLyBjdzkwLnJvdGF0ZSg5MCk7IGJ1dCBhdm9pZHMgcm91bmRpbmcg
ZXJyb3JzLiBSb3VuZGluZyBlcnJvcnMgY2FuIGNhdXNlCkBAIC00MjUsNyArNDI1LDcgQEAgVEVT
VChUcmFuc3BhcmVuY3lXaW4sIFJvdGF0ZU9wYXF1ZUNvbXBvcwogICAgIHNyYy0+Y29udGV4dCgp
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CiAgICAgRmxvYXRSZWN0IGJsYWNrUmVjdCgw
LCAtOSwgMTYsIDIpOwogICAgIENvbG9yIGJsYWNrKDB4RkYwMDAwMDApOwotICAgIHNyYy0+Y29u
dGV4dCgpLT5maWxsUmVjdChibGFja1JlY3QsIGJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoYmxhY2tSZWN0LCBibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICAvLyBOb3cgZHJhdyA1MCUgcmVkIHNxdWFyZS4KICAgICB7CkBAIC00
MzksNyArNDM5LDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFJvdGF0ZU9wYXF1ZUNvbXBvcwog
ICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KDEsIC0xNSwgMTQsIDE0KSk7CiAKICAgICAgICAg
Ly8gRmlsbCB3aXRoIHJlZC4KLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QoaGVs
cGVyLmRyYXdSZWN0KCksIENvbG9yKDB4N2Y3ZjAwMDApLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QoaGVscGVyLmRyYXdSZWN0KCksIENvbG9y
KDB4N2Y3ZjAwMDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY2xlYXJUb3BMYXll
ckFscGhhQ2hhbm5lbChoZWxwZXIuY29udGV4dCgpKTsKICAgICAgICAgaGVscGVyLmNvbXBvc2l0
ZSgpOwogICAgIH0KQEAgLTQ4NiwxMCArNDg2LDEwIEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBU
cmFuc2xhdGVTY2FsZU9wYXEKICAgICAvLyBUaGUgYmFja2dyb3VuZCBpcyB3aGl0ZSBvbiB0b3Ag
d2l0aCByZWQgb24gYm90dG9tLgogICAgIENvbG9yIHdoaXRlKDB4RkZGRkZGRkYpOwogICAgIEZs
b2F0UmVjdCB0b3BSZWN0KDAsIDAsIDE2LCA4KTsKLSAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJl
Y3QodG9wUmVjdCwgd2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgIHNyYy0+Y29udGV4dCgp
LT5maWxsUmVjdCh0b3BSZWN0LCB3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgQ29s
b3IgcmVkKDB4RkZGRjAwMDApOwogICAgIEZsb2F0UmVjdCBib3R0b21SZWN0KDAsIDgsIDE2LCA4
KTsKLSAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoYm90dG9tUmVjdCwgcmVkLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoYm90dG9tUmVjdCwgcmVk
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7CiAK
QEAgLTUxOSw3ICs1MTksNyBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwgVHJhbnNsYXRlU2NhbGVP
cGFxCiAgICAgICAgICAgICAgICAgICAgIEludFJlY3QoMSwgLTE1LCAxNCwgMTQpKTsKIAogICAg
ICAgICAvLyBGaWxsIHdpdGggcmVkLgotICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVj
dChoZWxwZXIuZHJhd1JlY3QoKSwgQ29sb3IoMHg3ZjdmMDAwMCksIERldmljZUNvbG9yU3BhY2Up
OworICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdChoZWxwZXIuZHJhd1JlY3QoKSwg
Q29sb3IoMHg3ZjdmMDAwMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjbGVhclRv
cExheWVyQWxwaGFDaGFubmVsKGhlbHBlci5jb250ZXh0KCkpOwogICAgICAgICBoZWxwZXIuY29t
cG9zaXRlKCk7CiAgICAgfQpAQCAtNTMxLDcgKzUzMSw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2lu
LCBTY2FsZSkKICAgICAvLyBDcmVhdGUgYW4gb3BhcXVlIHdoaXRlIGJ1ZmZlci4KICAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IHNyYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEludFNpemUoMTYsIDE2KSwg
RGV2aWNlUkdCKSk7CiAgICAgRmxvYXRSZWN0IGZ1bGxCdWZmZXIoMCwgMCwgMTYsIDE2KTsKLSAg
ICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoZnVsbEJ1ZmZlciwgQ29sb3I6OndoaXRlLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoZnVsbEJ1ZmZlciwg
Q29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIFNjYWxlIGJ5IDJ4
LgogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7CkBAIC01ODYsMTMgKzU4NiwxMyBAQCBURVNU
KFRyYW5zcGFyZW5jeVdpbiwgU2NhbGVUcmFuc3BhcmVuY3kpCiAgICAgLy8gQ3JlYXRlIGFuIG9w
YXF1ZSB3aGl0ZSBidWZmZXIuCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzcmMoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShJbnRTaXplKDE2LCAxNiksIERldmljZVJHQikpOwogICAgIEZsb2F0UmVjdCBm
dWxsQnVmZmVyKDAsIDAsIDE2LCAxNik7Ci0gICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1
bGxCdWZmZXIsIENvbG9yOjp3aGl0ZSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgc3JjLT5jb250
ZXh0KCktPmZpbGxSZWN0KGZ1bGxCdWZmZXIsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAKICAgICAvLyBNYWtlIGFub3RoZXIgbGF5ZXIgKHdoaWNoIGR1cGxpY2F0ZXMgaG93
IFdlYktpdCB3aWxsIG1ha2UgdGhpcykuIFdlIGZpbGwKICAgICAvLyB0aGUgdG9wIGhhbGYgd2l0
aCByZWQsIGFuZCBoYXZlIHRoZSBsYXllciBiZSA1MCUgb3BhcXVlLgogICAgIHNyYy0+Y29udGV4
dCgpLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CiAgICAgRmxvYXRSZWN0IHRvcEhhbGYo
MCwgMCwgMTYsIDgpOwotICAgIHNyYy0+Y29udGV4dCgpLT5maWxsUmVjdCh0b3BIYWxmLCBDb2xv
cigweEZGRkYwMDAwKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgc3JjLT5jb250ZXh0KCktPmZp
bGxSZWN0KHRvcEhhbGYsIENvbG9yKDB4RkZGRjAwMDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAogICAgIC8vIFNjYWxlIGJ5IDJ4LgogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7CkBAIC02
MDksNyArNjA5LDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFNjYWxlVHJhbnNwYXJlbmN5KQog
ICAgICAgICAgICAgICAgICAgICBUcmFuc3BhcmVuY3lXaW46OlNjYWxlVHJhbnNmb3JtLAogICAg
ICAgICAgICAgICAgICAgICBJbnRSZWN0KDEsIDEsIDYsIDYpKTsKIAotICAgICAgICBoZWxwZXIu
Y29udGV4dCgpLT5maWxsUmVjdChoZWxwZXIuZHJhd1JlY3QoKSwgQ29sb3IoMHg3ZjAwMDAwMCks
IERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdCho
ZWxwZXIuZHJhd1JlY3QoKSwgQ29sb3IoMHg3ZjAwMDAwMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgICAgICBjbGVhclRvcExheWVyQWxwaGFDaGFubmVsKGhlbHBlci5jb250ZXh0KCkpOwog
ICAgICAgICBoZWxwZXIuY29tcG9zaXRlKCk7CiAgICAgfQpAQCAtNjU4LDIxICs2NTgsMjEgQEAg
VEVTVChUcmFuc3BhcmVuY3lXaW4sIFRleHQpCiAgICAgICAgIC8vIFdyaXRlIHNldmVyYWwgZGlm
ZmVyZW50IHNxdWFyZXMgdG8gc2ltdWxhdGUgQ2xlYXJUeXBlLiBUaGVzZSBzaG91bGQKICAgICAg
ICAgLy8gYWxsIHJlZHVjZSB0byAyLzMgY292ZXJhZ2UuCiAgICAgICAgIEZsb2F0UmVjdCBwaXhl
bCgwLCAwLCAxLCAxKTsKLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWws
IDB4RkZGRjAwMDAsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBoZWxwZXIuY29udGV4dCgp
LT5maWxsUmVjdChwaXhlbCwgMHhGRkZGMDAwMCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
ICAgIHBpeGVsLm1vdmUoMS4wZiwgMC4wZik7Ci0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZp
bGxSZWN0KHBpeGVsLCAweEZGMDBGRjAwLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVs
cGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkYwMEZGMDAsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogICAgICAgICBwaXhlbC5tb3ZlKDEuMGYsIDAuMGYpOwotICAgICAgICBoZWxwZXIu
Y29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwgMHhGRjAwMDBGRiwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZGMDAwMEZGLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgcGl4ZWwubW92ZSgxLjBmLCAwLjBmKTsKLSAg
ICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkYwMDgwODAsIERldmlj
ZUNvbG9yU3BhY2UpOworICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwg
MHhGRjAwODA4MCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBpeGVsLm1vdmUoMS4w
ZiwgMC4wZik7Ci0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZG
ODAwMDgwLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+Zmls
bFJlY3QocGl4ZWwsIDB4RkY4MDAwODAsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBw
aXhlbC5tb3ZlKDEuMGYsIDAuMGYpOwotICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVj
dChwaXhlbCwgMHhGRjgwODAwMCwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGhlbHBlci5j
b250ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZGODA4MDAwLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKIAogICAgICAgICAvLyBUcnkgb25lIHdpdGggMTAwJSBjb3ZlcmFnZSAob3BhcXVlIGJsYWNr
KS4KICAgICAgICAgcGl4ZWwubW92ZSgxLjBmLCAwLjBmKTsKLSAgICAgICAgaGVscGVyLmNvbnRl
eHQoKS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkYwMDAwMDAsIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwgMHhGRjAwMDAwMCwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAKICAgICAgICAgLy8gTm93IG1lc3Mgd2l0aCB0aGUgYWxwaGEgY2hh
bm5lbC4KICAgICAgICAgY2xlYXJUb3BMYXllckFscGhhQ2hhbm5lbChoZWxwZXIuY29udGV4dCgp
KTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMjAgIERpcmsgU2NodWx6ZSAgPGty
aXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNZXJnZSBDb2xvclNwYWNlIGFuZCBJbWFnZUNvbG9yU3BhY2UgZW51bXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTIyCisKKyAgICAg
ICAgUmVuYW1lZCBDb2xvclNwYWNlIGVudW0gZW50cmllcyBEZXZpY2VDb2xvclNwYWNlIGFuZCBz
UkdCQ29sb3JTcGFjZSB0byBDb2xvclNwYWNlRGV2aWNlUkdCIGFuZCBDb2xvclNwYWNlU1JHQgor
ICAgICAgICB0byBmb2xsb3cgd2Via2l0IHN0eWxlIHJ1bGVzLgorCisgICAgICAgICogTWlzYy9X
ZWJLaXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQ
b2ludDpmb250OnRleHRDb2xvcjphbGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6CisKIDIwMTAtMTAt
MTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5tbQkocmV2aXNpb24gNjk4NzQpCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgLSAodm9pZClf
d2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50IAogICAgICAgICBDR0Zsb2F0IGJsdWU7CiAg
ICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xv
clNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVl
biBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxw
aGEgKiAyNTUpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBh
bHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIHdlYkNvcmVGb250
LmRyYXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxp
cHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKIApJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcw
MTQyKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MiBAQAorMjAxMC0xMC0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlIENvbG9yU3Bh
Y2UgYW5kIEltYWdlQ29sb3JTcGFjZSBlbnVtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5MjIKKworICAgICAgICBSZW5hbWVkIENvbG9yU3BhY2Ug
ZW51bSBlbnRyaWVzIERldmljZUNvbG9yU3BhY2UgYW5kIHNSR0JDb2xvclNwYWNlIHRvIENvbG9y
U3BhY2VEZXZpY2VSR0IgYW5kIENvbG9yU3BhY2VTUkdCCisgICAgICAgIHRvIGZvbGxvdyB3ZWJr
aXQgc3R5bGUgcnVsZXMuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKEhVREJ1dHRvbjo6ZHJhdyk6CisgICAgICAgIChIVURTbGlkZXI6OmRyYXcp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJEcmFnQ2xpZW50
OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6
CisgICAgICAgIChXZWJEcmF3VGV4dCk6CisKIDIwMTAtMTAtMTggIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBI
YXRjaGVyLgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA2OTg3NCkKKysrIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBIVURCdXR0b246OkhVREJ1dHRv
bihIVURCdXR0b25UeXBlIHR5cGUsCiB2b2lkIEhVREJ1dHRvbjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gKG1fc2hvd0FsdEJ1dHRvbiAmJiBt
X2J1dHRvbkltYWdlQWx0KSA/IG1fYnV0dG9uSW1hZ2VBbHQuZ2V0KCkgOiBtX2J1dHRvbkltYWdl
LmdldCgpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VDb2xvclNwYWNlLCBt
X3JlY3QubG9jYXRpb24oKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIG1fcmVjdC5sb2NhdGlvbigpKTsKIH0KIAogSFVEU2xpZGVyOjpIVURTbGlk
ZXIoSFVEU2xpZGVyQnV0dG9uU2hhcGUgc2hhcGUsIGludCBidXR0b25TaXplLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQpAQCAtMTMyLDExICsxMzIsMTEgQEAgdm9pZCBIVURTbGlkZXI6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjbwogewogICAgIC8vIERyYXcgZ3V0dGVyCiAgICAgSW50U2l6ZSByYWRp
dXMobV9yZWN0LmhlaWdodCgpIC8gMiwgbV9yZWN0LmhlaWdodCgpIC8gMik7Ci0gICAgY29udGV4
dC5maWxsUm91bmRlZFJlY3QobV9yZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMs
IENvbG9yKHNsaWRlckd1dHRlckNvbG9yKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4
dC5maWxsUm91bmRlZFJlY3QobV9yZWN0LCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMs
IENvbG9yKHNsaWRlckd1dHRlckNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAv
LyBEcmF3IGJ1dHRvbgotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3Ioc2xpZGVyQnV0
dG9uQ29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihD
b2xvcihzbGlkZXJCdXR0b25Db2xvciksIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRleHQu
c2V0U3Ryb2tlQ29sb3IoQ29sb3Ioc2xpZGVyQnV0dG9uQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcihzbGlkZXJCdXR0b25Db2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgaWYgKG1fYnV0dG9uU2hhcGUgPT0gUm91bmRC
dXR0b24pIHsKICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShJbnRSZWN0KG1fcmVjdC5sb2Nh
dGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24sIG1fcmVjdC5sb2NhdGlvbigpLnkoKSAtICht
X2J1dHRvblNpemUgLSBtX3JlY3QuaGVpZ2h0KCkpIC8gMiwgbV9idXR0b25TaXplLCBtX2J1dHRv
blNpemUpKTsKQEAgLTQ4OSw5ICs0ODksOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmRyYXcoKQogICAgIEludFNpemUgaW5uZXJSYWRpdXMoYm9yZGVyUmFkaXVzIC0gYm9yZGVy
VGhpY2tuZXNzLCBib3JkZXJSYWRpdXMgLSBib3JkZXJUaGlja25lc3MpOwogICAgIEludFJlY3Qg
aW5uZXJSZWN0KGJvcmRlclRoaWNrbmVzcywgYm9yZGVyVGhpY2tuZXNzLCB3aW5kb3dXaWR0aCAt
IGJvcmRlclRoaWNrbmVzcyAqIDIsIHdpbmRvd0hlaWdodCAtIGJvcmRlclRoaWNrbmVzcyAqIDIp
OwogCi0gICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qob3V0ZXJSZWN0LCBvdXRlclJhZGl1cywg
b3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgQ29sb3IoYm9yZGVyQ29sb3Ip
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChvdXRlclJl
Y3QsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBD
b2xvcihib3JkZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgIGNvbnRleHQuZmlsbFJvdW5k
ZWRSZWN0KGlubmVyUmVjdCwgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywg
aW5uZXJSYWRpdXMsIENvbG9yKGJhY2tncm91bmRDb2xvciksIERldmljZUNvbG9yU3BhY2UpOwor
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KGlubmVyUmVjdCwgaW5uZXJSYWRpdXMsIGlubmVy
UmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMsIENvbG9yKGJhY2tncm91bmRDb2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyB0aGUgd2lkZ2V0cwogICAgIG1f
cGxheVBhdXNlQnV0dG9uLmRyYXcoY29udGV4dCk7CkBAIC01MjYsMTMgKzUyNiwxMyBAQCB2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRyYXcoKQogICAgIC8vIExlZnQgc3RyaW5nCiAg
ICAgcyA9IHRpbWVUb1N0cmluZyhjdXJyZW50VGltZSgpKTsKICAgICBUZXh0UnVuIGxlZnRUZXh0
KHMpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvciksIERldmljZUNv
bG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvciksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgbGVmdFRleHQs
IEludFBvaW50KHdpbmRvd1dpZHRoIC8gMiAtIHRpbWVTbGlkZXJXaWR0aCAvIDIgLSBtYXJnaW4g
LSBmb250LndpZHRoKGxlZnRUZXh0KSwgd2luZG93SGVpZ2h0IC0gbWFyZ2luIC0gc2xpZGVySGVp
Z2h0IC8gMiArIGZvbnQuaGVpZ2h0KCkgLyA0KSk7CiAKICAgICAvLyBSaWdodCBzdHJpbmcKICAg
ICBzID0gdGltZVRvU3RyaW5nKGN1cnJlbnRUaW1lKCkgLSBkdXJhdGlvbigpKTsKICAgICBUZXh0
UnVuIHJpZ2h0VGV4dChzKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0Q29s
b3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0
ZXh0Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZv
bnQsIHJpZ2h0VGV4dCwgSW50UG9pbnQod2luZG93V2lkdGggLyAyICsgdGltZVNsaWRlcldpZHRo
IC8gMiArIG1hcmdpbiwgd2luZG93SGVpZ2h0IC0gbWFyZ2luIC0gc2xpZGVySGVpZ2h0IC8gMiAr
IGZvbnQuaGVpZ2h0KCkgLyA0KSk7CiAKICAgICAvLyBDb3B5IHRvIHRoZSB3aW5kb3cKSW5kZXg6
IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViS2l0R3JhcGhpY3MuY3BwCShyZXZpc2lvbiA2OTg3NCkKKysrIFdlYktpdC93aW4vV2ViS2l0
R3JhcGhpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBXZWJE
cmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbwogICAgICAgICAvLyBTZXQgc2hhZG93IHNl
dHRpbmcKICAgICAgICAgaWYgKGluZm8tPnN0cnVjdFNpemUgPT0gc2l6ZW9mKFdlYlRleHRSZW5k
ZXJJbmZvKSAmJgogICAgICAgICAgICAgKGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5z
aGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+c2hhZG93Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xvcikp
Ci0gICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoaW5mby0+c2hhZG93T2Zm
c2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kpLCBpbmZvLT5zaGFkb3dCbHVyLCBpbmZvLT5z
aGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFNo
YWRvdyhGbG9hdFNpemUoaW5mby0+c2hhZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQu
Y3kpLCBpbmZvLT5zaGFkb3dCbHVyLCBpbmZvLT5zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAKICAgICAgICAgV2ViQ29yZURyYXdUZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3Ry
aW5nLCBpbmZvLT5wdCwgbWFrZUZvbnQoKihpbmZvLT5kZXNjcmlwdGlvbikpLCBpbmZvLT5jb2xv
ciwgaW5mby0+dW5kZXJsaW5lZEluZGV4KTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlz
aW9uIDY5ODc0KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDcgKzI5NSw3IEBAIERyYWdJbWFnZVJlZiBXZWJEcmFn
Q2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICBzdGF0aWMgY29uc3QgQ29sb3IgYmFja2dyb3VuZENv
bG9yKDE0MCwgMTQwLCAxNDApOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHJhZGlpKERSQUdf
TEFCRUxfUkFESVVTLCBEUkFHX0xBQkVMX1JBRElVUyk7CiAgICAgSW50UmVjdCByZWN0KDAsIDAs
IGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZmls
bFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpLCBiYWNrZ3JvdW5k
Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHJl
Y3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlpLCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQKICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgdG9wQ29sb3IoMCwgMCwgMCwgMjU1KTsgLy9vcmlnaW5hbCBhbHBoYSA9IDAuNzUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71274</attachid>
            <date>2010-10-20 05:09:17 -0700</date>
            <delta_ts>2010-10-20 06:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47922-20101020140914.patch</filename>
            <type>text/plain</type>
            <size>131041</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIwIEBACisyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVy
Z2UgQ29sb3JTcGFjZSBhbmQgSW1hZ2VDb2xvclNwYWNlIGVudW1zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkyMgorCisgICAgICAgIE1lcmdpbmcg
dGhlc2UgdHdvIGVudW1zIG1ha2VzIGl0IGVhc2llciB0byBpbXBsZW1lbnQgY29sb3ItaW50ZXJw
b2xhdGlvbiBhcyB3ZWxsIGFzCisgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyIGZv
ciBTVkcuCisgICAgICAgIEFkZGVkIENvbG9yU3BhY2VMaW5lYXJSR0IgdG8gdGhlIENvbG9yU3Bh
Y2UgZW51bSBhbmQgY2hhbmdlZCBJbWFnZUNvbG9yU3BhY2UgdG8gQ29sb3JTcGFjZSBpbiBhbGwg
cmVsYXRlZAorICAgICAgICBmaWxlcy4gUmVuYW1lZCBlbnVtIGVudHJpZXMgRGV2aWNlQ29sb3JT
cGFjZSBhbmQgc1JHQkNvbG9yU3BhY2UgdG8gQ29sb3JTcGFjZURldmljZVJHQiBhbmQgQ29sb3JT
cGFjZVNSR0IKKyAgICAgICAgdG8gZm9sbG93IHdlYmtpdCBzdHlsZSBydWxlcy4KKyAgICAgICAg
UmVtb3ZlZCBncmF5IHNjYWxlIHN1cHBvcnQgaW4gSW1hZ2VCdWZmZXIgc2luY2UgaXQgaXMgbm90
IHVzZWQgYW55bW9yZSBvbiBXZWJLaXQuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBDb2xvclNwYWNlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAg
ICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRDYXJldCk6CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFp
bnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dHJp
YnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjphcHBseVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZUZyb21SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ry
b2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9y
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3T3V0bGluZWRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRyYXdFbGVtZW50VGl0bGUpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6cGFp
bnQpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQpOgorICAgICAgICAqIG1hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJv
b3Q6OnBhaW50KToKKyAgICAgICAgKiBtYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpwYWludCk6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6cGFpbnRSb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FjaGVkQ0dDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlZENHQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmxpbmVhclJHQkNvbG9yU3BhY2VSZWYpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2dJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVdpdGhDb2xvclNwYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHTEVTMkNhbnZhczo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdMRVMyQ2FudmFzOjpmaWxsUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhbnNwYXJlbmN5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eVdpbjo6c2V0dXBMYXllckZvcldoaXRlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9y
TWF0cml4OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6YXBwbHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUZsb29kOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFT2Zmc2V0OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjphcHBseSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjplZmZlY3RDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
b250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNldExheWVyQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TGF5ZXJC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
U2tpYTo6dXBsb2FkU29mdHdhcmVUb0hhcmR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlw
aHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRMYXllckJvcmRlckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldExheWVyQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJ
VE1BUE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkxheWVyOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9JbWFnZVdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRI
QklUTUFQT2ZTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0Nv
bnRleHRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNo
RmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYUJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1
bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1BvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkb0RyYXdUZXh0QXRQb2ludCk6CisgICAgICAgICogcGxhdGZv
cm0vd3gvd3hjb2RlL21hYy9jYXJib24vbm9uLWtlcm5lZC1kcmF3aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdUZXh0V2l0aFNwYWNpbmcpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWludE1pc3NpbmdQbHVn
aW5JY29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJr
ZXI6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRNZWRpYVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludE1lZGlh
Vm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50TWVkaWFUaW1lbGluZUNvbnRh
aW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lbnVMaXN0QnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5D
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbkNFOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luQ0U6OnBh
aW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5DRTo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6CisKIDIwMTAtMTAtMjAgIERp
cmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAko
cmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxODksMjUgKzIxODksMzAgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogICAgICwgbV9oYXNDYWNoZWRDU1NUZXh0KGZhbHNl
KQogewogICAgIHN3aXRjaCAoc3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXZpY2VDb2xvclNwYWNl
OgotICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVmYXVsdDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgotICAgICAgICAgICAgbV92
YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3JnYjsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q29sb3JTcGFjZURldmljZVJHQjoKKyAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVm
YXVsdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlU1JHQjoKKyAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlU3JnYjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
b2xvclNwYWNlTGluZWFyUkdCOgorICAgICAgICAvLyBDU1MgY29sb3IgY29ycmVjdGlvbiBkb2Vz
IG5vdCBzdXBwb3J0IGxpbmVhclJHQiB5ZXQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVEZWZhdWx0OworICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBDb2xvclNwYWNlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdmFsdWUuaWRlbnQpIHsK
LSAgICAgICAgY2FzZSBDU1NWYWx1ZURlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gRGV2aWNl
Q29sb3JTcGFjZTsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVNyZ2I6Ci0gICAgICAgICAgICByZXR1
cm4gc1JHQkNvbG9yU3BhY2U7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBEZXZpY2VDb2xvclNwYWNlOworICAg
IGNhc2UgQ1NTVmFsdWVEZWZhdWx0OgorICAgICAgICByZXR1cm4gQ29sb3JTcGFjZURldmljZVJH
QjsKKyAgICBjYXNlIENTU1ZhbHVlU3JnYjoKKyAgICAgICAgcmV0dXJuIENvbG9yU3BhY2VTUkdC
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gQ29sb3JTcGFjZURldmljZVJHQjsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTgyLDcgKzU1ODIsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIGlmIChpc0luaGVyaXQpIAog
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZShtX3BhcmVudFN0eWxlLT5jb2xvclNw
YWNlKCkpOwogICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRDb2xvclNwYWNlKERldmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDcwMTQy
KQorKysgV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDg1LDcgKzEwODUsNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnBhaW50
Q2FyZXQoR3JhCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNhcmV0Q29sb3IgPSBDb2xv
cjo6YmxhY2s7Ci0gICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gRGV2aWNlQ29sb3JTcGFjZTsK
KyAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGV2aWNlUkdCOwogICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSByb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKGVsZW1lbnQg
JiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICBjYXJldENvbG9yID0gZWxlbWVudC0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3MDE0MikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCw5ICsyNjAsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0Nv
CiAgICAgICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigpOwogICAgICAgICBp
ZiAoaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlci0+ZHJhd3NVc2lu
Z0NvcHkoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoY29waWVkSW1hZ2Uo
KSwgRGV2aWNlQ29sb3JTcGFjZSwgcik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGNvcGllZEltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHIpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ciwgRGV2aWNlQ29sb3JTcGFjZSwgcik7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByKTsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dAogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+c2V0U2hhZG93KEZs
b2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQsIERldmljZUNvbG9yU3BhY2UpOworICAg
IGNvbnRleHQtPnNldFNoYWRvdyhGbG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50LCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LT5zZXRBbHBoYSgxKTsKICAgICBjb250
ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiB9CkBAIC0x
MDEyLDcgKzEwMTIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93
CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6
ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93
Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3Qg
U3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgaWYgKCFjKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2Up
OworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9
CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkK
QEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNldFNoYWRvdyhJ
bnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9z
aGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUo
d2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0Nv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBm
bG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQpAQCAtMTA1Niw3ICsxMDU2LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIGlmICghYykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQp
LCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xv
clNwYWNlKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRl
KCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0
IHksIGZsb2F0IGssIGZsb2F0IGEpCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENv
bG9yKGRjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgYmx1ciwgc2hhZG93Q29sb3IpOwogICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9y
KTsKICNlbHNlCi0gICAgZGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1
ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBkYy0+c2V0
U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2VuZGlmCiB9CiAKQEAgLTEwOTYsNyArMTA5Niw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWQKIAogICAgIGZsb2F0
IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdo
dCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCk7Ci0gICAgYy0+c2V0U2hhZG93KEZs
b2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGMtPnNldFNoYWRvdyhGbG9hdFNp
emUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogc3RhdGljIEludFNpemUgc2l6ZShI
VE1MSW1hZ2VFbGVtZW50KiBpbWFnZSkKQEAgLTExOTgsNyArMTE5OCw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKIAogICAgIEZsb2F0UmVjdCBzb3VyY2VSZWN0
ID0gYy0+cm91bmRUb0RldmljZVBpeGVscyhub3JtYWxpemVkU3JjUmVjdCk7CiAgICAgRmxvYXRS
ZWN0IGRlc3RSZWN0ID0gYy0+cm91bmRUb0RldmljZVBpeGVscyhub3JtYWxpemVkRHN0UmVjdCk7
Ci0gICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNl
LCBkZXN0UmVjdCwgc291cmNlUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CisgICAg
Yy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgc291cmNlUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CiAgICAgZGlk
RHJhdyhkZXN0UmVjdCk7CiB9CiAKQEAgLTEyODAsNyArMTI4MCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKICAgICBzb3VyY2VDYW52YXMtPm1ha2VSZW5kZXJp
bmdSZXN1bHRzQXZhaWxhYmxlKCk7CiAjZW5kaWYKIAotICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcihi
dWZmZXIsIERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCBzdGF0ZSgpLm1f
Z2xvYmFsQ29tcG9zaXRlKTsKKyAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoYnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc291cmNlUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBv
c2l0ZSk7CiAgICAgZGlkRHJhdyhkZXN0UmVjdCk7CiB9CiAKQEAgLTEzODMsNyArMTM4Myw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UKICAgICAgICAgb3AgPSBD
b21wb3NpdGVTb3VyY2VPdmVyOwogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gRmxvYXRSZWN0
KGR4LCBkeSwgZHcsIGRoKTsKLSAgICBjLT5kcmF3SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlKCks
IERldmljZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBGbG9hdFJlY3Qoc3gsIHN5LCBzdywgc2gpLCBv
cCk7CisgICAgYy0+ZHJhd0ltYWdlKGNhY2hlZEltYWdlLT5pbWFnZSgpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgRmxvYXRSZWN0KHN4LCBzeSwgc3csIHNoKSwgb3ApOwogICAgIGRp
ZERyYXcoZGVzdFJlY3QpOwogfQogCkBAIC0xODMwLDkgKzE4MzAsOSBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6
YmxhY2ssIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhjLT5zdHJva2VUaGlj
a25lc3MoKSk7CiAgICAgICAgIH0KIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIENhbnZhc1N0eWxlOjph
cHBseVN0cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9y
Z2JhLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
bV9yZ2JhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
TVlLQTogewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVw
ZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBDYW52
YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaAogICAgICAgICBjdXJyZW50UGVuLnNldENv
bG9yKGNscik7CiAgICAgICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRQZW4oY3Vy
cmVudFBlbik7CiAjZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3JnYmEs
IERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX3Jn
YmEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFw
aGljCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgUkdC
QToKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdiYSwgRGV2aWNlQ29sb3JTcGFj
ZSk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0
IEFQSS4KQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xv
cihHcmFwaGljCiAgICAgICAgIGN1cnJlbnRCcnVzaC5zZXRDb2xvcihjbHIpOwogICAgICAgICBj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0QnJ1c2goY3VycmVudEJydXNoKTsKICNlbHNl
Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEsIERldmljZUNvbG9yU3BhY2Up
OworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9yZ2JhLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgz
OCw3ICsxODM4LDcgQEAgc3RhdGljIHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0Nvbgog
CiAgICAgICAgIGNvbnRleHQuYWRkUGF0aChxdWFkUGF0aCk7CiAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKG91dGxpbmVUaGlja25lc3MpOwotICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKG91dGxpbmVDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRl
eHQuc2V0U3Ryb2tlQ29sb3Iob3V0bGluZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAg
ICAgICAgY29udGV4dC5zdHJva2VQYXRoKCk7CiAKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7
CkBAIC0xODQ2LDcgKzE4NDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBo
aWNzQ29uCiAKICAgICAvLyBOb3cgZG8gdGhlIGZpbGwKICAgICBjb250ZXh0LmFkZFBhdGgocXVh
ZFBhdGgpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKICAgICBjb250ZXh0LmZpbGxQYXRoKCk7CiB9CiAKQEAgLTIwMjgsMTEgKzIwMjgs
MTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkcmF3RWxlbWVudFRpdAogICAgIGlmICh0
aXRsZVJlY3QuYm90dG9tKCkgPiBvdmVybGF5UmVjdC5ib3R0b20oKSkKICAgICAgICAgZHkgKz0g
b3ZlcmxheVJlY3QuYm90dG9tKCkgLSB0aXRsZVJlY3QuYm90dG9tKCkgLSBib3JkZXJXaWR0aFB4
OwogICAgIHRpdGxlUmVjdC5tb3ZlKGR4LCBkeSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cih0b29sdGlwQm9yZGVyQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IodG9vbHRpcEJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAg
ICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3JkZXJXaWR0aFB4KTsKLSAgICBjb250ZXh0
LnNldEZpbGxDb2xvcih0b29sdGlwQmFja2dyb3VuZENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b29sdGlwQmFja2dyb3VuZENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IodG9vbHRpcEZvbnRDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG9vbHRpcEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBub2RlVGl0bGVSdW4sIEludFBvaW50
KHRpdGxlUmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5oZWln
aHQoKSkpOwogfQogCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZp
c2lvbiA3MDE0MikKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWlu
dChQYWludEluZm8mCiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mo
MS4wZik7CiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBzUkdCQ29s
b3JTcGFjZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAy
NTUpLCBDb2xvclNwYWNlU1JHQik7CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJ
bnRQb2ludCh0eCwgdHkpLCBJbnRQb2ludCh0eCArIG9mZnNldFdpZHRoKCksIHR5KSk7CiAgICAg
aW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludCh0eCArIG9mZnNldFdpZHRoKCksIHR5KSwg
SW50UG9pbnQodHggKyBvZmZzZXRXaWR0aCgpLCB0eSArIG9mZnNldEhlaWdodCgpKSk7CkBAIC05
OCwxMyArOTgsMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJgog
ICAgIAogICAgIGludCB0b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKICAgICAKLSAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIHNSR0JDb2xvclNwYWNlKTsK
KyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIENvbG9y
U3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KHR4
LCB0eSArIHRvcFN0YXJ0KSwgSW50UG9pbnQodHggKyBvZmZzZXRXaWR0aCgpLCB0eSArIHRvcFN0
YXJ0KSk7CiAgICAgCiAgICAgaW50IGJhc2VsaW5lID0gYmFzZWxpbmVQb3NpdGlvbih0cnVlKTsK
ICAgICAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwgMCks
IHNSR0JDb2xvclNwYWNlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDI1NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPmRy
YXdMaW5lKEludFBvaW50KHR4LCB0eSArIGJhc2VsaW5lKSwgSW50UG9pbnQodHggKyBvZmZzZXRX
aWR0aCgpLCB0eSArIGJhc2VsaW5lKSk7CiAgICAgCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW4KICAgICAKICAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdGF0aWNfY2FzdDxmbG9hdD4obV9saW5lVGhp
Y2tuZXNzKSk7CiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHNSR0JDb2xvclNwYWNlKTsKKyAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAogICAgIGluZm8uY29udGV4dC0+
ZHJhd0xpbmUoSW50UG9pbnQodHgsIHR5KSwgSW50UG9pbnQodHggKyBvZmZzZXRXaWR0aCgpLCB0
eSkpOwogICAgIApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHJldmlzaW9u
IDcwMTQyKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KFBh
aW50SW5mbyYgCiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1Jh
ZGljYWxMaW5lVGhpY2tuZXNzICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CiAgICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIERldmljZUNvbG9yU3BhY2UpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICBpbmZvLmNvbnRleHQtPnNldExpbmVKb2luKE1pdGVySm9pbik7
CiAgICAgaW5mby5jb250ZXh0LT5zZXRNaXRlckxpbWl0KHN0eWxlKCktPmZvbnRTaXplKCkpOwog
ICAgIApJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAJKHJl
dmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFNx
dWFyZVJvb3Q6OnBhaW50KFBhaW50CiAgICAgCiAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CiAg
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIERldmljZUNvbG9yU3BhY2UpOworICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3Ioc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpbmZvLmNvbnRleHQtPnNldExpbmVKb2lu
KE1pdGVySm9pbik7CiAgICAgaW5mby5jb250ZXh0LT5zZXRNaXRlckxpbWl0KHN0eWxlKCktPmZv
bnRTaXplKCkpOwogICAgIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTksNyArMTk1
OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ28KICAgICAgICAg
ZmlsbFdpdGhSZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChmaWxsV2l0aFJlZCkKLSAgICAgICAg
cC0+ZmlsbFJlY3QocmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIERldmljZUNvbG9yU3BhY2UpOwor
ICAgICAgICBwLT5maWxsUmVjdChyZWN0LCBDb2xvcigweEZGLCAwLCAwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAjZW5kaWYKIAogICAgIGJvb2wgaXNUb3BMZXZlbFBhaW50ZXIgPSAhc0N1cnJl
bnRQYWludFRpbWVTdGFtcDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCShyZXZpc2lvbiA3MDE0
MikKKysrIFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzEsNyArMjcxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bgog
ICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VSZWN0cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVs
cy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAgIC8vIEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQg
Ynkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1
NSwgMjU1KSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBwYWdlV2lkdGgsIHRvdGFsSGVp
Z2h0KSk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwpAQCAtMjgzLDggKzI4Myw4IEBA
IHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW4KICAgICAgICAgLy8gRHJh
dyBhIGxpbmUgZm9yIGEgcGFnZSBib3VuZGFyeSBpZiB0aGlzIGlzbid0IHRoZSBmaXJzdCBwYWdl
LgogICAgICAgICBpZiAocGFnZUluZGV4ID4gMCkgewogICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNhdmUoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihD
b2xvcigwLCAwLCAyNTUpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwg
MjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdMaW5lKEludFBvaW50KDAsIGN1cnJlbnRIZWln
aHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VX
aWR0aCwgY3VycmVudEhlaWdodCkpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3Rv
cmUoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsNyAr
ODA0LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpYwogdm9pZCBT
Y3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIHN0YXRpYyBJbWFnZSogcGFuU2Nyb2xsSWNvbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgicGFuSWNvbiIpLnJlbGVhc2VSZWYoKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
cGFuU2Nyb2xsSWNvbiwgRGV2aWNlQ29sb3JTcGFjZSwgbV9wYW5TY3JvbGxJY29uUG9pbnQpOwor
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBtX3BhblNjcm9sbEljb25Qb2ludCk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWUuaAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQpIHt9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkg
eyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIERldmljZUNvbG9y
U3BhY2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcq
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsg
Y29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiA3MDE0MikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFp
bnRTY3JvbAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZVZpZXctPmZyYW1lKCkgPyBmcmFtZVZpZXct
PmZyYW1lKCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKS0+
c2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKCkgJiYgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5wYWludEN1c3RvbVNjcm9sbENvcm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KSkKICAgICAgICAg
cmV0dXJuOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDcw
MTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpw
YWludEJvcmRlcihHcmFwaGljCiAgICAgQ29sb3IgYm9yZGVyQ29sb3IoMTI3LCAxNTcsIDE4NSk7
CiAKICAgICBnYy0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwotICAgIGdjLT5zZXRGaWxsQ29s
b3IoYm9yZGVyQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGdjLT5zZXRGaWxsQ29sb3Io
Ym9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgaW50IHR4ID0geCgpOwog
ICAgIGludCB0eSA9IHkoKTsKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0CiAKICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGFuIGVtcHR5
IHBvcHVwLgogICAgIGlmIChudW1JdGVtcygpID09IDApCi0gICAgICAgIGdjLT5maWxsUmVjdChy
LCBDb2xvcjo6d2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBnYy0+ZmlsbFJlY3Qo
ciwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIGdjLT5yZXN0b3Jl
KCk7CiAKQEAgLTg5NCwyMyArODk0LDIzIEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhH
cmFwaGljc0NvbnQKICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCwg
bWFrZSBzdXJlIGl0IGhhcyBhIGNvbG9yIHRvIGJsZW5kCiAgICAgLy8gYWdhaW5zdC4KICAgICBp
ZiAoYmFja0NvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgIGdjLT5maWxsUmVjdChyb3dSZWN0LCBD
b2xvcjo6d2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBnYy0+ZmlsbFJlY3Qocm93
UmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgIGdjLT5maWxs
UmVjdChyb3dSZWN0LCBiYWNrQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGdjLT5maWxs
UmVjdChyb3dSZWN0LCBiYWNrQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIAogICAg
IGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtSXNTZXBhcmF0b3Iocm93SW5kZXgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2VwYXJhdG9yUmVjdCgKICAgICAgICAgICAgIHJvd1JlY3QueCgpICsgc2VwYXJh
dG9yUGFkZGluZywKICAgICAgICAgICAgIHJvd1JlY3QueSgpICsgKHJvd1JlY3QuaGVpZ2h0KCkg
LSBzZXBhcmF0b3JIZWlnaHQpIC8gMiwKICAgICAgICAgICAgIHJvd1JlY3Qud2lkdGgoKSAtIDIg
KiBzZXBhcmF0b3JQYWRkaW5nLCBzZXBhcmF0b3JIZWlnaHQpOwotICAgICAgICBnYy0+ZmlsbFJl
Y3Qoc2VwYXJhdG9yUmVjdCwgdGV4dENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
Z2MtPmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIHRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKCFzdHlsZS5pc1Zpc2li
bGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2MtPnNldEZpbGxDb2xvcih0ZXh0Q29sb3Is
IERldmljZUNvbG9yU3BhY2UpOworICAgIGdjLT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZvbnQgaXRlbUZvbnQgPSBnZXRSb3dGb250KHJvd0lu
ZGV4KTsKICAgICAvLyBGSVhNRTogaHR0cDovL2NyYnVnLmNvbS8xOTg3MiBXZSBzaG91bGQgZ2V0
IHRoZSBwYWRkaW5nIG9mIGluZGl2aWR1YWwgb3B0aW9uCkBAIC05NzMsNyArOTczLDcgQEAgdm9p
ZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udAogICAgICAgICByZW1haW5pbmdX
aWR0aCAtPSAoaW1hZ2VSZWN0LndpZHRoKCkgKyBrTGFiZWxUb0ljb25QYWRkaW5nKTsKICAgICAg
ICAgaW1hZ2VSZWN0LnNldFgocm93UmVjdC53aWR0aCgpIC0gcmlnaHRQYWRkaW5nIC0gaW1hZ2VS
ZWN0LndpZHRoKCkpOwogICAgICAgICBpbWFnZVJlY3Quc2V0WShyb3dSZWN0LnkoKSArIChyb3dS
ZWN0LmhlaWdodCgpIC0gaW1hZ2VSZWN0LmhlaWdodCgpKSAvIDIpOwotICAgICAgICBnYy0+ZHJh
d0ltYWdlKGltYWdlLmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCBpbWFnZVJlY3QpOworICAgICAg
ICBnYy0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbWFnZVJl
Y3QpOwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIHRoZSBsYWJlbCBpZiBhcHBsaWNhYmxlLgpA
QCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFwaGljc0Nv
bnQKICAgICBlbHNlCiAgICAgICAgIHRleHRYID0gcmVtYWluaW5nV2lkdGggLSBpdGVtRm9udC53
aWR0aChsYWJlbFRleHRSdW4pOwogCi0gICAgZ2MtPnNldEZpbGxDb2xvcihsYWJlbENvbG9yLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBnYy0+c2V0RmlsbENvbG9yKGxhYmVsQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogICAgIGdjLT5kcmF3QmlkaVRleHQoaXRlbUZvbnQsIGxhYmVsVGV4
dFJ1biwgSW50UG9pbnQodGV4dFgsIHRleHRZKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAkocmV2aXNp
b24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYQogICAgICAgICBjb25zdCBpbnQgeVBvcyA9IHJl
Y3QudG9wTGVmdCgpLnkoKSArIChyZWN0LmhlaWdodCgpICogcGVyY2VudCk7CiAKICAgICAgICAg
SW50UG9pbnQgdGljayhzY3JvbGxiYXItPngoKSwgeVBvcyk7Ci0gICAgICAgIGNvbnRleHQtPmRy
YXdJbWFnZShkYXNoLmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCB0aWNrKTsKKyAgICAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGRhc2guZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHRpY2spOwog
ICAgIH0KIAogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0JKHJldmlz
aW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsOCArNDE3LDggQEAgYm9vbCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTYwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgJiYgdGlja21hcmtzLnNpemUoKSkgewogICAg
ICAgICBkcmF3aW5nQ29udGV4dC0+c2F2ZSgpOwogICAgICAgICBkcmF3aW5nQ29udGV4dC0+c2V0
U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICAgICAgZHJhd2luZ0NvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKENvbG9yKDB4Q0MsIDB4QUEsIDB4MDAsIDB4RkYpLCBEZXZpY2VDb2xvclNwYWNlKTsK
LSAgICAgICAgZHJhd2luZ0NvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigweEZGLCAweERELCAw
eDAwLCAweEZGKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGRyYXdpbmdDb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigweENDLCAweEFBLCAweDAwLCAweEZGKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGRyYXdpbmdDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhG
RiwgMHhERCwgMHgwMCwgMHhGRiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIElu
dFJlY3QgdGh1bWJBcmVhID0gdHJhY2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwogICAgICAgICBp
ZiAoIWNhbkRyYXdEaXJlY3RseSkgewpAQCAtNDUzLDcgKzQ1Myw3IEBAIGJvb2wgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2MKICAgICB9CiAKICAgICBpZiAoIWNhbkRyYXdEaXJl
Y3RseSkKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgp
LCBEZXZpY2VDb2xvclNwYWNlLCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwor
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFj
ZS5oCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBlbnVtIENvbG9yU3BhY2UgeyBEZXZpY2VDb2xvclNwYWNlLCBzUkdCQ29s
b3JTcGFjZSB9OworZW51bSBDb2xvclNwYWNlIHsKKyAgICBDb2xvclNwYWNlRGV2aWNlUkdCLAor
ICAgIENvbG9yU3BhY2VTUkdCLAorICAgIENvbG9yU3BhY2VMaW5lYXJSR0IKK307CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUAogewog
ICAgIEFTU0VSVChwYXR0ZXJuKTsKICAgICBpZiAoIXBhdHRlcm4pIHsKLSAgICAgICAgc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgc2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQuY2xlYXIoKTsK
QEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4o
UGFzCiB7CiAgICAgQVNTRVJUKHBhdHRlcm4pOwogICAgIGlmICghcGF0dGVybikgewotICAgICAg
ICBzZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC5jbGVhcigp
OwpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFk
aWVudCgKIHsKICAgICBBU1NFUlQoZ3JhZGllbnQpOwogICAgIGlmICghZ3JhZGllbnQpIHsKLSAg
ICAgICAgc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGll
bnQgPSBncmFkaWVudDsKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0RmlsbEdyYWRpZW50KFBhCiB7CiAgICAgQVNTRVJUKGdyYWRpZW50KTsKICAgICBpZiAoIWdy
YWRpZW50KSB7Ci0gICAgICAgIHNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIERldmljZUNvbG9y
U3BhY2UpOworICAgICAgICBzZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2NvbW1vbi0+c3RhdGUuZmls
bEdyYWRpZW50ID0gZ3JhZGllbnQ7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICwgc3Ryb2tlU3R5bGUoU29saWRTdHJva2UpCiAgICAgICAgICAgICAsIHN0cm9rZVRoaWNrbmVz
cygwKQogICAgICAgICAgICAgLCBzdHJva2VDb2xvcihDb2xvcjo6YmxhY2spCi0gICAgICAgICAg
ICAsIHN0cm9rZUNvbG9yU3BhY2UoRGV2aWNlQ29sb3JTcGFjZSkKKyAgICAgICAgICAgICwgc3Ry
b2tlQ29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKQogICAgICAgICAgICAgLCBmaWxsUnVs
ZShSVUxFX05PTlpFUk8pCiAgICAgICAgICAgICAsIGZpbGxDb2xvcihDb2xvcjo6YmxhY2spCi0g
ICAgICAgICAgICAsIGZpbGxDb2xvclNwYWNlKERldmljZUNvbG9yU3BhY2UpCisgICAgICAgICAg
ICAsIGZpbGxDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNo
b3VsZEFudGlhbGlhcyh0cnVlKQogICAgICAgICAgICAgLCBwYWludGluZ0Rpc2FibGVkKGZhbHNl
KQogICAgICAgICAgICAgLCBzaGFkb3dCbHVyKDApCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMy
LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNm
b3JtQ29sb3JTcGFjZShJbWFnZUNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgSW1hZ2VDb2xvclNw
YWNlIGRzdENvbG9yU3BhY2UpCit2b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNl
KENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKQogewog
ICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRzdENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1v
bWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBMaW5lYXJSR0IgJiYgc3JjQ29sb3JTcGFj
ZSAhPSBEZXZpY2VSR0IpIHx8IAotICAgICAgICAoZHN0Q29sb3JTcGFjZSAhPSBMaW5lYXJSR0Ig
JiYgZHN0Q29sb3JTcGFjZSAhPSBEZXZpY2VSR0IpKQorICAgIGlmICgoc3JjQ29sb3JTcGFjZSAh
PSBDb2xvclNwYWNlTGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZURldmlj
ZVJHQikgCisgICAgICAgIHx8IChkc3RDb2xvclNwYWNlICE9IENvbG9yU3BhY2VMaW5lYXJSR0Ig
JiYgZHN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGRzdENvbG9yU3BhY2UgPT0gTGluZWFyUkdCKSB7CisgICAgaWYgKGRzdENv
bG9yU3BhY2UgPT0gQ29sb3JTcGFjZUxpbmVhclJHQikgewogICAgICAgICBpZiAobV9saW5lYXJS
Z2JMVVQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgIC8gMjU1LjBmOwpA
QCAtNTMsNyArNTMsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKElt
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKG1fbGluZWFyUmdiTFVUKTsKLSAgICB9IGVsc2UgaWYgKGRzdENvbG9yU3BhY2UgPT0g
RGV2aWNlUkdCKSB7CisgICAgfSBlbHNlIGlmIChkc3RDb2xvclNwYWNlID09IENvbG9yU3BhY2VE
ZXZpY2VSR0IpIHsKICAgICAgICAgaWYgKG1fZGV2aWNlUmdiTFVULmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgZmxvYXQgY29sb3IgPSBpIC8gMjU1LjBmOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNkZWZpbmUgSW1hZ2VCdWZmZXJfaAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDQsMTMgKzQ1LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEltYWdlRGF0YTsKICAgICBjbGFzcyBJbnRQb2ludDsK
ICAgICBjbGFzcyBJbnRSZWN0OwotICAgIAotICAgIGVudW0gSW1hZ2VDb2xvclNwYWNlIHsKLSAg
ICAgICAgVW5rbm93biwKLSAgICAgICAgRGV2aWNlUkdCLCAvLyBsaWtlIHNSR0IKLSAgICAgICAg
R3JheVNjYWxlLAotICAgICAgICBMaW5lYXJSR0IKLSAgICB9OwogCiAgICAgZW51bSBNdWx0aXBs
eSB7CiAgICAgICAgIFByZW11bHRpcGxpZWQsCkBAIC02MCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAg
ICAgcHVibGljOgogICAgICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxv
Y2F0aW9uIGZhaWx1cmUuCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBE
ZXZpY2VSR0IpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gQ29sb3JTcGFjZURl
dmljZVJHQikKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAg
ICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZihuZXcgSW1hZ2VCdWZmZXIoc2l6ZSwg
Y29sb3JTcGFjZSwgc3VjY2VzcykpOwpAQCAtODksNyArODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgZG91YmxlKiBxdWFsaXR5ID0gMCkgY29uc3Q7CiAjaWYgIVBMQVRGT1JNKENHKQogICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRy
YW5zZm9ybSgpOyB9Ci0gICAgICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShJbWFnZUNvbG9y
U3BhY2Ugc3JjQ29sb3JTcGFjZSwgSW1hZ2VDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOworICAg
ICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBD
b2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwogICAgICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYpOwogI2Vsc2UKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oMSwg
MCwgMCwgLTEsIDAsIG1fc2l6ZS5oZWlnaHQoKSk7IH0KQEAgLTExOSw3ICsxMTMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxsIHBsYWNl
IGl0cyBzdWNjZXNzIGludG8gdGhlIGdpdmVuIG91dC12YXJpYWJsZQogICAgICAgICAvLyBzbyB0
aGF0IGNyZWF0ZSgpIGtub3dzIHdoZW4gaXQgc2hvdWxkIHJldHVybiBmYWlsdXJlLgotICAgICAg
ICBJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgSW1hZ2VDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IGJvb2wmIHN1Y2Nlc3MpOworICAgICAgICBJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBib29sJiBzdWNjZXNzKTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25z
dCBJCiB7CiB9CiAKLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBJbWFnZUNvbG9yU3BhY2UgaW1hZ2VDb2xvclNwYWNlLCBib29sJiBzdWNjZXNzKQorSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbG9yU3BhY2UsIGJvb2wm
IHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAsIG1fc2l6ZShzaXplKQogewpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiA3MDE0
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDEwICs3MywxMiBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvcikK
IHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBE
ZXZpY2VDb2xvclNwYWNlOgorICAgIGNhc2UgQ29sb3JTcGFjZURldmljZVJHQjoKICAgICAgICAg
cmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICBjYXNlIHNSR0JDb2xvclNwYWNl
OgorICAgIGNhc2UgQ29sb3JTcGFjZVNSR0I6CiAgICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgIGNhc2UgQ29sb3JTcGFjZUxpbmVhclJHQjoKKyAgICAgICAgcmV0dXJuIGxp
bmVhclJHQkNvbG9yU3BhY2VSZWYoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKQEAgLTEzMSwxMyArMTMzLDE1
IEBAIHRlbXBsYXRlPENvbG9yU3BhY2UgY29sb3JTcGFjZT4gc3RhdGljIEMKIENHQ29sb3JSZWYg
Y2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
IHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERldmljZUNvbG9yU3BhY2U6
Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yPERldmljZUNvbG9yU3BhY2U+KGNvbG9yKTsK
LSAgICBjYXNlIHNSR0JDb2xvclNwYWNlOgotICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxz
UkdCQ29sb3JTcGFjZT4oY29sb3IpOworICAgIGNhc2UgQ29sb3JTcGFjZURldmljZVJHQjoKKyAg
ICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3I8Q29sb3JTcGFjZURldmljZVJHQj4oY29sb3IpOwor
ICAgIGNhc2UgQ29sb3JTcGFjZVNSR0I6CisgICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yPENv
bG9yU3BhY2VTUkdCPihjb2xvcik7CisgICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgorICAg
ICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcjxDb2xvclNwYWNlTGluZWFyUkdCPihjb2xvcik7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBjYWNoZWRDR0NvbG9y
KGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcihjb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiA3MDE0
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwxNyBAQCBDR0NvbG9yU3BhY2VSZWYgc1JHQkNv
bG9yU3BhY2VSZWYoKQogI2VuZGlmCiB9CiAKK0NHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JDb2xv
clNwYWNlUmVmKCkKK3sKKyAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1
c2Uga0NHQ29sb3JTcGFjZUdlbmVyaWNSR0JMaW5lYXIsIHRoaXMgaXMgdHJhY2tlZCBieSBodHRw
Oi8vd2Via2l0Lm9yZy9iLzMxMzYzLgorI2lmIFBMQVRGT1JNKFdJTikgfHwgZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikKKyAgICByZXR1cm4gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOworI2Vs
c2UKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQlNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUdlbmVyaWNSR0JMaW5lYXIpOworICAgIHJl
dHVybiBsaW5lYXJSR0JTcGFjZTsKKyNlbmRpZgorfQorCiBHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dChDR0NvbnRleHRSZWYgY2dDb250ZXh0KQogICAgIDogbV9jb21tb24oY3JlYXRl
R3JhcGhpY3NDb250ZXh0UHJpdmF0ZSgpKQogICAgICwgbV9kYXRhKG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmgJKHJldmlzaW9uIDcwMTQyKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0dDb2xvclNw
YWNlUmVmIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29s
b3JTcGFjZVJlZigpOworQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKTsK
IAogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8
QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CkBAIC01NSw3ICs1Niw3
IEBAIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEkKIHsKIH0KIAotSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFj
ZSBpbWFnZUNvbG9yU3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSBpbWFnZUNvbG9yU3BhY2UsIGJvb2wm
IHN1Y2Nlc3MpCiAgICAgOiBtX2RhdGEoc2l6ZSkKICAgICAsIG1fc2l6ZShzaXplKQogewpAQCAt
NjQsMTIgKzY1LDExIEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiAK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBzaXplLndpZHRo
KCk7Ci0gICAgaWYgKGltYWdlQ29sb3JTcGFjZSAhPSBHcmF5U2NhbGUpIHsKLSAgICAgICAgLy8g
UHJvdGVjdCBhZ2FpbnN0IG92ZXJmbG93Ci0gICAgICAgIGlmIChieXRlc1BlclJvdyA+IDB4M0ZG
RkZGRkYpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ5dGVzUGVyUm93ICo9IDQ7Ci0g
ICAgfQorCisgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IG92ZXJmbG93CisgICAgaWYgKGJ5dGVzUGVy
Um93ID4gMHgzRkZGRkZGRikKKyAgICAgICAgcmV0dXJuOworICAgIGJ5dGVzUGVyUm93ICo9IDQ7
CiAgICAgbV9kYXRhLm1fYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdzsKIAogICAgIHNpemVfdCBk
YXRhU2l6ZSA9IHNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKQEAgLTc5LDI3ICs3OSwyMCBA
QCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgCiAgICAgQVNTRVJUKChy
ZWludGVycHJldF9jYXN0PHNpemVfdD4obV9kYXRhLm1fZGF0YSkgJiAyKSA9PSAwKTsKIAogICAg
IHN3aXRjaChpbWFnZUNvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXZpY2VSR0I6Ci0gICAg
ICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlUkdCKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR3JheVNjYWxlOgot
ICAgICAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZS5hZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZUdyYXkoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSNpZiAoKFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oQ0hST01JVU0pKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikpCi0g
ICAgICAgIGNhc2UgTGluZWFyUkdCOgotICAgICAgICAgICAgbV9kYXRhLm1fY29sb3JTcGFjZS5h
ZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VHZW5lcmljUkdC
TGluZWFyKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotI2VuZGlmCi0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlLmFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDb2xvclNwYWNlRGV2aWNlUkdCOgorICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbG9yU3Bh
Y2VTUkdCOgorICAgICAgICBtX2RhdGEubV9jb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb2xvclNwYWNlTGluZWFyUkdCOgorICAgICAg
ICBtX2RhdGEubV9jb2xvclNwYWNlID0gbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBtX2RhdGEubV9ncmF5U2NhbGUgPSBpbWFnZUNvbG9yU3Bh
Y2UgPT0gR3JheVNjYWxlOwotICAgIG1fZGF0YS5tX2JpdG1hcEluZm8gPSBtX2RhdGEubV9ncmF5
U2NhbGUgPyBrQ0dJbWFnZUFscGhhTm9uZSA6IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFz
dDsKKyAgICBtX2RhdGEubV9iaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0OwogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dChBZG9wdENGLCBDR0Jp
dG1hcENvbnRleHRDcmVhdGUobV9kYXRhLm1fZGF0YSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpLCA4LCBieXRlc1BlclJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YS5tX2NvbG9yU3BhY2UuZ2V0
KCksIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YS5tX2NvbG9yU3Bh
Y2UsIG1fZGF0YS5tX2JpdG1hcEluZm8pKTsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xMzQsOCArMTI3LDggQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZm
ZXI6OmNvcHlJbWFnZQogCiBzdGF0aWMgQ0dJbWFnZVJlZiBjZ0ltYWdlKGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gQ0dJbWFn
ZUNyZWF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDgsIGRhdGEubV9ncmF5U2NhbGUg
PyA4IDogMzIsIGRhdGEubV9ieXRlc1BlclJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhLm1fY29sb3JTcGFjZS5nZXQoKSwgZGF0YS5tX2JpdG1hcEluZm8sIGRhdGEubV9kYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOworICAgIHJl
dHVybiBDR0ltYWdlQ3JlYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGRh
dGEubV9ieXRlc1BlclJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1fY29sb3JT
cGFjZSwgZGF0YS5tX2JpdG1hcEluZm8sIGRhdGEubV9kYXRhUHJvdmlkZXIuZ2V0KCksIDAsIHRy
dWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
CkBAIC0xNDQsNyArMTM3LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIAogICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0KCkpIHsKICAgICAgICAgLy8gV2Un
cmUgZHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29y
aywgd2UgbmVlZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0LgogICAgICAgICBSZWZQ
dHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoKTsKLSAgICAgICAgZGVzdENvbnRleHQtPmRyYXdJ
bWFnZShjb3B5LmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3As
IHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1hZ2UoY29w
eS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCB1c2VM
b3dRdWFsaXR5U2NhbGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2VGb3JSZW5kZXJpbmcgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNnSW1hZ2UobV9zaXplLCBtX2Rh
dGEpKTsKICAgICAgICAgZGVzdENvbnRleHQtPmRyYXdJbWFnZShpbWFnZUZvclJlbmRlcmluZy5n
ZXQoKSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxp
dHlTY2FsZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJEYXRhLmgJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBtX2RhdGFQcm92
aWRlcjsKICAgICBDR0JpdG1hcEluZm8gbV9iaXRtYXBJbmZvOwotICAgIGJvb2wgbV9ncmF5U2Nh
bGU7CiAgICAgdW5zaWduZWQgbV9ieXRlc1BlclJvdzsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgQ0dDb2xvclNwYWNlUmVmIG1fY29sb3JTcGFjZTsK
IH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEwICsxMzgs
MTIgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZVdpdGhDbwogICAgICAgICBy
ZXR1cm4gb3JpZ2luYWxJbWFnZTsKIAogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNh
c2UgRGV2aWNlQ29sb3JTcGFjZToKKyAgICBjYXNlIENvbG9yU3BhY2VEZXZpY2VSR0I6CiAgICAg
ICAgIHJldHVybiBvcmlnaW5hbEltYWdlOwotICAgIGNhc2Ugc1JHQkNvbG9yU3BhY2U6CisgICAg
Y2FzZSBDb2xvclNwYWNlU1JHQjoKICAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDR0ltYWdlUmVm
PihBZG9wdENGLCBDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKG9yaWdpbmFsSW1hZ2Us
IHNSR0JDb2xvclNwYWNlUmVmKCkpKTsKKyAgICBjYXNlIENvbG9yU3BhY2VMaW5lYXJSR0I6Cisg
ICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oQWRvcHRDRiwgQ0dJbWFnZUNyZWF0
ZUNvcHlXaXRoQ29sb3JTcGFjZShvcmlnaW5hbEltYWdlLCBsaW5lYXJSR0JDb2xvclNwYWNlUmVm
KCkpKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJDYW52YXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJDYW52YXMuY3BwCShyZXZp
c2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJD
YW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgR0xFUzJDYW52
YXM6OmNsZWFyUmVjdChjb25zdCBGbG9hdFIKICAgICB9IGVsc2UgewogICAgICAgICBzYXZlKCk7
CiAgICAgICAgIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7Ci0gICAgICAg
IGZpbGxSZWN0KHJlY3QsIENvbG9yKFJHQkEzMigwKSksIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICBmaWxsUmVjdChyZWN0LCBDb2xvcihSR0JBMzIoMCkpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgcmVzdG9yZSgpOwogICAgIH0KIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lk
IEdMRVMyQ2FudmFzOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlCiAKIHZvaWQgR0xFUzJDYW52YXM6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBmaWxsUmVjdChyZWN0LCBt
X3N0YXRlLT5tX2ZpbGxDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZmlsbFJlY3QocmVj
dCwgbV9zdGF0ZS0+bV9maWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lk
IEdMRVMyQ2FudmFzOjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
YW5zcGFyZW5jeVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UcmFuc3BhcmVuY3lXaW4uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhbnNwYXJlbmN5V2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVHJhbnNwYXJlbmN5V2luOjpzZXR1cExh
eWVyRm9yV2hpdGUKICAgICBpZiAoIW1fdmFsaWRMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9kcmF3Q29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9sYXll
clNpemUpLCBDb2xvcjo6d2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgIG1fZHJhd0NvbnRl
eHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fbGF5ZXJTaXplKSwgQ29sb3I6
OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAvLyBMYXllciByZWN0IHJlcHJlc2Vu
dHMgdGhlIHBhcnQgb2YgdGhlIG9yaWdpbmFsIGxheWVyLgogfQogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCShyZXZp
c2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgRkVDb2xv
ck1hdHJpeDo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIKICAgICBpZiAoIWZpbHRlckNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+
cmVzdWx0SW1hZ2UoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAgSW50UmVj
dCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UoKS0+c2l6ZSgpKTsKICAgICBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhKHJlc3VsdEltYWdlKCktPmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YShpbWFnZVJlY3QpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTEsMjYgKzE1MSwyNiBAQCB2b2lkIEZFQ29tcG9zaXRlOjphcHBseShGaWx0ZXIq
IGZpbHRlcikKICAgICBGbG9hdFJlY3Qgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
OwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9P
VkVSOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4yLT5yZXN1bHRJ
bWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+
YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluMi0+cmVzdWx0SW1hZ2UoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1bHRJbWFn
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJ
VEVfT1BFUkFUT1JfSU46CiAgICAgICAgIGZpbHRlckNvbnRleHQtPnNhdmUoKTsKICAgICAgICAg
ZmlsdGVyQ29udGV4dC0+Y2xpcFRvSW1hZ2VCdWZmZXIoaW4yLT5yZXN1bHRJbWFnZSgpLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmlj
ZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5yZXN1
bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgICAgIGZpbHRlckNvbnRleHQtPnJlc3Rv
cmUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6
Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2Uo
KSwgRGV2aWNlQ29sb3JTcGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW4yLT5yZXN1bHRJbWFnZSgpLCBEZXZpY2VDb2xvclNwYWNlLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIHNyY1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3V0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5y
ZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbjItPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgc3JjUmVj
dCwgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZF
Q09NUE9TSVRFX09QRVJBVE9SX0FUT1A6Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFn
ZUJ1ZmZlcihpbjItPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRl
ckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2UoKSwgRGV2aWNlQ29sb3JT
cGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSks
IHNyY1JlY3QsIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAgICAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW4yLT5yZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAg
ICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBzcmNSZWN0LCBDb21wb3NpdGVTb3VyY2VBdG9wKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9YT1I6Ci0gICAgICAgIGZpbHRlckNv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbjItPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3Bh
Y2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2Uo
KSwgRGV2aWNlQ29sb3JTcGFjZSwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSksIHNyY1JlY3QsIENvbXBvc2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbjItPnJlc3VsdEltYWdlKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1h
Z2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSksIHNyY1JlY3QsIENvbXBvc2l0ZVhPUik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzogewogICAgICAg
ICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFn
ZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBGRUZsb29kOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ29sb3IgY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhh
KGZsb29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFjaXR5KCkpOwotICAgIGZpbHRlckNvbnRleHQt
PmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6
ZSgpKSwgY29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGZpbHRlckNvbnRleHQtPmZpbGxS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwg
Y29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAko
cmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
ZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBGRU1lcmdlOjph
cHBseShGaWx0ZXIqIGZpbHRlcikKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KGkpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERl
dmljZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5y
ZXN1bHRJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHJldmlzaW9uIDcw
MTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIEZFT2Zmc2V0OjphcHBseShGaWx0
ZXIqIGZpbHRlcikKIAogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgZHJhd2luZ1JlZ2lv
bi5tb3ZlKGZpbHRlci0+YXBwbHlIb3Jpem9udGFsU2NhbGUobV9keCksIGZpbHRlci0+YXBwbHlW
ZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW4tPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGRyYXdpbmdSZWdpb24pOworICAg
IGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2UoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAo
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJ
KHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEyICs3NSwxMiBAQCB2b2lkIEZFVGlsZTo6
YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiAgICAgfQogCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiB0
aWxlSW1hZ2U7Ci0gICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZl
cih0aWxlUmVjdCwgdGlsZVJlY3QsIHRpbGVJbWFnZSwgRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNW
R0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwg
dGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7
CiAgICAgdGlsZUltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKLSAgICB0aWxlSW1hZ2VDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW4tPnJlc3VsdEltYWdlKCksIERldmljZUNvbG9yU3BhY2UsIGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHRpbGVJbWFnZUNvbnRleHQtPmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+cmVzdWx0SW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CiAKICAgICBSZWZQdHI8UGF0dGVybj4gcGF0
dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UtPmNvcHlJbWFnZSgpLCB0cnVlLCB0cnVl
KTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzky
LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3Q6OmVmZmVjdENvbgogICAgIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KGZpbHRlcik7CiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBtX2VmZmVjdEJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIExpbmVhclJHQik7
CisgICAgbV9lZmZlY3RCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWlu
dFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFyUkdCKTsKICAgICBpZiAoIW1fZWZmZWN0QnVm
ZmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9lZmZlY3RCdWZmZXItPmNvbnRl
eHQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUFscGhhLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3
IEBAIHZvaWQgU291cmNlQWxwaGE6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7CiAg
ICAgZmlsdGVyQ29udGV4dC0+c2F2ZSgpOwogICAgIGZpbHRlckNvbnRleHQtPmNsaXBUb0ltYWdl
QnVmZmVyKGZpbHRlci0+c291cmNlSW1hZ2UoKSwgaW1hZ2VSZWN0KTsKLSAgICBmaWx0ZXJDb250
ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGZpbHRlckNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgdm9pZCBTb3VyY2VHcmFwaGljOjphcHBseShGaWx0ZXIqIGZpbHRlcgogICAgIGlmICghZmls
dGVyQ29udGV4dCB8fCAhZmlsdGVyLT5zb3VyY2VJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLT5zb3VyY2VJbWFnZSgp
LCBEZXZpY2VDb2xvclNwYWNlLCBJbnRQb2ludCgpKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoZmlsdGVyLT5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJ
bnRQb2ludCgpKTsKIH0KIAogdm9pZCBTb3VyY2VHcmFwaGljOjpkdW1wKCkKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFpbnQoCiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2Uq
Pihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIHNSR0JDb2xvclNwYWNlLAorICAgIGNvbnRleHQt
PmRyYXdJbWFnZShyZWludGVycHJldF9jYXN0PEltYWdlKj4oZ3N0SW1hZ2UtPmltYWdlKCkuZ2V0
KCkpLCBDb2xvclNwYWNlU1JHQiwKICAgICAgICAgICAgICAgICAgICAgICAgcmVjdCwgQ29tcG9z
aXRlQ29weSwgZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250R3RrLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Gb250R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGUKIAogICAgIC8vIFJlLWVuYWJs
ZSB0aGUgcGxhdGZvcm0gc2hhZG93IHdlIGRpc2FibGVkIGVhcmxpZXIKICAgICBpZiAoaGFzU2hh
ZG93KQotICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKIAogICAgIC8vIFBhbmdvIHNvbWV0aW1lcyBsZWF2ZXMgYmVoaW5kIHBhdGhzIHdl
IGRvbid0IHdhbnQKICAgICBjYWlyb19uZXdfcGF0aChjcik7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShyZXZpc2lv
biA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4
dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zCiAgICAgCiAgICAgaW50IHJhZGl1cyA9ICh3aWR0aCAt
IDEpIC8gMjsKICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29sb3JSZWYgY29sb3JSZWYg
PSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNl
KSA6IDA7CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hl
ZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpIDogMDsKIAogICAgIFJldGFpblB0
cjxDR011dGFibGVQYXRoUmVmPiBmb2N1c1JpbmdQYXRoKEFkb3B0Q0YsIENHUGF0aENyZWF0ZU11
dGFibGUoKSk7CiAgICAgdW5zaWduZWQgcGF0aENvdW50ID0gcGF0aHMuc2l6ZSgpOwpAQCAtODEs
NyArODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zCiAKICAg
ICBpbnQgcmFkaXVzID0gKHdpZHRoIC0gMSkgLyAyOwogICAgIG9mZnNldCArPSByYWRpdXM7Ci0g
ICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29sb3Io
Y29sb3IsIERldmljZUNvbG9yU3BhY2UpIDogMDsKKyAgICBDR0NvbG9yUmVmIGNvbG9yUmVmID0g
Y29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJH
QikgOiAwOwogCiAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IGZvY3VzUmluZ1BhdGgo
QWRvcHRDRiwgQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQg
PSByZWN0cy5zaXplKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0xheWVyQ0EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjY1
LDcgKzI2NSw3IEBAIHN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWEKIAog
c3RhdGljIHZvaWQgc2V0TGF5ZXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29u
c3QgQ29sb3ImIGNvbG9yKQogewotICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRDR0Nv
bG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKV07CisgICAgW2xheWVyIHNldEJvcmRlckNvbG9y
OmNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKIH0KIAogc3RhdGlj
IHZvaWQgY2xlYXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllcikKQEAgLTI3NSw3ICsy
NzUsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckJvcmRlckNvbG9yKFBsYXRmb3JtTGF5CiAKIHN0YXRp
YyB2b2lkIHNldExheWVyQmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRD
R0NvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKV07CisgICAgW2xheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CiB9CiAK
IHN0YXRpYyB2b2lkIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoUGxhdGZvcm1MYXllciogbGF5
ZXIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDggKzI1
NSw4IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KFBsYXRmb3IKICAgICBzZXRQ
YWludGluZ0Rpc2FibGVkKCFjb250ZXh0KTsKICAgICBpZiAoY29udGV4dCkgewogICAgICAgICAv
LyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0g
ICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBEZXZpY2VDb2xvclNwYWNl
KTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigpLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICAgICAgc2V0UGxhdGZvcm1GaWxsQ29sb3IoZmlsbENvbG9yKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKHN0cm9r
ZUNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IGpvaW4gbW9kZS4KICAgICAgICAgc2V0TGluZUpvaW4o
TWl0ZXJKb2luKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBA
IEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEkKICAgICBtX2ltYWdlID0g
U3RpbGxJbWFnZTo6Y3JlYXRlRm9yUmVuZGVyaW5nKCZtX3BpeG1hcCk7CiB9CiAKLUltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBJbWFnZUNvbG9yU3BhY2UsIGJv
b2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShzaXplKQogICAgICwg
bV9zaXplKHNpemUpCiB7CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIAogICAgIGlmIChkZXN0Q29udGV4dCA9PSBjb250ZXh0KCkpIHsK
ICAgICAgICAgLy8gV2UncmUgZHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLiAgSW4gb3JkZXIg
Zm9yIHRoaXMgdG8gd29yaywgd2UgbmVlZCB0byBjb3B5IHRoZSBzb3VyY2UgYnVmZmVyIGZpcnN0
LgogICAgICAgICBSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoKTsKLSAgICAgICAgZGVz
dENvbnRleHQtPmRyYXdJbWFnZShjb3B5LmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGRlc3RDb250ZXh0
LT5kcmF3SW1hZ2UoY29weS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgIH0gZWxzZQogICAgICAgICBkZXN0
Q29udGV4dC0+ZHJhd0ltYWdlKG1fZGF0YS5tX2ltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2Us
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
CShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFn
ZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIEltYWdlQnVm
ZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEkKIHsKIH0KIAotSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFjZSBpbWFnZUNvbG9y
U3BhY2UsIGJvb2wmIHN1Y2Nlc3MpCitJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fZGF0YShzaXpl
KQogICAgICwgbV9zaXplKHNpemUpCiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA3MDE0
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgUGxhdGZvcm1Db250
ZXh0U2tpYTo6dXBsb2FkU29mdHdhcmUKIAogICAgIG1fdXBsb2FkVGV4dHVyZS0+dXBkYXRlU3Vi
UmVjdChiaXRtYXAuZ2V0UGl4ZWxzKCksIG1fc29mdHdhcmVEaXJ0eVJlY3QpOwogICAgIEFmZmlu
ZVRyYW5zZm9ybSBpZGVudGl0eTsKLSAgICBncHVDYW52YXMoKS0+ZHJhd1RleHR1cmVkUmVjdCht
X3VwbG9hZFRleHR1cmUuZ2V0KCksIG1fc29mdHdhcmVEaXJ0eVJlY3QsIG1fc29mdHdhcmVEaXJ0
eVJlY3QsIGlkZW50aXR5LCAxLjAsIERldmljZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBncHVDYW52
YXMoKS0+ZHJhd1RleHR1cmVkUmVjdChtX3VwbG9hZFRleHR1cmUuZ2V0KCksIG1fc29mdHdhcmVE
aXJ0eVJlY3QsIG1fc29mdHdhcmVEaXJ0eVJlY3QsIGlkZW50aXR5LCAxLjAsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIG9wKTsKICAgICAvLyBDbGVhciBvdXQgdGhlIHJlZ2lvbiBvZiB0aGUgc29mdHdh
cmUgY2FudmFzIHdlIGp1c3QgdXBsb2FkZWQuCiAgICAgbV9jYW52YXMtPnNhdmUoKTsKICAgICBt
X2NhbnZhcy0+cmVzZXRNYXRyaXgoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTQgKzM2
MCwxNCBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKICAgICAgICAgQ29sb3IgZmlsbENvbG9y
ID0gZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93Rmls
bENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xv
ci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvciwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9y
KHNoYWRvd0ZpbGxDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIENHQ29udGV4
dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRo
KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0
KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhz
V2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYgKGZvbnQtPnN5bnRo
ZXRpY0JvbGRPZmZzZXQoKSkgewogICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9u
KGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNl
dC53aWR0aCgpICsgZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFu
c2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBD
R0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5
cGhzKGZyb20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKICAgICAg
ICAgfQotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihm
aWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCks
IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKQEAgLTM3OCw3ICszNzgsNyBAQCB2
b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAgICAgfQogCiAgICAgaWYg
KGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgd2tSZXN0b3JlRm9u
dFNtb290aGluZ1N0eWxlKGNnQ29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4
ICs3MCw4IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMKICAgICBz
ZXRQYWludGluZ0Rpc2FibGVkKCFtX2RhdGEtPm1fY2dDb250ZXh0KTsKICAgICBpZiAobV9kYXRh
LT5tX2NnQ29udGV4dCkgewogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRz
IGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCi0gICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZp
bGxDb2xvcigpLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VD
b2xvcihzdHJva2VDb2xvcigpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgc2V0UGxhdGZv
cm1GaWxsQ29sb3IoZmlsbENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBz
ZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogICAgIH0KIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Rm9jdXNSaW5nKGNvbnMKIAogICAgIGZsb2F0IHJhZGl1cyA9ICh3aWR0aCAtIDEpIC8gMi4w
ZjsKICAgICBvZmZzZXQgKz0gcmFkaXVzOwotICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xv
ci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKSA6IDA7
CisgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQoKSA/IGNhY2hlZENHQ29s
b3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpIDogMDsKIAogICAgIENHTXV0YWJsZVBhdGhS
ZWYgZm9jdXNSaW5nUGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAgICB1bnNpZ25lZCBy
ZWN0Q291bnQgPSByZWN0cy5zaXplKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuY3BwCShyZXZpc2lvbiA3MDE0MikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQVRvVHJh
bnNmb3JtM0QoY29uCiAKIHN0YXRpYyB2b2lkIHNldExheWVyQm9yZGVyQ29sb3IoV0tDQUNGTGF5
ZXIqIGxheWVyLCBjb25zdCBDb2xvciYgY29sb3IpCiB7Ci0gICAgbGF5ZXItPnNldEJvcmRlckNv
bG9yKGNhY2hlZENHQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2UpKTsKKyAgICBsYXllci0+
c2V0Qm9yZGVyQ29sb3IoY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQikp
OwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckJvcmRlckNvbG9yKFdLQ0FDRkxheWVyKiBsYXllcikK
QEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBjbGVhckJvcmRlckNvbG9yKFdLQ0FDRkxh
eWVyCiAKIHN0YXRpYyB2b2lkIHNldExheWVyQmFja2dyb3VuZENvbG9yKFdLQ0FDRkxheWVyKiBs
YXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQogewotICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29s
b3IoY2FjaGVkQ0dDb2xvcihjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSkpOworICAgIGxheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IoY2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJH
QikpOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckxheWVyQmFja2dyb3VuZENvbG9yKFdLQ0FDRkxh
eWVyKiBsYXllcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q0dXaW4uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5ICs3OCw5IEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KIAogICAgIEludFNpemUgaW1hZ2VT
aXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAgICAgICAgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8u
Ym1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBEZXZpY2VDb2xvclNw
YWNlLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXpl
KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhl
aWdodCksIEludFNpemUoKnNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5
KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1w
SW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBEZXZpY2VDb2xvclNwYWNlLCBD
b21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBi
bXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
aW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIENvbXBvc2l0ZUNvcHkpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJl
bGVhc2UoY2dDb250ZXh0KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw5
ICs4Miw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE0KIAogICAg
IEludFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkK
LSAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUp
LCBEZXZpY2VDb2xvclNwYWNlLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksIEludFNpemUoKnNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBEZXZp
Y2VDb2xvclNwYWNlLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwogCiAgICAgLy8gRG8gY2xlYW51cAog
ICAgIGNhaXJvX2Rlc3Ryb3kodGFyZ2V0UmVmKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAgICAgICAgIGlmIChjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6
ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoaW1hZ2UpID09IHN0
YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90
IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJh
bWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgRGV2aWNlQ29sb3JTcGFj
ZSwgY29tcG9zaXRlT3ApOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgY29tcG9zaXRlT3ApOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUg
PSBjdXJyZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwOCw3
ICsxMDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAg
ICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8g
ZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEludFNpemUgaW1hZ2VTaXplID0gQml0bWFw
SW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgRGV2aWNlQ29sb3JT
cGFjZSwgY29tcG9zaXRlT3ApOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBjb21wb3NpdGVPcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJMYXllci5jcHAJKHJldmlz
aW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJMYXllcjo6ZHJhd0lu
Q29udGV4dChQbGF0Zm9ybUdyYQogICAgICAgICBmb250LnVwZGF0ZSgwKTsKIAogICAgICAgICBH
cmFwaGljc0NvbnRleHQgY2coY29udGV4dCk7Ci0gICAgICAgIGNnLnNldEZpbGxDb2xvcihDb2xv
cjo6YmxhY2ssIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjZy5zZXRGaWxsQ29sb3IoQ29s
b3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY2cuZHJhd1RleHQoZm9u
dCwgVGV4dFJ1bih0ZXh0KSwgSW50UG9pbnQoYUJvdW5kcy5vcmlnaW4ueCArIDUsIGFCb3VuZHMu
b3JpZ2luLnkgKyAxNykpOwogCiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4
dCk7ICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhp
Y3NDb250ZXh0V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgxLDcgKzEwODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xlYXJSZWN0KGNvbnN0IEZsCiAgICAgICAgIHJldHVybjsKICAgICB9IAogCi0gICAgZmlsbFJl
Y3QocmVjdCwgQ29sb3IoQ29sb3I6OndoaXRlKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgZmls
bFJlY3QocmVjdCwgQ29sb3IoQ29sb3I6OndoaXRlKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgd2lkdGgpCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgaWYgKG51bVN0b3BzID09IDEpIHsKICAgICAgICAg
Y29uc3QgR3JhZGllbnQ6OkNvbG9yU3RvcCYgc3RvcCA9IHN0b3BzLmZpcnN0KCk7CiAgICAgICAg
IENvbG9yIGNvbG9yKHN0b3AucmVkLCBzdG9wLmdyZWVuLCBzdG9wLmJsdWUsIHN0b3AuYWxwaGEp
OwotICAgICAgICBmaWxsUmVjdChyLCBjb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAg
IGZpbGxSZWN0KHIsIGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0gCiAgICAgCkBAIC0xNTI2LDcgKzE1MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGll
bnQpCiAgICAgICAgIGZpbGxSZWN0KHJlY3QsIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQu
Z2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAgZmlsbFJlY3QocmVjdCwgZmlsbENvbG9yKCksIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICBmaWxsUmVjdChyZWN0LCBmaWxsQ29sb3IoKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAKICAgICByZXN0b3JlUGxhdGZvcm1TdGF0ZSgpOwogfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZVdpbkNFLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlV2luQ0UuY3BwCShy
ZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VX
aW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDkgKzgyLDkgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogCiAgICAgICAgIEludFNpemUgaW1hZ2VTaXplID0g
Qml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICAgICAgaWYgKHNpemUpCi0gICAgICAgICAgICBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMCwgMCwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgSW50U2l6ZSgqc2l6ZSksIERldmljZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXpl
KCZnYywgRmxvYXRSZWN0KDAsIDAsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCks
IEludFNpemUoKnNpemUpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLCAwLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMCwgMCwgaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIERldmljZUNvbG9yU3BhY2UsIENvbXBvc2l0ZUNv
cHkpOworICAgICAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLCAwLCBibXBJbmZvLmJtV2lk
dGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkp
OwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhPbGRCbXApOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5j
cHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFw
aGljc0NvbnRleHRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw4ICsxMjAsOCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9yCiAgICAgc2V0UGFpbnRpbmdEaXNh
YmxlZCghY29udGV4dCk7CiAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBjb250ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgotICAgICAgICBzZXRQ
bGF0Zm9ybUZpbGxDb2xvcihmaWxsQ29sb3IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgICAg
IHNldFBsYXRmb3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICB9CiAjaWYgVVNFKFdYR0MpCiAgICAgbV9kYXRhLT5j
b250ZXh0ID0gKHd4R0NEQyopY29udGV4dDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjMsNyArNTIzLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlcwogewogICAgIHN0YXRpYyBJbWFn
ZSogc2VhcmNoSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtVGhlbWVJY29uKEdUS19TVE9DS19G
SU5ELCByZWN0LndpZHRoKCkpLnJlbGVhc2VSZWYoKTsKICAgICBJbnRSZWN0IGNlbnRlcmVkUmVj
dChjZW50ZXJSZWN0VmVydGljYWxseUluUGFyZW50SW5wdXRFbGVtZW50KG9iamVjdCwgcmVjdCkp
OwotICAgIGkuY29udGV4dC0+ZHJhd0ltYWdlKHNlYXJjaEltYWdlLCBEZXZpY2VDb2xvclNwYWNl
LCBjZW50ZXJlZFJlY3QpOworICAgIGkuY29udGV4dC0+ZHJhd0ltYWdlKHNlYXJjaEltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBjZW50ZXJlZFJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtNTQzLDcgKzU0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmll
bGRDYW4KICAgICAvLyBUT0RPOiBCcmlnaHRlbmluZyB1cCB0aGUgaW1hZ2Ugb24gaG92ZXIgaXMg
ZGVzaXJhYmxlIGhlcmUsIEkgYmVsaWV2ZS4KICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbEltYWdl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVRoZW1lSWNvbihHVEtfU1RPQ0tfQ0xFQVIsIHJlY3Qud2lk
dGgoKSkucmVsZWFzZVJlZigpOwogICAgIEludFJlY3QgY2VudGVyZWRSZWN0KGNlbnRlclJlY3RW
ZXJ0aWNhbGx5SW5QYXJlbnRJbnB1dEVsZW1lbnQob2JqZWN0LCByZWN0KSk7Ci0gICAgaS5jb250
ZXh0LT5kcmF3SW1hZ2UoY2FuY2VsSW1hZ2UsIERldmljZUNvbG9yU3BhY2UsIGNlbnRlcmVkUmVj
dCk7CisgICAgaS5jb250ZXh0LT5kcmF3SW1hZ2UoY2FuY2VsSW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGNlbnRlcmVkUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC04MDUsOCAr
ODA1LDggQEAgU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYU1lZGlhQ29udHJvbAogCiBzdGF0
aWMgaW5saW5lIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHIsIEltYWdlKiBpbWFnZSwgQ29sb3IgcGFuZWxDb2xvciwgaW50IG1l
ZGlhSWNvblNpemUpCiB7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHIpLCBwYW5l
bENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2Us
IERldmljZUNvbG9yU3BhY2UsCisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHIpLCBw
YW5lbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsCiAgICAgICAgICAgICAgICAgICAgICAgIEludFJl
Y3Qoci54KCkgKyAoci53aWR0aCgpIC0gbWVkaWFJY29uU2l6ZSkgLyAyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHIueSgpICsgKHIuaGVpZ2h0KCkgLSBtZWRpYUljb25TaXplKSAv
IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFJY29uU2l6ZSwgbWVkaWFJ
Y29uU2l6ZSkpOwpAQCAtODUyLDkgKzg1Miw5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50
TWVkaWFTbGlkZXJUcmEKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dDsKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyKSwgbV9wYW5l
bENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJl
Y3QociksIG1fcGFuZWxDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC0+
ZmlsbFJlY3QoRmxvYXRSZWN0KEludFJlY3Qoci54KCksIHIueSgpICsgKHIuaGVpZ2h0KCkgLSBt
X21lZGlhU2xpZGVySGVpZ2h0KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgci53aWR0aCgpLCBtX21lZGlhU2xpZGVySGVpZ2h0KSksIG1fc2xpZGVyQ29sb3Is
IERldmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHIud2lkdGgoKSwgbV9tZWRpYVNsaWRlckhlaWdodCkpLCBtX3NsaWRlckNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG8tPnN0eWxlKCk7
CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1l
bnQobyk7CkBAIC05MTEsNyArOTExLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YVNsaWRlclRyYQogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgLy8gTWFrZSB0aGUgdGh1bWIgbmljZXIgd2l0aCByb3VuZGVkIGNvcm5lcnMu
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChyLCBJbnRTaXplKDMsIDMp
LCBJbnRTaXplKDMsIDMpLCBJbnRTaXplKDMsIDMpLCBJbnRTaXplKDMsIDMpLCBtX3NsaWRlclRo
dW1iQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxs
Um91bmRlZFJlY3QociwgSW50U2l6ZSgzLCAzKSwgSW50U2l6ZSgzLCAzKSwgSW50U2l6ZSgzLCAz
KSwgSW50U2l6ZSgzLCAzKSwgbV9zbGlkZXJUaHVtYkNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsNyAr
Mzk1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0
cmFja0luZm8sIDAsIGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLCBr
SElUaGVtZU9yaWVudGF0aW9uTm9ybWFsKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLmdldCgpLCBEZXZpY2VDb2xvclNwYWNlLCBzY3JvbGxiYXItPmZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkpOworICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNjcm9sbGJhci0+ZnJhbWVSZWN0
KCkubG9jYXRpb24oKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE5LDExICs2
MTksMTEgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIAogCiAgICAg
ICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgZm9yIHRoaXMgbWVudSBpdGVtCiAgICAgICAgIGlm
IChpdGVtU3R5bGUuaXNWaXNpYmxlKCkpCi0gICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGl0
ZW1SZWN0LCBvcHRpb25CYWNrZ3JvdW5kQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChpdGVtUmVjdCwgb3B0aW9uQmFja2dyb3VuZENvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBpZiAoY2xpZW50KCktPml0ZW1Jc1NlcGFy
YXRvcihpbmRleCkpIHsKICAgICAgICAgICAgIEludFJlY3Qgc2VwYXJhdG9yUmVjdChpdGVtUmVj
dC54KCkgKyBzZXBhcmF0b3JQYWRkaW5nLCBpdGVtUmVjdC55KCkgKyAoaXRlbVJlY3QuaGVpZ2h0
KCkgLSBzZXBhcmF0b3JIZWlnaHQpIC8gMiwgaXRlbVJlY3Qud2lkdGgoKSAtIDIgKiBzZXBhcmF0
b3JQYWRkaW5nLCBzZXBhcmF0b3JIZWlnaHQpOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVj
dChzZXBhcmF0b3JSZWN0LCBvcHRpb25UZXh0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAg
ICAgICAgICAgY29udGV4dC5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCBvcHRpb25UZXh0Q29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRS
ZWN0JiAKICAgICAgICAgY29uc3QgVUNoYXIqIHN0cmluZyA9IGl0ZW1UZXh0LmNoYXJhY3RlcnMo
KTsKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwg
aXRlbVRleHQuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBXVEY6OlVuaWNvZGU6OlJpZ2h0
VG9MZWZ0KTsKIAotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3Is
IERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihvcHRpb25U
ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAKICAgICAgICAgRm9udCBp
dGVtRm9udCA9IGNsaWVudCgpLT5tZW51U3R5bGUoKS5mb250KCk7CiAgICAgICAgIGlmIChjbGll
bnQoKS0+aXRlbUlzTGFiZWwoaW5kZXgpKSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvCiB7CiAg
ICAgVGV4dFJ1biBydW4odGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCkpOwogCi0gICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpZiAoaXNP
bmVMZWZ0VG9SaWdodFJ1bihydW4pKQogICAgICAgICBmb250LmRyYXdUZXh0KCZjb250ZXh0LCBy
dW4sIHBvaW50KTsKICAgICBlbHNlCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGRvRHJh
d1RleHRBdFBvaW50KEdyYXBoaWNzQ28KICAgICAgICAgSW50UG9pbnQgdW5kZXJsaW5lUG9pbnQo
cG9pbnQpOwogICAgICAgICB1bmRlcmxpbmVQb2ludC5tb3ZlKGJlZm9yZVdpZHRoLCAxKTsKIAot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHVuZGVybGluZVBvaW50LCB1bmRl
cmxpbmVkV2lkdGgsIGZhbHNlKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4
L3d4Y29kZS9tYWMvY2FyYm9uL25vbi1rZXJuZWQtZHJhd2luZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUvbWFjL2NhcmJvbi9ub24ta2VybmVkLWRyYXdpbmcu
Y3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9j
YXJib24vbm9uLWtlcm5lZC1kcmF3aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCB2b2lkIGRyYXdUZXh0V2l0aFNwYWNpbmcoR3JhcGhpY3NDb250ZXh0CiAgICAgd3hHQ0RD
KiBkYyA9IHN0YXRpY19jYXN0PHd4R0NEQyo+KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCkpOwogCiAgICAgd3hGb250KiB3eGZvbnQgPSBmb250LT5nZXRXeEZvbnQoKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigp
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihn
cmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0NvbnRleHRSZWY+KGRjLT5H
ZXRHcmFwaGljc0NvbnRleHQoKS0+R2V0TmF0aXZlQ29udGV4dCgpKTsKIApJbmRleDogV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTIsNyArMTI1Miw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6cGFpbnRNaXNzaW5nUGx1Z2luSWNvbigKIAogICAgIGNvbnRleHQtPnNhdmUoKTsKICAg
ICBjb250ZXh0LT5jbGlwKHdpbmRvd0NsaXBSZWN0KCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShudWxsUGx1Z2luSW1hZ2UuZ2V0KCksIERldmljZUNvbG9yU3BhY2UsIGltYWdlUmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UobnVsbFBsdWdpbkltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgY29udGV4dC0+
cmVzdG9yZSgpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lv
biA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIKICAgICAgICAgcC0+Y2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHAtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIocmVuZGVyZXIoKS0+b3BhY2l0eSgpKTsKICNpZmRlZiBSRVZFQUxfVFJB
TlNQQVJFTkNZX0xBWUVSUwotICAgICAgICBwLT5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4w
ZiwgMC41ZiwgMC4yZiksIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBwLT5zZXRGaWxsQ29s
b3IoQ29sb3IoMC4wZiwgMC4wZiwgMC41ZiwgMC4yZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgICAgICBwLT5maWxsUmVjdChjbGlwUmVjdCk7CiAjZW5kaWYKICAgICB9CkBAIC0yMjAxLDkg
KzIyMDEsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDCiAgICAg
ICAgIGNvbnRleHQtPmNsaXAoYWJzUmVjdCk7CiAgICAgICAgIEludFJlY3QgbGFyZ2VyQ29ybmVy
ID0gYWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoSW50U2l6ZShsYXJnZXJD
b3JuZXIud2lkdGgoKSArIDEsIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSksIERl
dmljZUNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvciht
YWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgICAgICBjb250ZXh0LT5kcmF3UmVjdChsYXJnZXJDb3JuZXIpOwogICAgICAgICBj
b250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsNyArMTE1NCw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdFbGxpcHNlKG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2Ug
Q2lyY2xlOgotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNhc2UgU3F1YXJlOgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9sc0Nocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzLDcgKzYzLDcgQEAgc3RhdGljIGJvb2wgaGFzU291cmNlKGNvbnN0IEhUTUxNZWRpYUVsZQog
c3RhdGljIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbWFnZSkKIHsKICAgICBJbnRSZWN0IGltYWdlUmVj
dCA9IGltYWdlLT5yZWN0KCk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VD
b2xvclNwYWNlLCByZWN0KTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjAsOSArMTIw
LDkgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5kZXJPYmplYwogICAgIGNvbnRl
eHQtPnNhdmUoKTsKICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9y
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHN0
eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBE
ZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogICAgIGNvbnRleHQtPmRyYXdSZWN0KHJlY3QpOwogICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKIApAQCAtMTg5LDEzICsxODksMTMgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVZv
bHVtZVNsaWRlcihSZW5kZQogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OwogICAgIENvbG9yIG9yaWdpbmFsQ29sb3IgPSBjb250ZXh0LT5zdHJva2VDb2xv
cigpOwogICAgIGlmIChvcmlnaW5hbENvbG9yICE9IENvbG9yOjp3aGl0ZSkKLSAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKIAogICAgIGludCB4ID0gcmVjdC54KCkgKyByZWN0LndpZHRoKCkgLyAyOwogICAg
IGNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KHgsIHJlY3QueSgpKSwgIEludFBvaW50KHgsIHJl
Y3QueSgpICsgcmVjdC5oZWlnaHQoKSkpOwogCiAgICAgaWYgKG9yaWdpbmFsQ29sb3IgIT0gQ29s
b3I6OndoaXRlKQotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihvcmlnaW5hbENvbG9y
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob3Jp
Z2luYWxDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTIyNCwxNyArMjI0LDE3IEBAIHN0YXRpYyBib29sIHBhaW50TWVkaWFUaW1lbGluZUNvbnRh
aW5lcigKIAogICAgICAgICAvLyBEcmF3IHRoZSBsZWZ0IGJvcmRlciB1c2luZyBDU1MgZGVmaW5l
ZCB3aWR0aCBhbmQgY29sb3IuCiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhv
YmplY3QtPnN0eWxlKCktPmJvcmRlckxlZnRXaWR0aCgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3Iob2JqZWN0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IpLnJnYigpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob2JqZWN0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpLnJnYigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQocmVjdC54KCkgKyAxLCBy
ZWN0LnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHJlY3QueCgpICsg
MSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKSk7CiAKICAgICAgICAgLy8gRHJhdyB0aGUgcmln
aHQgYm9yZGVyIHVzaW5nIENTUyBkZWZpbmVkIHdpZHRoIGFuZCBjb2xvci4KICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKG9iamVjdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHRXaWR0
aCgpKTsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iob2JqZWN0LT5zdHlsZSgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKS5yZ2IoKSwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG9iamVj
dC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRD
b2xvcikucmdiKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBjb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIDEsIHJlY3QueSgpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQocmVjdC54KCkgKyByZWN0LndpZHRoKCkg
LSAxLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihvcmlnaW5hbENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3Iob3JpZ2luYWxDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhvcmlnaW5hbFRoaWNrbmVzcyk7
CiAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKG9yaWdpbmFsU3R5bGUpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDcwMTQyKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBw
YQogICAgICAgICAgICAgICAgIGlmIChpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8o
KS5hbGlnbigpICE9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX05PTkUpCiAgICAgICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVBc3Bl
Y3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAgICAg
ICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBEZXZpY2VDb2xv
clNwYWNlLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAgY2hpbGRQYWludElu
Zm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVj
dCwgc3JjUmVjdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNWR1JlbmRlclN1cHBv
cnQ6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8sIHNhdmVkSW5m
by5jb250ZXh0KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAgIEZsb2F0UmVj
dCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0ID0gU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y2xhbXBl
ZEFic29sdXRlVGFyZ2V0UmVjdEZvclJlbmRlcmVyKG9iamVjdCwgYWJzb2x1dGVUYXJnZXRSZWN0
KTsKIAogICAgIGlmIChzaG91bGRDcmVhdGVDbGlwRGF0YSAmJiAhY2xhbXBlZEFic29sdXRlVGFy
Z2V0UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpj
cmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBEZXZpY2VSR0IpKQorICAgICAgICBp
ZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGFyZ2V0
UmVjdCwgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBjbGlwcGVyRGF0YS0+Y2xpcE1h
c2tJbWFnZS0+Y29udGV4dCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw3ICsy
MjYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAgICAgYWJz
b2x1dGVEcmF3aW5nUmVnaW9uLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsK
IAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpYzsKLSAgICBpZiAoIVNWR0lt
YWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlRHJhd2luZ1JlZ2lvbiwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBzb3VyY2VHcmFwaGljLCBMaW5lYXJSR0IpKQorICAgIGlm
ICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVEcmF3aW5n
UmVnaW9uLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24sIHNvdXJjZUdyYXBoaWMsIENvbG9yU3BhY2VM
aW5lYXJSR0IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IDA7CiAjaWYgIVBMQVRGT1JNKENH
KQogICAgICAgICBpZiAoZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlcikKLSAgICAgICAg
ICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXItPnRyYW5zZm9ybUNvbG9yU3BhY2Uo
RGV2aWNlUkdCLCBMaW5lYXJSR0IpOworICAgICAgICAgICAgZmlsdGVyRGF0YS0+c291cmNlR3Jh
cGhpY0J1ZmZlci0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCLCBDb2xv
clNwYWNlTGluZWFyUkdCKTsKICNlbmRpZgogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBAIHZv
aWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICNpZiAhUExBVEZPUk0oQ0cp
CiAgICAgICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5yZXN1
bHRJbWFnZSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdEltYWdlKQotICAgICAgICAgICAgICAg
IHJlc3VsdEltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKExpbmVhclJHQiwgRGV2aWNlUkdCKTsK
KyAgICAgICAgICAgICAgICByZXN1bHRJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNw
YWNlTGluZWFyUkdCLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgogICAgICAgICAgICAg
ZmlsdGVyRGF0YS0+YnVpbGRlZCA9IHRydWU7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiA3MDE0
MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVN
YXNrQW5kU3dhcENvbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBtYXNrSW1hZ2U7Ci0gICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Qs
IG1hc2tJbWFnZSwgRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNy
ZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGFyZ2V0UmVjdCwgY2xhbXBlZEFic29sdXRlVGFyZ2V0
UmVjdCwgbWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdl
LT5jb250ZXh0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICAgICAgaWYgKCFt
YXNrRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIVNW
R0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGFyZ2V0UmVjdCwg
Y2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBMaW5lYXJS
R0IpKQorICAgICAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVy
KGFic29sdXRlVGFyZ2V0UmVjdCwgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgbWFza2VyRGF0
YS0+bWFza0ltYWdlLCBDb2xvclNwYWNlTGluZWFyUkdCKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNr
ZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVuCiAgICAgbWFza0ltYWdlQ29udGV4dC0+
cmVzdG9yZSgpOwogCiAjaWYgIVBMQVRGT1JNKENHKQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFn
ZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXZpY2VSR0IsIExpbmVhclJHQik7CisgICAgbWFza2Vy
RGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0Is
IENvbG9yU3BhY2VMaW5lYXJSR0IpOwogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUgdGhlIGx1bWlu
YW5jZSBtYXNrLgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBA
QCBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjCiAKICAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKIAotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6
Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZSwgRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNWR0ltYWdl
QnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNs
YW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IpKQogICAgICAgICByZXR1cm4gUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4oKTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlU29saWRDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UgogICAgIEFTU0VSVChyZXNvdXJj
ZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
KiBzdmdTdHlsZSA9IHN0eWxlID8gc3R5bGUtPnN2Z1N0eWxlKCkgOiAwOwotICAgIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSA9IHN0eWxlID8gc3R5bGUtPmNvbG9yU3BhY2UoKSA6IERldmljZUNvbG9y
U3BhY2U7CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUgPyBzdHlsZS0+Y29sb3JT
cGFjZSgpIDogQ29sb3JTcGFjZURldmljZVJHQjsKIAogICAgIGlmIChyZXNvdXJjZU1vZGUgJiBB
cHBseVRvRmlsbE1vZGUpIHsKICAgICAgICAgY29udGV4dC0+c2V0QWxwaGEoc3ZnU3R5bGUgPyBz
dmdTdHlsZS0+ZmlsbE9wYWNpdHkoKSA6IDEuMGYpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3
ICsxMDksNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UCiB2b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwg
Q29sb3I6OndoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LT5maWxsUmVjdChj
b3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05NjQsNyArOTY0LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihSZQogICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQogICAgIAotICAgIHBhaW50
SW5mby5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIERldmljZUNv
bG9yU3BhY2UsIHJlY3QubG9jYXRpb24oKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdC5s
b2NhdGlvbigpKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTE0MSwxMSArMTE0MSwxMSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludE1lbnVMaXN0QnV0dG9uCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0
IG9mIHRoZSBhcnJvd3MKICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KDEuMGYpOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2Vy
IGlmIGl0IHN0YXlzIHRoaW4uCiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxl
KFNvbGlkU3Ryb2tlKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGVm
dFNlcGFyYXRvckNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy5ib3R0b20oKSkpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIERldmlj
ZUNvbG9yU3BhY2UpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihyaWdo
dFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNw
YWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9p
bnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMuYm90dG9tKCkp
KTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAkocmV2aXNp
b24gNzAxNDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzMCw4ICs4MzAsOCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lbnVMaXN0QnV0CiAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCi0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIERldmljZUNvbG9yU3BhY2UpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLT5zdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAKICAgICBGbG9hdFBvaW50IGFycm93WzNdOwogICAgIGFycm93WzBdID0g
RmxvYXRQb2ludChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0IC8gMi4wZik7CkBAIC04
NTEsMTEgKzg1MSwxMSBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0
CiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKICAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwogICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0
b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRy
YXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBi
b3VuZHMuYm90dG9tKCkpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xv
cihyaWdodFNlcGFyYXRvckNvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRF
ZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBh
cmF0b3JTcGFjZSwgYm91bmRzLmJvdHRvbSgpKSk7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luQ0UuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsMTIgKzM3OCwxMiBA
QCBib29sIFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2VhcmNoRmllbGRDCiAgICAgSW50UmVjdCBj
YW5jZWxCb3VuZHMoSW50UG9pbnQoeCwgeSksIGNhbmNlbFNpemUpOwogICAgIHBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFJvdW5kZWRSZWN0Q2xp
cChjYW5jZWxCb3VuZHMsIGNhbmNlbFJhZGl1cywgY2FuY2VsUmFkaXVzLCBjYW5jZWxSYWRpdXMs
IGNhbmNlbFJhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KGNhbmNlbEJv
dW5kcywgYnV0dG9uQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIHBhaW50SW5mby5jb250
ZXh0LT5maWxsUmVjdChjYW5jZWxCb3VuZHMsIGJ1dHRvbkNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIAogICAgIC8vIERyYXcgdGhlICd4JwogICAgIEludFNpemUgeFNpemUoMywgMyk7CiAg
ICAgSW50UmVjdCB4Qm91bmRzKGNhbmNlbEJvdW5kcy5sb2NhdGlvbigpICsgSW50U2l6ZSgzLCAz
KSwgeFNpemUpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6
d2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIHBhaW50SW5m
by5jb250ZXh0LT5kcmF3TGluZSh4Qm91bmRzLmxvY2F0aW9uKCksICB4Qm91bmRzLmxvY2F0aW9u
KCkgKyB4Qm91bmRzLnNpemUoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKElu
dFBvaW50KHhCb3VuZHMucmlnaHQoKSwgeEJvdW5kcy55KCkpLCAgSW50UG9pbnQoeEJvdW5kcy54
KCksIHhCb3VuZHMuYm90dG9tKCkpKTsKIApAQCAtNDkwLDggKzQ5MCw4IEBAIGJvb2wgUmVuZGVy
VGhlbWVXaW5DRTo6cGFpbnRTbGlkZXJUcmFjaygKICAgICBib29sIHJjID0gUmVuZGVyVGhlbWU6
OnBhaW50U2xpZGVyVHJhY2sobywgaSwgcik7CiAgICAgSW50UG9pbnQgbGVmdCA9IEludFBvaW50
KHIueCgpICsgMiwgKHIueSgpICsgci5ib3R0b20oKSkgLyAyKTsKICAgICBpLmNvbnRleHQtPnNh
dmUoKTsKLSAgICBpLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmF5LCBEZXZpY2VD
b2xvclNwYWNlKTsKLSAgICBpLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6Z3JheSwgRGV2
aWNlQ29sb3JTcGFjZSk7CisgICAgaS5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3Jh
eSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaS5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3I6OmdyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGkuY29udGV4dC0+ZmlsbFJlY3Qo
cik7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCA9IG1lZGlhRWxlbWVudFBhcmVudChvLT5ub2RlKCkpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVXaW5DRTo6cGFpbnRTbGlkZXJUcmFjaygKICAgICAgICAgbGVmdCA9IHJp
Z2h0OwogICAgIH0KICNlbmRpZgotICAgIGkuY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OmJsYWNrLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBpLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaS5jb250ZXh0LT5kcmF3
TGluZShsZWZ0LCBJbnRQb2ludChyLnJpZ2h0KCkgLSAyLCBsZWZ0LnkoKSkpOwogICAgIGkuY29u
dGV4dC0+cmVzdG9yZSgpOwogICAgIHJldHVybiByYzsKQEAgLTUxMiw4ICs1MTIsOCBAQCBib29s
IFJlbmRlclRoZW1lV2luQ0U6OnBhaW50U2xpZGVyVGh1bWIoCiB7CiAgICAgYm9vbCByYyA9IFJl
bmRlclRoZW1lOjpwYWludFNsaWRlclRodW1iKG8sIGksIHIpOwogICAgIGkuY29udGV4dC0+c2F2
ZSgpOwotICAgIGkuY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBEZXZpY2VD
b2xvclNwYWNlKTsKLSAgICBpLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIERl
dmljZUNvbG9yU3BhY2UpOworICAgIGkuY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpLmNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2lmIEVOQUJMRShWSURFTykKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnRQYXJlbnQoby0+
bm9kZSgpKTsKICAgICBpZiAobWVkaWFFbGVtZW50KSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCB2b2lkIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNhbGN1bGF0ZVRyYW5zCiAgICAgfQog
fQogCi1ib29sIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNv
bHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBJbWFnZUNv
bG9yU3BhY2UgY29sb3JTcGFjZSkKK2Jvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdWZmZXIsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBJbnRTaXplIGltYWdlU2l6
ZShyb3VuZGVkSW1hZ2VCdWZmZXJTaXplKGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgp
KSk7CiAgICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFnZVNpemUoU1ZHSW1hZ2VCdWZmZXJUb29sczo6
cm91bmRlZEltYWdlQnVmZmVyU2l6ZShhYnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5oCShyZXZpc2lvbiA3MDE0MikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0ltYWdlQnVmZmVyVG9vbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiAKIGNsYXNzIFNWR0ltYWdl
QnVmZmVyVG9vbHMgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBi
b29sIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFn
ZUJ1ZmZlcj4mLCBJbWFnZUNvbG9yU3BhY2UpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xv
clNwYWNlKTsKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciosIFJlbmRlck9iamVjdCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHN0
YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZEFi
c29sdXRlVGFyZ2V0UmVjdCwgT3duUHRyPEltYWdlQnVmZmVyPiYpOwogCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2
aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCB0ZXh0U2l6ZUFkanVzdChSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHRTaXplQWRqdXN0KCkpCiAgICAgLCByZXNpemUoUmVuZGVyU3R5bGU6
OmluaXRpYWxSZXNpemUoKSkKICAgICAsIHVzZXJTZWxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxV
c2VyU2VsZWN0KCkpCi0gICAgLCBjb2xvclNwYWNlKERldmljZUNvbG9yU3BhY2UpCisgICAgLCBj
b2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgLCBzcGVhayhTcGVha05vcm1hbCkK
ICAgICAsIGh5cGhlbnMoSHlwaGVuc01hbnVhbCkKIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXR0ci5o
IgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgpA
QCAtMTM0LDcgKzEzNSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxl
bWUKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QocmVuZGVyZXItPm9iamVjdEJvdW5kaW5nQm94KCkpOwotICAgICAg
ICBtX3RhcmdldEltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwg
TGluZWFyUkdCKTsKKyAgICAgICAgbV90YXJnZXRJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
dGFyZ2V0UmVjdC5zaXplKCksIENvbG9yU3BhY2VMaW5lYXJSR0IpOwogCiAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgICAgIFNWR0ltYWdlQnVmZmVy
VG9vbHM6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKG1fdGFyZ2V0SW1hZ2UuZ2V0KCksIHJl
bmRlcmVyLCBjb250ZW50VHJhbnNmb3JtYXRpb24pOwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCkpOwogICAgICAgICBpZiAoIWJ1ZmZlcikg
Ly8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIERldmljZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgp
LCByZWN0KCksIHJlY3QoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgICAgIG1fZnJhbWVDYWNoZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7CiAgICAgfQog
ICAgIHJldHVybiBtX2ZyYW1lQ2FjaGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlz
aW9uIDcwMTQyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEZFSW1hZ2U6OmFwcGx5KEZp
bHRlciogZmlsdGVyKQogICAgIEludFBvaW50IHBhaW50TG9jYXRpb24gPSBhYnNvbHV0ZVBhaW50
UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgZGVzdFJlY3QubW92ZSgtcGFpbnRMb2NhdGlvbi54KCks
IC1wYWludExvY2F0aW9uLnkoKSk7CiAKLSAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2UobV9p
bWFnZS5nZXQoKSwgRGV2aWNlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIGZp
bHRlckNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCkluZGV4OiBX
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gNzAxNDIpCisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVyZ2UgQ29sb3JT
cGFjZSBhbmQgSW1hZ2VDb2xvclNwYWNlIGVudW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkyMgorCisgICAgICAgIFJlbmFtZWQgQ29sb3JTcGFj
ZSBlbnVtIGVudHJpZXMgRGV2aWNlQ29sb3JTcGFjZSBhbmQgc1JHQkNvbG9yU3BhY2UgdG8gQ29s
b3JTcGFjZURldmljZVJHQiBhbmQgQ29sb3JTcGFjZVNSR0IKKyAgICAgICAgdG8gZm9sbG93IHdl
YmtpdCBzdHlsZSBydWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RmluZEluZGljYXRvcjo6ZHJhdyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZp
bmRQYWdlT3ZlcmxheTo6ZHJhd1JlY3QpOgorCiAyMDEwLTEwLTIwICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiA3MDE0MikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsOSAr
MTQ4LDkgQEAgdm9pZCBGaW5kSW5kaWNhdG9yOjpkcmF3KEdyYXBoaWNzQ29udGV4dAogCiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CiAgICAgICAgIEZsb2F0UmVjdCBvdXRlclBhdGhS
ZWN0ID0gaW5mbGF0ZVJlY3QodGV4dFJlY3QsIGhvcml6b250YWxPdXRzZXRUb0NlbnRlck9mTGln
aHRCb3JkZXIsIHZlcnRpY2FsT3V0c2V0VG9DZW50ZXJPZkxpZ2h0Qm9yZGVyKTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93
T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIHNoYWRvd0NvbG9yKCksIHNSR0JDb2xvclNwYWNl
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zm
c2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIHNoYWRvd0NvbG9yKCksIENv
bG9yU3BhY2VTUkdCKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmFkZFBhdGgocGF0aFdpdGhS
b3VuZGVkUmVjdChvdXRlclBhdGhSZWN0LCBjb3JuZXJSYWRpdXMpKTsKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldEZpbGxDb2xvcihsaWdodEJvcmRlckNvbG9yKCksIERldmljZUNvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGxpZ2h0Qm9yZGVyQ29s
b3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxs
UGF0aCgpOwogICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kUGFnZU92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRQYWdlT3ZlcmxheS5jcHAJKHJldmlzaW9u
IDcwMTQyKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZFBhZ2VPdmVybGF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBGaW5kUGFnZU92ZXJs
YXk6OmRyYXdSZWN0KEdyYXBoaWNzQwogICAgIGdyYXBoaWNzQ29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAKICAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kLgot
ICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChwYWludFJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5k
Q29sb3IoKSwgc1JHQkNvbG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChw
YWludFJlY3QsIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZVNSR0IpOwogCiAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93
KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1
cywgQ29sb3I6OmJsYWNrLCBzUkdCQ29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0Js
dXJSYWRpdXMsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZVNSR0IpOwogCi0gICAgZ3JhcGhpY3ND
b250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIHNSR0JDb2xvclNwYWNlKTsKKyAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZVNSR0Ip
OwogCiAgICAgLy8gRHJhdyB3aGl0ZSBmcmFtZXMgYXJvdW5kIHRoZSBob2xlcy4KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CkBAIC0xMzAsNyArMTMwLDcg
QEAgdm9pZCBGaW5kUGFnZU92ZXJsYXk6OmRyYXdSZWN0KEdyYXBoaWNzQwogICAgIGdyYXBoaWNz
Q29udGV4dC5yZXN0b3JlKCk7CiAKICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzUkdCQ29sb3JT
cGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQsIENvbG9yU3BhY2VTUkdCKTsKIAogICAgIC8vIENsZWFyIG91dCB0aGUgaG9sZXMuCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTAtMjAgIERpcmsgU2NodWx6ZSAgPGtyaXRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNZXJnZSBDb2xvclNwYWNlIGFuZCBJbWFnZUNvbG9yU3BhY2UgZW51bXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTIyCisKKyAgICAgICAg
UmVuYW1lZCBDb2xvclNwYWNlIGVudW0gZW50cmllcyBEZXZpY2VDb2xvclNwYWNlIGFuZCBzUkdC
Q29sb3JTcGFjZSB0byBDb2xvclNwYWNlRGV2aWNlUkdCIGFuZCBDb2xvclNwYWNlU1JHQgorICAg
ICAgICB0byBmb2xsb3cgd2Via2l0IHN0eWxlIHJ1bGVzLgorCisgICAgICAgICogc3JjL1dlYkZv
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRm9udEltcGw6OmRyYXdUZXh0KToKKyAg
ICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJ
bXBsOjpwYWludFdpdGhDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMpOgor
ICAgICAgICAqIHRlc3RzL1RyYW5zcGFyZW5jeVdpblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisKIDIwMTAtMTAtMTkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGb250SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGb250SW1wbC5jcHAJKHJldmlzaW9uIDcwMTQyKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGb250SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIFdlYkZvbnRJbXBsOjpkcmF3VGV4dChXZWJDYW52YXMqIGNhCiAjZW5kaWYKIAogICAg
IGdjLnNhdmUoKTsKLSAgICBnYy5zZXRGaWxsQ29sb3IoY29sb3IsIERldmljZUNvbG9yU3BhY2Up
OworICAgIGdjLnNldEZpbGxDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
Z2MuY2xpcChXZWJDb3JlOjpGbG9hdFJlY3QoY2xpcCkpOwogICAgIG1fZm9udC5kcmF3VGV4dCgm
Z2MsIHJ1biwgbGVmdEJhc2VsaW5lLCBmcm9tLCB0byk7CiAgICAgZ2MucmVzdG9yZSgpOwpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
ODgsNyArMTg4OCw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpwYWludFdpdGhDb250ZXh0KEdyYXAK
ICAgICAgICAgZnJhbWVWaWV3KCktPnBhaW50KCZnYywgZGlydHlSZWN0KTsKICAgICAgICAgbV9m
cmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdOb2RlSGlnaGxpZ2h0KGdj
KTsKICAgICB9IGVsc2UKLSAgICAgICAgZ2MuZmlsbFJlY3QoZGlydHlSZWN0LCBDb2xvcjo6d2hp
dGUsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgZ2MucmVzdG9yZSgpOwogfQog
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gNzAxNDIpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTg2LDcgKzk4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmEK
ICAgICAgICAgZ2Muc2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7CiAgICAgICAgIC8vIFVz
ZSBpbnZlcnRSZWN0IGluIG5leHQgbGluZSwgc28gdGhhdCB0cmFuc2Zvcm0gYWJvdmUgaW52ZXJ0
cyBpdCBiYWNrIHRvCiAgICAgICAgIC8vIGRlc2lyZWQgZGVzdGluYXRpb24gcmVjdC4KLSAgICAg
ICAgZ2MuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBEZXZpY2VDb2xvclNwYWNl
LCBpbnZlcnRSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICBnYy5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGludmVydFJlY3QubG9jYXRpb24o
KSk7CiAgICAgICAgIGdjLnJlc3RvcmUoKTsKICAgICB9CiB9CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RyYW5zcGFyZW5jeVdpblRlc3QuY3BwCShyZXZpc2lvbiA3MDE0MikKKysr
IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmFuc3BhcmVuY3lXaW5UZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE1LDEwICszMTUsMTAgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIE9wYXF1ZUNv
bXBvc2l0ZUxheQogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc3JjKEltYWdlQnVmZmVyOjpjcmVh
dGUoSW50U2l6ZSgxNiwgMTYpLCBEZXZpY2VSR0IpKTsKIAogICAgIEZsb2F0UmVjdCBmdWxsUmVj
dCgwLCAwLCAxNiwgMTYpOwotICAgIHNyYy0+Y29udGV4dCgpLT5maWxsUmVjdChmdWxsUmVjdCwg
cmVkLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QoZnVs
bFJlY3QsIHJlZCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgc3JjLT5jb250ZXh0KCktPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41KTsKICAgICBGbG9hdFJlY3QgcmlnaHRIYWxmKDgsIDAs
IDgsIDE2KTsKLSAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QocmlnaHRIYWxmLCBncmVlbiwg
RGV2aWNlQ29sb3JTcGFjZSk7CisgICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KHJpZ2h0SGFs
ZiwgZ3JlZW4sIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gTWFrZSBhIHRyYW5zcGFy
ZW5jeSBsYXllciBpbnNldCBieSBvbmUgcGl4ZWwsIGFuZCBmaWxsIGl0IGluc2V0IGJ5CiAgICAg
Ly8gYW5vdGhlciBwaXhlbCB3aXRoIDUwJSBibGFjay4KQEAgLTMzMCw3ICszMzAsNyBAQCBURVNU
KFRyYW5zcGFyZW5jeVdpbiwgT3BhcXVlQ29tcG9zaXRlTGF5CiAgICAgICAgICAgICAgICAgICAg
IEludFJlY3QoMSwgMSwgMTQsIDE0KSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGlubmVyKDIsIDIs
IDEyLCAxMik7Ci0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KGlubmVyLCBDb2xv
cigweDdmMDAwMDAwKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGhlbHBlci5jb250ZXh0
KCktPmZpbGxSZWN0KGlubmVyLCBDb2xvcigweDdmMDAwMDAwKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIC8vIFRoZXNlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGF5
ZXIsIHdoaXNoIGlzIGluc2V0IGJ5IDF4MQogICAgICAgICAvLyBwaXhlbHMgZnJvbSB0aGUgdG9w
IGxlZnQuIFNvIHdlJ3JlIGFjdHVhbGx5IGNsZWFyaW5nICgyLCAyKSBhbmQKICAgICAgICAgLy8g
KDEzLDEzKSwgd2hpY2ggYXJlIHRoZSBleHRyZW1lIGNvcm5lcnMgb2YgdGhlIGJsYWNrIGFyZWEg
KGFuZCB3aGljaApAQCAtMzY4LDcgKzM2OCw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBUcmFu
c2xhdGVPcGFxdWVDb20KICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNyYyhJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKEludFNpemUoMTYsIDE2KSwgRGV2aWNlUkdCKSk7CiAgICAgQ29sb3Igd2hpdGUoMHhG
RkZGRkZGRik7CiAgICAgRmxvYXRSZWN0IGZ1bGxSZWN0KDAsIDAsIDE2LCAxNik7Ci0gICAgc3Jj
LT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1bGxSZWN0LCB3aGl0ZSwgRGV2aWNlQ29sb3JTcGFjZSk7
CisgICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1bGxSZWN0LCB3aGl0ZSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAKICAgICAvLyBTY3JvbGwgZG93biBieSA4IChjb29yZGluYXRlIHN5c3Rl
bSBnb2VzIHVwKS4KICAgICBzcmMtPmNvbnRleHQoKS0+c2F2ZSgpOwpAQCAtMzg4LDcgKzM4OCw3
IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBUcmFuc2xhdGVPcGFxdWVDb20KICAgICAgICAgLy8g
RHJhdyBhIHJlZCBwaXhlbCBhdCAoMTUsIDE1KS4gVGhpcyBzaG91bGQgYmUgdGhlIGF0ICgxNSwg
NykgYWZ0ZXIKICAgICAgICAgLy8gdGhlIHRyYW5zZm9ybS4KICAgICAgICAgRmxvYXRSZWN0IGJv
dHRvbVJpZ2h0KDE1LCAxNSwgMSwgMSk7Ci0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxS
ZWN0KGJvdHRvbVJpZ2h0LCBncmVlbiwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGhlbHBl
ci5jb250ZXh0KCktPmZpbGxSZWN0KGJvdHRvbVJpZ2h0LCBncmVlbiwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgICAgIGhlbHBlci5jb21wb3NpdGUoKTsKICAgICB9CiAKQEAgLTQwNyw3ICs0
MDcsNyBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwgUm90YXRlT3BhcXVlQ29tcG9zCiAgICAgLy8g
VGhlIGJhY2tncm91bmQgaXMgd2hpdGUuCiAgICAgQ29sb3Igd2hpdGUoMHhGRkZGRkZGRik7CiAg
ICAgRmxvYXRSZWN0IGZ1bGxSZWN0KDAsIDAsIDE2LCAxNik7Ci0gICAgc3JjLT5jb250ZXh0KCkt
PmZpbGxSZWN0KGZ1bGxSZWN0LCB3aGl0ZSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgc3JjLT5j
b250ZXh0KCktPmZpbGxSZWN0KGZ1bGxSZWN0LCB3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICAvLyBSb3RhdGUgdGhlIGltYWdlIGJ5IDkwIGRlZ3JlZXMuIFRoaXMgbWF0cml4IGlz
IHRoZSBzYW1lIGFzCiAgICAgLy8gY3c5MC5yb3RhdGUoOTApOyBidXQgYXZvaWRzIHJvdW5kaW5n
IGVycm9ycy4gUm91bmRpbmcgZXJyb3JzIGNhbiBjYXVzZQpAQCAtNDI1LDcgKzQyNSw3IEBAIFRF
U1QoVHJhbnNwYXJlbmN5V2luLCBSb3RhdGVPcGFxdWVDb21wb3MKICAgICBzcmMtPmNvbnRleHQo
KS0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigwLjUpOwogICAgIEZsb2F0UmVjdCBibGFja1JlY3Qo
MCwgLTksIDE2LCAyKTsKICAgICBDb2xvciBibGFjaygweEZGMDAwMDAwKTsKLSAgICBzcmMtPmNv
bnRleHQoKS0+ZmlsbFJlY3QoYmxhY2tSZWN0LCBibGFjaywgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGJsYWNrUmVjdCwgYmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCiAgICAgLy8gTm93IGRyYXcgNTAlIHJlZCBzcXVhcmUuCiAgICAgewpAQCAt
NDM5LDcgKzQzOSw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBSb3RhdGVPcGFxdWVDb21wb3MK
ICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCgxLCAtMTUsIDE0LCAxNCkpOwogCiAgICAgICAg
IC8vIEZpbGwgd2l0aCByZWQuCi0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KGhl
bHBlci5kcmF3UmVjdCgpLCBDb2xvcigweDdmN2YwMDAwKSwgRGV2aWNlQ29sb3JTcGFjZSk7Cisg
ICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KGhlbHBlci5kcmF3UmVjdCgpLCBDb2xv
cigweDdmN2YwMDAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGNsZWFyVG9wTGF5
ZXJBbHBoYUNoYW5uZWwoaGVscGVyLmNvbnRleHQoKSk7CiAgICAgICAgIGhlbHBlci5jb21wb3Np
dGUoKTsKICAgICB9CkBAIC00ODYsMTAgKzQ4NiwxMCBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwg
VHJhbnNsYXRlU2NhbGVPcGFxCiAgICAgLy8gVGhlIGJhY2tncm91bmQgaXMgd2hpdGUgb24gdG9w
IHdpdGggcmVkIG9uIGJvdHRvbS4KICAgICBDb2xvciB3aGl0ZSgweEZGRkZGRkZGKTsKICAgICBG
bG9hdFJlY3QgdG9wUmVjdCgwLCAwLCAxNiwgOCk7Ci0gICAgc3JjLT5jb250ZXh0KCktPmZpbGxS
ZWN0KHRvcFJlY3QsIHdoaXRlLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzcmMtPmNvbnRleHQo
KS0+ZmlsbFJlY3QodG9wUmVjdCwgd2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIENv
bG9yIHJlZCgweEZGRkYwMDAwKTsKICAgICBGbG9hdFJlY3QgYm90dG9tUmVjdCgwLCA4LCAxNiwg
OCk7Ci0gICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGJvdHRvbVJlY3QsIHJlZCwgRGV2aWNl
Q29sb3JTcGFjZSk7CisgICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGJvdHRvbVJlY3QsIHJl
ZCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBzcmMtPmNvbnRleHQoKS0+c2F2ZSgpOwog
CkBAIC01MTksNyArNTE5LDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFRyYW5zbGF0ZVNjYWxl
T3BhcQogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KDEsIC0xNSwgMTQsIDE0KSk7CiAKICAg
ICAgICAgLy8gRmlsbCB3aXRoIHJlZC4KLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJl
Y3QoaGVscGVyLmRyYXdSZWN0KCksIENvbG9yKDB4N2Y3ZjAwMDApLCBEZXZpY2VDb2xvclNwYWNl
KTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QoaGVscGVyLmRyYXdSZWN0KCks
IENvbG9yKDB4N2Y3ZjAwMDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY2xlYXJU
b3BMYXllckFscGhhQ2hhbm5lbChoZWxwZXIuY29udGV4dCgpKTsKICAgICAgICAgaGVscGVyLmNv
bXBvc2l0ZSgpOwogICAgIH0KQEAgLTUzMSw3ICs1MzEsNyBAQCBURVNUKFRyYW5zcGFyZW5jeVdp
biwgU2NhbGUpCiAgICAgLy8gQ3JlYXRlIGFuIG9wYXF1ZSB3aGl0ZSBidWZmZXIuCiAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBzcmMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShJbnRTaXplKDE2LCAxNiks
IERldmljZVJHQikpOwogICAgIEZsb2F0UmVjdCBmdWxsQnVmZmVyKDAsIDAsIDE2LCAxNik7Ci0g
ICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1bGxCdWZmZXIsIENvbG9yOjp3aGl0ZSwgRGV2
aWNlQ29sb3JTcGFjZSk7CisgICAgc3JjLT5jb250ZXh0KCktPmZpbGxSZWN0KGZ1bGxCdWZmZXIs
IENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBTY2FsZSBieSAy
eC4KICAgICBzcmMtPmNvbnRleHQoKS0+c2F2ZSgpOwpAQCAtNTg2LDEzICs1ODYsMTMgQEAgVEVT
VChUcmFuc3BhcmVuY3lXaW4sIFNjYWxlVHJhbnNwYXJlbmN5KQogICAgIC8vIENyZWF0ZSBhbiBv
cGFxdWUgd2hpdGUgYnVmZmVyLgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc3JjKEltYWdlQnVm
ZmVyOjpjcmVhdGUoSW50U2l6ZSgxNiwgMTYpLCBEZXZpY2VSR0IpKTsKICAgICBGbG9hdFJlY3Qg
ZnVsbEJ1ZmZlcigwLCAwLCAxNiwgMTYpOwotICAgIHNyYy0+Y29udGV4dCgpLT5maWxsUmVjdChm
dWxsQnVmZmVyLCBDb2xvcjo6d2hpdGUsIERldmljZUNvbG9yU3BhY2UpOworICAgIHNyYy0+Y29u
dGV4dCgpLT5maWxsUmVjdChmdWxsQnVmZmVyLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogCiAgICAgLy8gTWFrZSBhbm90aGVyIGxheWVyICh3aGljaCBkdXBsaWNhdGVzIGhv
dyBXZWJLaXQgd2lsbCBtYWtlIHRoaXMpLiBXZSBmaWxsCiAgICAgLy8gdGhlIHRvcCBoYWxmIHdp
dGggcmVkLCBhbmQgaGF2ZSB0aGUgbGF5ZXIgYmUgNTAlIG9wYXF1ZS4KICAgICBzcmMtPmNvbnRl
eHQoKS0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigwLjUpOwogICAgIEZsb2F0UmVjdCB0b3BIYWxm
KDAsIDAsIDE2LCA4KTsKLSAgICBzcmMtPmNvbnRleHQoKS0+ZmlsbFJlY3QodG9wSGFsZiwgQ29s
b3IoMHhGRkZGMDAwMCksIERldmljZUNvbG9yU3BhY2UpOworICAgIHNyYy0+Y29udGV4dCgpLT5m
aWxsUmVjdCh0b3BIYWxmLCBDb2xvcigweEZGRkYwMDAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICAvLyBTY2FsZSBieSAyeC4KICAgICBzcmMtPmNvbnRleHQoKS0+c2F2ZSgpOwpAQCAt
NjA5LDcgKzYwOSw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBTY2FsZVRyYW5zcGFyZW5jeSkK
ICAgICAgICAgICAgICAgICAgICAgVHJhbnNwYXJlbmN5V2luOjpTY2FsZVRyYW5zZm9ybSwKICAg
ICAgICAgICAgICAgICAgICAgSW50UmVjdCgxLCAxLCA2LCA2KSk7CiAKLSAgICAgICAgaGVscGVy
LmNvbnRleHQoKS0+ZmlsbFJlY3QoaGVscGVyLmRyYXdSZWN0KCksIENvbG9yKDB4N2YwMDAwMDAp
LCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3Qo
aGVscGVyLmRyYXdSZWN0KCksIENvbG9yKDB4N2YwMDAwMDApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgY2xlYXJUb3BMYXllckFscGhhQ2hhbm5lbChoZWxwZXIuY29udGV4dCgpKTsK
ICAgICAgICAgaGVscGVyLmNvbXBvc2l0ZSgpOwogICAgIH0KQEAgLTY1OCwyMSArNjU4LDIxIEBA
IFRFU1QoVHJhbnNwYXJlbmN5V2luLCBUZXh0KQogICAgICAgICAvLyBXcml0ZSBzZXZlcmFsIGRp
ZmZlcmVudCBzcXVhcmVzIHRvIHNpbXVsYXRlIENsZWFyVHlwZS4gVGhlc2Ugc2hvdWxkCiAgICAg
ICAgIC8vIGFsbCByZWR1Y2UgdG8gMi8zIGNvdmVyYWdlLgogICAgICAgICBGbG9hdFJlY3QgcGl4
ZWwoMCwgMCwgMSwgMSk7Ci0gICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KHBpeGVs
LCAweEZGRkYwMDAwLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQo
KS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkZGRjAwMDAsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAg
ICAgICBwaXhlbC5tb3ZlKDEuMGYsIDAuMGYpOwotICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5m
aWxsUmVjdChwaXhlbCwgMHhGRjAwRkYwMCwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGhl
bHBlci5jb250ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZGMDBGRjAwLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKICAgICAgICAgcGl4ZWwubW92ZSgxLjBmLCAwLjBmKTsKLSAgICAgICAgaGVscGVy
LmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkYwMDAwRkYsIERldmljZUNvbG9yU3BhY2Up
OworICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwgMHhGRjAwMDBGRiwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHBpeGVsLm1vdmUoMS4wZiwgMC4wZik7Ci0g
ICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZGMDA4MDgwLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWws
IDB4RkYwMDgwODAsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBwaXhlbC5tb3ZlKDEu
MGYsIDAuMGYpOwotICAgICAgICBoZWxwZXIuY29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwgMHhG
RjgwMDA4MCwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGhlbHBlci5jb250ZXh0KCktPmZp
bGxSZWN0KHBpeGVsLCAweEZGODAwMDgwLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAg
cGl4ZWwubW92ZSgxLjBmLCAwLjBmKTsKLSAgICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJl
Y3QocGl4ZWwsIDB4RkY4MDgwMDAsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICBoZWxwZXIu
Y29udGV4dCgpLT5maWxsUmVjdChwaXhlbCwgMHhGRjgwODAwMCwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAKICAgICAgICAgLy8gVHJ5IG9uZSB3aXRoIDEwMCUgY292ZXJhZ2UgKG9wYXF1ZSBibGFj
aykuCiAgICAgICAgIHBpeGVsLm1vdmUoMS4wZiwgMC4wZik7Ci0gICAgICAgIGhlbHBlci5jb250
ZXh0KCktPmZpbGxSZWN0KHBpeGVsLCAweEZGMDAwMDAwLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAg
ICAgICAgaGVscGVyLmNvbnRleHQoKS0+ZmlsbFJlY3QocGl4ZWwsIDB4RkYwMDAwMDAsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIC8vIE5vdyBtZXNzIHdpdGggdGhlIGFscGhhIGNo
YW5uZWwuCiAgICAgICAgIGNsZWFyVG9wTGF5ZXJBbHBoYUNoYW5uZWwoaGVscGVyLmNvbnRleHQo
KSk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxr
cml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWVyZ2UgQ29sb3JTcGFjZSBhbmQgSW1hZ2VDb2xvclNwYWNlIGVudW1zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkyMgorCisgICAg
ICAgIFJlbmFtZWQgQ29sb3JTcGFjZSBlbnVtIGVudHJpZXMgRGV2aWNlQ29sb3JTcGFjZSBhbmQg
c1JHQkNvbG9yU3BhY2UgdG8gQ29sb3JTcGFjZURldmljZVJHQiBhbmQgQ29sb3JTcGFjZVNSR0IK
KyAgICAgICAgdG8gZm9sbG93IHdlYmtpdCBzdHlsZSBydWxlcy4KKworICAgICAgICAqIE1pc2Mv
V2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0
UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21vb3RoaW5nOl0pOgorCiAyMDEwLTEw
LTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0
cmluZ0V4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW0JKHJldmlzaW9uIDcwMTQyKQorKysgV2ViS2l0L21hYy9NaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIC0gKHZvaWQp
X3dlYl9kcmF3QXRQb2ludDooTlNQb2ludClwb2ludCAKICAgICAgICAgQ0dGbG9hdCBibHVlOwog
ICAgICAgICBDR0Zsb2F0IGFscGhhOwogICAgICAgICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29s
b3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3Jl
ZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFs
cGhhICogMjU1KSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwg
YWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICB3ZWJDb3JlRm9u
dC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZs
aXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKSW5kZXg6IFdlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3
MDE0MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTAtMTAtMjAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSBDb2xvclNw
YWNlIGFuZCBJbWFnZUNvbG9yU3BhY2UgZW51bXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTIyCisKKyAgICAgICAgUmVuYW1lZCBDb2xvclNwYWNl
IGVudW0gZW50cmllcyBEZXZpY2VDb2xvclNwYWNlIGFuZCBzUkdCQ29sb3JTcGFjZSB0byBDb2xv
clNwYWNlRGV2aWNlUkdCIGFuZCBDb2xvclNwYWNlU1JHQgorICAgICAgICB0byBmb2xsb3cgd2Vi
a2l0IHN0eWxlIHJ1bGVzLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChIVURCdXR0b246OmRyYXcpOgorICAgICAgICAoSFVEU2xpZGVyOjpkcmF3
KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRyYXcpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViRHJhZ0NsaWVu
dDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogV2ViS2l0R3JhcGhpY3MuY3Bw
OgorICAgICAgICAoV2ViRHJhd1RleHQpOgorCiAyMDEwLTEwLTE4ICBQYXZlbCBQb2Rpdmlsb3Yg
IDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KSW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAko
cmV2aXNpb24gNzAxNDIpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgSFVEQnV0dG9uOjpIVURCdXR0
b24oSFVEQnV0dG9uVHlwZSB0eXBlLAogdm9pZCBIVURCdXR0b246OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIEltYWdlKiBpbWFnZSA9IChtX3Nob3dBbHRCdXR0b24gJiYg
bV9idXR0b25JbWFnZUFsdCkgPyBtX2J1dHRvbkltYWdlQWx0LmdldCgpIDogbV9idXR0b25JbWFn
ZS5nZXQoKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgRGV2aWNlQ29sb3JTcGFjZSwg
bV9yZWN0LmxvY2F0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBtX3JlY3QubG9jYXRpb24oKSk7CiB9CiAKIEhVRFNsaWRlcjo6SFVEU2xp
ZGVyKEhVRFNsaWRlckJ1dHRvblNoYXBlIHNoYXBlLCBpbnQgYnV0dG9uU2l6ZSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKQEAgLTEzMiwxMSArMTMyLDExIEBAIHZvaWQgSFVEU2xpZGVyOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY28KIHsKICAgICAvLyBEcmF3IGd1dHRlcgogICAgIEludFNpemUgcmFk
aXVzKG1fcmVjdC5oZWlnaHQoKSAvIDIsIG1fcmVjdC5oZWlnaHQoKSAvIDIpOwotICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
LCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciksIERldmljZUNvbG9yU3BhY2UpOworICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KG1fcmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVz
LCBDb2xvcihzbGlkZXJHdXR0ZXJDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAg
Ly8gRHJhdyBidXR0b24KLSAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKHNsaWRlckJ1
dHRvbkNvbG9yKSwgRGV2aWNlQ29sb3JTcGFjZSk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3Ioc2xpZGVyQnV0dG9uQ29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yKHNsaWRlckJ1dHRvbkNvbG9yKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Ioc2xpZGVyQnV0dG9uQ29sb3Ip
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIGlmIChtX2J1dHRvblNoYXBlID09IFJvdW5k
QnV0dG9uKSB7CiAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UoSW50UmVjdChtX3JlY3QubG9j
YXRpb24oKS54KCkgKyBtX2J1dHRvblBvc2l0aW9uLCBtX3JlY3QubG9jYXRpb24oKS55KCkgLSAo
bV9idXR0b25TaXplIC0gbV9yZWN0LmhlaWdodCgpKSAvIDIsIG1fYnV0dG9uU2l6ZSwgbV9idXR0
b25TaXplKSk7CkBAIC00ODksOSArNDg5LDkgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpkcmF3KCkKICAgICBJbnRTaXplIGlubmVyUmFkaXVzKGJvcmRlclJhZGl1cyAtIGJvcmRl
clRoaWNrbmVzcywgYm9yZGVyUmFkaXVzIC0gYm9yZGVyVGhpY2tuZXNzKTsKICAgICBJbnRSZWN0
IGlubmVyUmVjdChib3JkZXJUaGlja25lc3MsIGJvcmRlclRoaWNrbmVzcywgd2luZG93V2lkdGgg
LSBib3JkZXJUaGlja25lc3MgKiAyLCB3aW5kb3dIZWlnaHQgLSBib3JkZXJUaGlja25lc3MgKiAy
KTsKIAotICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KG91dGVyUmVjdCwgb3V0ZXJSYWRpdXMs
IG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIENvbG9yKGJvcmRlckNvbG9y
KSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qob3V0ZXJS
ZWN0LCBvdXRlclJhZGl1cywgb3V0ZXJSYWRpdXMsIG91dGVyUmFkaXVzLCBvdXRlclJhZGl1cywg
Q29sb3IoYm9yZGVyQ29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICBjb250ZXh0LmZpbGxSb3Vu
ZGVkUmVjdChpbm5lclJlY3QsIGlubmVyUmFkaXVzLCBpbm5lclJhZGl1cywgaW5uZXJSYWRpdXMs
IGlubmVyUmFkaXVzLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3IpLCBEZXZpY2VDb2xvclNwYWNlKTsK
KyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChpbm5lclJlY3QsIGlubmVyUmFkaXVzLCBpbm5l
clJhZGl1cywgaW5uZXJSYWRpdXMsIGlubmVyUmFkaXVzLCBDb2xvcihiYWNrZ3JvdW5kQ29sb3Ip
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIC8vIERyYXcgdGhlIHdpZGdldHMKICAgICBt
X3BsYXlQYXVzZUJ1dHRvbi5kcmF3KGNvbnRleHQpOwpAQCAtNTI2LDEzICs1MjYsMTMgQEAgdm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICAvLyBMZWZ0IHN0cmluZwog
ICAgIHMgPSB0aW1lVG9TdHJpbmcoY3VycmVudFRpbWUoKSk7CiAgICAgVGV4dFJ1biBsZWZ0VGV4
dChzKTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0Q29sb3IpLCBEZXZpY2VD
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0Q29sb3IpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGxlZnRUZXh0
LCBJbnRQb2ludCh3aW5kb3dXaWR0aCAvIDIgLSB0aW1lU2xpZGVyV2lkdGggLyAyIC0gbWFyZ2lu
IC0gZm9udC53aWR0aChsZWZ0VGV4dCksIHdpbmRvd0hlaWdodCAtIG1hcmdpbiAtIHNsaWRlckhl
aWdodCAvIDIgKyBmb250LmhlaWdodCgpIC8gNCkpOwogCiAgICAgLy8gUmlnaHQgc3RyaW5nCiAg
ICAgcyA9IHRpbWVUb1N0cmluZyhjdXJyZW50VGltZSgpIC0gZHVyYXRpb24oKSk7CiAgICAgVGV4
dFJ1biByaWdodFRleHQocyk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IodGV4dENv
bG9yKSwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Io
dGV4dENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5kcmF3VGV4dChm
b250LCByaWdodFRleHQsIEludFBvaW50KHdpbmRvd1dpZHRoIC8gMiArIHRpbWVTbGlkZXJXaWR0
aCAvIDIgKyBtYXJnaW4sIHdpbmRvd0hlaWdodCAtIG1hcmdpbiAtIHNsaWRlckhlaWdodCAvIDIg
KyBmb250LmhlaWdodCgpIC8gNCkpOwogCiAgICAgLy8gQ29weSB0byB0aGUgd2luZG93CkluZGV4
OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gNzAxNDIpCisrKyBXZWJLaXQvd2luL1dlYktp
dEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgV2Vi
RHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qIGluZm8KICAgICAgICAgLy8gU2V0IHNoYWRvdyBz
ZXR0aW5nCiAgICAgICAgIGlmIChpbmZvLT5zdHJ1Y3RTaXplID09IHNpemVvZihXZWJUZXh0UmVu
ZGVySW5mbykgJiYKICAgICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZzZXQuY3ggfHwgaW5mby0+
c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIgfHwgaW5mby0+c2hhZG93Q29sb3Ip
KQotICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplKGluZm8tPnNoYWRvd09m
ZnNldC5jeCwgaW5mby0+c2hhZG93T2Zmc2V0LmN5KSwgaW5mby0+c2hhZG93Qmx1ciwgaW5mby0+
c2hhZG93Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXRT
aGFkb3coRmxvYXRTaXplKGluZm8tPnNoYWRvd09mZnNldC5jeCwgaW5mby0+c2hhZG93T2Zmc2V0
LmN5KSwgaW5mby0+c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogCiAgICAgICAgIFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZHJhd1N0
cmluZywgaW5mby0+cHQsIG1ha2VGb250KCooaW5mby0+ZGVzY3JpcHRpb24pKSwgaW5mby0+Y29s
b3IsIGluZm8tPnVuZGVybGluZWRJbmRleCk7CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZp
c2lvbiA3MDE0MikKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw3ICsyOTUsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJh
Z0NsaWVudDo6Y3JlYXRlRHJhZ0ltCiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGJhY2tncm91bmRD
b2xvcigxNDAsIDE0MCwgMTQwKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSByYWRpaShEUkFH
X0xBQkVMX1JBRElVUywgRFJBR19MQUJFTF9SQURJVVMpOwogICAgIEludFJlY3QgcmVjdCgwLCAw
LCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKTsKLSAgICBjb250ZXh0LmZp
bGxSb3VuZGVkUmVjdChyZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSwgYmFja2dyb3Vu
ZENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChy
ZWN0LCByYWRpaSwgcmFkaWksIHJhZGlpLCByYWRpaSwgYmFja2dyb3VuZENvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAKICAgICAvLyBEcmF3IHRoZSB0ZXh0CiAgICAgc3RhdGljIGNvbnN0
IENvbG9yIHRvcENvbG9yKDAsIDAsIDAsIDI1NSk7IC8vb3JpZ2luYWwgYWxwaGEgPSAwLjc1Cg==
</data>
<flag name="review"
          id="61298"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>