<?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>215642</bug_id>
          
          <creation_ts>2020-08-19 03:35:01 -0700</creation_ts>
          <short_desc>[WebXR] Make &quot;in parallel&quot; code run really in parallel</short_desc>
          <delta_ts>2020-10-15 07:00:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1681310</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-08-19 03:35:01 -0700</bug_when>
    <thetext>[WebXR] Make &quot;in parallel&quot; code run really in parallel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681311</commentid>
    <comment_count>1</comment_count>
      <attachid>406833</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-08-19 04:11:33 -0700</bug_when>
    <thetext>Created attachment 406833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681328</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-08-19 06:11:21 -0700</bug_when>
    <thetext>Committed r265850: &lt;https://trac.webkit.org/changeset/265850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681329</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-19 06:12:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/67399148&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681783</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-08-20 13:07:09 -0700</bug_when>
    <thetext>Reverted r265850 for reason:

Tests crash on debug builds

Committed r265959: &lt;https://trac.webkit.org/changeset/265959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682266</commentid>
    <comment_count>5</comment_count>
      <attachid>406833</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-23 14:57:42 -0700</bug_when>
    <thetext>Comment on attachment 406833
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:198
&gt;      // 2. Run the following steps in parallel:

When a spec says &quot;in parallel&quot;, that does actually mean they have to be run on separate threads, it&apos;s really just an event loop related hint that the steps don&apos;t need to be run immediately in a specific order (https://html.spec.whatwg.org/#in-parallel).

In WebCore, most of the DOM is not intended to be used from a non-main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682267</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-23 15:11:38 -0700</bug_when>
    <thetext>Sam said:

&gt; that does actually mean

He meant:

&gt; that does *not* actually mean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682270</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-23 16:57:57 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Sam said:
&gt; 
&gt; &gt; that does actually mean
&gt; 
&gt; He meant:
&gt; 
&gt; &gt; that does *not* actually mean

Oh gosh, yeah. That is a pretty major typo. Indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682284</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-08-24 01:45:20 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 406833 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406833&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:198
&gt; &gt;      // 2. Run the following steps in parallel:
&gt; 
&gt; When a spec says &quot;in parallel&quot;, that does actually mean they have to be run
&gt; on separate threads, it&apos;s really just an event loop related hint that the
&gt; steps don&apos;t need to be run immediately in a specific order
&gt; (https://html.spec.whatwg.org/#in-parallel).

Sure, I didn&apos;t imply that &quot;in parallel&quot; only means in a different thread/process, but it&apos;s definitely a possibility, isn&apos;t it? The standard explicitly mentions &quot;This standard does not define the precise mechanism by which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes, using different hyperthreads, cores, CPUs, machines, etc&quot;

&gt; 
&gt; In WebCore, most of the DOM is not intended to be used from a non-main
&gt; thread.

Right but in this case I thought it really did because we&apos;re talking about accessing devices in a synchronous (blocking) way. We don&apos;t want to stop the main thread because of that.

See for example this algorithm: https://immersive-web.github.io/webxr/#dom-xrsystem-requestsession

Step 5. asks implementors to run the following steps in parallel. In that case I considered that it really meant off the main thread for 2 reasons:
a) Step 5.3 is about retrieving the current immersive device which might force us to enumerate the list of immersive devices which is a synchronous operation in which we don&apos;t have to block the main thread
b) Step 5.4 does not make much sense IMHO if we&apos;re not in a different thread, why would we want to queue another task? My interpretation was that we want to do it to run the next steps in the main thread after retrieving the current device in another thread.

Granted we could think about a different way to solve it which is to implement https://immersive-web.github.io/webxr/#obtain-the-current-device and in consequence https://immersive-web.github.io/webxr/#ensure-an-immersive-xr-device-is-selected as async methods with a callback, and then perform the next steps in those callbacks. Would that make more sense? I guess that would still match the &quot;in parallel&quot; interpretation you made.

Note that we&apos;d still have to implement the platform code to be run asynchronously either using a different explicit thread, a work queue or the like, wouldn&apos;t we?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682301</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 05:43:55 -0700</bug_when>
    <thetext>What typically happens is that you hop to a background thread when doing I/O stuff like reading/writing files.
Usually this should be hidden by APIs that would be asynchronous and take a callback.
In WebCore DOM code, you would just call this API passing a callback capturing the promise instead of calling a synchronous API and resolving the promise with the result of the synchronous API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682302</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 05:45:05 -0700</bug_when>
    <thetext>A typical case where you would like to run things in parallel is if you have to enumerate WebXR devices. This might be done once for the whole process or by IPCing to UIProcess. In any case, getting the list of devices would be done through a callback based API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685339</commentid>
    <comment_count>11</comment_count>
      <attachid>407891</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-03 10:49:37 -0700</bug_when>
    <thetext>Created attachment 407891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687020</commentid>
    <comment_count>12</comment_count>
      <attachid>407891</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-09-09 10:15:04 -0700</bug_when>
    <thetext>Comment on attachment 407891
Patch

Not asking for review yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698091</commentid>
    <comment_count>13</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2020-10-15 07:00:37 -0700</bug_when>
    <thetext>Closing this.

See https://bugs.webkit.org/show_bug.cgi?id=217172</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406833</attachid>
            <date>2020-08-19 04:11:33 -0700</date>
            <delta_ts>2020-09-03 10:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215642-20200819131132.patch</filename>
            <type>text/plain</type>
            <size>10041</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyZGExZTFiZDk2NGIx
MmNhYjhiMGUxNDEwNTZhZTNmOTcyOWI1OS4uNzkxZjlmNWJlMWEyYWUzNjUyM2I2Yzc1YWMzMjFj
Mjg5ZDk1MDJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA4LTE5ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TWFrZSAiaW4gcGFyYWxsZWwiIGNvZGUgcnVuIHJlYWxseSBpbiBwYXJhbGxlbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjQyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgdGhlIEhUTUwgc3BlYyBt
ZW50aW9ucyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVj
dHVyZS5odG1sI2luLXBhcmFsbGVsCisgICAgICAgICJpbiBwYXJhbGxlbCIgbWVhbnMgdGhhdCB0
aGUgdGFzayBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsIHRvIHRoZSBldmVudCBsb29wIHVzaW5n
IGFueSBhdmFpbGFibGUKKyAgICAgICAgbWVjaGFuaXNtICh0aHJlYWRzLCBwcm9jZXNzZXNzLi4u
KS4gV2Ugd2VyZSBpbnN0ZWFkIHF1ZXVlaW5nIHRob3NlIHRhc2tzIHRvIGJlIHJ1biBpbiB0aGUg
bWFpbgorICAgICAgICB0aHJlYWQgY2F1c2luZyBmcmVlemVzIHdoaWxlIGluaXRpYWxpemluZyB0
aGUgd2hvbGUgT3BlblhSIG1hY2hpbmVyeS4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNz
aW9uKTogY3JlYXRlIGEgV29ya1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpyZXF1ZXN0UmVmZXJlbmNlU3BhY2UpOiBEaXNwYXRjaCB0byB0aGUgd29yayBxdWV1ZS4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06Oldl
YlhSU3lzdGVtKTogY3JlYXRlIGEgV29ya1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
eXN0ZW06OmlzU2Vzc2lvblN1cHBvcnRlZCk6IERpc3BhdGNoIHRvIHRoZSB3b3JrIHF1ZXVlLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKTogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCiAyMDIwLTA4LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXVkaW9CdWZmZXIuZHVyYXRp
b24gc2hvdWxkIHVzZSBkb3VibGUgcHJlY2lzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggZGNhMDUwY2Y1NTQyODEzNjExNmQzYjdjYjE0
YTk1Nzc1N2VkMWY4OC4uMzgzOWNjNGQzODNmZmY4NDI1ZWY3MGE2N2NlNjRlNzNkYTFiNzc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlhSUmVuZGVyU3RhdGVJbml0LmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw2ICs1NCw3
IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJT
eXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1f
ZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdl
YlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAsIG1fd29ya1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJYUlNlc3Npb24gd29yayBxdWV1ZSIpKQogICAgICwgbV9hbmltYXRpb25UaW1l
cigqdGhpcywgJldlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKICAgICAvLyBG
SVhNRTogSWYgbm8gb3RoZXIgZmVhdHVyZXMgb2YgdGhlIHVzZXIgYWdlbnQgaGF2ZSBkb25lIHNv
IGFscmVhZHksIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBwbGF0Zm9ybS1zcGVjaWZpYyBzdGVwcyB0
bwpAQCAtMTg3LDE3ICsxODksMjcgQEAgYm9vbCBXZWJYUlNlc3Npb246OnJlZmVyZW5jZVNwYWNl
SXNTdXBwb3J0ZWQoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkgY29uc3QKIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnNlc3Npb24tcmVxdWVzdHJlZmVy
ZW5jZXNwYWNlCiB2b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVm
ZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJlcXVlc3RSZWZlcmVuY2VTcGFjZVByb21pc2UmJiBwcm9t
aXNlKQogewotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpIHsK
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcg
UHJvbWlzZS4KICAgICAvLyAyLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
LSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgdHlwZV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgIG1f
d29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHdl
YWtEb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCkpLCB0
eXBlXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gIDIuMS4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNw
YWNlLCByZWZlcmVuY2VTcGFjZSwgd2l0aCB0aGUgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZS4K
ICAgICAgICAgLy8gIDIuMi4gSWYgcmVmZXJlbmNlU3BhY2UgaXMgbnVsbCwgcmVqZWN0IHByb21p
c2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAg
ICAgaWYgKCFyZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCF3ZWFrRG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTIwNSwxMyArMjE3LDE1IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJlbmNl
U3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVyCiAgICAgICAgIFJl
ZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKICAgICAgICAgQVNTRVJU
KGlzPERvY3VtZW50Pihjb250ZXh0KSk7CiAgICAgICAgIGlmICh0eXBlID09IFhSUmVmZXJlbmNl
U3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9
IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoKndlYWtEb2N1bWVudCwgbWFrZVJl
ZigqdGhpcyksIHR5cGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFj
ZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0g
V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKCp3ZWFrRG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMp
LCB0eXBlKTsKIAogICAgICAgICAvLyAgMi4zLiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVu
Y2VTcGFjZS4KICAgICAgICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCi0gICAgICAgIHByb21pc2Uu
cmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlZmVyZW5jZVNwYWNlID0g
cmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UpOworICAgICAgICB9KTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXgg
ZTRjMjdkYjRiOTBkOTIxZTIxNTU1YTZhMjg2OTA2ZTk4YzYzYTBlOC4uYmJiZDgyNjQxZDJmMDI3
NDg5MWY0ZDhlMzdjMjMzMjUwZjFmZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMjIsNiArMTIzLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0
Q2FsbGJhY2s+PiBtX2NhbGxiYWNrczsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2Fs
bGJhY2s+PiBtX3J1bm5pbmdDYWxsYmFja3M7CiAKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtR
dWV1ZTsKKwogICAgIFRpbWVyIG1fYW5pbWF0aW9uVGltZXI7CiAgICAgTW9ub3RvbmljVGltZSBt
X2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IGViYWJjYzQzZTQ0YjFiNDU5NzAxN2Y3Mzcz
MjMwYjY4NmIxNzliOTYuLjQxZjMzYzE1NmU4MzgwOWQ4N2QwZjQ5OTMyNDg4ZmMzYTI5NDYyMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC02
MSw2ICs2MSw3IEBAIFJlZjxXZWJYUlN5c3RlbT4gV2ViWFJTeXN0ZW06OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250CiAKIFdlYlhSU3lzdGVtOjpXZWJY
UlN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICwgbV93
b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIlhSU3lzdGVtIHdvcmsgcXVldWUiKSkKIHsKICAg
ICBtX2lubGluZVhSRGV2aWNlID0gbWFrZVdlYWtQdHIobV9kZWZhdWx0SW5saW5lRGV2aWNlKTsK
ICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTE0NCwyNCArMTQ1LDMyIEBAIHZvaWQgV2ViWFJT
eXN0ZW06OmlzU2Vzc2lvblN1cHBvcnRlZChYUlNlc3Npb25Nb2RlIG1vZGUsIElzU2Vzc2lvblN1
cHBvcnRlZFByb21pCiAgICAgfQogCiAgICAgLy8gNC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMg
aW4gcGFyYWxsZWw6Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIG1vZGVdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgbW9kZV0gKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCiAgICAgICAgIC8vIDQuMSBFbnN1cmUgYW4gaW1tZXJzaXZlIFhS
IGRldmljZSBpcyBzZWxlY3RlZC4KICAgICAgICAgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1Nl
bGVjdGVkKCk7CiAKICAgICAgICAgLy8gNC4yIElmIHRoZSBpbW1lcnNpdmUgWFIgZGV2aWNlIGlz
IG51bGwsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4K
ICAgICAgICAgaWYgKCFtX2FjdGl2ZUltbWVyc2l2ZURldmljZSkgewotICAgICAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUoZmFsc2UpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA0LjMgSWYgdGhlIGltbWVyc2l2ZSBYUiBkZXZpY2Un
cyBsaXN0IG9mIHN1cHBvcnRlZCBtb2RlcyBkb2VzIG5vdCBjb250YWluIG1vZGUsIHJlc29sdmUg
cHJvbWlzZSB3aXRoIGZhbHNlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCFt
X2FjdGl2ZUltbWVyc2l2ZURldmljZS0+c3VwcG9ydHMobW9kZSkpIHsKLSAgICAgICAgICAgIHBy
b21pc2UucmVzb2x2ZShmYWxzZSk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gNC40IFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUu
Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZSh0cnVlKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKHRydWUpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApAQCAtMzYw
LDE0ICszNjksMTUgQEAgdm9pZCBXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBYUlNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IFgKICAgICB9CiAKICAgICAvLyA1
LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZG9jdW1lbnQg
PSBtYWtlV2Vha1B0cihkb2N1bWVudCksIGltbWVyc2l2ZSwgaW5pdCwgbW9kZSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgZG9jdW1lbnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCksIGltbWVyc2l2ZSwgaW5p
dCwgbW9kZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICAgICAgLy8gNS4xIExldCByZXF1aXJlZEZl
YXR1cmVzIGJlIG9wdGlvbnMnIHJlcXVpcmVkRmVhdHVyZXMuCiAgICAgICAgIC8vIDUuMiBMZXQg
b3B0aW9uYWxGZWF0dXJlcyBiZSBvcHRpb25zJyBvcHRpb25hbEZlYXR1cmVzLgogICAgICAgICAv
LyA1LjMgU2V0IGRldmljZSB0byB0aGUgcmVzdWx0IG9mIG9idGFpbmluZyB0aGUgY3VycmVudCBk
ZXZpY2UgZm9yIG1vZGUsIHJlcXVpcmVkRmVhdHVyZXMsIGFuZCBvcHRpb25hbEZlYXR1cmVzLgog
ICAgICAgICBhdXRvKiBkZXZpY2UgPSBvYnRhaW5DdXJyZW50RGV2aWNlKG1vZGUsIGluaXQucmVx
dWlyZWRGZWF0dXJlcywgaW5pdC5vcHRpb25hbEZlYXR1cmVzKTsKIAogICAgICAgICAvLyA1LjQg
UXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMs
IGRvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCksIGRldmljZSA9IG1ha2VXZWFrUHRyKGRldmlj
ZSksIGltbWVyc2l2ZSwgaW5pdCwgbW9kZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgp
IG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBkb2N1bWVudCA9IFdU
Rk1vdmUoZG9jdW1lbnQpLCBkZXZpY2UgPSBtYWtlV2Vha1B0cihkZXZpY2UpLCBpbW1lcnNpdmUs
IGluaXQsIG1vZGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGF1dG8gcmVqZWN0UHJvbWlzZVdpdGhOb3RTdXBwb3J0ZWRFcnJvciA9IG1ha2VT
Y29wZUV4aXQoWyZdICgpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdJbW1l
cnNpdmVTZXNzaW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmgKaW5kZXggOWFhZDEyOGI1NmU2YmZjOTdkM2I0ZmQyMDYwOTcwN2YyNWQyNmE1ZS4u
YzM0NjYxYTI1NTUwYjc0NTMzYWM0NTU3MzgwYTQ3ZTIwNWRhMDc1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CkBAIC0xMjMsNiArMTI0LDggQEAgcHJp
dmF0ZToKICAgICBXZWFrUHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9hY3RpdmVJbW1lcnNpdmVE
ZXZpY2U7CiAgICAgV2Vha0hhc2hTZXQ8UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2ltbWVyc2l2ZURl
dmljZXM7CiAgICAgV2Vha1B0cjxQbGF0Zm9ybVhSOjpEZXZpY2U+IG1faW5saW5lWFJEZXZpY2U7
CisKKyAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407891</attachid>
            <date>2020-09-03 10:49:37 -0700</date>
            <delta_ts>2020-09-09 10:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215642-20200903194935.patch</filename>
            <type>text/plain</type>
            <size>23549</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVhMDhhNWRmOWU4NzFl
ZjBjODk0ZGY1N2NkMWU0MjI0ZWQ3MjgwYS4uZjQ5MzdhOWQ2MGM3MGYyZGM0YjEzMDRiZjVhYzJj
M2M5YjM2ZTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA5LTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXZWJYUl0g
TWFrZSAiaW4gcGFyYWxsZWwiIGNvZGUgcnVuIHJlYWxseSBpbiBwYXJhbGxlbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjQyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NzM5OTE0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBcyB0aGUgSFRNTCBzcGVjIG1lbnRpb25zIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwjaW4tcGFyYWxsZWwK
KyAgICAgICAgImluIHBhcmFsbGVsIiBtZWFucyB0aGF0IHRoZSB0YXNrIHNob3VsZCBiZSBydW4g
aW4gcGFyYWxsZWwgdG8gdGhlIGV2ZW50IGxvb3AgdXNpbmcgYW55IGF2YWlsYWJsZQorICAgICAg
ICBtZWNoYW5pc20gKHRocmVhZHMsIHByb2Nlc3Nlc3MuLi4pLiBXZSB3ZXJlIGluc3RlYWQgcXVl
dWVpbmcgdGhvc2UgdGFza3MgdG8gYmUgcnVuIGluIHRoZSBtYWluCisgICAgICAgIHRocmVhZCBj
YXVzaW5nIGZyZWV6ZXMgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSB3aG9sZSBPcGVuWFIgbWFjaGlu
ZXJ5LgorCisgICAgICAgIEZyb20gbm93IG9uIGFsbCB0aGUgcGxhdGZvcm0gWFIgY29kZSB1c2lu
ZyBPcGVuWFIgY2FsbHMgaXMgZ29pbmcgdG8gYmUgZXhlY3V0ZWQgdXNpbmcgYSBXb3JrUXVldWUg
c28KKyAgICAgICAgdGhhdCBpdCBkb2VzIG5vdCBibG9jayB0aGUgbWFpbiB0aHJlYWQuIFRoaXMg
bWVhbnMgdGhhdCB0aGUgUGxhdGZvcm1YUiBBUEkgYmVjb21lcyBhc3luY2hyb25vdXMgYW5kCisg
ICAgICAgIHdpbGwgbm90aWZ5IGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpbiBh
IGNhbGxiYWNrIGV4ZWN1dGVkIGluIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06
OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCk6IEJlY2FtZSBhbiBhc3luY3Job25v
dXMgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06Om9idGFpbkN1cnJlbnRE
ZXZpY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjppc1Nlc3Npb25T
dXBwb3J0ZWQpOiBSZWZvcm1hdGVkIHRvIHVzZSB0aGUgbmV3IGFzeW5jaHJvbm91cyBtZXRob2Rz
LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OnJlcXVlc3RTZXNzaW9uKTogRGl0dG8u
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIGh0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1l
bnQ6OmNyZWF0ZUNvbnRleHRXZWJHTCk6IFJlbW92ZWQgV2ViWFIgY29kZSB0aGF0IGlzIG5vdCBu
ZWVkZWQgbm93IGFuZCB0aGF0CisgICAgICAgIHNob3VsZCBsaWtlbHkgZ28gZGlyZWN0bHkgaW5z
aWRlIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgY29uc3RydWN0b3IuCisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtlWFJDb21wYXRpYmxlKTogUmVmb3JtYXRl
ZCB0byB1c2UgdGhlIG5ldyBhc3luY2hyb25vdXMgbWV0aG9kcy4KKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuY3BwOgorICAgICAgICAoUGxhdGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6OnF1ZXVl
IGNvbnN0KTogUmV0dXJucyB0aGUgaW5zdGFuY2UncyB3b3JrIHF1ZXVlLgorICAgICAgICAoUGxh
dGZvcm1YUjo6SW5zdGFuY2U6OkltcGw6OkltcGwpOiBVc2UgdGhlIHdvcmsgcXVldWUgdG8gaW5p
dGlhbGl6ZSBPcGVuWFIuCisgICAgICAgIChQbGF0Zm9ybVhSOjpJbnN0YW5jZTo6ZW51bWVyYXRl
SW1tZXJzaXZlWFJEZXZpY2VzKTogRGlzcGF0Y2ggdGhlIHdvcmsgdG8gdGhlIHdvcmsgcXVldWUu
CisKIDIwMjAtMDktMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEludHJvZHVjZSBhIEMrKyBjaGFpbiBvZiBvcGVyYXRpb25zIGluIFJUQ1BlZXJDb25uZWN0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4
IGViYWJjYzQzZTQ0YjFiNDU5NzAxN2Y3MzczMjMwYjY4NmIxNzliOTYuLmI5MWMzMzNlZDVkNThj
YWVjZmIxMjVhZjBjYjg0NjdhY2M4MDVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC02OSw1OSArNjksNzIgQEAgV2ViWFJTeXN0ZW06Oldl
YlhSU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiBXZWJYUlN5c3RlbTo6fldlYlhSU3lzdGVtKCkgPSBkZWZhdWx0OwogCiAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNlbnN1cmVzLWFuLWltbWVyc2l2ZS14ci1kZXZp
Y2UtaXMtc2VsZWN0ZWQKLXZvaWQgV2ViWFJTeXN0ZW06OmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNl
SXNTZWxlY3RlZCgpCit2b2lkIFdlYlhSU3lzdGVtOjplbnN1cmVJbW1lcnNpdmVYUkRldmljZUlz
U2VsZWN0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIC8v
IERvbid0IGFzayBwbGF0Zm9ybSBjb2RlIGZvciBYUiBkZXZpY2VzLCB3ZSdyZSB1c2luZyBzaW11
bGF0ZWQgb25lcy4KLSAgICBpZiAoVU5MSUtFTFkobV90ZXN0aW5nRGV2aWNlcykpCisgICAgaWYg
KFVOTElLRUxZKG1fdGVzdGluZ0RldmljZXMpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UpCisg
ICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLyNlbnVtZXJhdGUtaW1tZXJzaXZlLXhyLWRldmljZXMKICAgICBhdXRvJiBw
bGF0Zm9ybVhSID0gUGxhdGZvcm1YUjo6SW5zdGFuY2U6OnNpbmdsZXRvbigpOwogICAgIGJvb2wg
aXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uID0gIW1faW1tZXJzaXZlWFJEZXZpY2VzSGF2ZUJl
ZW5FbnVtZXJhdGVkOwotICAgIHBsYXRmb3JtWFIuZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2Vz
KCk7Ci0gICAgbV9pbW1lcnNpdmVYUkRldmljZXNIYXZlQmVlbkVudW1lcmF0ZWQgPSB0cnVlOwot
ICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUjo6RGV2aWNlPj4mIGlt
bWVyc2l2ZVhSRGV2aWNlcyA9IHBsYXRmb3JtWFIuaW1tZXJzaXZlWFJEZXZpY2VzKCk7CisgICAg
cGxhdGZvcm1YUi5lbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoW3RoaXMsICZwbGF0Zm9ybVhS
LCBpc0ZpcnN0WFJEZXZpY2VzRW51bWVyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IGF1dG8gY2FsbENhbGxiYWNrID0gbWFrZVNjb3BlRXhpdChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0p
OworICAgICAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlc0hhdmVCZWVuRW51bWVyYXRlZCA9IHRydWU7
CisgICAgICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1YUjo6RGV2aWNl
Pj4mIGltbWVyc2l2ZVhSRGV2aWNlcyA9IHBsYXRmb3JtWFIuaW1tZXJzaXZlWFJEZXZpY2VzKCk7
CiAKLSAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzZWxlY3Qt
YW4taW1tZXJzaXZlLXhyLWRldmljZQotICAgIGF1dG8qIG9sZERldmljZSA9IG1fYWN0aXZlSW1t
ZXJzaXZlRGV2aWNlLmdldCgpOwotICAgIGlmIChpbW1lcnNpdmVYUkRldmljZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoaW1tZXJzaXZlWFJEZXZpY2VzLnNpemUoKSA9PSAxKSB7
Ci0gICAgICAgIG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZl
WFJEZXZpY2VzLmZpcnN0KCkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAg
ICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzZWxlY3QtYW4taW1t
ZXJzaXZlLXhyLWRldmljZQorICAgICAgICBhdXRvKiBvbGREZXZpY2UgPSBtX2FjdGl2ZUltbWVy
c2l2ZURldmljZS5nZXQoKTsKKyAgICAgICAgaWYgKGltbWVyc2l2ZVhSRGV2aWNlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW1tZXJzaXZlWFJEZXZp
Y2VzLnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICBtX2FjdGl2ZUltbWVyc2l2ZURldmljZSA9
IG1ha2VXZWFrUHRyKGltbWVyc2l2ZVhSRGV2aWNlcy5maXJzdCgpLmdldCgpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lv
biAmJiBvbGREZXZpY2UgJiYgaW1tZXJzaXZlWFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0gKGF1
dG8mIGVudHJ5KSB7IHJldHVybiBlbnRyeS5nZXQoKSA9PSBvbGREZXZpY2U7IH0pICE9IG5vdEZv
dW5kKQotICAgICAgICBBU1NFUlQobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xk
RGV2aWNlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IGEgYmV0dGVy
IFVBIHNlbGVjdGlvbiBtZWNoYW5pc20gaWYgcmVxdWlyZWQuCi0gICAgICAgIG1fYWN0aXZlSW1t
ZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZpcnN0KCkuZ2V0
KCkpOwotICAgIH0KKyAgICAgICAgaWYgKG1fYWN0aXZlSW1tZXJzaXZlU2Vzc2lvbiAmJiBvbGRE
ZXZpY2UgJiYgaW1tZXJzaXZlWFJEZXZpY2VzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgZW50cnkp
IHsgcmV0dXJuIGVudHJ5LmdldCgpID09IG9sZERldmljZTsgfSkgIT0gbm90Rm91bmQpCisgICAg
ICAgICAgICBBU1NFUlQobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkgPT0gb2xkRGV2aWNl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYSBiZXR0
ZXIgVUEgc2VsZWN0aW9uIG1lY2hhbmlzbSBpZiByZXF1aXJlZC4KKyAgICAgICAgICAgIG1fYWN0
aXZlSW1tZXJzaXZlRGV2aWNlID0gbWFrZVdlYWtQdHIoaW1tZXJzaXZlWFJEZXZpY2VzLmZpcnN0
KCkuZ2V0KCkpOworICAgICAgICB9CiAKLSAgICBpZiAoaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0
aW9uIHx8IG1fYWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoaXNGaXJzdFhSRGV2aWNlc0VudW1lcmF0aW9uIHx8IG1f
YWN0aXZlSW1tZXJzaXZlRGV2aWNlLmdldCgpID09IG9sZERldmljZSkKKyAgICAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIFRPRE86IDcuIFNodXQgZG93biBhbnkgYWN0aXZlIFhSU2Vzc2lvbnMu
Ci0gICAgLy8gVE9ETzogOC4gU2V0IHRoZSBYUiBjb21wYXRpYmxlIGJvb2xlYW4gb2YgYWxsIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgaW5zdGFuY2VzIHRvIGZhbHNlLgotICAgIC8vIFRPRE86
IDkuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IG5hbWVkIGRldmljZWNoYW5nZSBvbiB0
aGUgY29udGV4dCBvYmplY3QuCisgICAgICAgIC8vIFRPRE86IDcuIFNodXQgZG93biBhbnkgYWN0
aXZlIFhSU2Vzc2lvbnMuCisgICAgICAgIC8vIFRPRE86IDguIFNldCB0aGUgWFIgY29tcGF0aWJs
ZSBib29sZWFuIG9mIGFsbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIGluc3RhbmNlcyB0byBm
YWxzZS4KKyAgICAgICAgLy8gVE9ETzogOS4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQg
bmFtZWQgZGV2aWNlY2hhbmdlIG9uIHRoZSBjb250ZXh0IG9iamVjdC4KKyAgICB9KTsKIH0KIAot
Ci1QbGF0Zm9ybVhSOjpEZXZpY2UqIFdlYlhSU3lzdGVtOjpvYnRhaW5DdXJyZW50RGV2aWNlKFhS
U2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgSlNGZWF0dXJlc0FycmF5JiByZXF1aXJlZEZlYXR1cmVz
LCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIG9wdGlvbmFsRmVhdHVyZXMpCit2b2lkIFdlYlhSU3lz
dGVtOjpvYnRhaW5DdXJyZW50RGV2aWNlKFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3QgSlNGZWF0
dXJlc0FycmF5JiByZXF1aXJlZEZlYXR1cmVzLCBjb25zdCBKU0ZlYXR1cmVzQXJyYXkmIG9wdGlv
bmFsRmVhdHVyZXMsIE9idGFpbkN1cnJlbnREZXZpY2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmIChtb2RlID09IFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZUFyIHx8IG1vZGUgPT0gWFJT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKLSAgICAgICAgZW5zdXJlSW1tZXJzaXZlWFJEZXZp
Y2VJc1NlbGVjdGVkKCk7Ci0gICAgICAgIHJldHVybiBtX2FjdGl2ZUltbWVyc2l2ZURldmljZS5n
ZXQoKTsKKyAgICAgICAgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgY2Fs
bGJhY2sobV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UuZ2V0KCkpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghcmVxdWlyZWRGZWF0dXJlcy5pc0VtcHR5KCkg
fHwgIW9wdGlvbmFsRmVhdHVyZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhbGxiYWNrKG1faW5s
aW5lWFJEZXZpY2UuZ2V0KCkpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghcmVx
dWlyZWRGZWF0dXJlcy5pc0VtcHR5KCkgfHwgIW9wdGlvbmFsRmVhdHVyZXMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gbV9pbmxpbmVYUkRldmljZS5nZXQoKTsKIAotICAgIHJldHVybiAmbV9k
ZWZhdWx0SW5saW5lRGV2aWNlOworICAgIGNhbGxiYWNrKCZtX2RlZmF1bHRJbmxpbmVEZXZpY2Up
OwogfQogCiAKQEAgLTE0NCwxMCArMTU3LDggQEAgdm9pZCBXZWJYUlN5c3RlbTo6aXNTZXNzaW9u
U3VwcG9ydGVkKFhSU2Vzc2lvbk1vZGUgbW9kZSwgSXNTZXNzaW9uU3VwcG9ydGVkUHJvbWkKICAg
ICB9CiAKICAgICAvLyA0LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgbW9kZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsK
LSAgICAgICAgLy8gNC4xIEVuc3VyZSBhbiBpbW1lcnNpdmUgWFIgZGV2aWNlIGlzIHNlbGVjdGVk
LgotICAgICAgICBlbnN1cmVJbW1lcnNpdmVYUkRldmljZUlzU2VsZWN0ZWQoKTsKLQorICAgIGVu
c3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIG1vZGVdKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIC8vIDQuMiBJZiB0aGUgaW1tZXJzaXZlIFhSIGRldmljZSBpcyBudWxsLCBy
ZXNvbHZlIHByb21pc2Ugd2l0aCBmYWxzZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAg
IGlmICghbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2UpIHsKICAgICAgICAgICAgIHByb21pc2UucmVz
b2x2ZShmYWxzZSk7CkBAIC0zNjAsMTIgKzM3MSwxMSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpyZXF1
ZXN0U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFhSU2Vzc2lvbk1vZGUgbW9kZSwgY29uc3Qg
WAogICAgIH0KIAogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVs
OgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2Vi
WFIsIFt0aGlzLCBkb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgaW1tZXJzaXZlLCBp
bml0LCBtb2RlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIC8vIDUuMSBMZXQgcmVxdWlyZWRGZWF0dXJlcyBiZSBvcHRpb25zJyByZXF1aXJlZEZlYXR1
cmVzLgotICAgICAgICAvLyA1LjIgTGV0IG9wdGlvbmFsRmVhdHVyZXMgYmUgb3B0aW9ucycgb3B0
aW9uYWxGZWF0dXJlcy4KLSAgICAgICAgLy8gNS4zIFNldCBkZXZpY2UgdG8gdGhlIHJlc3VsdCBv
ZiBvYnRhaW5pbmcgdGhlIGN1cnJlbnQgZGV2aWNlIGZvciBtb2RlLCByZXF1aXJlZEZlYXR1cmVz
LCBhbmQgb3B0aW9uYWxGZWF0dXJlcy4KLSAgICAgICAgYXV0byogZGV2aWNlID0gb2J0YWluQ3Vy
cmVudERldmljZShtb2RlLCBpbml0LnJlcXVpcmVkRmVhdHVyZXMsIGluaXQub3B0aW9uYWxGZWF0
dXJlcyk7Ci0KKyAgICAvLyA1LjEgTGV0IHJlcXVpcmVkRmVhdHVyZXMgYmUgb3B0aW9ucycgcmVx
dWlyZWRGZWF0dXJlcy4KKyAgICAvLyA1LjIgTGV0IG9wdGlvbmFsRmVhdHVyZXMgYmUgb3B0aW9u
cycgb3B0aW9uYWxGZWF0dXJlcy4KKyAgICAvLyA1LjMgU2V0IGRldmljZSB0byB0aGUgcmVzdWx0
IG9mIG9idGFpbmluZyB0aGUgY3VycmVudCBkZXZpY2UgZm9yIG1vZGUsIHJlcXVpcmVkRmVhdHVy
ZXMsIGFuZCBvcHRpb25hbEZlYXR1cmVzLgorICAgIG9idGFpbkN1cnJlbnREZXZpY2UobW9kZSwg
aW5pdC5vcHRpb25hbEZlYXR1cmVzLCBpbml0Lm9wdGlvbmFsRmVhdHVyZXMsIFt0aGlzLCBkb2N1
bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50KSwgaW1tZXJzaXZlLCBpbml0LCBtb2RlLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oUGxhdGZvcm1YUjo6RGV2aWNlKiBkZXZpY2UpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAvLyA1LjQgUXVl
dWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgcXVldWVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGRv
Y3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCksIGRldmljZSA9IG1ha2VXZWFrUHRyKGRldmljZSks
IGltbWVyc2l2ZSwgaW5pdCwgbW9kZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11
dGFibGUgewogICAgICAgICAgICAgYXV0byByZWplY3RQcm9taXNlV2l0aE5vdFN1cHBvcnRlZEVy
cm9yID0gbWFrZVNjb3BlRXhpdChbJl0gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5oCmluZGV4IDlhYWQxMjhiNTZlNmJmYzk3ZDNiNGZkMjA2MDk3MDdmMjVk
MjZhNWUuLjEzZDcxZDRiODU5ODNkNWQ5MDAzNWM5NzFmNDJjYjVlMzEyZWU0ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVxdWVzdFNlc3Npb24oRG9jdW1lbnQmLCBYUlNlc3Npb25Nb2Rl
LCBjb25zdCBYUlNlc3Npb25Jbml0JiwgUmVxdWVzdFNlc3Npb25Qcm9taXNlJiYpOwogCiAgICAg
Ly8gVGhpcyBpcyBhbHNvIG5lZWRlZCBieSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYWtl
WFJDb21wYXRpYmxlKCkgYW5kIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVDb250ZXh0V2ViR0wo
KS4KLSAgICB2b2lkIGVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpOworICAgIHZv
aWQgZW5zdXJlSW1tZXJzaXZlWFJEZXZpY2VJc1NlbGVjdGVkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgYm9vbCBoYXNBY3RpdmVJbW1lcnNpdmVYUkRldmljZSgpIHsgcmV0dXJu
ICEhbV9hY3RpdmVJbW1lcnNpdmVEZXZpY2U7IH0KIAogICAgIHZvaWQgc2Vzc2lvbkVuZGVkKFdl
YlhSU2Vzc2lvbiYpOwpAQCAtOTQsNyArOTQsOCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgRmVh
dHVyZXNBcnJheSA9IFBsYXRmb3JtWFI6OkRldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzOwog
ICAgIHVzaW5nIEpTRmVhdHVyZXNBcnJheSA9IFZlY3RvcjxKU0M6OkpTVmFsdWU+OwotICAgIFBs
YXRmb3JtWFI6OkRldmljZSogb2J0YWluQ3VycmVudERldmljZShYUlNlc3Npb25Nb2RlLCBjb25z
dCBKU0ZlYXR1cmVzQXJyYXkmIHJlcXVpcmVkRmVhdHVyZXMsIGNvbnN0IEpTRmVhdHVyZXNBcnJh
eSYgb3B0aW9uYWxGZWF0dXJlcyk7CisgICAgdXNpbmcgT2J0YWluQ3VycmVudERldmljZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQbGF0Zm9ybVhSOjpEZXZpY2UqKT47CisgICAg
dm9pZCBvYnRhaW5DdXJyZW50RGV2aWNlKFhSU2Vzc2lvbk1vZGUsIGNvbnN0IEpTRmVhdHVyZXNB
cnJheSYgcmVxdWlyZWRGZWF0dXJlcywgY29uc3QgSlNGZWF0dXJlc0FycmF5JiBvcHRpb25hbEZl
YXR1cmVzLCBPYnRhaW5DdXJyZW50RGV2aWNlQ2FsbGJhY2smJik7CiAKICAgICBib29sIGltbWVy
c2l2ZVNlc3Npb25SZXF1ZXN0SXNBbGxvd2VkRm9yR2xvYmFsT2JqZWN0KERPTVdpbmRvdyYsIERv
Y3VtZW50JikgY29uc3Q7CiAgICAgYm9vbCBpbmxpbmVTZXNzaW9uUmVxdWVzdElzQWxsb3dlZEZv
ckdsb2JhbE9iamVjdChET01XaW5kb3cmLCBEb2N1bWVudCYsIGNvbnN0IFhSU2Vzc2lvbkluaXQm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXgg
YzMxZmIxOTVmNDhhMGY3NWY3NTNlNTk4MTQwMjg5M2VmZjM1OWVjMC4uMjI4YTFiMDY4NjAyN2Ux
NGIzYzBlMGVkZjk0NjIwODZjMTQ5ODJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKQEAgLTQyOSwxNCArNDI5LDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHRXZWJHTChjb25zdCBTdHJpbmcm
IHQKICAgICBpZiAoIXNob3VsZEVuYWJsZVdlYkdMKGRvY3VtZW50KCkuc2V0dGluZ3MoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0jaWYgRU5BQkxFKFdFQlhSKQogICAgIC8vIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyLWNvbXBhdGlibGUKLSAgICBpZiAo
YXR0cnMueHJDb21wYXRpYmxlKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVu
dCgpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgTmF2aWdhdG9yV2ViWFI6OnhyKHdpbmRvdy0+
bmF2aWdhdG9yKCkpLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZCgpOwotICAgIH0K
LSNlbmRpZgotCiAgICAgLy8gVE9ETyhXRUJYUik6IGVuc3VyZSB0aGUgY29udGV4dCBpcyBjcmVh
dGVkIGluIGEgY29tcGF0aWJsZSBncmFwaGljcwogICAgIC8vIGFkYXB0ZXIgd2hlbiB0aGVyZSBp
cyBhbiBhY3RpdmUgaW1tZXJzaXZlIGRldmljZS4KICAgICBtX2NvbnRleHQgPSBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoKnRoaXMsIGF0dHJzLCB0eXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKaW5kZXggODA1NGFkMzMzZThkMTQ0ZDE2OTA2Y2JlYTBlZTlhODdhYzk0Y2U4Ni4uNDJkNzM3
NmFhZjgzOGRkNmJjZmUwMjc0ZDNmMzMwMGRhMWU4YWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAg
LTM5MDgsNDUgKzM5MDgsNTIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5r
UHJvZ3JhbVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoV2UKIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS13ZWJnbHJlbmRlcmluZ2NvbnRleHRi
YXNlLW1ha2V4cmNvbXBhdGlibGUKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFr
ZVhSQ29tcGF0aWJsZShNYWtlWFJDb21wYXRpYmxlUHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAg
YXV0byByZWplY3RQcm9taXNlV2l0aEludmFsaWRTdGF0ZUVycm9yID0gbWFrZVNjb3BlRXhpdChb
Jl0gKCkgewotICAgICAgICBtX2lzWFJDb21wYXRpYmxlID0gZmFsc2U7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwotICAgIH0pOwotCiAg
ICAgLy8gUmV0dXJuaW5nIGFuIGV4Y2VwdGlvbiBpbiB0aGVzZSB0d28gY2hlY2tzIGlzIG5vdCBw
YXJ0IG9mIHRoZSBzcGVjLgogICAgIGF1dG8gY2FudmFzID0gaHRtbENhbnZhcygpOwotICAgIGlm
ICghY2FudmFzKQorICAgIGlmICghY2FudmFzKSB7CisgICAgICAgIG1faXNYUkNvbXBhdGlibGUg
PSBmYWxzZTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvKiB3aW5kb3cgPSBj
YW52YXMtPmRvY3VtZW50KCkuZG9tV2luZG93KCk7Ci0gICAgaWYgKCF3aW5kb3cpCisgICAgaWYg
KCF3aW5kb3cpIHsKKyAgICAgICAgbV9pc1hSQ29tcGF0aWJsZSA9IGZhbHNlOworICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAg
cmV0dXJuOworICAgIH0KIAogICAgIC8vIDEuIExldCBwcm9taXNlIGJlIGEgbmV3IFByb21pc2Uu
CiAgICAgLy8gMi4gTGV0IGNvbnRleHQgYmUgdGhlIHRhcmdldCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlIG9iamVjdC4KICAgICAvLyAzLiBFbnN1cmUgYW4gaW1tZXJzaXZlIFhSIGRldmljZSBp
cyBzZWxlY3RlZC4KICAgICBhdXRvJiB4clN5c3RlbSA9IE5hdmlnYXRvcldlYlhSOjp4cih3aW5k
b3ctPm5hdmlnYXRvcigpKTsKLSAgICB4clN5c3RlbS5lbnN1cmVJbW1lcnNpdmVYUkRldmljZUlz
U2VsZWN0ZWQoKTsKLQotICAgIC8vIDQuIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJv
b2xlYW4gYXMgZm9sbG93czoKLSAgICAvLyAgICBJZiBjb250ZXh04oCZcyBXZWJHTCBjb250ZXh0
IGxvc3QgZmxhZyBpcyBzZXQKLSAgICAvLyAgICAgIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRp
YmxlIGJvb2xlYW4gdG8gZmFsc2UgYW5kIHJlamVjdCBwcm9taXNlIHdpdGggYW4gSW52YWxpZFN0
YXRlRXJyb3IuCi0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIHhyU3lzdGVtLmVuc3VyZUltbWVyc2l2ZVhSRGV2aWNlSXNTZWxlY3RlZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgJnhyU3lzdGVtXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBhdXRvIHJlamVjdFByb21pc2VXaXRoSW52YWxpZFN0YXRlRXJyb3IgPSBt
YWtlU2NvcGVFeGl0KFsmXSgpIHsKKyAgICAgICAgICAgIG1faXNYUkNvbXBhdGlibGUgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH0pOworICAgICAgICB9KTsKKworICAgICAgICAvLyA0LiBTZXQgY29udGV4dOKAmXMgWFIg
Y29tcGF0aWJsZSBib29sZWFuIGFzIGZvbGxvd3M6CisgICAgICAgIC8vICAgIElmIGNvbnRleHTi
gJlzIFdlYkdMIGNvbnRleHQgbG9zdCBmbGFnIGlzIHNldAorICAgICAgICAvLyAgICAgIFNldCBj
b250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJvb2xlYW4gdG8gZmFsc2UgYW5kIHJlamVjdCBwcm9t
aXNlIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCisgICAgICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiB0aGUgaW1tZXJz
aXZlIFhSIGRldmljZSBpcyBudWxsCi0gICAgLy8gICAgU2V0IGNvbnRleHTigJlzIFhSIGNvbXBh
dGlibGUgYm9vbGVhbiB0byBmYWxzZSBhbmQgcmVqZWN0IHByb21pc2Ugd2l0aCBhbiBJbnZhbGlk
U3RhdGVFcnJvci4KLSAgICBpZiAoIXhyU3lzdGVtLmhhc0FjdGl2ZUltbWVyc2l2ZVhSRGV2aWNl
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gSWYgdGhlIGltbWVyc2l2ZSBYUiBkZXZp
Y2UgaXMgbnVsbAorICAgICAgICAvLyAgICBTZXQgY29udGV4dOKAmXMgWFIgY29tcGF0aWJsZSBi
b29sZWFuIHRvIGZhbHNlIGFuZCByZWplY3QgcHJvbWlzZSB3aXRoIGFuIEludmFsaWRTdGF0ZUVy
cm9yLgorICAgICAgICBpZiAoIXhyU3lzdGVtLmhhc0FjdGl2ZUltbWVyc2l2ZVhSRGV2aWNlKCkp
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiBjb250ZXh04oCZcyBYUiBjb21wYXRp
YmxlIGJvb2xlYW4gaXMgdHJ1ZS4gUmVzb2x2ZSBwcm9taXNlLgotICAgIC8vIElmIGNvbnRleHQg
d2FzIGNyZWF0ZWQgb24gYSBjb21wYXRpYmxlIGdyYXBoaWNzIGFkYXB0ZXIgZm9yIHRoZSBpbW1l
cnNpdmUgWFIgZGV2aWNlCi0gICAgLy8gIFNldCBjb250ZXh04oCZcyBYUiBjb21wYXRpYmxlIGJv
b2xlYW4gdG8gdHJ1ZSBhbmQgcmVzb2x2ZSBwcm9taXNlLgotICAgIC8vIE90aGVyd2lzZTogUXVl
dWUgYSB0YXNrIG9uIHRoZSBXZWJHTCB0YXNrIHNvdXJjZSB0byBwZXJmb3JtIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgLy8gVE9ETzogYWRkIGEgd2F5IHRvIHZlcmlmeSB0aGF0IHdlJ3JlIHVz
aW5nIGEgY29tcGF0aWJsZSBncmFwaGljcyBhZGFwdGVyLgotICAgIG1faXNYUkNvbXBhdGlibGUg
PSB0cnVlOwotICAgIHByb21pc2UucmVzb2x2ZSgpOwotICAgIHJlamVjdFByb21pc2VXaXRoSW52
YWxpZFN0YXRlRXJyb3IucmVsZWFzZSgpOworICAgICAgICAvLyBJZiBjb250ZXh04oCZcyBYUiBj
b21wYXRpYmxlIGJvb2xlYW4gaXMgdHJ1ZS4gUmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAvLyBJ
ZiBjb250ZXh0IHdhcyBjcmVhdGVkIG9uIGEgY29tcGF0aWJsZSBncmFwaGljcyBhZGFwdGVyIGZv
ciB0aGUgaW1tZXJzaXZlIFhSIGRldmljZQorICAgICAgICAvLyAgU2V0IGNvbnRleHTigJlzIFhS
IGNvbXBhdGlibGUgYm9vbGVhbiB0byB0cnVlIGFuZCByZXNvbHZlIHByb21pc2UuCisgICAgICAg
IC8vIE90aGVyd2lzZTogUXVldWUgYSB0YXNrIG9uIHRoZSBXZWJHTCB0YXNrIHNvdXJjZSB0byBw
ZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vIFRPRE86IGFkZCBhIHdheSB0
byB2ZXJpZnkgdGhhdCB3ZSdyZSB1c2luZyBhIGNvbXBhdGlibGUgZ3JhcGhpY3MgYWRhcHRlci4K
KyAgICAgICAgbV9pc1hSQ29tcGF0aWJsZSA9IHRydWU7CisgICAgICAgIHByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICByZWplY3RQcm9taXNlV2l0aEludmFsaWRTdGF0ZUVycm9yLnJlbGVhc2Uo
KTsKKyAgICB9KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKaW5kZXggZTNjNWI1MmZhOTYwMzYxMmViNGE0NDc4NWQ0OTRkODU1YjYzYTFhMS4uNDIy
YmJlNGQyMzliYWEzNmU5NGQyYTU3OTEzNzE1ZGIzMWU1MDk0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEluc3Rh
bmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5zdGFuY2UmIHNpbmdsZXRvbigpOwogCi0gICAg
dm9pZCBlbnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoKTsKKyAgICB2b2lkIGVudW1lcmF0ZUlt
bWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlPj4mIGltbWVyc2l2ZVhSRGV2aWNlcygpIGNv
bnN0IHsgcmV0dXJuIG1faW1tZXJzaXZlWFJEZXZpY2VzOyB9CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBMYXp5TmV2ZXJEZXN0cm95ZWQ8SW5zdGFuY2U+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IDRiMmNlMTBh
ZjlmYjhhODZlZjA0Zjg2NTIwYzYwODYyOWRlZjA1NTQuLjczYTRmNGVlZGZhZTU2NGFmN2UzMjRl
NGIwOThlZjU4NGUxYjliN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpZiBV
U0VfT1BFTlhSCiAjaW5jbHVkZSA8b3BlbnhyL29wZW54cl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNlbmRpZiAvLyBVU0VfT1BFTlhS
CkBAIC03Miw2ICs3NCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRV9PUEVOWFIKICAgICBYckluc3Rh
bmNlIHhySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlOyB9CisgICAgV29ya1F1
ZXVlJiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya1F1ZXVlLmdldCgpOyB9CiAjZW5kaWYK
IAogcHJpdmF0ZToKQEAgLTgwLDYgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5z
dGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkgY29uc3Q7CiAKICAgICBYckluc3RhbmNlIG1faW5z
dGFuY2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFJlZjxXb3JrUXVldWU+IG1fd29ya1F1ZXVl
OwogI2VuZGlmIC8vIFVTRV9PUEVOWFIKIH07CiAKQEAgLTE1MiwzOSArMTU2LDQ0IEBAIGJvb2wg
SW5zdGFuY2U6OkltcGw6OmNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkgY29uc3QK
IH0KICNlbmRpZiAvLyBVU0VfT1BFTlhSCiAKKyNpZiBVU0VfT1BFTlhSCiBJbnN0YW5jZTo6SW1w
bDo6SW1wbCgpCisgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiT3BlblhSIHdv
cmsgcXVldWUiKSkKIHsKLSNpZiBVU0VfT1BFTlhSCi0gICAgTE9HKFhSLCAiT3BlblhSOiBpbml0
aWFsaXppbmdcbiIpOworICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpc10oKSB7CisgICAg
ICAgIExPRyhYUiwgIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKIAotICAgIGVudW1lcmF0ZUFw
aUxheWVyUHJvcGVydGllcygpOworICAgICAgICBlbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMo
KTsKIAotICAgIGlmICghY2hlY2tJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoIWNoZWNrSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVz
KCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBs
aWNhdGlvbk5hbWUgPSAiV2ViWFIgKFdlYktpdCkiOwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2FwcGxpY2F0aW9uVmVyc2lvbiA9IDE7Ci0KLSAgICBjb25zdCBjaGFyKiBjb25zdCBlbmFi
bGVkRXh0ZW5zaW9uc1tdID0gewotICAgICAgICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05B
TUUsCi0gICAgfTsKLQotICAgIGF1dG8gY3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYcklu
c3RhbmNlQ3JlYXRlSW5mbywgWFJfVFlQRV9JTlNUQU5DRV9DUkVBVEVfSU5GTz4oKTsKLSAgICBj
cmVhdGVJbmZvLmNyZWF0ZUZsYWdzID0gMDsKLSAgICBzdGQ6Om1lbWNweShjcmVhdGVJbmZvLmFw
cGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvbk5hbWUsIHNfYXBwbGljYXRpb25OYW1lLCBYUl9NQVhf
QVBQTElDQVRJT05fTkFNRV9TSVpFKTsKLSAgICBjcmVhdGVJbmZvLmFwcGxpY2F0aW9uSW5mby5h
cGlWZXJzaW9uID0gWFJfQ1VSUkVOVF9BUElfVkVSU0lPTjsKLSAgICBjcmVhdGVJbmZvLmFwcGxp
Y2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSBzX2FwcGxpY2F0aW9uVmVyc2lvbjsKLSAg
ICBjcmVhdGVJbmZvLmVuYWJsZWRBcGlMYXllckNvdW50ID0gMDsKLSAgICBjcmVhdGVJbmZvLmVu
YWJsZWRFeHRlbnNpb25Db3VudCA9IFdURl9BUlJBWV9MRU5HVEgoZW5hYmxlZEV4dGVuc2lvbnMp
OwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbk5hbWVzID0gZW5hYmxlZEV4dGVuc2lv
bnM7Ci0KLSAgICBYckluc3RhbmNlIGluc3RhbmNlOwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhy
Q3JlYXRlSW5zdGFuY2UoJmNyZWF0ZUluZm8sICZpbnN0YW5jZSk7Ci0gICAgUkVUVVJOX0lGX0ZB
SUxFRChyZXN1bHQsICJ4ckNyZWF0ZUluc3RhbmNlKCkiLCBtX2luc3RhbmNlKTsKLSAgICBtX2lu
c3RhbmNlID0gaW5zdGFuY2U7Ci0gICAgTE9HKFhSLCAieHJDcmVhdGVJbnN0YW5jZSgpOiB1c2lu
ZyBpbnN0YW5jZSAlcFxuIiwgbV9pbnN0YW5jZSk7Ci0jZW5kaWYgLy8gVVNFX09QRU5YUgorICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlvbk5hbWUgPSAiV2ViWFIgKFdlYktp
dCkiOworICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcHBsaWNhdGlvblZlcnNpb24g
PSAxOworCisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGVuYWJsZWRFeHRlbnNpb25zW10gPSB7
CisgICAgICAgICAgICBYUl9NTkRfSEVBRExFU1NfRVhURU5TSU9OX05BTUUsCisgICAgICAgIH07
CisKKyAgICAgICAgYXV0byBjcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VD
cmVhdGVJbmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOworICAgICAgICBjcmVh
dGVJbmZvLmNyZWF0ZUZsYWdzID0gMDsKKyAgICAgICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5h
cHBsaWNhdGlvbkluZm8uYXBwbGljYXRpb25OYW1lLCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFY
X0FQUExJQ0FUSU9OX05BTUVfU0laRSk7CisgICAgICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25J
bmZvLmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJTSU9OOworICAgICAgICBjcmVhdGVJ
bmZvLmFwcGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSBzX2FwcGxpY2F0aW9uVmVy
c2lvbjsKKyAgICAgICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJDb3VudCA9IDA7CisgICAg
ICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gV1RGX0FSUkFZX0xFTkdUSChl
bmFibGVkRXh0ZW5zaW9ucyk7CisgICAgICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbk5h
bWVzID0gZW5hYmxlZEV4dGVuc2lvbnM7CisKKyAgICAgICAgWHJJbnN0YW5jZSBpbnN0YW5jZTsK
KyAgICAgICAgWHJSZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0YW5jZSgmY3JlYXRlSW5mbywg
Jmluc3RhbmNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZUlu
c3RhbmNlKCkiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgbV9pbnN0YW5jZSA9IGluc3RhbmNlOwor
ICAgICAgICBMT0coWFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNlICVwXG4i
LCBtX2luc3RhbmNlKTsKKyAgICB9KTsKIH0KKyNlbHNlCitJbnN0YW5jZTo6SW1wbDo6SW1wbCgp
IHsgfQorI2VuZGlmIC8vIFVTRV9PUEVOWFIKIAogSW5zdGFuY2U6OkltcGw6On5JbXBsKCkKIHsK
QEAgLTIxMCwyOSArMjE5LDM2IEBAIEluc3RhbmNlOjpJbnN0YW5jZSgpCiB7CiB9CiAKLXZvaWQg
SW5zdGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcygpCit2b2lkIEluc3RhbmNlOjpl
bnVtZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQogewogI2lmIFVTRV9PUEVOWFIKLSAgICBpZiAobV9pbXBsLT54ckluc3RhbmNlKCkg
PT0gWFJfTlVMTF9IQU5ETEUpIHsKLSAgICAgICAgTE9HKFhSLCAiJXMgVW5hYmxlIHRvIGVudW1l
cmF0ZSBYUiBkZXZpY2VzLiBObyBYckluc3RhbmNlIHByZXNlbnRcbiIsIF9fRlVOQ1RJT05fXyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9pbXBsLT5xdWV1ZSgpLmRpc3BhdGNoKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBh
dXRvIGNhbGxDYWxsYmFjayA9IG1ha2VTY29wZUV4aXQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKG1faW1wbC0+eHJJbnN0YW5j
ZSgpID09IFhSX05VTExfSEFORExFKSB7CisgICAgICAgICAgICBMT0coWFIsICIlcyBVbmFibGUg
dG8gZW51bWVyYXRlIFhSIGRldmljZXMuIE5vIFhySW5zdGFuY2UgcHJlc2VudFxuIiwgX19GVU5D
VElPTl9fKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgYXV0byBzeXN0
ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9TWVNU
RU1fR0VUX0lORk8+KCk7Ci0gICAgc3lzdGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9STV9G
QUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BMQVk7CisgICAgICAgIGF1dG8gc3lzdGVtR2V0SW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVNX0dFVF9JTkZP
PigpOworICAgICAgICBzeXN0ZW1HZXRJbmZvLmZvcm1GYWN0b3IgPSBYUl9GT1JNX0ZBQ1RPUl9I
RUFEX01PVU5URURfRElTUExBWTsKIAotICAgIFhyU3lzdGVtSWQgc3lzdGVtSWQ7Ci0gICAgWHJS
ZXN1bHQgcmVzdWx0ID0geHJHZXRTeXN0ZW0obV9pbXBsLT54ckluc3RhbmNlKCksICZzeXN0ZW1H
ZXRJbmZvLCAmc3lzdGVtSWQpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJHZXRT
eXN0ZW0iLCBtX2ltcGwtPnhySW5zdGFuY2UoKSk7CisgICAgICAgIFhyU3lzdGVtSWQgc3lzdGVt
SWQ7CisgICAgICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyR2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0
YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywgJnN5c3RlbUlkKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZB
SUxFRChyZXN1bHQsICJ4ckdldFN5c3RlbSIsIG1faW1wbC0+eHJJbnN0YW5jZSgpKTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKLSAgICBhdXRvIHN5c3RlbVByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJTeXN0ZW1Qcm9wZXJ0aWVzLCBYUl9UWVBFX1NZU1RFTV9QUk9QRVJUSUVTPigpOwotICAg
IHJlc3VsdCA9IHhyR2V0U3lzdGVtUHJvcGVydGllcyhtX2ltcGwtPnhySW5zdGFuY2UoKSwgc3lz
dGVtSWQsICZzeXN0ZW1Qcm9wZXJ0aWVzKTsKLSAgICBpZiAocmVzdWx0ID09IFhSX1NVQ0NFU1Mp
Ci0gICAgICAgIExPRyhYUiwgIkZvdW5kIFhSU3lzdGVtICVsdTogXCIlc1wiLCB2ZW5kb3IgSUQg
JWRcbiIsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVtSWQsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVt
TmFtZSwgc3lzdGVtUHJvcGVydGllcy52ZW5kb3JJZCk7CisgICAgICAgIGF1dG8gc3lzdGVtUHJv
cGVydGllcyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbVByb3BlcnRpZXMsIFhSX1RZUEVfU1lT
VEVNX1BST1BFUlRJRVM+KCk7CisgICAgICAgIHJlc3VsdCA9IHhyR2V0U3lzdGVtUHJvcGVydGll
cyhtX2ltcGwtPnhySW5zdGFuY2UoKSwgc3lzdGVtSWQsICZzeXN0ZW1Qcm9wZXJ0aWVzKTsKKyAg
ICAgICAgaWYgKCFYUl9GQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIExPRyhYUiwgIkZvdW5k
IFhSU3lzdGVtICVsdTogXCIlc1wiLCB2ZW5kb3IgSUQgJWRcbiIsIHN5c3RlbVByb3BlcnRpZXMu
c3lzdGVtSWQsIHN5c3RlbVByb3BlcnRpZXMuc3lzdGVtTmFtZSwgc3lzdGVtUHJvcGVydGllcy52
ZW5kb3JJZCk7CiAjZW5kaWYKLQotICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzLmFwcGVuZChtYWtl
VW5pcXVlPE9wZW5YUkRldmljZT4oc3lzdGVtSWQsIG1faW1wbC0+eHJJbnN0YW5jZSgpKSk7Cisg
ICAgICAgIG1faW1tZXJzaXZlWFJEZXZpY2VzLmFwcGVuZChtYWtlVW5pcXVlPE9wZW5YUkRldmlj
ZT4oc3lzdGVtSWQsIG1faW1wbC0+eHJJbnN0YW5jZSgpKSk7CisgICAgfSk7CisjZWxzZQorICAg
IGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjYWxsYmFjaykpOwogI2VuZGlmIC8vIFVTRV9PUEVO
WFIKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>