<?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>152000</bug_id>
          
          <creation_ts>2015-12-08 10:38:36 -0800</creation_ts>
          <short_desc>[MediaStream] MediaDeviceInfo.label must be empty unless the user has granted permission to access device</short_desc>
          <delta_ts>2015-12-23 14:53:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>152001</dependson>
    
    <dependson>152087</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147353</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-08 10:38:36 -0800</bug_when>
    <thetext>MediaDeviceInfo.label must be empty if none of the local devices are attached to an active MediaStreamTrack in the current browsing context, and if no persistent permission to access the devices has been granted to the page&apos;s origin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151118</commentid>
    <comment_count>1</comment_count>
      <attachid>267850</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-23 12:12:15 -0800</bug_when>
    <thetext>Created attachment 267850
Proposed patch.

Include label when the document has had an active media stream track.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151143</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-12-23 13:53:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/24001637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151153</commentid>
    <comment_count>3</comment_count>
      <attachid>267850</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-23 14:35:33 -0800</bug_when>
    <thetext>Comment on attachment 267850
Proposed patch.

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

Looks good. I had a couple of minor nits below.

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore::mediaStreams): Deleted. Drive-by cleanup: moved list of all streams MediaStreamRegistry.

moved list of all streams *to* MediaStreamRegistry?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:240
&gt; +    if (Document *document = downcast&lt;Document&gt;(scriptExecutionContext()))

Document* document!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151157</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-23 14:48:51 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 267850 [details]
&gt;
&gt; &gt; Source/WebCore/ChangeLog:28
&gt; &gt; +        (WebCore::mediaStreams): Deleted. Drive-by cleanup: moved list of all streams MediaStreamRegistry.
&gt; 
&gt; moved list of all streams *to* MediaStreamRegistry?
&gt; 
Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:240
&gt; &gt; +    if (Document *document = downcast&lt;Document&gt;(scriptExecutionContext()))
&gt; 
&gt; Document* document!
Oops, fixed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151158</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-23 14:53:08 -0800</bug_when>
    <thetext>Committed r194397: https://trac.webkit.org/r194397</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267850</attachid>
            <date>2015-12-23 12:12:15 -0800</date>
            <delta_ts>2015-12-23 14:53:18 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>enumerate_active_tracks_patch_4.txt</filename>
            <type>text/plain</type>
            <size>39470</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDMzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE1LTEyLTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TWVkaWFEZXZpY2VJbmZvLmxhYmVsIG11c3QgYmUgZW1wdHkgaW4gc29tZSBzaXR1YXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIwMDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIHVwZGF0ZWQgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNl
cy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHA6CisgICAgICAgIChDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8p
OiBUcmFja1NvdXJjZUluZm8gY29uc3RydWN0b3IgdGFrZXMgcGVyc2lzdGVudCBJRC4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFydCk6IElmIERvY3VtZW50IGhh
ZCBhbiBhY3RpdmUgc3RyZWFtIHRyYWNrLCBkb24ndCBib3RoZXIKKyAgICAgICAgICBjaGVja2lu
ZyBmb3IgYSBwZXJzaXN0ZW50IHBlcm1pc3Npb24gdG8gYWNjZXNzIGRldmljZXMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZUNoZWNrKTogbV9oYXNV
c2VyTWVkaWFQZXJtaXNzaW9uIC0+IG1fY2FuU2hvd0xhYmVscy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmdldFRyYWNrU291cmNlcyk6IE5ldywgZmFjdG9yZWQgb3V0
IG9mIGRpZENvbXBsZXRlQ2hlY2sgc28gaXQKKyAgICAgICAgICBjYW4gYmUgY2FsbGVkIHdoZW4g
d2UgZG9uJ3QgbmVlZCB0byBjaGVjayBwZXJtaXNzaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUmVxdWVzdCk6IG1faGFzVXNlck1lZGlhUGVy
bWlzc2lvbiAtPiBtX2NhblNob3dMYWJlbHMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNSZXF1ZXN0Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0
cmVhbSk6IENhbGwgc2V0SXNBY3RpdmUuIFJlZ2lzdGVyIG5ldyBzdHJlYW0gd2l0aCBNZWRpYVN0
cmVhbVJlZ2lzdHJ5LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06On5NZWRpYVN0cmVh
bSk6IFVucmVnaXN0ZXIgc3RyZWFtIHdpdGggTWVkaWFTdHJlYW1SZWdpc3RyeS4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpzZXRJc0FjdGl2ZSk6IE5ldy4gU2V0IG1faXNBY3RpdmUg
YW5kIGNhbGwgRG9jdW1lbnQgaWYgc3RyZWFtIGlzIGFjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKTogQ2FsbCBzZXRJc0FjdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZWdpc3RyeSk6IE1lZGlhU3RyZWFt
UmVnaXN0cnk6OnJlZ2lzdHJ5IC0+IE1lZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om1lZGlhU3RyZWFtcyk6IERlbGV0ZWQuIERyaXZlLWJ5IGNsZWFudXA6IG1v
dmVkIGxpc3Qgb2YgYWxsIHN0cmVhbXMgTWVkaWFTdHJlYW1SZWdpc3RyeS4KKyAgICAgICAgKFdl
YkNvcmU6OnJlZ2lzdGVyTWVkaWFTdHJlYW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnVu
UmVnaXN0ZXJNZWRpYVN0cmVhbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06Omxvb2tVcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnNldFJl
Z2lzdHJ5KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oOgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZCk6IFJl
bmFtZWQgZnJvbSAicmVnaXN0cnkiLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1SZWdp
c3RyeTo6TWVkaWFTdHJlYW1SZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVJlZ2lzdHJ5Ojpsb29rVXApOiBNb3ZlZCBoZXJlIGZyb20gTWVkaWFTdHJlYW0uCisgICAgICAg
IChXZWJDb3JlOjptZWRpYVN0cmVhbXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtUmVnaXN0cnk6OnJlZ2lzdGVyU3RyZWFtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyU3RyZWFtKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5Lmg6CisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRIYXNB
Y3RpdmVNZWRpYVN0cmVhbVRyYWNrKTogTmV3LCBzZXQgbV9oYXNIYWRBY3RpdmVNZWRpYVN0cmVh
bVRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0hhZEFjdGl2ZU1lZGlhU3Ry
ZWFtVHJhY2spOiBOZXcsIHJldHVybiBtX2hhc0hhZEFjdGl2ZU1lZGlhU3RyZWFtVHJhY2suCisK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKTogTWVkaWFTdHJlYW06Omxvb2tVcCAtPiBN
ZWRpYVN0cmVhbVJlZ2lzdHJ5OjpzaGFyZWQoKS5sb29rVXAuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKTogVGFrZSB0cmFjayBwZXJz
aXN0ZW50IElELgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tTb3VyY2VJbmZvOjpwZXJzaXN0ZW50
SWQpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpUcmFja1NvdXJjZUluZm86OlRyYWNrU291cmNl
SW5mbyk6IFRha2UgdHJhY2sgcGVyc2lzdGVudCBJRC4KKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNvdXJjZVdpdGhVSUQpOiBU
cmFja1NvdXJjZUluZm86OmNyZWF0ZSB0YWtlcyBwZXJzaXN0ZW50IElELgorCisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VXaXRoVUlEKTogRGl0dG8u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVk
aWFTb3VyY2VPd3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYzo6c291cmNlV2l0aFVJRCk6IFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlIHRha2VzIHBl
cnNpc3RlbnQgSUQuCisKIDIwMTUtMTItMjAgIEplcmVteSBaZXJmYXMgIDxXZWJLaXRASmVyZW15
WmVyZmFzLmNvbT4KIAogICAgICAgICBEb24ndCBhbGxvY2F0ZSBhIE5TSW1hZ2UgYW5kIHNraXAg
dW5uZWVkZWQgY2FsbCB0byBUSUZGUmVwcmVzZW50YXRpb24gd2hlbiBjb3B5aW5nIGltYWdlIHRv
IGNsaXBib2FyZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTQzMzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBWZWN0b3I8UmVmUHRyPFRy
YWNrU291cmNlSW5mbz4+IENhcHR1cmVECiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQgdHJhY2tTb3VyY2VUeXBlID0gY2FwdHVyZURl
dmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBUcmFja1Nv
dXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZvOjpBdWRpbzsKLSAgICAgICAgc291cmNl
c0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGNhcHR1cmVEZXZpY2UubV9zb3Vy
Y2VJZCwgdHJhY2tTb3VyY2VUeXBlLCBjYXB0dXJlRGV2aWNlLm1fbG9jYWxpemVkTmFtZSwgY2Fw
dHVyZURldmljZS5tX2dyb3VwSUQpKTsKKyAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNr
U291cmNlSW5mbzo6Y3JlYXRlKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQsIGNh
cHR1cmVEZXZpY2UubV9zb3VyY2VJZCwgdHJhY2tTb3VyY2VUeXBlLCBjYXB0dXJlRGV2aWNlLm1f
bG9jYWxpemVkTmFtZSwgY2FwdHVyZURldmljZS5tX2dyb3VwSUQpKTsKICAgICB9CiAgICAgTE9H
KE1lZGlhLCAiQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQg
JXp1IGFjdGl2ZSBkZXZpY2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsKICAgICByZXR1
cm4gc291cmNlc0luZm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE5NDMz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVx
dWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDE1IEBAIHZvaWQgTWVkaWFEZXZp
Y2VzUmVxdWVzdDo6Y29udGV4dERlc3Ryb3kKIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6c3Rh
cnQoKQogewogICAgIG1fcHJvdGVjdG9yID0gdGhpczsKKworICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkgewor
ICAgICAgICBtX2NhblNob3dMYWJlbHMgPSBkb2N1bWVudC0+aGFzSGFkQWN0aXZlTWVkaWFTdHJl
YW1UcmFjaygpOworICAgICAgICBpZiAobV9jYW5TaG93TGFiZWxzKSB7CisgICAgICAgICAgICBn
ZXRUcmFja1NvdXJjZXMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIG1fcGVybWlzc2lvbkNoZWNrID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrOjpjcmVh
dGUoKmRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCAqdGhpcyk7
CiAgICAgbV9wZXJtaXNzaW9uQ2hlY2stPnN0YXJ0KCk7CiB9CkBAIC04Niw4ICs5NSwxMiBAQCB2
b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlQ2hlCiAgICAgbV9wZXJtaXNzaW9u
Q2hlY2stPnNldENsaWVudChudWxscHRyKTsKICAgICBtX3Blcm1pc3Npb25DaGVjayA9IG51bGxw
dHI7CiAKLSAgICBtX2hhc1VzZXJNZWRpYVBlcm1pc3Npb24gPSBjYW5BY2Nlc3M7CisgICAgbV9j
YW5TaG93TGFiZWxzID0gY2FuQWNjZXNzOworICAgIGdldFRyYWNrU291cmNlcygpOworfQogCit2
b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmdldFRyYWNrU291cmNlcygpCit7CiAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpc10gewogICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyh0aGlzKTsKICAgICB9KTsKQEAg
LTEwNSw3ICsxMTgsNyBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUmVx
CiAgICAgICAgIFRyYWNrU291cmNlSW5mbyogdHJhY2tJbmZvID0gZGV2aWNlLmdldCgpOwogICAg
ICAgICBTdHJpbmcgZGV2aWNlVHlwZSA9IHRyYWNrSW5mby0+a2luZCgpID09IFRyYWNrU291cmNl
SW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OmF1ZGlvSW5wdXRUeXBl
KCkgOiBNZWRpYURldmljZUluZm86OnZpZGVvSW5wdXRUeXBlKCk7CiAKLSAgICAgICAgQXRvbWlj
U3RyaW5nIGxhYmVsID0gbV9oYXNVc2VyTWVkaWFQZXJtaXNzaW9uID8gdHJhY2tJbmZvLT5sYWJl
bCgpIDogZW1wdHlBdG9tOworICAgICAgICBBdG9taWNTdHJpbmcgbGFiZWwgPSBtX2NhblNob3dM
YWJlbHMgPyB0cmFja0luZm8tPmxhYmVsKCkgOiBlbXB0eUF0b207CiAgICAgICAgIGRldmljZUlu
Zm8uYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgbGFiZWwsIHRyYWNrSW5mby0+aWQoKSwgdHJhY2tJbmZvLT5ncm91cElkKCksIGRldmljZVR5
cGUpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCShyZXZpc2lvbiAxOTQzMzApCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IE1lZGlhRGV2aWNlc1JlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhRGV2aWNl
czo6RW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJik7CiAKKyAgICB2b2lkIGdldFRyYWNrU291cmNl
cygpOworCiAgICAgLy8gTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50CiAgICAg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVJlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVjdG9yJikgZmluYWw7CkBAIC03
Myw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lZGlhRGV2aWNlc1JlcXVlc3Q+IG1f
cHJvdGVjdG9yOwogICAgIFJlZlB0cjxVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2s+IG1fcGVybWlz
c2lvbkNoZWNrOwogCi0gICAgYm9vbCBtX2hhc1VzZXJNZWRpYVBlcm1pc3Npb24geyBmYWxzZSB9
OworICAgIGJvb2wgbV9jYW5TaG93TGFiZWxzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgpAQCAtNDAsNTIgKzQxLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgVmVjdG9yPE1lZGlhU3RyZWFtKj4mIG1lZGlh
U3RyZWFtcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxNZWRpYVN0cmVh
bSo+PiBzdHJlYW1zOwotICAgIHJldHVybiBzdHJlYW1zOwotfQotCi1zdGF0aWMgdm9pZCByZWdp
c3Rlck1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgbWVkaWFTdHJlYW1z
KCkuYXBwZW5kKHN0cmVhbSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVuUmVnaXN0ZXJNZWRpYVN0cmVh
bShNZWRpYVN0cmVhbSogc3RyZWFtKQotewotICAgIFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBhbGxT
dHJlYW1zID0gbWVkaWFTdHJlYW1zKCk7Ci0gICAgc2l6ZV90IHBvcyA9IGFsbFN0cmVhbXMuZmlu
ZChzdHJlYW0pOwotICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCi0gICAgICAgIGFsbFN0cmVhbXMu
cmVtb3ZlKHBvcyk7Ci19Ci0KLU1lZGlhU3RyZWFtKiBNZWRpYVN0cmVhbTo6bG9va1VwKGNvbnN0
IE1lZGlhU3RyZWFtUHJpdmF0ZSYgcHJpdmF0ZVN0cmVhbSkKLXsKLSAgICBWZWN0b3I8TWVkaWFT
dHJlYW0qPiYgYWxsU3RyZWFtcyA9IG1lZGlhU3RyZWFtcygpOwotICAgIGZvciAoYXV0byYgc3Ry
ZWFtIDogYWxsU3RyZWFtcykgewotICAgICAgICBpZiAoc3RyZWFtLT5tX3ByaXZhdGUgPT0gJnBy
aXZhdGVTdHJlYW0pCi0gICAgICAgICAgICByZXR1cm4gc3RyZWFtOwotICAgIH0KLQotICAgIHJl
dHVybiBudWxscHRyOwotfQotCi1zdGF0aWMgVVJMUmVnaXN0cnkqIHNfcmVnaXN0cnk7Ci0KLXZv
aWQgTWVkaWFTdHJlYW06OnNldFJlZ2lzdHJ5KFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSkKLXsKLSAg
ICBBU1NFUlQoIXNfcmVnaXN0cnkpOwotICAgIHNfcmVnaXN0cnkgPSAmcmVnaXN0cnk7Ci19Ci0K
LU1lZGlhU3RyZWFtKiBNZWRpYVN0cmVhbTo6bG9va1VwKGNvbnN0IFVSTCYgdXJsKQotewotICAg
IGlmICghc19yZWdpc3RyeSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihzX3JlZ2lzdHJ5LT5sb29rdXAodXJsLnN0cmluZygp
KSk7Ci19Ci0KIFJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRl
KGNvbnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+PigpKSk7CkBAIC0xMjQsMjAgKzc5LDIwIEBAIE1lZGlhU3RyZWFt
OjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb24KICAgICB9CiAKICAgICBtX3ByaXZhdGUgPSBN
ZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZSh0cmFja1ByaXZhdGVzKTsKLSAgICBtX2lzQWN0aXZl
ID0gbV9wcml2YXRlLT5hY3RpdmUoKTsKKyAgICBzZXRJc0FjdGl2ZShtX3ByaXZhdGUtPmFjdGl2
ZSgpKTsKICAgICBtX3ByaXZhdGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICByZWdpc3Rlck1l
ZGlhU3RyZWFtKHRoaXMpOworICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lz
dGVyU3RyZWFtKCp0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYgc3Ry
ZWFtUHJpdmF0ZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQog
ICAgICwgbV9wcml2YXRlKHN0cmVhbVByaXZhdGUpCi0gICAgLCBtX2lzQWN0aXZlKG1fcHJpdmF0
ZS0+YWN0aXZlKCkpCiAgICAgLCBtX2FjdGl2aXR5RXZlbnRUaW1lcigqdGhpcywgJk1lZGlhU3Ry
ZWFtOjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NFUlQobV9wcml2YXRlKTsK
KyAgICBzZXRJc0FjdGl2ZShtX3ByaXZhdGUtPmFjdGl2ZSgpKTsKICAgICBtX3ByaXZhdGUtPmFk
ZE9ic2VydmVyKCp0aGlzKTsKLSAgICByZWdpc3Rlck1lZGlhU3RyZWFtKHRoaXMpOworICAgIE1l
ZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyU3RyZWFtKCp0aGlzKTsKIAogICAg
IGZvciAoYXV0byYgdHJhY2tQcml2YXRlIDogbV9wcml2YXRlLT50cmFja3MoKSkgewogICAgICAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVh
dGUoY29udGV4dCwgKnRyYWNrUHJpdmF0ZSk7CkBAIC0xNDgsNyArMTAzLDcgQEAgTWVkaWFTdHJl
YW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbgogCiBNZWRpYVN0cmVhbTo6fk1lZGlhU3Ry
ZWFtKCkKIHsKLSAgICB1blJlZ2lzdGVyTWVkaWFTdHJlYW0odGhpcyk7CisgICAgTWVkaWFTdHJl
YW1SZWdpc3RyeTo6c2hhcmVkKCkudW5yZWdpc3RlclN0cmVhbSgqdGhpcyk7CiAgICAgbV9wcml2
YXRlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJh
Y2tTZXQudmFsdWVzKCkpCiAgICAgICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKQEAg
LTI3Niw2ICsyMzEsMTYgQEAgYm9vbCBNZWRpYVN0cmVhbTo6aW50ZXJuYWxSZW1vdmVUcmFjayhS
ZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIE1lZGlhU3RyZWFtOjpzZXRJc0FjdGl2ZShi
b29sIGFjdGl2ZSkKK3sKKyAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworICAgIGlmICghYWN0aXZl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoRG9jdW1lbnQgKmRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIGRvY3VtZW50
LT5zZXRIYXNBY3RpdmVNZWRpYVN0cmVhbVRyYWNrKCk7Cit9CisKIHZvaWQgTWVkaWFTdHJlYW06
OnNjaGVkdWxlQWN0aXZlU3RhdGVDaGFuZ2UoKQogewogICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7
CkBAIC0yODUsMTAgKzI1MCwxMSBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0
YXRlQ2hhCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKwogICAgIGlmICht
X2lzQWN0aXZlID09IGFjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0FjdGl2ZSA9
IGFjdGl2ZTsKKyAgICBzZXRJc0FjdGl2ZShhY3RpdmUpOwogCiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudE5hbWUgPSBtX2lzQWN0aXZlID8gZXZlbnROYW1lcygpLmluYWN0aXZlRXZlbnQg
OiBldmVudE5hbWVzKCkuYWN0aXZlRXZlbnQ7CiAgICAgbV9zY2hlZHVsZWRBY3Rpdml0eUV2ZW50
cy5hcHBlbmQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOwpAQCAtMzA4
LDcgKzI3NCw3IEBAIHZvaWQgTWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmUKIAog
VVJMUmVnaXN0cnkmIE1lZGlhU3RyZWFtOjpyZWdpc3RyeSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFt
UmVnaXN0cnk6OnNoYXJlZCgpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIE1lZGlhU3Ry
ZWFtOjp0cmFja1ZlY3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBmaWx0ZXJU
eXBlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gMTk0MzMwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSAr
NTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRPclJlbW92ZVRyYWNr
KCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRSZWdpc3RyeShVUkxSZWdpc3Ry
eSYpOwotICAgIHN0YXRpYyBNZWRpYVN0cmVhbSogbG9va1VwKGNvbnN0IFVSTCYpOwotCi0gICAg
c3RhdGljIE1lZGlhU3RyZWFtKiBsb29rVXAoY29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJik7Ci0K
ICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgTWVkaWFTdHJlYW0qKTsKICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3Im
KTsKQEAgLTExOSw2ICsxMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZUFjdGl2
ZVN0YXRlQ2hhbmdlKCk7CiAgICAgdm9pZCBhY3Rpdml0eUV2ZW50VGltZXJGaXJlZCgpOworICAg
IHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRy
YWNrVmVjdG9yRm9yVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFTdHJlYW1SZWdpc3RyeSYgTWVk
aWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKQorTWVkaWFTdHJlYW1SZWdpc3RyeSYgTWVkaWFT
dHJlYW1SZWdpc3RyeTo6c2hhcmVkKCkKIHsKICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5v
dCBvYnRhaW4gTWVkaWFTb3VyY2Ugb2JqZWN0cywgd2Ugc2hvdWxkIGJlIG9uIHRoZSBtYWluIHRo
cmVhZC4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNjQsNyArNjQsNDEgQEAgVVJM
UmVnaXN0cmFibGUqIE1lZGlhU3RyZWFtUmVnaXN0cnk6OmxvbwogCiBNZWRpYVN0cmVhbVJlZ2lz
dHJ5OjpNZWRpYVN0cmVhbVJlZ2lzdHJ5KCkKIHsKLSAgICBNZWRpYVN0cmVhbTo6c2V0UmVnaXN0
cnkoKnRoaXMpOworfQorCitNZWRpYVN0cmVhbSogTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va1Vw
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNZWRpYVN0
cmVhbSo+KGxvb2t1cCh1cmwuc3RyaW5nKCkpKTsKK30KKworc3RhdGljIFZlY3RvcjxNZWRpYVN0
cmVhbSo+JiBtZWRpYVN0cmVhbXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8TWVkaWFTdHJlYW0qPj4gc3RyZWFtczsKKyAgICByZXR1cm4gc3RyZWFtczsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RlclN0cmVhbShNZWRpYVN0cmVhbSYgc3RyZWFt
KQoreworICAgIG1lZGlhU3RyZWFtcygpLmFwcGVuZCgmc3RyZWFtKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyU3RyZWFtKE1lZGlhU3RyZWFtJiBzdHJlYW0pCit7
CisgICAgVmVjdG9yPE1lZGlhU3RyZWFtKj4mIGFsbFN0cmVhbXMgPSBtZWRpYVN0cmVhbXMoKTsK
KyAgICBzaXplX3QgcG9zID0gYWxsU3RyZWFtcy5maW5kKCZzdHJlYW0pOworICAgIGlmIChwb3Mg
IT0gbm90Rm91bmQpCisgICAgICAgIGFsbFN0cmVhbXMucmVtb3ZlKHBvcyk7Cit9CisKK01lZGlh
U3RyZWFtKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rVXAoY29uc3QgTWVkaWFTdHJlYW1Qcml2
YXRlJiBwcml2YXRlU3RyZWFtKSBjb25zdAoreworICAgIFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBh
bGxTdHJlYW1zID0gbWVkaWFTdHJlYW1zKCk7CisgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBhbGxT
dHJlYW1zKSB7CisgICAgICAgIGlmIChzdHJlYW0tPnByaXZhdGVTdHJlYW0oKSA9PSAmcHJpdmF0
ZVN0cmVhbSkKKyAgICAgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3Ry
eS5oCShyZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTdHJl
YW07CitjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CitjbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlh
U3RyZWFtUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgogICAg
IGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxNZWRpYVN0cmVhbVJlZ2lzdHJ5PjsKIAogICAg
IC8vIFJldHVybnMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1SZWdpc3RyeS4KLSAg
ICBzdGF0aWMgTWVkaWFTdHJlYW1SZWdpc3RyeSYgcmVnaXN0cnkoKTsKKyAgICBzdGF0aWMgTWVk
aWFTdHJlYW1SZWdpc3RyeSYgc2hhcmVkKCk7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVS
TCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBzdHJlYW0gZGF0YS4KICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJs
ZSopIG92ZXJyaWRlOwpAQCAtNTEsNiArNTIsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBV
UkxSZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCisg
ICAgdm9pZCByZWdpc3RlclN0cmVhbShNZWRpYVN0cmVhbSYpOworICAgIHZvaWQgdW5yZWdpc3Rl
clN0cmVhbShNZWRpYVN0cmVhbSYpOworCisgICAgTWVkaWFTdHJlYW0qIGxvb2tVcChjb25zdCBV
UkwmKSBjb25zdDsKKyAgICBNZWRpYVN0cmVhbSogbG9va1VwKGNvbnN0IE1lZGlhU3RyZWFtUHJp
dmF0ZSYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtUmVnaXN0cnkoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhU3RyZWFtPj4gbV9tZWRpYVN0cmVhbXM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTk0MzMwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMTIsNiArMTMxMiwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRWaWV3cG9ydERlcGVuZGVudFBpY3R1cmUoSFRNTFBpY3R1cmVF
bGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVWaWV3cG9ydERlcGVuZGVudFBpY3R1cmUoSFRNTFBp
Y3R1cmVFbGVtZW50Jik7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIHZvaWQgc2V0
SGFzQWN0aXZlTWVkaWFTdHJlYW1UcmFjaygpIHsgbV9oYXNIYWRBY3RpdmVNZWRpYVN0cmVhbVRy
YWNrID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjazsgfQorI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAx
LCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBj
b25zdHJ1Y3Rpb25GbGFncyA9IDApOwpAQCAtMTc4MCw2ICsxNzg1LDEwIEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE1lZGlhU2Vzc2lvbj4gbV9kZWZhdWx0TWVkaWFTZXNzaW9uOwogI2VuZGlmCiAg
ICAgYm9vbCBtX2FyZURldmljZU1vdGlvbkFuZE9yaWVudGF0aW9uVXBkYXRlc1N1c3BlbmRlZCB7
IGZhbHNlIH07CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGJvb2wgbV9oYXNIYWRB
Y3RpdmVNZWRpYVN0cmVhbVRyYWNrIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogaW5saW5lIHZv
aWQgRG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTk0MzMwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3Vy
Y2UoY29ucwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgaWYgKCFsb2FkQXR0ZW1wdGVk
KSB7CiAgICAgICAgIGlmICghbV9tZWRpYVN0cmVhbVNyY09iamVjdCAmJiB1cmwucHJvdG9jb2xJ
cyhtZWRpYVN0cmVhbUJsb2JQcm90b2NvbCkpCi0gICAgICAgICAgICBtX21lZGlhU3RyZWFtU3Jj
T2JqZWN0ID0gTWVkaWFTdHJlYW06Omxvb2tVcCh1cmwpOworICAgICAgICAgICAgbV9tZWRpYVN0
cmVhbVNyY09iamVjdCA9IE1lZGlhU3RyZWFtUmVnaXN0cnk6OnNoYXJlZCgpLmxvb2tVcCh1cmwp
OwogCiAgICAgICAgIGlmIChtX21lZGlhU3RyZWFtU3JjT2JqZWN0KSB7CiAgICAgICAgICAgICBs
b2FkQXR0ZW1wdGVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudC5oCShyZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMzcgKzM5LDQxIEBAIGNsYXNzIFRyYWNrU291cmNl
SW5mbyA6IHB1YmxpYyBSZWZDb3VudGUKIHB1YmxpYzoKICAgICBlbnVtIFNvdXJjZUtpbmQgeyBB
dWRpbywgVmlkZW8gfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRyYWNrU291cmNlSW5mbz4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsYWJlbCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+
IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8oaWQsIGtpbmQs
IGxhYmVsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJhY2tTb3VyY2VJbmZvKHBl
cnNpc3RlbnRJZCwgaWQsIGtpbmQsIGxhYmVsKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxU
cmFja1NvdXJjZUluZm8+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5k
IGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3Jv
dXBJZCkKKyAgICBzdGF0aWMgUmVmPFRyYWNrU291cmNlSW5mbz4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgcGVyc2lzdGVudElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5k
IGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3Jv
dXBJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYWNrU291cmNlSW5m
byhpZCwga2luZCwgbGFiZWwsIGdyb3VwSWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVHJhY2tTb3VyY2VJbmZvKHBlcnNpc3RlbnRJZCwgaWQsIGtpbmQsIGxhYmVsLCBncm91cElk
KSk7CiAgICAgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGVyc2lzdGVudElkOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3Vw
SWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KICAgICBTb3VyY2VLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2tpbmQ7IH0KIAogcHJpdmF0ZToKLSAgICBUcmFja1NvdXJjZUluZm8o
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJp
bmcmIGxhYmVsKQotICAgICAgICA6IG1faWQoaWQpCisgICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0
IEF0b21pY1N0cmluZyYgcGVyc2lzdGVudElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3Vy
Y2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpCisgICAgICAgIDogbV9wZXJz
aXN0ZW50SWQocGVyc2lzdGVudElkKQorICAgICAgICAsIG1faWQoaWQpCiAgICAgICAgICwgbV9r
aW5kKGtpbmQpCiAgICAgICAgICwgbV9sYWJlbChsYWJlbCkKICAgICB7CiAgICAgfQogCi0gICAg
VHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNvdXJjZUtpbmQga2luZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKQot
ICAgICAgICA6IG1faWQoaWQpCisgICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcGVyc2lzdGVudElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCkK
KyAgICAgICAgOiBtX3BlcnNpc3RlbnRJZChwZXJzaXN0ZW50SWQpCisgICAgICAgICwgbV9pZChp
ZCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAg
ICAgICAsIG1fZ3JvdXBJZChncm91cElkKQogICAgIHsKICAgICB9CiAKKyAgICBBdG9taWNTdHJp
bmcgbV9wZXJzaXN0ZW50SWQ7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAgU291cmNlS2lu
ZCBtX2tpbmQ7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CkBAIC04NCw3ICs4OCw2IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlcXVlc3QoY29uc3QgVHJhY2tTb3Vy
Y2VJbmZvVmVjdG9yJikgPSAwOwotCiB9OwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHJldmlzaW9uIDE5NDMzMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+IFJlYWx0aW1lTWVkaWFTb3UKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gbWVkaWFTb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5zb3Vy
Y2VXaXRoVUlEKFVJRCwgdHlwZSwgY29uc3RyYWludHMpOwogICAgIGlmICghbWVkaWFTb3VyY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNy
ZWF0ZShtZWRpYVNvdXJjZS0+aWQoKSwgbWVkaWFTb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6Vmlk
ZW8gOiBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvLCBtZWRpYVNvdXJjZS0+bmFt
ZSgpKTsKKyAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUobWVkaWFTb3VyY2UtPnBl
cnNpc3RlbnRJRCgpLCBtZWRpYVNvdXJjZS0+aWQoKSwgbWVkaWFTb3VyY2UtPnR5cGUoKSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5mbzo6U291cmNl
S2luZDo6VmlkZW8gOiBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvLCBtZWRpYVNv
dXJjZS0+bmFtZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyT3dyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCShy
ZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9v
cGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTUsNyArMjE1LDcgQEAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gUmVhbHRpbWVNZWRp
YVNvdQogewogICAgIGZvciAoYXV0byYgc291cmNlIDogbV9zb3VyY2VNYXAudmFsdWVzKCkpIHsK
ICAgICAgICAgaWYgKHNvdXJjZS0+aWQoKSA9PSBVSUQpCi0gICAgICAgICAgICByZXR1cm4gVHJh
Y2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2lu
ZDo6VmlkZW8gOiBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvICwgc291cmNlLT5u
YW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJj
ZS0+cGVyc2lzdGVudElEKCksIHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6
OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRpbyAsIHNvdXJjZS0+bmFt
ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CShyZXZpc2lvbiAxOTQzMzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTAgKzczLDEwIEBA
IFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IE1vY2tSZWFsdGltZU1lZGkKICAgICAvLyBGSVhNRTog
dmFsaWRhdGUgY29uc3RyYWludHMuCiAKICAgICBpZiAobW9ja0F1ZGlvU291cmNlUGVyc2lzdGVu
dElEKCkgPT0gaWQpCi0gICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZShtb2Nr
QXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbywgIk1vY2sg
YXVkaW8gZGV2aWNlIik7CisgICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZSht
b2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgaWQsIFRyYWNrU291cmNlSW5mbzo6QXVkaW8s
ICJNb2NrIGF1ZGlvIGRldmljZSIpOwogCiAgICAgaWYgKG1vY2tWaWRlb1NvdXJjZVBlcnNpc3Rl
bnRJRCgpID09IGlkKQotICAgICAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUobW9j
a1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCksIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sICJNb2Nr
IHZpZGVvIGRldmljZSIpOworICAgICAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUo
bW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCksIGlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVv
LCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE5NDM5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMxIEBACisyMDE1LTEyLTIzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gTWVkaWFEZXZpY2VJbmZvLmxhYmVsIG11c3QgYmUg
ZW1wdHkgaW4gc29tZSBzaXR1YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpz
ZXRVc2VyTWVkaWFQZXJtaXNzaW9uKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnNl
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4pOiBOZXcuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c2V0VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6IE5ldy4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYW5kbGVDaGVja09mVXNlck1lZGlhUGVybWlz
c2lvbkZvck9yaWdpbik6IEFkZCBOVUxMIGNoZWNrLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RJZlBvc3NpYmxl
KTogRG9uJ3QgYWRkIAorICAgICAgICAgIHBlcnNpc3RlbnQgcGVybWlzc2lvbiBmb3Igb3JpZ2lu
LCB0aGF0IGNhbiBiZSBkb25lIGZyb20gc2NyaXB0IG5vdy4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKTogQWRkIHN1cHBvcnQgZm9yCisgICAgICAgICAg
U2V0VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbi4KKwogMjAxNS0xMi0yMyAgQ2hyaXMgQWxq
b3VkaSA8Y2hyaXNAY2hyaXNtYXRpYy5pbz4gYW5kIEFsZXggQ2hyaXN0ZW5zZW4gPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENvbnRlbnQgYmxvY2tlcnMgc2hvdWxkIGJlIGFi
bGUgdG8gcHJvbW90ZSBodHRwIHRvIGh0dHBzCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTk0MzMwKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDUsMTMgKzE2
NDUsNiBAQCBib29sIFRlc3RDb250cm9sbGVyOjppc0dlb2xvY2F0aW9uUHJvdmlkCiAgICAgcmV0
dXJuIG1fZ2VvbG9jYXRpb25Qcm92aWRlci0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0VXNlck1lZGlhUGVybWlzc2lvbihib29sIGVuYWJsZWQpCi17Ci0gICAgbV9p
c1VzZXJNZWRpYVBlcm1pc3Npb25TZXQgPSB0cnVlOwotICAgIG1faXNVc2VyTWVkaWFQZXJtaXNz
aW9uQWxsb3dlZCA9IGVuYWJsZWQ7Ci0gICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RJZlBvc3NpYmxlKCk7Ci19Ci0KIHN0YXRpYyBXS1N0cmluZ1JlZiBvcmlnaW5V
c2VyVmlzaWJsZU5hbWUoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCiB7CiAgICAgc3RkOjpz
dHJpbmcgaG9zdCA9IHRvU1REKGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KG9yaWdp
bikpKS5jX3N0cigpOwpAQCAtMTY2Nyw2ICsxNjYwLDIyIEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBv
cmlnaW5Vc2VyVmlzaWJsZU5hbWUKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXNlclZpc2libGVOYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCit2b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2lz
VXNlck1lZGlhUGVybWlzc2lvblNldCA9IHRydWU7CisgICAgbV9pc1VzZXJNZWRpYVBlcm1pc3Np
b25BbGxvd2VkID0gZW5hYmxlZDsKKyAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdElmUG9zc2libGUoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0VXNl
ck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihib29sIHBlcm1pc3Npb24sIFdLU3RyaW5nUmVmIG9y
aWdpblN0cmluZykKK3sKKyAgICBpZiAoIW1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMpCisg
ICAgICAgIG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBhbGxvd2Vk
ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUocGVybWlzc2lvbikpOworICAgIFdLUmV0YWluUHRy
PFdLU2VjdXJpdHlPcmlnaW5SZWY+IG9yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNy
ZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nKSk7CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSht
X3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zLmdldCgpLCBvcmlnaW5Vc2VyVmlzaWJsZU5hbWUo
b3JpZ2luLmdldCgpKSwgYWxsb3dlZC5nZXQoKSk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmhhbmRsZUNoZWNrT2ZVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luLCBjb25zdCBXS1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1JlZiYgY2hlY2tS
ZXF1ZXN0KQogewogICAgIGJvb2wgYWxsb3dlZCA9IGZhbHNlOwpAQCAtMTY3NCw3ICsxNjgzLDcg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aGFuZGxlQ2hlY2tPZlVzZXJNZQogICAgIGlmIChtX3Vz
ZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBvcmlnaW5TdHJpbmcgPSBvcmlnaW5Vc2VyVmlzaWJsZU5hbWUob3JpZ2luKTsKICAgICAg
ICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1fdXNlck1lZGlhT3JpZ2luUGVybWlzc2lvbnMuZ2V0KCksIG9y
aWdpblN0cmluZy5nZXQoKSkpOwotICAgICAgICBpZiAoV0tHZXRUeXBlSUQodmFsdWUpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKQorICAgICAgICBpZiAodmFsdWUgJiYgV0tHZXRUeXBlSUQodmFs
dWUpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKQogICAgICAgICAgICAgYWxsb3dlZCA9IFdLQm9v
bGVhbkdldFZhbHVlKHZhbHVlKTsKICAgICB9CiAKQEAgLTE2OTMsMTcgKzE3MDIsMTAgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yVXNlcgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cykgewot
ICAgICAgICBhdXRvIG9yaWdpbiA9IHBhaXIuZmlyc3QuZ2V0KCk7CiAgICAgICAgIGF1dG8gcmVx
dWVzdCA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVm
PiBhdWRpb0RldmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0QXVkaW9EZXZp
Y2VVSURzKHJlcXVlc3QpOwogICAgICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB2aWRlb0Rl
dmljZVVJRHMgPSBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0VmlkZW9EZXZpY2VVSURzKHJl
cXVlc3QpOwogCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBvcmlnaW5TdHJpbmcg
PSBhZG9wdFdLKG9yaWdpblVzZXJWaXNpYmxlTmFtZShvcmlnaW4pKTsKLSAgICAgICAgaWYgKCFt
X3VzZXJNZWRpYU9yaWdpblBlcm1pc3Npb25zKQotICAgICAgICAgICAgbV91c2VyTWVkaWFPcmln
aW5QZXJtaXNzaW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKLSAg
ICAgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBhbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUobV9pc1VzZXJNZWRpYVBlcm1pc3Npb25BbGxvd2VkKSk7Ci0gICAgICAgIFdLRGlj
dGlvbmFyeVNldEl0ZW0obV91c2VyTWVkaWFPcmlnaW5QZXJtaXNzaW9ucy5nZXQoKSwgb3JpZ2lu
U3RyaW5nLmdldCgpLCBhbGxvd2VkLmdldCgpKTsKLQogICAgICAgICBpZiAobV9pc1VzZXJNZWRp
YVBlcm1pc3Npb25BbGxvd2VkICYmIChXS0FycmF5R2V0U2l6ZSh2aWRlb0RldmljZVVJRHMuZ2V0
KCkpIHx8IFdLQXJyYXlHZXRTaXplKGF1ZGlvRGV2aWNlVUlEcy5nZXQoKSkpKSB7CiAgICAgICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdmlkZW9EZXZpY2VVSUQ7CiAgICAgICAgICAg
ICBpZiAoV0tBcnJheUdldFNpemUodmlkZW9EZXZpY2VVSURzLmdldCgpKSkKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5NDMzMCkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
OTYsNiArOTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVN0cmVhbS4KICAgICB2b2lkIHNl
dFVzZXJNZWRpYVBlcm1pc3Npb24oYm9vbCk7CisgICAgdm9pZCBzZXRVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luKGJvb2wgcGVybWlzc2lvbiwgV0tTdHJpbmdSZWYgdXJsKTsKICAgICB2b2lk
IGhhbmRsZVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdL
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYpOwogICAgIHZvaWQgaGFuZGxlQ2hlY2tPZlVz
ZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4oV0tTZWN1cml0eU9yaWdpblJlZiwgY29uc3QgV0tV
c2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tSZWYmKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlzaW9uIDE5NDMzMCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNiAr
NDY3LDIxIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2V0VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbiIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpOworICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0g
c3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CisKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBlcm1pc3Npb25LZXlXSyhBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygicGVybWlzc2lvbiIpKTsKKyAgICAgICAgV0tCb29sZWFuUmVm
IHBlcm1pc3Npb25XSyA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHBlcm1pc3Npb25LZXlXSy5nZXQoKSkp
OworICAgICAgICBib29sIHBlcm1pc3Npb24gPSBXS0Jvb2xlYW5HZXRWYWx1ZShwZXJtaXNzaW9u
V0spOworCisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxLZXkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInVybCIpKTsKKyAgICAgICAgV0tTdHJpbmdS
ZWYgdXJsV0sgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHVybEtleS5nZXQoKSkpOworCisgICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2lu
KHBlcm1pc3Npb24sIHVybFdLKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0Q2FjaGVNb2RlbCIp
KSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tVSW50NjRH
ZXRUeXBlSUQoKSk7CiAgICAgICAgIHVpbnQ2NF90IG1vZGVsID0gV0tVSW50NjRHZXRWYWx1ZShz
dGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4obWVzc2FnZUJvZHkpKTsKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCShyZXZpc2lvbiAxOTQzMzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiwy
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRVc2VyTWVkaWFQZXJtaXNzCiAgICAgV0tCdW5k
bGVQYWdlUG9zdE1lc3NhZ2UocGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFVzZXJNZWRpYVBl
cm1pc3Npb25Gb3JPcmlnaW4oYm9vbCBwZXJtaXNzaW9uLCBXS1N0cmluZ1JlZiB1cmwpCit7Cisg
ICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlNldFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4iKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBwZXJtaXNz
aW9uS2V5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBlcm1pc3Np
b24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBwZXJtaXNzaW9uV0soQWRvcHRX
SywgV0tCb29sZWFuQ3JlYXRlKHBlcm1pc3Npb24pKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVt
KG1lc3NhZ2VCb2R5LmdldCgpLCBwZXJtaXNzaW9uS2V5V0suZ2V0KCksIHBlcm1pc3Npb25XSy5n
ZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXJsS2V5V0soQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInVybCIpKTsKKyAgICBXS0RpY3Rpb25hcnlT
ZXRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCB1cmxLZXlXSy5nZXQoKSwgdXJsKTsKKworICAgIFdL
QnVuZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIlNldEN1c3RvbVBvbGljeURlbGVnYXRlIikpOwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuaAkocmV2aXNpb24gMTk0MzMwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIE1lZGlhU3RyZWFtLgogICAgIHZvaWQgc2V0VXNlck1lZGlhUGVy
bWlzc2lvbihib29sKTsKKyAgICB2b2lkIHNldFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4o
Ym9vbCBwZXJtaXNzaW9uLCBXS1N0cmluZ1JlZiB1cmwpOwogCiAgICAgLy8gUG9saWN5IGRlbGVn
YXRlLgogICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29s
IHBlcm1pc3NpdmUpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxOTQzMzApCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NzUsNiArNzc1LDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlck1lZGlhUGVy
bWlzc2lvbigKICAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuc2V0VXNlck1lZGlhUGVy
bWlzc2lvbihlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKGJvb2wgcGVybWlzc2lvbiwgSlNTdHJpbmdSZWYgdXJsKQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1cmxXSyA9IHRvV0sodXJsKTsKKyAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuc2V0VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihwZXJt
aXNzaW9uLCB1cmxXSy5nZXQoKSk7Cit9CisKIGJvb2wgVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENs
b3NlT25XZWJWaWV3KCkKIHsKICAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVu
ZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5w
YWdlKCkpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDE5NDMzMCkKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgs
NiArMjY4LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFTdHJlYW0KICAgICB2b2lkIHNldFVz
ZXJNZWRpYVBlcm1pc3Npb24oYm9vbCk7CisgICAgdm9pZCBzZXRVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKGJvb2wgcGVybWlzc2lvbiwgSlNTdHJpbmdSZWYgdXJsKTsKIAogICAgIHZvaWQg
c2V0UGFnZVZpc2liaWxpdHkoSlNTdHJpbmdSZWYgc3RhdGUpOwogICAgIHZvaWQgcmVzZXRQYWdl
VmlzaWJpbGl0eSgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShyZXZpc2lvbiAx
OTQzMzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNiArMTc5LDcgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogCiAgICAgLy8gTWVkaWFTdHJlYW0KICAgICB2b2lkIHNldFVzZXJN
ZWRpYVBlcm1pc3Npb24oYm9vbGVhbiB2YWx1ZSk7CisgICAgdm9pZCBzZXRVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luKGJvb2xlYW4gcGVybWlzc2lvbiwgRE9NU3RyaW5nIHVybCk7CiAKICAg
ICAvLyBBdWRpbyB0ZXN0aW5nLgogICAgIFtQYXNzQ29udGV4dF0gdm9pZCBzZXRBdWRpb1Jlc3Vs
dChvYmplY3QgZGF0YSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTQzMzApCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMi0yMyAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFT
dHJlYW1dIE1lZGlhRGV2aWNlSW5mby5sYWJlbCBtdXN0IGJlIGVtcHR5IGluIHNvbWUgc2l0dWF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
MDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZpY2VzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1lbnVtZXJhdGVEZXZp
Y2VzLmh0bWw6CisKIDIwMTUtMTItMjEgIEFuZHkgVmFuV2Fnb25lciAgPHRoZXRhbGVjcmFmdGVy
QGdtYWlsLmNvbT4KIAogICAgICAgICBbSU5UTF0gSW1wbGVtZW50IFN0cmluZy5wcm90b3R5cGUu
bG9jYWxlQ29tcGFyZSBpbiBFQ01BLTQwMgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRl
RGV2aWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NDMzMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBQQVNTIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMgaXMgYW4gaW5zdGFuCiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2
aWNlcyBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogCiAKLSoqKiBDYWxsaW5nIG1lZGlhRGV2
aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdoZW4gcGVyc2lzdGVudCBhY2Nlc3MgSEFTIE5PVCBiZWVu
IGdyYW50ZWQKKyoqKiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdpdGhv
dXQgcGVyc2lzdGVudCBhY2Nlc3MsIGFuZCB3aXRob3V0IGEgbWVkaWEgc3RyZWFtIHRyYWNrCiAK
IFBBU1MgY2FwdHVyZURldmljZXMubGVuZ3RoIGlzIG5vbi16ZXJvLgogCkBAIC0yNCw3ICsyNCwy
NCBAQCBQQVNTIGNhcHR1cmVEZXZpY2UubGFiZWwgaXMgIiIKIFBBU1MgY2FwdHVyZURldmljZS5n
cm91cElkIGlzIG5vbi1udWxsLgogCiAKLSoqKiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJh
dGVEZXZpY2VzIHdoZW4gcGVyc2lzdGVudCBhY2Nlc3MgSEFTIGJlZW4gZ3JhbnRlZAorKioqIENh
bGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2l0aG91dCBwZXJzaXN0ZW50IGFj
Y2VzcywgYW5kIHdpdGhvdXQgYSBtZWRpYSBzdHJlYW0gdHJhY2sKKworUEFTUyBjYXB0dXJlRGV2
aWNlcy5sZW5ndGggaXMgbm9uLXplcm8uCisKK1BBU1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5v
bi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmRldmljZUlkIGlzIG5vbi1udWxsLgorUEFTUyBj
YXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVs
IGlzIG5vdCAiIgorUEFTUyBjYXB0dXJlRGV2aWNlLmdyb3VwSWQgaXMgbm9uLW51bGwuCisKK1BB
U1MgY2FwdHVyZURldmljZS5raW5kIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmRl
dmljZUlkIGlzIG5vbi1udWxsLgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vbi1udWxs
LgorUEFTUyBjYXB0dXJlRGV2aWNlLmxhYmVsIGlzIG5vdCAiIgorUEFTUyBjYXB0dXJlRGV2aWNl
Lmdyb3VwSWQgaXMgbm9uLW51bGwuCisKKworKioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1l
cmF0ZURldmljZXMgd2l0aG91dCBwZXJzaXN0ZW50IGFjY2Vzcywgd2l0aCBhIG1lZGlhIHN0cmVh
bSB0cmFjawogCiBQQVNTIGNhcHR1cmVEZXZpY2VzLmxlbmd0aCBpcyBub24temVyby4KIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2
aWNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWVudW1lcmF0ZURldmljZXMuaHRtbAkocmV2aXNpb24gMTk0MzMwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZW51bWVyYXRlRGV2aWNlcy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBACiAKICAgICAgICAgICAgIGZ1bmN0
aW9uIGVudW1lcmF0ZShuZXh0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlYnVn
KGA8YnI+KioqIENhbGxpbmcgbWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgd2hlbiBwZXJz
aXN0ZW50IGFjY2VzcyBIQVMgJHtoYXZlUGVybWlzc2lvbiA/ICIiIDogIk5PVCAifWJlZW4gZ3Jh
bnRlZDxicj5gKTsKICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1l
cmF0ZURldmljZXMoKQogICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihkZXZpY2Vz
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0dXJlRGV2aWNlcyA9IGRldmljZXM7CkBA
IC00OCwyMyArNDcsMzcgQEAKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGdyYW50UGVybWlzc2lvbigpCisg
ICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRV
c2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pCi0gICAgICAgICAgICAgICAgICAgICAgICAu
dGhlbihmdW5jdGlvbihzdHJlYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZl
UGVybWlzc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRl
KG51bGwpOyAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
fSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKCkgZmFpbGVkIHdpdGggJHtlcnIubmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKGZhbHNlLCBkb2N1bWVudC5sb2NhdGlvbi5ocmVm
KTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzCisgICAgICAgICAgICAgICAgICAgIC5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRl
bzp7fX0pCisgICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHN0cmVhbSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGVidWcoYDxicj4qKiogQ2FsbGluZyBtZWRpYURldmljZXMu
ZW51bWVyYXRlRGV2aWNlcyB3aXRob3V0IHBlcnNpc3RlbnQgYWNjZXNzLCB3aXRoIGEgbWVkaWEg
c3RyZWFtIHRyYWNrPGJyPmApOworICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZVBlcm1pc3Np
b24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRlKG51bGwpOyAgICAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAg
ICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgZmFpbGVkIHdpdGggJHtlcnIu
bmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBncmFudFBlcm1pc3Np
b24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luKHRydWUsIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYpOworCisgICAgICAgICAgICAg
ICAgZGVidWcoYDxicj4qKiogQ2FsbGluZyBtZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyB3
aXRob3V0IHBlcnNpc3RlbnQgYWNjZXNzLCBhbmQgd2l0aG91dCBhIG1lZGlhIHN0cmVhbSB0cmFj
azxicj5gKTsKKyAgICAgICAgICAgICAgICBoYXZlUGVybWlzc2lvbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgZW51bWVyYXRlKGNyZWF0ZVN0cmVhbSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGhhdmVQZXJtaXNzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBkZWJ1ZyhgPGJyPioq
KiBDYWxsaW5nIG1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHdpdGhvdXQgcGVyc2lzdGVu
dCBhY2Nlc3MsIGFuZCB3aXRob3V0IGEgbWVkaWEgc3RyZWFtIHRyYWNrPGJyPmApOwogICAgICAg
ICAgICAgZW51bWVyYXRlKGdyYW50UGVybWlzc2lvbik7CiAKICAgICAgICAgICAgIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>