<?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>191587</bug_id>
          
          <creation_ts>2018-11-13 09:07:48 -0800</creation_ts>
          <short_desc>[MediaStream] Observer AVCaptureDevice &quot;suspended&quot; property</short_desc>
          <delta_ts>2018-11-13 14:21:10 -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>WebRTC</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478009</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-11-13 09:07:48 -0800</bug_when>
    <thetext>On macOS the AVCaptureDevice property &quot;suspended&quot; changes when the device stops/resumes producing data because, e.g. the laptop lid is closed. Changes to this property should trigger mediaDevices.ondevicechange and MediaStreamTrack.onmute/MediaStreamTrack.onunmute events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478012</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-13 09:10:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/46030598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478023</commentid>
    <comment_count>2</comment_count>
      <attachid>354675</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-11-13 09:24:43 -0800</bug_when>
    <thetext>Created attachment 354675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478050</commentid>
    <comment_count>3</comment_count>
      <attachid>354675</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-13 10:35:12 -0800</bug_when>
    <thetext>Comment on attachment 354675
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.h:72
&gt; +    RetainPtr&lt;NSMutableArray&gt; m_AVCaptureDevices;

Should it be named m_avCaptureDevices?

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:145
&gt; +        stopObservingDevices(scratchArray.get());

I would tend to move the computation of removed devices in stopObservingDevices.
That way, it is clear that we are doing the right thing in terms of begin/stop observing.
It seems we might iterate twice over currentDevices but that might not be a big deal.

s/beginObserving/startObserving?

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:159
&gt; +        deviceList.append(captureDevice);

WTFMove(captureDevice).

&gt; Source/WebCore/platform/mediastream/mac/AVCaptureDeviceManager.mm:171
&gt; +        m_devices = deviceList;

WTFMove(deviceList);

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:556
&gt; +        notifyMutedChange(isSuspended);

notifyMutedChange is checking whether muted == m_muted, so we might be able to just write;
notifyMutedChange([m_device isSuspended]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478126</commentid>
    <comment_count>4</comment_count>
      <attachid>354697</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-11-13 13:40:41 -0800</bug_when>
    <thetext>Created attachment 354697
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478141</commentid>
    <comment_count>5</comment_count>
      <attachid>354697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-13 14:21:09 -0800</bug_when>
    <thetext>Comment on attachment 354697
Patch for landing

Clearing flags on attachment: 354697

Committed r238145: &lt;https://trac.webkit.org/changeset/238145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478142</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-13 14:21:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354675</attachid>
            <date>2018-11-13 09:24:43 -0800</date>
            <delta_ts>2018-11-13 13:40:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191587-20181113092442.patch</filename>
            <type>text/plain</type>
            <size>16231</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU4Y2JjMjBiNjA1M2Zm
NzRkMzE1MTBjY2RlMDAwNWQ2NmQwZWVhYS4uOWZlMzViYzRjZDlmOGMyMDI0MmVjNGYxNDQ2ZGIy
NDRkYWM4Y2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTExLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gT2JzZXJ2ZXIgQVZDYXB0dXJlRGV2aWNlICJzdXNwZW5kZWQiIHByb3BlcnR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1ODcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ2MDMwNTk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgQVZDYXB0dXJlIGNhbiBvbmx5IGJlIHRl
c3RlZCBtYW51YWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlc0ludGVybmFsKTogRG9uJ3Qgbm90aWZ5IG9mIGRl
dmljZXMgImNoYW5nZXMiCisgICAgICAgIHRoZSBmaXJzdCB0aW1lIHRoZSBkZXZpY2UgbGlzdCBp
cyBzY2FubmVkLgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlSXNBdmFpbGFibGUpOiBEb24ndCBj
aGVjayBmb3IgImlzSW5Vc2VCeUFub3RoZXJBcHBsaWNhdGlvbiIsIGl0IGRvZXNuJ3QKKyAgICAg
ICAgY2hhbmdlIGRldmljZSBhdmFpbGFiaWxpdHkuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpiZWdpbk9ic2VydmluZ0RldmljZXMpOiBOZXcsIG9ic2VydmUgInN1
c3BlbmRlZCIgb24gYWxsIAorICAgICAgICBkZXZpY2VzIGFuZCBhZGQgdGhlbSB0byB0aGUgY2Fj
aGVkIGxpc3QuCisgICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzdG9w
T2JzZXJ2aW5nRGV2aWNlcyk6IE5ldywgb3Bwb3NpdGUgb2YgYWJvdmUuCisgICAgICAgIChXZWJD
b3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQ2FwdHVyZURldmljZXMpOiBXYXRj
aCBmb3IgY2hhbmdlcyBpbiB0aGUgbGlzdCBvZgorICAgICAgICBkZXZpY2VzLgorICAgICAgICAo
V2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1hbmFnZXIp
OiBTdG9wIG9ic2VydmluZyBhbGwgY2FjaGVkIGRldmljZXMuCisgICAgICAgIChXZWJDb3JlOjpB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMpOgor
ICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRpc2Nvbm5l
Y3RdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlciBk
ZXZpY2VDb25uZWN0ZWREaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFu
Z2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnJlZnJlc2hBVkNhcHR1cmVEZXZpY2VzT2ZUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZUNvbm5lY3RlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0
ZWQpOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9i
c2VydmVyIGRldmljZURpc2Nvbm5lY3RlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29y
ZUFWQ2FwdHVyZURldmljZU1hbmFnZXJPYnNlcnZlciBkZXZpY2VDb25uZWN0ZWQ6XSk6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFW
VmlkZW9DYXB0dXJlU291cmNlKTogU3RvcCBvYnNlcnZpbmcgInJ1bm5pbmciIChub3QgInJhdGUi
KQorICAgICAgICBhbmQgInN1c3BlbmRlZCIuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKTogT2JzZXJ2ZSAicnVubmluZyIgKG5vdCAicmF0ZSIp
LCBhbmQgInN1c3BlbmRlZCIuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6Y2FwdHVyZURldmljZVN1c3BlbmRlZERpZENoYW5nZSk6CisgICAgICAgICgtW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmpl
Y3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisKIDIwMTgtMTEtMTIgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gRnJhbWUgcmUtb3JkZXJpbmcgY2FuIGNhdXNl
IGlmcmFtZXMgdG8gbmV2ZXIgYmUgZW5xdWV1ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oCmluZGV4IGIyMWNhOWI5MmEyNjRkODgwYTRkMjdhNDY4Mzc4NDUxZDM3MmUzMGUuLjRjZDI1
Mjg2Yjg2ZDY0NjhhYzQyNjA3OTVmMmZmNmIyYzMzMzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaApAQCAtMzYsNyArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogT0JKQ19DTEFTUyBBVkNhcHR1cmVEZXZpY2U7CitPQkpDX0NMQVNTIEFWQ2Fw
dHVyZURldmljZURpc2NvdmVyeVNlc3Npb247CiBPQkpDX0NMQVNTIEFWQ2FwdHVyZVNlc3Npb247
CitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TTXV0YWJsZUFycmF5OwogT0JKQ19D
TEFTUyBOU1N0cmluZzsKIE9CSkNfQ0xBU1MgV2ViQ29yZUFWQ2FwdHVyZURldmljZU1hbmFnZXJP
YnNlcnZlcjsKIApAQCAtNDksMjIgKzUyLDI1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgZGV2aWNlQ29ubmVj
dGVkKCk7CiAgICAgdm9pZCBkZXZpY2VEaXNjb25uZWN0ZWQoQVZDYXB0dXJlRGV2aWNlKik7CiAK
KyAgICB2b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIEFWQ2FwdHVyZURldmljZU1hbmFnZXIoKTsK
ICAgICB+QVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpIGZpbmFsOwogCi0gICAgdm9pZCByZWZyZXNo
Q2FwdHVyZURldmljZXMoKTsKICAgICB2b2lkIHJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9u
cygpOwotICAgIHZvaWQgcmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUoQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSk7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNl
c0ludGVybmFsKCk7CisgICAgdm9pZCBiZWdpbk9ic2VydmluZ0RldmljZXMoTlNBcnJheSopOwor
ICAgIHZvaWQgc3RvcE9ic2VydmluZ0RldmljZXMoTlNBcnJheSopOwogCiAgICAgUmV0YWluUHRy
PFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwog
ICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBtX0FWQ2FwdHVyZURldmljZXM7CisgICAgYm9vbCBtX25vdGlmeVdoZW5EZXZp
Y2VMaXN0Q2hhbmdlcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDM5ODM5ZDliNDg2ZmJlODY2YjZh
ZjcwMjIxZDJjYmIyNjg4ZDRmNTguLmY1NDIzN2JhMDg5N2FiNjU0NDg2YmNiNTI2ZTdmOWI4MmY3
ZjdmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC03Miw4ICs3Miw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtKGlkKWluaXRXaXRoQ2FsbGJhY2s6KEFW
Q2FwdHVyZURldmljZU1hbmFnZXIqKWNhbGxiYWNrOwogLSh2b2lkKWRpc2Nvbm5lY3Q7Ci0tKHZv
aWQpZGV2aWNlRGlzY29ubmVjdGVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0o
dm9pZClkZXZpY2VDb25uZWN0ZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSh2
b2lkKWRldmljZUNvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b247CistKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClv
YmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0
OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwxMCArODUsMTAgQEAgVmVjdG9y
PENhcHR1cmVEZXZpY2U+JiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlc0lu
dGVybmFsKCkKICAgICAgICAgcmV0dXJuIG1fZGV2aWNlczsKIAogICAgIHN0YXRpYyBib29sIGZp
cnN0VGltZSA9IHRydWU7Ci0gICAgaWYgKGZpcnN0VGltZSAmJiAhbV9kZXZpY2VzLnNpemUoKSkg
eworICAgIGlmIChmaXJzdFRpbWUpIHsKICAgICAgICAgZmlyc3RUaW1lID0gZmFsc2U7CiAgICAg
ICAgIHJlZnJlc2hDYXB0dXJlRGV2aWNlcygpOwotICAgICAgICByZWdpc3RlckZvckRldmljZU5v
dGlmaWNhdGlvbnMoKTsKKyAgICAgICAgbV9ub3RpZnlXaGVuRGV2aWNlTGlzdENoYW5nZXMgPSB0
cnVlOwogICAgIH0KIAogICAgIHJldHVybiBtX2RldmljZXM7CkBAIC0xMDUsMzggKzEwNSw3NCBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgZGV2aWNlSXNBdmFpbGFibGUoQVZDYXB0dXJlRGV2aWNlVHlw
ZWRlZiAqZGV2aWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBpZiAoW2RldmljZSBpc1N1c3BlbmRlZF0gfHwgW2RldmljZSBpc0luVXNl
QnlBbm90aGVyQXBwbGljYXRpb25dKQorICAgIGlmIChbZGV2aWNlIGlzU3VzcGVuZGVkXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQVZDYXB0dXJlRGV2aWNlc09mVHlwZShD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIHR5cGUpCit2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmJlZ2luT2JzZXJ2aW5nRGV2aWNlcyhOU0FycmF5KiBkZXZpY2VzKQogewotICAgIEFTU0VS
VCh0eXBlID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSB8fCB0eXBlID09IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUpOworICAgIGZvciAoQVZDYXB0dXJl
RGV2aWNlVHlwZWRlZiAqZGV2aWNlIGluIGRldmljZXMpCisgICAgICAgIFtkZXZpY2UgYWRkT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworICAg
IFttX0FWQ2FwdHVyZURldmljZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpkZXZpY2VzXTsKK30KIAot
ICAgIE5TU3RyaW5nICpwbGF0Zm9ybVR5cGUgPSAodHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpDYW1lcmEpID8gQVZNZWRpYVR5cGVWaWRlbyA6IEFWTWVkaWFUeXBlQXVkaW87Cit2
b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdEZXZpY2VzKE5TQXJyYXkq
IGRldmljZXMpCit7CisgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgaW4g
ZGV2aWNlcykKKyAgICAgICAgW2RldmljZSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5n
ZXQoKSBmb3JLZXlQYXRoOkAic3VzcGVuZGVkIl07CisgICAgW21fQVZDYXB0dXJlRGV2aWNlcyBy
ZW1vdmVPYmplY3RzSW5BcnJheTpkZXZpY2VzXTsKIAotICAgIGZvciAoQVZDYXB0dXJlRGV2aWNl
VHlwZWRlZiAqcGxhdGZvcm1EZXZpY2UgaW4gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2
aWNlc10pIHsKK30KIAotICAgICAgICBib29sIGhhc01hdGNoaW5nVHlwZSA9IFtwbGF0Zm9ybURl
dmljZSBoYXNNZWRpYVR5cGU6cGxhdGZvcm1UeXBlXSB8fCBbcGxhdGZvcm1EZXZpY2UgaGFzTWVk
aWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdOwotICAgICAgICBpZiAoIWhhc01hdGNoaW5nVHlwZSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwordm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQ2FwdHVyZURldmljZXMoKQoreworICAgIGlmICghbV9BVkNhcHR1cmVEZXZpY2VzKSB7Cisg
ICAgICAgIG1fQVZDYXB0dXJlRGV2aWNlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOworICAgICAgICByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKKyAg
ICB9CiAKLSAgICAgICAgQ2FwdHVyZURldmljZSBleGlzdGluZ0NhcHR1cmVEZXZpY2UgPSBjYXB0
dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChwbGF0Zm9ybURldmljZS51bmlxdWVJRCk7Ci0gICAg
ICAgIGlmIChleGlzdGluZ0NhcHR1cmVEZXZpY2UgJiYgZXhpc3RpbmdDYXB0dXJlRGV2aWNlLnR5
cGUoKSA9PSB0eXBlKQorICAgIGJvb2wgZGV2aWNlSGFzQ2hhbmdlZCA9IGZhbHNlOworICAgIGF1
dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNlc107
CisgICAgYXV0byBzY3JhdGNoQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKyAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmNhY2hlZERldmljZSBp
biBtX0FWQ2FwdHVyZURldmljZXMuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFbY3VycmVudERldmlj
ZXMgY29udGFpbnNPYmplY3Q6Y2FjaGVkRGV2aWNlXSkKKyAgICAgICAgICAgIFtzY3JhdGNoQXJy
YXkgYWRkT2JqZWN0OmNhY2hlZERldmljZV07CisgICAgfQorICAgIGlmIChbc2NyYXRjaEFycmF5
IGNvdW50XSkKKyAgICAgICAgc3RvcE9ic2VydmluZ0RldmljZXMoc2NyYXRjaEFycmF5LmdldCgp
KTsKKyAgICBbc2NyYXRjaEFycmF5IHJlbW92ZUFsbE9iamVjdHNdOworCisgICAgVmVjdG9yPENh
cHR1cmVEZXZpY2U+IGRldmljZUxpc3Q7CisgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVm
ICpwbGF0Zm9ybURldmljZSBpbiBjdXJyZW50RGV2aWNlcykgeworCisgICAgICAgIGlmICghW3Bs
YXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXSAmJiAhW3BsYXRmb3Jt
RGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIENhcHR1cmVEZXZpY2UgY2FwdHVyZURldmljZShwbGF0Zm9ybURldmlj
ZS51bmlxdWVJRCwgdHlwZSwgcGxhdGZvcm1EZXZpY2UubG9jYWxpemVkTmFtZSk7CisgICAgICAg
IGlmICghW21fQVZDYXB0dXJlRGV2aWNlcy5nZXQoKSBjb250YWluc09iamVjdDpwbGF0Zm9ybURl
dmljZV0pCisgICAgICAgICAgICBbc2NyYXRjaEFycmF5IGFkZE9iamVjdDpwbGF0Zm9ybURldmlj
ZV07CisKKyAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2aWNl
LnVuaXF1ZUlELCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsIHBsYXRmb3JtRGV2
aWNlLmxvY2FsaXplZE5hbWUpOwogICAgICAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQoZGV2
aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2UpKTsKLSAgICAgICAgbV9kZXZpY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlKTsKKyAgICAgICAgZGV2aWNlTGlzdC5hcHBlbmQoY2FwdHVyZURldmlj
ZSk7CisKKyAgICAgICAgQ2FwdHVyZURldmljZSBleGlzdGluZ0NhcHR1cmVEZXZpY2UgPSBjYXB0
dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChwbGF0Zm9ybURldmljZS51bmlxdWVJRCk7CisgICAg
ICAgIGlmICghZXhpc3RpbmdDYXB0dXJlRGV2aWNlIHx8IChleGlzdGluZ0NhcHR1cmVEZXZpY2Ug
JiYgZXhpc3RpbmdDYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpDYW1lcmEgJiYgY2FwdHVyZURldmljZS5lbmFibGVkKCkgIT0gZXhpc3RpbmdDYXB0dXJl
RGV2aWNlLmVuYWJsZWQoKSkpCisgICAgICAgICAgICBkZXZpY2VIYXNDaGFuZ2VkID0gdHJ1ZTsK
ICAgICB9Ci19CiAKLXZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVE
ZXZpY2VzKCkKLXsKLSAgICByZWZyZXNoQVZDYXB0dXJlRGV2aWNlc09mVHlwZShDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpOworICAgIGlmIChbc2NyYXRjaEFycmF5IGNvdW50XSkK
KyAgICAgICAgYmVnaW5PYnNlcnZpbmdEZXZpY2VzKHNjcmF0Y2hBcnJheS5nZXQoKSk7CisKKyAg
ICBpZiAoZGV2aWNlSGFzQ2hhbmdlZCB8fCBtX2RldmljZXMuc2l6ZSgpICE9IGRldmljZUxpc3Qu
c2l6ZSgpKSB7CisgICAgICAgIGRldmljZUhhc0NoYW5nZWQgPSB0cnVlOworICAgICAgICBtX2Rl
dmljZXMgPSBkZXZpY2VMaXN0OworICAgIH0KKworICAgIGlmIChtX25vdGlmeVdoZW5EZXZpY2VM
aXN0Q2hhbmdlcyAmJiBkZXZpY2VIYXNDaGFuZ2VkKQorICAgICAgICBkZXZpY2VDaGFuZ2VkKCk7
CiB9CiAKIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6aXNBdmFpbGFibGUoKQpAQCAtMTU5
LDM3ICsxOTUsMTQgQEAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1h
bmFnZXIoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCldOwogICAgIFttX29iamNPYnNlcnZlciBk
aXNjb25uZWN0XTsKKyAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSBpbiBt
X0FWQ2FwdHVyZURldmljZXMuZ2V0KCkpCisgICAgICAgIFtkZXZpY2UgcmVtb3ZlT2JzZXJ2ZXI6
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCJdOwogfQogCiB2b2lk
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygp
CiB7Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoZGV2aWNlQ29ubmVjdGVk
OikgbmFtZTpBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoZGV2aWNlRGlzY29ubmVj
dGVkOikgbmFtZTpBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07Ci19Ci0KLXZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlQ29ubmVj
dGVkKCkKLXsKLSAgICByZWZyZXNoQ2FwdHVyZURldmljZXMoKTsKLSAgICBkZXZpY2VDaGFuZ2Vk
KCk7Ci19Ci0KLXZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVk
KEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSkKLXsKLSAgICBhdXRvJiBkZXZpY2VzID0g
Y2FwdHVyZURldmljZXNJbnRlcm5hbCgpOwotCi0gICAgc2l6ZV90IGNvdW50ID0gZGV2aWNlcy5z
aXplKCk7Ci0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGRl
dmljZUlEID0gZGV2aWNlLnVuaXF1ZUlEOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewotICAgICAgICBpZiAoZGV2aWNlc1tpXS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZp
Y2VJRCkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
ZGV2aWNlRGlzY29ubmVjdGVkKCVwKSwgZGV2aWNlICVkIGRpc2FibGVkIiwgdGhpcywgaSk7Ci0g
ICAgICAgICAgICBkZXZpY2VzW2ldLnNldEVuYWJsZWQoZmFsc2UpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZGV2aWNlQ2hhbmdlZCgpOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNl
bGVjdG9yKGRldmljZUNvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6QVZDYXB0dXJlRGV2aWNlV2Fz
Q29ubmVjdGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGRldmljZUNvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6QVZDYXB0dXJl
RGV2aWNlV2FzRGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkBAIC0yMDgsMzIgKzIyMSwzMiBAQCB2b2lkIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3RlZChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBk
ZXZpY2UpCiAtICh2b2lkKWRpc2Nvbm5lY3QKIHsKICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlv
dXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGZdOwotICAgIG1fY2FsbGJhY2sgPSAwOwor
ICAgIG1fY2FsbGJhY2sgPSBuaWw7CiB9CiAKLS0gKHZvaWQpZGV2aWNlRGlzY29ubmVjdGVkOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgorLSAodm9pZClkZXZpY2VDb25uZWN0ZWREaWRD
aGFuZ2U6KE5TTm90aWZpY2F0aW9uICopdW51c2VkTm90aWZpY2F0aW9uCiB7CisgICAgVU5VU0VE
X1BBUkFNKHVudXNlZE5vdGlmaWNhdGlvbik7CiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewotICAgICAgICBpZiAobV9jYWxsYmFjaykgewotICAgICAgICAgICAgQVZDYXB0dXJlRGV2
aWNlVHlwZWRlZiAqZGV2aWNlID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOwotICAgICAgICAgICAg
bV9jYWxsYmFjay0+ZGV2aWNlRGlzY29ubmVjdGVkKGRldmljZSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgICAgICBtX2NhbGxiYWNrLT5yZWZyZXNoQ2FwdHVy
ZURldmljZXMoKTsKICAgICB9KTsKIH0KIAotLSAodm9pZClkZXZpY2VDb25uZWN0ZWQ6KE5TTm90
aWZpY2F0aW9uICopdW51c2VkTm90aWZpY2F0aW9uCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5Kilj
aGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAogewotICAgIFVOVVNFRF9QQVJBTSh1bnVzZWRO
b3RpZmljYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oY2hhbmdlKTsKKwogICAgIGlmICghbV9jYWxs
YmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgaWYgKG1fY2FsbGJhY2spCi0gICAgICAgICAgICBt
X2NhbGxiYWNrLT5kZXZpY2VDb25uZWN0ZWQoKTsKLSAgICB9KTsKKyAgICBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAic3VzcGVuZGVkIl0pCisgICAgICAgIG1fY2FsbGJhY2stPnJlZnJl
c2hDYXB0dXJlRGV2aWNlcygpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5o
CmluZGV4IDY1M2M4ZGVlM2RkMjcyNWQ3NTJmYTc0YWQ5NjhkMjBhM2I1NDU3ZmQuLmE4M2Q2NjE4
NjM1ZWM4MTVmNjFhOWJlMmU1MmNhMjVmNGNjYjk0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhcHR1cmVTZXNzaW9u
SXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQgY2FwdHVyZVNlc3Npb25SdW50aW1l
RXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+KTsKICAgICB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRw
dXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1
ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiopOworICAgIHZvaWQgY2FwdHVyZURldmljZVN1
c3BlbmRlZERpZENoYW5nZSgpOwogCiBwcml2YXRlOgogICAgIEFWVmlkZW9DYXB0dXJlU291cmNl
KEFWQ2FwdHVyZURldmljZSosIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNoU2FsdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMTk4MTQ4YzY4NWM4OTllNWQzMmFjY2IxMzhk
ZTU0MmY1MzM1M2FkMS4uNDAxNzk2MTRkNjc5MGI2YTMxNGNiZjY1OGRiZDUyN2Q3MmMzOTNmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMTg5LDcgKzE4OSw4IEBAIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKQogICAgIGlmICghbV9zZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgW21fc2Vzc2lvbiBy
ZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicnVubmluZyJd
OworICAgIFttX2RldmljZSByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOkAic3VzcGVuZGVkIl07CiAgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKICAg
ICAgICAgW21fc2Vzc2lvbiBzdG9wUnVubmluZ107CiB9CkBAIC00MDAsNyArNDAxLDggQEAgYm9v
bCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBtX3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0
YW5jZSgpIGluaXRdKTsKLSAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVy
LmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRp
b25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CisgICAgW21fc2Vzc2lvbiBhZGRPYnNlcnZlcjpt
X29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAicnVubmluZyIgb3B0aW9uczpOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworICAgIFttX2Rldmlj
ZSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAic3VzcGVuZGVk
IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5p
bF07CiAKICAgICBbbV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07CiAgICAgYm9vbCBzdWNj
ZXNzID0gc2V0dXBDYXB0dXJlU2Vzc2lvbigpOwpAQCAtNTQzLDYgKzU0NSwxOSBAQCB2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29s
IHN0YXRlKQogICAgIH0pOwogfQogCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJl
RGV2aWNlU3VzcGVuZGVkRGlkQ2hhbmdlKCkKK3sKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10geworICAgICAgICBhdXRvIGlzU3VzcGVu
ZGVkID0gW21fZGV2aWNlIGlzU3VzcGVuZGVkXTsKKyAgICAgICAgaWYgKGlzU3VzcGVuZGVkID09
IG11dGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbm90aWZ5TXV0ZWRDaGFu
Z2UoaXNTdXNwZW5kZWQpOworICAgIH0pOworI2VuZGlmCit9CisKIGJvb2wgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmludGVycnVwdGVkKCkgY29uc3QKIHsKICAgICBpZiAobV9pbnRlcnJ1cHRpb24g
IT0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lKQpAQCAtNjY0LDggKzY3OSw4IEBAIHZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0
cjxOU05vdGlmaWNhdGlvCiAKICAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6
TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CiAKLSNpZiAhTE9HX0RJU0FCTEVECiAgICAgYm9vbCB3
aWxsQ2hhbmdlID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNh
dGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV07CisjaWYgIUxPR19ESVNBQkxFRAogCiAgICAgaWYg
KHdpbGxDaGFuZ2UpCiAgICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIHdpbGwgY2hhbmdlLCBr
ZXlQYXRoID0gJXMiLCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSk7CkBAIC02NzUsOCArNjkw
LDEwIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJy
dXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAo
W2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicnVubmluZyJdKQorICAgIGlmICghd2lsbENoYW5n
ZSAmJiBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJydW5uaW5nIl0pCiAgICAgICAgIG1fY2Fs
bGJhY2stPmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFs
dWVdKTsKKyAgICBpZiAoIXdpbGxDaGFuZ2UgJiYgW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
c3VzcGVuZGVkIl0pCisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVEZXZpY2VTdXNwZW5kZWRE
aWRDaGFuZ2UoKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354697</attachid>
            <date>2018-11-13 13:40:41 -0800</date>
            <delta_ts>2018-11-13 14:21:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191587-20181113134040.patch</filename>
            <type>text/plain</type>
            <size>16113</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU4Y2JjMjBiNjA1M2Zm
NzRkMzE1MTBjY2RlMDAwNWQ2NmQwZWVhYS4uYjIxZTc4YTY1NTM0MjFkOWE4NzBiZDM4NDFlMDRi
N2ZjMmZkMGE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTExLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gT2JzZXJ2ZXIgQVZDYXB0dXJlRGV2aWNlICJzdXNwZW5kZWQiIHByb3BlcnR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1ODcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ2MDMwNTk4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBBVkNhcHR1cmUgY2FuIG9ubHkgYmUgdGVz
dGVkIG1hbnVhbGx5LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VzSW50ZXJuYWwpOiBEb24ndCBub3RpZnkgb2YgZGV2
aWNlcyAiY2hhbmdlcyIKKyAgICAgICAgdGhlIGZpcnN0IHRpbWUgdGhlIGRldmljZSBsaXN0IGlz
IHNjYW5uZWQuCisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VJc0F2YWlsYWJsZSk6IERvbid0IGNo
ZWNrIGZvciAiaXNJblVzZUJ5QW5vdGhlckFwcGxpY2F0aW9uIiwgaXQgZG9lc24ndAorICAgICAg
ICBjaGFuZ2UgZGV2aWNlIGF2YWlsYWJpbGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmJlZ2luT2JzZXJ2aW5nRGV2aWNlcyk6IE5ldywgb2JzZXJ2ZSAic3Vz
cGVuZGVkIiBvbiBhbGwgCisgICAgICAgIGRldmljZXMgYW5kIGFkZCB0aGVtIHRvIHRoZSBjYWNo
ZWQgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnN0b3BP
YnNlcnZpbmdEZXZpY2VzKTogTmV3LCBvcHBvc2l0ZSBvZiBhYm92ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcyk6IFdhdGNo
IGZvciBjaGFuZ2VzIGluIHRoZSBsaXN0IG9mCisgICAgICAgIGRldmljZXMuCisgICAgICAgIChX
ZWJDb3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+QVZDYXB0dXJlRGV2aWNlTWFuYWdlcik6
IFN0b3Agb2JzZXJ2aW5nIGFsbCBjYWNoZWQgZGV2aWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnJlZ2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucyk6Cisg
ICAgICAgICgtW1dlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXIgZGlzY29ubmVj
dF0pOgorICAgICAgICAoLVtXZWJDb3JlQVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRl
dmljZUNvbm5lY3RlZERpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWQ2FwdHVyZURl
dmljZU1hbmFnZXJPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5n
ZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
cmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGV2aWNlQ29ubmVjdGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmRldmljZURpc2Nvbm5lY3Rl
ZCk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2Jz
ZXJ2ZXIgZGV2aWNlRGlzY29ubmVjdGVkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3Jl
QVZDYXB0dXJlRGV2aWNlTWFuYWdlck9ic2VydmVyIGRldmljZUNvbm5lY3RlZDpdKTogRGVsZXRl
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZW
aWRlb0NhcHR1cmVTb3VyY2UpOiBTdG9wIG9ic2VydmluZyAicnVubmluZyIgKG5vdCAicmF0ZSIp
CisgICAgICAgIGFuZCAic3VzcGVuZGVkIi4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0
dXJlU291cmNlOjpzZXR1cFNlc3Npb24pOiBPYnNlcnZlICJydW5uaW5nIiAobm90ICJyYXRlIiks
IGFuZCAic3VzcGVuZGVkIi4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
OjpjYXB0dXJlRGV2aWNlU3VzcGVuZGVkRGlkQ2hhbmdlKToKKyAgICAgICAgKC1bV2ViQ29yZUFW
VmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVj
dDpjaGFuZ2U6Y29udGV4dDpdKToKKwogMjAxOC0xMS0xMiAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBGcmFtZSByZS1vcmRlcmluZyBjYW4gY2F1c2Ug
aWZyYW1lcyB0byBuZXZlciBiZSBlbnF1ZXVlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKaW5kZXggYjIxY2E5YjkyYTI2NGQ4ODBhNGQyN2E0NjgzNzg0NTFkMzcyZTMwZS4uMDcyYTI1
OWI5NWU4YzY5Yzg5ZWIxZTU1OTA0ZDBkYzkzMTRiZjU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5oCkBAIC0zNyw2ICszNyw4IEBACiAKIE9CSkNfQ0xBU1MgQVZDYXB0dXJlRGV2
aWNlOwogT0JKQ19DTEFTUyBBVkNhcHR1cmVTZXNzaW9uOworT0JKQ19DTEFTUyBOU0FycmF5Owor
T0JKQ19DTEFTUyBOU011dGFibGVBcnJheTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiBPQkpDX0NM
QVNTIFdlYkNvcmVBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI7CiAKQEAgLTQ5LDIyICs1
MSwyNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQVZDYXB0dXJlRGV2aWNlTWFuYWdlciYgc2lu
Z2xldG9uKCk7CiAKLSAgICB2b2lkIGRldmljZUNvbm5lY3RlZCgpOwogICAgIHZvaWQgZGV2aWNl
RGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZSopOwogCisgICAgdm9pZCByZWZyZXNoQ2FwdHVy
ZURldmljZXMoKTsKKwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7
CiAKICAgICBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCk7CiAgICAgfkFWQ2FwdHVyZURldmljZU1h
bmFnZXIoKSBmaW5hbDsKIAotICAgIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VzKCk7CiAgICAg
dm9pZCByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlvbnMoKTsKLSAgICB2b2lkIHJlZnJlc2hB
VkNhcHR1cmVEZXZpY2VzT2ZUeXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwogICAgIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiYgY2FwdHVyZURldmljZXNJbnRlcm5hbCgpOworICAgIHZvaWQg
dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkNhcHR1cmVEZXZpY2VNYW5hZ2VyT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwogICAgIFZlY3Rv
cjxDYXB0dXJlRGV2aWNlPiBtX2RldmljZXM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBtX2F2Q2FwdHVyZURldmljZXM7CisgICAgYm9vbCBtX25vdGlmeVdoZW5EZXZpY2VMaXN0Q2hh
bmdlcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDM5ODM5ZDliNDg2ZmJlODY2YjZhZjcwMjIxZDJj
YmIyNjg4ZDRmNTguLjEwNjI2YWFlZjhhYTAyMzMyMTNhNmY1M2Y5YWFiOTk3YTcwNTUzMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC03Miw4ICs3Miw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtKGlkKWluaXRXaXRoQ2FsbGJhY2s6KEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIqKWNhbGxiYWNrOwogLSh2b2lkKWRpc2Nvbm5lY3Q7Ci0tKHZvaWQpZGV2aWNl
RGlzY29ubmVjdGVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKLS0odm9pZClkZXZp
Y2VDb25uZWN0ZWQ6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSh2b2lkKWRldmlj
ZUNvbm5lY3RlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb247CistKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OwogQGVuZAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwxMCArODUsMTAgQEAgVmVjdG9yPENhcHR1cmVE
ZXZpY2U+JiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlc0ludGVybmFsKCkK
ICAgICAgICAgcmV0dXJuIG1fZGV2aWNlczsKIAogICAgIHN0YXRpYyBib29sIGZpcnN0VGltZSA9
IHRydWU7Ci0gICAgaWYgKGZpcnN0VGltZSAmJiAhbV9kZXZpY2VzLnNpemUoKSkgeworICAgIGlm
IChmaXJzdFRpbWUpIHsKICAgICAgICAgZmlyc3RUaW1lID0gZmFsc2U7CiAgICAgICAgIHJlZnJl
c2hDYXB0dXJlRGV2aWNlcygpOwotICAgICAgICByZWdpc3RlckZvckRldmljZU5vdGlmaWNhdGlv
bnMoKTsKKyAgICAgICAgbV9ub3RpZnlXaGVuRGV2aWNlTGlzdENoYW5nZXMgPSB0cnVlOwogICAg
IH0KIAogICAgIHJldHVybiBtX2RldmljZXM7CkBAIC0xMDUsMzggKzEwNSw3NiBAQCBpbmxpbmUg
c3RhdGljIGJvb2wgZGV2aWNlSXNBdmFpbGFibGUoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2
aWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBpZiAoW2RldmljZSBpc1N1c3BlbmRlZF0gfHwgW2RldmljZSBpc0luVXNlQnlBbm90aGVy
QXBwbGljYXRpb25dKQorICAgIGlmIChbZGV2aWNlIGlzU3VzcGVuZGVkXSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQVZDYXB0dXJlRGV2aWNlc09mVHlwZShDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIHR5cGUpCit2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnVwZGF0
ZUNhY2hlZEFWQ2FwdHVyZURldmljZXMoKQogewotICAgIEFTU0VSVCh0eXBlID09IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSB8fCB0eXBlID09IENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6Ok1pY3JvcGhvbmUpOworICAgIGF1dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgZGV2aWNlc107CisgICAgYXV0byBjaGFuZ2VkRGV2aWNlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIGZvciAoQVZDYXB0dXJl
RGV2aWNlVHlwZWRlZiAqY2FjaGVkRGV2aWNlIGluIG1fYXZDYXB0dXJlRGV2aWNlcy5nZXQoKSkg
eworICAgICAgICBpZiAoIVtjdXJyZW50RGV2aWNlcyBjb250YWluc09iamVjdDpjYWNoZWREZXZp
Y2VdKQorICAgICAgICAgICAgW2NoYW5nZWREZXZpY2VzIGFkZE9iamVjdDpjYWNoZWREZXZpY2Vd
OworICAgIH0KIAotICAgIE5TU3RyaW5nICpwbGF0Zm9ybVR5cGUgPSAodHlwZSA9PSBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEpID8gQVZNZWRpYVR5cGVWaWRlbyA6IEFWTWVkaWFU
eXBlQXVkaW87CisgICAgaWYgKFtjaGFuZ2VkRGV2aWNlcyBjb3VudF0pIHsKKyAgICAgICAgZm9y
IChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgaW4gY2hhbmdlZERldmljZXMuZ2V0KCkp
CisgICAgICAgICAgICBbZGV2aWNlIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgp
IGZvcktleVBhdGg6QCJzdXNwZW5kZWQiXTsKKyAgICAgICAgW21fYXZDYXB0dXJlRGV2aWNlcyBy
ZW1vdmVPYmplY3RzSW5BcnJheTpjaGFuZ2VkRGV2aWNlcy5nZXQoKV07CisgICAgfQogCi0gICAg
Zm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpwbGF0Zm9ybURldmljZSBpbiBbZ2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VzXSkgeworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlw
ZWRlZiAqZGV2aWNlIGluIGN1cnJlbnREZXZpY2VzKSB7CiAKLSAgICAgICAgYm9vbCBoYXNNYXRj
aGluZ1R5cGUgPSBbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOnBsYXRmb3JtVHlwZV0gfHwg
W3BsYXRmb3JtRGV2aWNlIGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXTsKLSAgICAgICAg
aWYgKCFoYXNNYXRjaGluZ1R5cGUpCisgICAgICAgIGlmICghW2RldmljZSBoYXNNZWRpYVR5cGU6
QVZNZWRpYVR5cGVWaWRlb10gJiYgIVtkZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4
ZWRdKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ2FwdHVyZURldmljZSBleGlz
dGluZ0NhcHR1cmVEZXZpY2UgPSBjYXB0dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChwbGF0Zm9y
bURldmljZS51bmlxdWVJRCk7Ci0gICAgICAgIGlmIChleGlzdGluZ0NhcHR1cmVEZXZpY2UgJiYg
ZXhpc3RpbmdDYXB0dXJlRGV2aWNlLnR5cGUoKSA9PSB0eXBlKQorICAgICAgICBpZiAoW21fYXZD
YXB0dXJlRGV2aWNlcy5nZXQoKSBjb250YWluc09iamVjdDpkZXZpY2VdKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3Jt
RGV2aWNlLnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKLSAg
ICAgICAgY2FwdHVyZURldmljZS5zZXRFbmFibGVkKGRldmljZUlzQXZhaWxhYmxlKHBsYXRmb3Jt
RGV2aWNlKSk7Ci0gICAgICAgIG1fZGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmljZSk7CisgICAg
ICAgIFtkZXZpY2UgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpA
InN1c3BlbmRlZCIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6
KHZvaWQgKiluaWxdOworICAgICAgICBbbV9hdkNhcHR1cmVEZXZpY2VzLmdldCgpIGFkZE9iamVj
dDpkZXZpY2VdOwogICAgIH0KKwogfQogCiB2b2lkIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnJl
ZnJlc2hDYXB0dXJlRGV2aWNlcygpCiB7Ci0gICAgcmVmcmVzaEFWQ2FwdHVyZURldmljZXNPZlR5
cGUoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhKTsKKyAgICBpZiAoIW1fYXZDYXB0
dXJlRGV2aWNlcykgeworICAgICAgICBtX2F2Q2FwdHVyZURldmljZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmVnaXN0ZXJGb3JEZXZpY2VOb3Rp
ZmljYXRpb25zKCk7CisgICAgfQorCisgICAgdXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcygp
OworCisgICAgYm9vbCBkZXZpY2VIYXNDaGFuZ2VkID0gZmFsc2U7CisgICAgYXV0byogY3VycmVu
dERldmljZXMgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VzXTsKKyAgICBWZWN0
b3I8Q2FwdHVyZURldmljZT4gZGV2aWNlTGlzdDsKKyAgICBmb3IgKEFWQ2FwdHVyZURldmljZVR5
cGVkZWYgKnBsYXRmb3JtRGV2aWNlIGluIGN1cnJlbnREZXZpY2VzKSB7CisKKyAgICAgICAgaWYg
KCFbcGxhdGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dICYmICFbcGxh
dGZvcm1EZXZpY2UgaGFzTWVkaWFUeXBlOkFWTWVkaWFUeXBlTXV4ZWRdKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3Jt
RGV2aWNlLnVuaXF1ZUlELCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEsIHBsYXRm
b3JtRGV2aWNlLmxvY2FsaXplZE5hbWUpOworICAgICAgICBjYXB0dXJlRGV2aWNlLnNldEVuYWJs
ZWQoZGV2aWNlSXNBdmFpbGFibGUocGxhdGZvcm1EZXZpY2UpKTsKKworICAgICAgICBDYXB0dXJl
RGV2aWNlIGV4aXN0aW5nQ2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VGcm9tUGVyc2lzdGVu
dElEKHBsYXRmb3JtRGV2aWNlLnVuaXF1ZUlEKTsKKyAgICAgICAgaWYgKCFleGlzdGluZ0NhcHR1
cmVEZXZpY2UgfHwgKGV4aXN0aW5nQ2FwdHVyZURldmljZSAmJiBleGlzdGluZ0NhcHR1cmVEZXZp
Y2UudHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSAmJiBjYXB0dXJl
RGV2aWNlLmVuYWJsZWQoKSAhPSBleGlzdGluZ0NhcHR1cmVEZXZpY2UuZW5hYmxlZCgpKSkKKyAg
ICAgICAgICAgIGRldmljZUhhc0NoYW5nZWQgPSB0cnVlOworCisgICAgICAgIGRldmljZUxpc3Qu
YXBwZW5kKFdURk1vdmUoY2FwdHVyZURldmljZSkpOworICAgIH0KKworICAgIGlmIChkZXZpY2VI
YXNDaGFuZ2VkIHx8IG1fZGV2aWNlcy5zaXplKCkgIT0gZGV2aWNlTGlzdC5zaXplKCkpIHsKKyAg
ICAgICAgZGV2aWNlSGFzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fZGV2aWNlcyA9IFdURk1v
dmUoZGV2aWNlTGlzdCk7CisgICAgfQorCisgICAgaWYgKG1fbm90aWZ5V2hlbkRldmljZUxpc3RD
aGFuZ2VzICYmIGRldmljZUhhc0NoYW5nZWQpCisgICAgICAgIGRldmljZUNoYW5nZWQoKTsKIH0K
IAogYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCkBAIC0xNTksMzcg
KzE5NywxNCBAQCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+QVZDYXB0dXJlRGV2aWNlTWFuYWdl
cigpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKV07CiAgICAgW21fb2JqY09ic2VydmVyIGRpc2Nv
bm5lY3RdOworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNlIGluIG1fYXZD
YXB0dXJlRGV2aWNlcy5nZXQoKSkKKyAgICAgICAgW2RldmljZSByZW1vdmVPYnNlcnZlcjptX29i
amNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAic3VzcGVuZGVkIl07CiB9CiAKIHZvaWQgQVZD
YXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVnaXN0ZXJGb3JEZXZpY2VOb3RpZmljYXRpb25zKCkKIHsK
LSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkZXZpY2VDb25uZWN0ZWQ6KSBu
YW1lOkFWQ2FwdHVyZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
LSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkZXZpY2VEaXNjb25uZWN0ZWQ6
KSBuYW1lOkFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBvYmplY3Q6
bmlsXTsKLX0KLQotdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VDb25uZWN0ZWQo
KQotewotICAgIHJlZnJlc2hDYXB0dXJlRGV2aWNlcygpOwotICAgIGRldmljZUNoYW5nZWQoKTsK
LX0KLQotdm9pZCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZpY2VEaXNjb25uZWN0ZWQoQVZD
YXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlKQotewotICAgIGF1dG8mIGRldmljZXMgPSBjYXB0
dXJlRGV2aWNlc0ludGVybmFsKCk7Ci0KLSAgICBzaXplX3QgY291bnQgPSBkZXZpY2VzLnNpemUo
KTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgZGV2aWNl
SUQgPSBkZXZpY2UudW5pcXVlSUQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7Ci0gICAgICAgIGlmIChkZXZpY2VzW2ldLnBlcnNpc3RlbnRJZCgpID09IGRldmljZUlE
KSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpkZXZp
Y2VEaXNjb25uZWN0ZWQoJXApLCBkZXZpY2UgJWQgZGlzYWJsZWQiLCB0aGlzLCBpKTsKLSAgICAg
ICAgICAgIGRldmljZXNbaV0uc2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBkZXZpY2VDaGFuZ2VkKCk7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0
b3IoZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpBVkNhcHR1cmVEZXZpY2VXYXNDb25u
ZWN0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBzZWxlY3Rv
cjpAc2VsZWN0b3IoZGV2aWNlQ29ubmVjdGVkRGlkQ2hhbmdlOikgbmFtZTpBVkNhcHR1cmVEZXZp
Y2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKQEAgLTIwOCwzMiArMjIzLDMyIEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6ZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmlj
ZSkKIC0gKHZvaWQpZGlzY29ubmVjdAogewogICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1Bl
cmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZl07Ci0gICAgbV9jYWxsYmFjayA9IDA7CisgICAg
bV9jYWxsYmFjayA9IG5pbDsKIH0KIAotLSAodm9pZClkZXZpY2VEaXNjb25uZWN0ZWQ6KE5TTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCistICh2b2lkKWRldmljZUNvbm5lY3RlZERpZENoYW5n
ZTooTlNOb3RpZmljYXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KIHsKKyAgICBVTlVTRURfUEFS
QU0odW51c2VkTm90aWZpY2F0aW9uKTsKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
Ci0gICAgICAgIGlmIChtX2NhbGxiYWNrKSB7Ci0gICAgICAgICAgICBBVkNhcHR1cmVEZXZpY2VU
eXBlZGVmICpkZXZpY2UgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07Ci0gICAgICAgICAgICBtX2Nh
bGxiYWNrLT5kZXZpY2VEaXNjb25uZWN0ZWQoZGV2aWNlKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAobV9jYWxsYmFjaykKKyAgICAgICAgICAgIG1fY2FsbGJhY2stPnJlZnJlc2hDYXB0dXJlRGV2
aWNlcygpOwogICAgIH0pOwogfQogCi0tICh2b2lkKWRldmljZUNvbm5lY3RlZDooTlNOb3RpZmlj
YXRpb24gKil1bnVzZWROb3RpZmljYXRpb24KKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqKWNoYW5n
ZSBjb250ZXh0Oih2b2lkKiljb250ZXh0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlm
aWNhdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFNKGNv
bnRleHQpOworICAgIFVOVVNFRF9QQVJBTShjaGFuZ2UpOworCiAgICAgaWYgKCFtX2NhbGxiYWNr
KQogICAgICAgICByZXR1cm47CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewotICAgICAgICBpZiAobV9jYWxsYmFjaykKLSAgICAgICAgICAgIG1fY2Fs
bGJhY2stPmRldmljZUNvbm5lY3RlZCgpOwotICAgIH0pOworICAgIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJzdXNwZW5kZWQiXSkKKyAgICAgICAgbV9jYWxsYmFjay0+cmVmcmVzaENh
cHR1cmVEZXZpY2VzKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5k
ZXggNjUzYzhkZWUzZGQyNzI1ZDc1MmZhNzRhZDk2OGQyMGEzYjU0NTdmZC4uYTgzZDY2MTg2MzVl
YzgxNWY2MWE5YmUyZTUyY2EyNWY0Y2NiOTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FwdHVyZVNlc3Npb25Jc1J1
bm5pbmdEaWRDaGFuZ2UoYm9vbCk7CiAgICAgdm9pZCBjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJv
cihSZXRhaW5QdHI8TlNFcnJvcj4pOwogICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNh
bXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVy
UmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKik7CisgICAgdm9pZCBjYXB0dXJlRGV2aWNlU3VzcGVu
ZGVkRGlkQ2hhbmdlKCk7CiAKIHByaXZhdGU6CiAgICAgQVZWaWRlb0NhcHR1cmVTb3VyY2UoQVZD
YXB0dXJlRGV2aWNlKiwgU3RyaW5nJiYgaWQsIFN0cmluZyYmIGhhc2hTYWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxOTgxNDhjNjg1Yzg5OWU1ZDMyYWNjYjEzOGRlNTQy
ZjUzMzUzYWQxLi40MDE3OTYxNGQ2NzkwYjZhMzE0Y2JmNjU4ZGJkNTI3ZDcyYzM5M2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0xODksNyArMTg5LDggQEAgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpCiAgICAgaWYgKCFtX3Nlc3Npb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Nlc3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpj
T2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiXTsKKyAgICBbbV9zZXNzaW9uIHJlbW92
ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJydW5uaW5nIl07Cisg
ICAgW21fZGV2aWNlIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBh
dGg6QCJzdXNwZW5kZWQiXTsKICAgICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQogICAgICAg
ICBbbV9zZXNzaW9uIHN0b3BSdW5uaW5nXTsKIH0KQEAgLTQwMCw3ICs0MDEsOCBAQCBib29sIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNl
KCkgaW5pdF0pOwotICAgIFttX3Nlc3Npb24gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5l
dyBjb250ZXh0Oih2b2lkICopbmlsXTsKKyAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJydW5uaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CisgICAgW21fZGV2aWNlIGFk
ZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJzdXNwZW5kZWQiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopbmlsXTsK
IAogICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9uXTsKICAgICBib29sIHN1Y2Nlc3Mg
PSBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CkBAIC01NDMsNiArNTQ1LDE5IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3Rh
dGUpCiAgICAgfSk7CiB9CiAKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVEZXZp
Y2VTdXNwZW5kZWREaWRDaGFuZ2UoKQoreworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CisgICAgICAgIGF1dG8gaXNTdXNwZW5kZWQg
PSBbbV9kZXZpY2UgaXNTdXNwZW5kZWRdOworICAgICAgICBpZiAoaXNTdXNwZW5kZWQgPT0gbXV0
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBub3RpZnlNdXRlZENoYW5nZShp
c1N1c3BlbmRlZCk7CisgICAgfSk7CisjZW5kaWYKK30KKwogYm9vbCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6aW50ZXJydXB0ZWQoKSBjb25zdAogewogICAgIGlmIChtX2ludGVycnVwdGlvbiAhPSBJ
bnRlcnJ1cHRpb25SZWFzb246Ok5vbmUpCkBAIC02NjQsOCArNjc5LDggQEAgdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5T
Tm90aWZpY2F0aW8KIAogICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tl
eVZhbHVlQ2hhbmdlTmV3S2V5XTsKIAotI2lmICFMT0dfRElTQUJMRUQKICAgICBib29sIHdpbGxD
aGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9u
SXNQcmlvcktleV0gYm9vbFZhbHVlXTsKKyNpZiAhTE9HX0RJU0FCTEVECiAKICAgICBpZiAod2ls
bENoYW5nZSkKICAgICAgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNl
T2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXApIC0gd2lsbCBjaGFuZ2UsIGtleVBh
dGggPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhTdHJpbmddKTsKQEAgLTY3NSw4ICs2OTAsMTAg
QEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW8KICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJydW5uaW5nIl0pCisgICAgaWYgKCF3aWxsQ2hhbmdlICYm
IFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJ1bm5pbmciXSkKICAgICAgICAgbV9jYWxsYmFj
ay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0p
OworICAgIGlmICghd2lsbENoYW5nZSAmJiBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdXNw
ZW5kZWQiXSkKKyAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZURldmljZVN1c3BlbmRlZERpZENo
YW5nZSgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>