<?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>194125</bug_id>
          
          <creation_ts>2019-01-31 16:47:04 -0800</creation_ts>
          <short_desc>[WebGPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups</short_desc>
          <delta_ts>2019-02-04 14:55:45 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500896</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-31 16:47:04 -0800</bug_when>
    <thetext>[WebGPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500897</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-31 16:47:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/46289645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500920</commentid>
    <comment_count>2</comment_count>
      <attachid>360811</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-31 17:18:24 -0800</bug_when>
    <thetext>Created attachment 360811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501352</commentid>
    <comment_count>3</comment_count>
      <attachid>360811</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-02-01 16:31:44 -0800</bug_when>
    <thetext>Comment on attachment 360811
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h:42
&gt; +} // namespace Metal
&gt; +
&gt; +} // namespace WHLSL
&gt; +
&gt; +} // namespace WebCore

Ending comments unnecessary when the file is so short

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:108
&gt; +    [m_platformRenderPassEncoder setVertexBuffers:mtlBuffers.data() offsets:(const NSUInteger *)offsets.data() withRange:indexRanges];

wow

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:33
&gt; +#import &quot;WHLSLVertexBufferIndexCalculator.h&quot;

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501514</commentid>
    <comment_count>4</comment_count>
      <attachid>360811</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-02 11:54:01 -0800</bug_when>
    <thetext>Comment on attachment 360811
Patch

Clearing flags on attachment: 360811

Committed r240898: &lt;https://trac.webkit.org/changeset/240898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501515</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-02 11:54:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501977</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-02-04 13:08:45 -0800</bug_when>
    <thetext>*** Bug 194182 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502038</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-04 14:55:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/47393543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360811</attachid>
            <date>2019-01-31 17:18:24 -0800</date>
            <delta_ts>2019-02-02 11:54:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194125-20190131171824.patch</filename>
            <type>text/plain</type>
            <size>29456</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmExZWJmYjNiNmU0NGI2
OTAyMTE5OThhMWMzMTEyYWI4OGExY2M1My4uMGRkZmJkMmNjNGFkMDFmNjdhYTlhN2JhOWJiYTRi
NmZkNWE1YmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTAxLTMxICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEZpeCBH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyBhbmQgYWxsb3cgb3ZlcmxhcHBp
bmcgaW5kaWNlcyB3aXRoIEdQVUJpbmRHcm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZm
ZXJzIGlzIG5vdyBhY3R1YWxseSB3cml0dGVuIHRvIHNldCBhbGwgYnVmZmVycyBwcm92aWRlZC4g
SW4gYWRkaXRpb24sCisgICAgICAgIHNoaWZ0IHZlcnRleCBpbnB1dCBidWZmZXIgaW5kaWNlcyBz
byB0aGF0IGFueSByZXNvdXJjZSBiaW5kaW5ncyBjYW4gYmluZCB2ZXJ0ZXggYnVmZmVyIHJlc291
cmNlcyB0byB0aGUgc2FtZSBpbmRpY2VzLiAKKworICAgICAgICBFeGlzdGluZyB0ZXN0cyBjb3Zl
ciBzZXRWZXJ0ZXhCdWZmZXJzLiBVcGRhdGVkIGJ1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMgdG8g
YXNzaWduIGJpbmQgZ3JvdXBzIGFuZCB2ZXJ0ZXggYnVmZmVycyB0byB0aGUgc2FtZSBpbmRleC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVy
SW5kZXhDYWxjdWxhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OmNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KTogU2ltcGxlIHNoaWZ0aW5nIGZ1bmN0aW9u
IGZvciB2ZXJ0ZXggaW5wdXQgYnVmZmVyIGluZGljZXMuCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNl
dEJpbmRHcm91cCBjb25zdCk6IExpbWl0IG1heGltdW0gYmluZCBncm91cCBpbmRpY2VzIHRvIDAg
dG8gMy4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5j
cHA6IAorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRl
eEJ1ZmZlcnMpOiBMaW1pdCB2ZXJ0ZXggaW5wdXQgaW5kaWNlcyB0byAwIHRvIDE1LgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmg6IE1vdmUgSURML2Jp
bmRpbmdzIGJ1ZyBub3RlIHRvIElETCBmaWxlLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxpbWl0cy5oOiBBZGRlZC4gSG9tZSBmb3IgV2ViIEdQVSBsaW1pdHMgY29u
c3RhbnRzIHNoYXJlZCBiZXR3ZWVuIGZpbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oOiBDaGFuZ2UgSURML2JpbmRpbmdzIGJ1ZyB3b3Jr
YXJvdW5kIHRvIHVuc2lnbmVkIGxvbmcgbG9uZyB0byBwcmV2ZW50IG5hcnJvd2luZyBjb21wYXJl
ZCB0byBzcGVjLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQYXNzRW5jb2Rlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0Vu
Y29kZXI6OnNldFZlcnRleEJ1ZmZlcnMpOiBOb3cgcHJvcGVybHkgY2FsbHMgTWV0YWwncyBzZXRW
ZXJ0ZXhCdWZmZXJzLiAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldElucHV0U3RhdGVG
b3JQaXBlbGluZURlc2NyaXB0b3IpOiBGaXggdmFsaWRhdGlvbiBjaGVja3MgZm9yIHZlcnRleCBh
dHRyaWJ1dGUgbnVtYmVycyBhbmQgdmVydGV4IGJ1ZmZlciBpbmRpY2VzLiAKKworICAgICAgICBB
ZGQgc3ltYm9scyB0byBwcm9qZWN0OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0zMSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZXF1ZXN0aW5nIFBp
UCBmcm9tIHR3byBkaWZmZXJlbnQgV2ViVmlld3MgZ2V0cyBQaVAgd2luZG93ICJzdHVjayIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
VmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjY4MzFlNTUyZGZkZGExOTQzMDVlOTQwMGJhZmU4OWFiYmNiODUyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xWZXJ0ZXhCdWZm
ZXJJbmRleENhbGN1bGF0b3IuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIE1ldGFsIHsKKwordW5z
aWduZWQgbG9uZyBjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleCh1bnNpZ25lZCBsb25nIGluZGV4
KQoreworICAgIC8vIFJlc2VydmUgdGhlIGZpcnN0IGZldyBNVExCdWZmZXIgc2xvdHMgZm9yIGFy
Z3VtZW50IGJ1ZmZlcnMgZm9yIEdQVUJpbmRHcm91cHMuCisgICAgcmV0dXJuIGluZGV4ICsgODsK
K30KKworfSAvLyBuYW1lc3BhY2UgTWV0YWwKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVmVydGV4
QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJiNTViODlmNGEzMDE5OTJlY2RiYTZhZWM5MTRhYjE2Y2EzNTAzOTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFZlcnRl
eEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIE1ldGFsIHsKKwordW5zaWduZWQgbG9u
ZyBjYWxjdWxhdGVWZXJ0ZXhCdWZmZXJJbmRleCh1bnNpZ25lZCBsb25nKTsKKworfSAvLyBuYW1l
c3BhY2UgTWV0YWwKKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmNwcAppbmRleCBmNmY1ZWE2ZDMzNDY1NzcxOWNhYjUxYjc4ZmQzZTAwMWY4MmFjMzM2Li5jMzkx
NTIwYjYzZDE2ODhjYzMzNDM3NGUwYzk1M2MwODVmZWMxYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwCkBAIC00Nyw2ICs0NywxMSBAQCBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQogCiB2b2lkIFdlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQgbG9uZyBpbmRleCwg
Y29uc3QgV2ViR1BVQmluZEdyb3VwJiBiaW5kR3JvdXApIGNvbnN0CiB7CisgICAgLy8gTWF4aW11
bSBudW1iZXIgb2YgYmluZCBncm91cHMgc3VwcG9ydGVkIGluIFdlYiBHUFUuCisgICAgaWYgKGlu
ZGV4ID49IDQpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KICAgICBpZiAoIWJpbmRHcm91cC5iaW5kR3JvdXAoKSkgewogICAgICAgICBMT0co
V2ViR1BVLCAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJ
bnZhbGlkIFdlYkdQVUJpbmRHcm91cCEiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
Y3BwCmluZGV4IGRhZjFiMDgyMjdkNDY1NjAzOWMzNzJkMzUzMWMwZmY5ODY0N2I0ZDEuLjAzZmIz
MWJiYzM5Y2JiMDBmMTRiMGM4YTY5NmRmNWZhNmEzZDM3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVM
aW1pdHMuaCIKICNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIgogI2luY2x1
ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDYs
MTggKzQ3LDIyIEBAIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5j
b2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhCiB7CiB9CiAKLXZvaWQgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZyBzdGFydFNs
b3QsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mJiBidWZmZXJzLCBWZWN0b3I8dW5zaWdu
ZWQ+JiYgb2Zmc2V0cykKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1
ZmZlcnModW5zaWduZWQgbG9uZyBzdGFydFNsb3QsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVy
Pj4mJiBidWZmZXJzLCBWZWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiYmIG9mZnNldHMpCiB7CiAg
ICAgaWYgKGJ1ZmZlcnMuaXNFbXB0eSgpIHx8IGJ1ZmZlcnMuc2l6ZSgpICE9IG9mZnNldHMuc2l6
ZSgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0
VmVydGV4QnVmZmVyczogSW52YWxpZCBudW1iZXIgb2YgYnVmZmVycyBvciBvZmZzZXRzISIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHN0YXJ0U2xvdCArIGJ1ZmZlcnMuc2l6
ZSgpID4gbWF4VmVydGV4QnVmZmVycykgeworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnM6IEludmFsaWQgc3RhcnRTbG90ICVsdSBm
b3IgJWx1IGJ1ZmZlcnMhIiwgc3RhcnRTbG90LCBidWZmZXJzLnNpemUoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBhdXRvIGdwdUJ1ZmZlcnMgPSBidWZmZXJzLm1hcChbXSAoY29u
c3QgYXV0byYgYnVmZmVyKSAtPiBSZWY8Y29uc3QgR1BVQnVmZmVyPiB7CiAgICAgICAgIHJldHVy
biBidWZmZXItPmJ1ZmZlcigpOwogICAgIH0pOwogCi0gICAgLy8gRklYTUU6IFVzZSBzdGFydFNs
b3QgcHJvcGVybHkuCiAgICAgbV9wYXNzRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVycyhzdGFydFNs
b3QsIFdURk1vdmUoZ3B1QnVmZmVycyksIFdURk1vdmUob2Zmc2V0cykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaAppbmRleCAyYjlhNzIzMDJkYzFlZWU3NzFiY2U5ZDFjMDU2ZTk0ZTc5MTkyMTUzLi5kMGRl
MGQ3ZGY0YzU1YmQ1MTQyNDBkODM3NDBiODhiNWEzNGE5MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKQEAg
LTQyLDggKzQyLDcgQEAgY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJs
aWMgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4mJiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsKIAotICAgIC8vIEZJWE1FOiBMYXN0
IGFyZ3VtZW50IHNob3VsZCBiZSBWZWN0b3I8dW5zaWduZWQgbG9uZz4uIFdoeSBpcyB0aGUgZ2Vu
ZXJhdGVkIGNvZGUgaW5jb3JyZWN0bHkgYXNzdW1pbmcgdGhlIElETCB3YW50cyBhIHNlcXVlbmNl
PHVuc2lnbmVkIGludD4/Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcs
IFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mJiwgVmVjdG9yPHVuc2lnbmVkPiYmKTsKKyAg
ICB2b2lkIHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZlB0cjxXZWJH
UFVCdWZmZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiYmKTsKICAgICB2b2lkIGRy
YXcodW5zaWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgbG9uZyBpbnN0YW5jZUNvdW50
LCB1bnNpZ25lZCBsb25nIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBsb25nIGZpcnN0SW5zdGFuY2Up
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCmluZGV4IGQxNjJlYzUyOGVkYmUxZDY4MDU0
NDZiZWE5NGZhYmE2MjA5MWU5ODguLjkxYWNlYjEzNzNmNmZjYzBkOTFhZDZiYmVkMTVlM2VmZWRk
MmNkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBhc3NFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKQEAgLTMxLDcgKzMxLDggQEAgdHlwZWRlZiB1bnNp
Z25lZCBsb25nIHUzMjsKICAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKICAgICBKU0dlbmVy
YXRlVG9KU09iamVjdAogXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgOiBXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJzKHUz
MiBzdGFydFNsb3QsIHNlcXVlbmNlPFdlYkdQVUJ1ZmZlcj4gYnVmZmVycywgc2VxdWVuY2U8dTMy
PiBvZmZzZXRzKTsKKyAgICAvLyBGSVhNRTogKDxyZGFyOi8vcHJvYmxlbS80NzcxNzgzMj4pIExh
c3QgYXJndW1lbnQgc2hvdWxkIGJlIHNlcXVlbmNlPHVuc2lnbmVkIGxvbmc+LCBidXQgYmluZGlu
Z3MgZ2VuZXJhdGVzIFZlY3Rvcjx1bnNpZ25lZCBpbnQ+LgorICAgIHZvaWQgc2V0VmVydGV4QnVm
ZmVycyh1MzIgc3RhcnRTbG90LCBzZXF1ZW5jZTxXZWJHUFVCdWZmZXI+IGJ1ZmZlcnMsIHNlcXVl
bmNlPHVuc2lnbmVkIGxvbmcgbG9uZz4gb2Zmc2V0cyk7CiAKICAgICB2b2lkIGRyYXcodTMyIHZl
cnRleENvdW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0VmVydGV4LCB1MzIgZmlyc3RJ
bnN0YW5jZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMzc4YzA2NTNiODA5MGNmMDFjM2IwZGFkY2Ez
OTU5MTMwZTdmODU4NC4uM2Y0Mjk2ZDUyNDJmNDIzZTU5MGEzODZkMDJiMmI5MjlhOGQ4ZTZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTMzMiw2ICszMzIsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVmVydGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmNwcAogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJ1aWx0SW5TZW1hbnRpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OGNmOTAyYTY5YjAzOWIwNmYwNGViMDk2MzQxODQ0
NzQzMDhiMmQwLi5kMTEzNjdkM2NjMzAwMzViNjBlY2NmNGI1Mjc4MDQzN2YyMTNhOGM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDE0OCw2ICsxNDE0OCw5IEBACiAJCUQwRUFDRkFFMjE5RTMwRkQwMDBGQTc1QyAvKiBXZWJH
UFVUZXh0dXJlRm9ybWF0RW51bS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZUZvcm1hdEVudW0uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMg
LyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBGNzU1OTgyMjAzOTFDMzAwMTE4MDU4IC8qIFdITFNMVmVy
dGV4QnVmZmVySW5kZXhDYWxjdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmVydGV4QnVm
ZmVySW5kZXhDYWxjdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRjc1
NTk5MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRjc1NTlGMjIwM0JBMTQwMDExODA1
OCAvKiBHUFVMaW1pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGltaXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZGMkE1QzExRjhDNDVBMDA3RTc0RTAg
LyogUGluZ0xvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyQ0RCNUVENjM4RjQzQUY4NkYw
N0FBMiAvKiBKU0Vycm9yRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFcnJvckV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3MjEwLDYgKzE3MjEzLDggQEAKIAkJCQkxQ0VDQjNDNzIxRjU5Qzg3MDBGNDQ1
NDIgLyogV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmggKi8sCiAJCQkJMUNFQ0IzQjEyMUYyQjk4NTAw
RjQ0NTQyIC8qIFdITFNMVHlwZU5hbWVyLmNwcCAqLywKIAkJCQkxQ0VDQjNCMDIxRjJCOTg1MDBG
NDQ1NDIgLyogV0hMU0xUeXBlTmFtZXIuaCAqLywKKwkJCQlEMEY3NTU5OTIyMDM5MUMzMDAxMTgw
NTggLyogV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuY3BwICovLAorCQkJCUQwRjc1
NTk4MjIwMzkxQzMwMDExODA1OCAvKiBXSExTTFZlcnRleEJ1ZmZlckluZGV4Q2FsY3VsYXRvci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBNZXRhbDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xODQ1Miw2ICsxODQ1Nyw3IEBACiAJCQkJMzEyRkY4QkYyMUE0QzJGMTAwRUIxOTlEIC8q
IEdQVURldmljZS5jcHAgKi8sCiAJCQkJMzEyRkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURl
dmljZS5oICovLAogCQkJCUQwRDg2NDk5MjFCQTFCMUYwMDNDOTgzQyAvKiBHUFVJbnB1dFN0YXRl
RGVzY3JpcHRvci5oICovLAorCQkJCUQwRjc1NTlGMjIwM0JBMTQwMDExODA1OCAvKiBHUFVMaW1p
dHMuaCAqLywKIAkJCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5oICovLAogCQkJCUQwMDMyODg3MjFDOUE0RTUwMDYyMkFBNiAvKiBHUFVQaXBl
bGluZUxheW91dC5jcHAgKi8sCiAJCQkJRDAwMzI4ODYyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBp
cGVsaW5lTGF5b3V0LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGltaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGltaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkN2JmY2IxMjZkM2Q3YjU1Mjg3YzE3ZDJi
YzJjZjdmMmMxNjRkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMaW1pdHMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IHVuc2lnbmVkIGxvbmcgbWF4VmVydGV4QnVmZmVycyA9IDE2OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaAppbmRleCAxZWRiYjc2ZTAzNjA0MGM5ODNkNzQwZmRlMThkODViMDAxNTQxMmMyLi5m
ZWI1YzM3Yjg4NTVlN2IwMzZlMzM4ODNiYTM1YWFjNDZjNDM4NDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBpcGVsaW5l
KFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJikgZmluYWw7CiAKLSAgICB2b2lkIHNldFZlcnRleEJ1
ZmZlcnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZjxjb25zdCBHUFVCdWZmZXI+PiYmLCBWZWN0
b3I8dW5zaWduZWQ+JiYpOworICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBsb25n
LCBWZWN0b3I8UmVmPGNvbnN0IEdQVUJ1ZmZlcj4+JiYsIFZlY3Rvcjx1bnNpZ25lZCBsb25nIGxv
bmc+JiYpOwogICAgIHZvaWQgZHJhdyh1bnNpZ25lZCBsb25nIHZlcnRleENvdW50LCB1bnNpZ25l
ZCBsb25nIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGxvbmcgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVk
IGxvbmcgZmlyc3RJbnN0YW5jZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFzc0VuY29kZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQYXNzRW5jb2Rlck1ldGFsLm1tCmluZGV4IGFlYzQwZTQ3OWQ3MWE4YzgwODJjNjA5YjZkMjMx
YzUxNmMyOGZkYjkuLjVhOGM4ZDJiM2VlMGQwNWYwOGRhZDYxOTVkMTgyNzU4NTYyMThlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCkBAIC0zMyw3ICsz
Myw4IEBACiAjaW1wb3J0ICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgogI2ltcG9ydCAiR1BV
UmVuZGVyUGlwZWxpbmUuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLQorI2ltcG9ydCAiV0hMU0xW
ZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKQEAgLTkyLDEyICs5MywyMSBAQCB2b2lkIEdQVVJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCiAgICAg
bV9waXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOwogfQogCi12b2lkIEdQVVJlbmRlclBhc3NF
bmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcgaW5kZXgsIFZlY3RvcjxSZWY8
Y29uc3QgR1BVQnVmZmVyPj4mJiBidWZmZXJzLCBWZWN0b3I8dW5zaWduZWQ+JiYgb2Zmc2V0cykg
Cit2b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGxv
bmcgaW5kZXgsIFZlY3RvcjxSZWY8Y29uc3QgR1BVQnVmZmVyPj4mJiBidWZmZXJzLCBWZWN0b3I8
dW5zaWduZWQgbG9uZyBsb25nPiYmIG9mZnNldHMpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlcnMuc2l6
ZSgpICYmIG9mZnNldHMuc2l6ZSgpID09IGJ1ZmZlcnMuc2l6ZSgpKTsKLSAgICAvLyBGSVhNRTog
T25seSB3b3JyeSBhYm91dCB0aGUgZmlyc3QgYnVmZmVyIGZvciBub3csIGFuZCB0cmVhdCBzdGFy
dFNsb3QgYXMgdGhlIGluZGV4LgotICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggTVRMUmVuZGVy
UGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMuCi0gICAgW21fcGxhdGZvcm1SZW5kZXJQYXNz
RW5jb2RlciBzZXRWZXJ0ZXhCdWZmZXI6YnVmZmVyc1swXS0+cGxhdGZvcm1CdWZmZXIoKSBvZmZz
ZXQ6b2Zmc2V0c1swXSBhdEluZGV4OmluZGV4XTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIGF1dG8gbXRsQnVmZmVycyA9IGJ1ZmZlcnMubWFwKFtdIChjb25zdCBh
dXRvJiBidWZmZXIpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKTsK
KyAgICB9KTsKKworICAgIGF1dG8gaW5kZXhSYW5nZXMgPSBOU01ha2VSYW5nZShXSExTTDo6TWV0
YWw6OmNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KGluZGV4KSwgYnVmZmVycy5zaXplKCkpOwor
CisgICAgW21fcGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlciBzZXRWZXJ0ZXhCdWZmZXJzOm10bEJ1
ZmZlcnMuZGF0YSgpIG9mZnNldHM6KGNvbnN0IE5TVUludGVnZXIgKilvZmZzZXRzLmRhdGEoKSB3
aXRoUmFuZ2U6aW5kZXhSYW5nZXNdOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IH0KIAogc3RhdGljIE1UTFByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZUZvckdQVVByaW1pdGl2
ZVRvcG9sb2d5KFByaW1pdGl2ZVRvcG9sb2d5IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCmluZGV4IDU4ODYwZWJhNWM4YmI3MGQwZWNmMjc2ODE1ZTJiODI2Y2Y1
YjY2OGQuLmI3N2VlOWE1MmJjZWMyODM4ZGI3ZWRmYmYwMzNhODA0MTk4NmI3YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0yOCw4ICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoV0VCR1BVKQogCisjaW1wb3J0ICJHUFVMaW1pdHMuaCIKICNpbXBvcnQgIkxvZ2dp
bmcuaCIKLQorI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKICNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CkBAIC0xOTQsMTIgKzE5NSwxMSBAQCBzdGF0aWMg
Ym9vbCBzZXRJbnB1dFN0YXRlRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGNvbnN0
IGZ1bmN0aW9uTmFtZSwgTQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5z
aXplKCk7ICsraSkgewogICAgICAgICBhdXRvIGxvY2F0aW9uID0gYXR0cmlidXRlc1tpXS5zaGFk
ZXJMb2NhdGlvbjsKICAgICAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgdmVydGV4IGF0dHJpYnV0
ZXMgdG8gYmUgc3VwcG9ydGVkIGJ5IFdlYiBHUFUuCi0gICAgICAgIGlmIChsb2NhdGlvbiA+IDE2
KSB7CisgICAgICAgIGlmIChsb2NhdGlvbiA+PSAxNikgewogICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBJbnZhbGlkIHNoYWRlckxvY2F0aW9uICVsdSBmb3IgdmVydGV4IGF0dHJpYnV0ZSEi
LCBmdW5jdGlvbk5hbWUsIGxvY2F0aW9uKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQotICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiB2ZXJ0ZXggYnVmZmVycyBzdXBw
b3J0ZWQuCi0gICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmlucHV0U2xvdCA+IDE2KSB7CisgICAg
ICAgIGlmIChhdHRyaWJ1dGVzW2ldLmlucHV0U2xvdCA+PSBtYXhWZXJ0ZXhCdWZmZXJzKSB7CiAg
ICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgaW5wdXRTbG90ICVsdSBmb3IgdmVy
dGV4IGF0dHJpYnV0ZSAlbHUhIiwgZnVuY3Rpb25OYW1lLCBhdHRyaWJ1dGVzW2ldLmlucHV0U2xv
dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0y
MTIsNyArMjEyLDcgQEAgc3RhdGljIGJvb2wgc2V0SW5wdXRTdGF0ZUZvclBpcGVsaW5lRGVzY3Jp
cHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE0KICAgICAgICAgYXV0byBtdGxB
dHRyaWJ1dGVEZXNjID0gcmV0YWluUHRyKFthdHRyaWJ1dGVBcnJheSBvYmplY3RBdEluZGV4ZWRT
dWJzY3JpcHQ6bG9jYXRpb25dKTsKICAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5nZXQoKS5mb3Jt
YXQgPSAqbXRsRm9ybWF0OwogICAgICAgICBtdGxBdHRyaWJ1dGVEZXNjLmdldCgpLm9mZnNldCA9
IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0OyAvLyBGSVhNRTogQWZ0ZXIgYWRkaW5nIG1vcmUgdmVydGV4
IGZvcm1hdHMsIGVuc3VyZSBvZmZzZXQgPCBidWZmZXIncyBzdHJpZGUgKyBmb3JtYXQncyBkYXRh
IHNpemUuCi0gICAgICAgIG10bEF0dHJpYnV0ZURlc2MuZ2V0KCkuYnVmZmVySW5kZXggPSBhdHRy
aWJ1dGVzW2ldLmlucHV0U2xvdDsKKyAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5nZXQoKS5idWZm
ZXJJbmRleCA9IFdITFNMOjpNZXRhbDo6Y2FsY3VsYXRlVmVydGV4QnVmZmVySW5kZXgoYXR0cmli
dXRlc1tpXS5pbnB1dFNsb3QpOwogICAgICAgICBbbXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5h
dHRyaWJ1dGVzIHNldE9iamVjdDptdGxBdHRyaWJ1dGVEZXNjLmdldCgpIGF0SW5kZXhlZFN1YnNj
cmlwdDpsb2NhdGlvbl07CiAgICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wg
c2V0SW5wdXRTdGF0ZUZvclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5j
dGlvbk5hbWUsIE0KIAogICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5wdXRzLnNpemUoKTsg
KytqKSB7CiAgICAgICAgIGF1dG8gc2xvdCA9IGlucHV0c1tqXS5pbnB1dFNsb3Q7Ci0gICAgICAg
IGlmIChpbnB1dHNbal0uaW5wdXRTbG90ID4gMTYpIHsKKyAgICAgICAgaWYgKHNsb3QgPj0gbWF4
VmVydGV4QnVmZmVycykgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIGlu
cHV0U2xvdCAlZCBmb3IgdmVydGV4IGJ1ZmZlciEiLCBmdW5jdGlvbk5hbWUsIHNsb3QpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yMzMsMTAgKzIzMywxMSBAQCBz
dGF0aWMgYm9vbCBzZXRJbnB1dFN0YXRlRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSwgTQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBtdGxMYXlvdXREZXNjID0gcmV0YWluUHRyKFtsYXlvdXRBcnJh
eSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6c2xvdF0pOworICAgICAgICBhdXRvIGNvbnZlcnRl
ZFNsb3QgPSBXSExTTDo6TWV0YWw6OmNhbGN1bGF0ZVZlcnRleEJ1ZmZlckluZGV4KHNsb3QpOwor
ICAgICAgICBhdXRvIG10bExheW91dERlc2MgPSByZXRhaW5QdHIoW2xheW91dEFycmF5IG9iamVj
dEF0SW5kZXhlZFN1YnNjcmlwdDpjb252ZXJ0ZWRTbG90XSk7CiAgICAgICAgIG10bExheW91dERl
c2MuZ2V0KCkuc3RlcEZ1bmN0aW9uID0gKm10bFN0ZXBGdW5jdGlvbjsKICAgICAgICAgbXRsTGF5
b3V0RGVzYy5nZXQoKS5zdHJpZGUgPSBpbnB1dHNbal0uc3RyaWRlOwotICAgICAgICBbbXRsVmVy
dGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzIHNldE9iamVjdDptdGxMYXlvdXREZXNjLmdldCgp
IGF0SW5kZXhlZFN1YnNjcmlwdDpzbG90XTsKKyAgICAgICAgW210bFZlcnRleERlc2NyaXB0b3Iu
Z2V0KCkubGF5b3V0cyBzZXRPYmplY3Q6bXRsTGF5b3V0RGVzYy5nZXQoKSBhdEluZGV4ZWRTdWJz
Y3JpcHQ6Y29udmVydGVkU2xvdF07CiAgICAgfQogCiAgICAgbXRsRGVzY3JpcHRvci52ZXJ0ZXhE
ZXNjcmlwdG9yID0gbXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMWE2NzhiZWE3
Y2Y2MDRlYzFjMDhmMTkzMDA2NTE1ZTk2YTIwM2JmLi5lZTMzYzE2NjVlZDU0YTY3MGJkNmRkOTFk
M2JjZGNiNTY5ODcyNDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMzEgIEp1c3Rp
biBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBGaXggR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMgYW5kIGFsbG93IG92ZXJsYXBwaW5n
IGluZGljZXMgd2l0aCBHUFVCaW5kR3JvdXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQxMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGJ1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMgdG8g
YXNzaWduIGJpbmQgZ3JvdXBzIGFuZCB2ZXJ0ZXggYnVmZmVycyB0byB0aGUgc2FtZSBpbmRleC4K
KworICAgICAgICAqIHdlYmdwdS9idWZmZXItcmVzb3VyY2UtdHJpYW5nbGVzLmh0bWw6CisKIDIw
MTktMDEtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1h
Y09TIF0gTGF5b3V0IFRlc3QgcGVyZm9ybWFuY2UtYXBpL3BlcmZvcm1hbmNlLW9ic2VydmVyLWNh
bGxiYWNrLWFmdGVyLWdjLmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9idWZmZXItcmVzb3VyY2UtdHJpYW5nbGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
YnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sCmluZGV4IGQ3MTE1YmE2Y2JhMmM3ODUwYTNi
ZTdiOTYyOWRkODM4MWM0YmM2NTguLjk5NjU3OWVmMTZjMTliMmRmYjE5ZmZiN2NiNDFmMjk1NWE1
MjlhYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItcmVzb3VyY2UtdHJp
YW5nbGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1yZXNvdXJjZS10cmlh
bmdsZXMuaHRtbApAQCAtMTIsNiArMTIsMTAgQEAgY29uc3Qgc2hhZGVyQ29kZSA9IGAKICAgICAK
IHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKIAorc3RydWN0IFZlcnRleElucHV0IHsKKyAgICBmbG9h
dDQgcG9zaXRpb24gW1thdHRyaWJ1dGUoMCldXTsKK307CisKIHN0cnVjdCBWZXJ0ZXggewogICAg
IGZsb2F0NCBwb3NpdGlvbiBbW3Bvc2l0aW9uXV07CiB9OwpAQCAtMjMsMTggKzI3LDI2IEBAIHN0
cnVjdCBWZXJ0ZXhBcmd1bWVudHMgewogfTsKIAogdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbigK
KyAgICBWZXJ0ZXhJbnB1dCBpbnB1dCBbW3N0YWdlX2luXV0sCiAgICAgY29uc3QgZGV2aWNlIFZl
cnRleEFyZ3VtZW50cyYgYXJnczAgW1tidWZmZXIoMCldXSwKICAgICBjb25zdCBkZXZpY2UgVmVy
dGV4QXJndW1lbnRzJiBhcmdzMSBbW2J1ZmZlcigxKV1dLAogICAgIHVpbnQgdmlkIFtbdmVydGV4
X2lkXV0pCiB7CiAgICAgc3dpdGNoICh2aWQpCiAgICAgewotICAgICAgICBjYXNlIDA6IHJldHVy
biBhcmdzMC52MFswXTsKLSAgICAgICAgY2FzZSAxOiByZXR1cm4gYXJnczAudjFbMF07Ci0gICAg
ICAgIGNhc2UgMjogcmV0dXJuIGFyZ3MwLnYyWzBdOwotICAgICAgICBjYXNlIDM6IHJldHVybiBh
cmdzMS52MFswXTsKLSAgICAgICAgY2FzZSA0OiByZXR1cm4gYXJnczEudjFbMF07Ci0gICAgICAg
IGRlZmF1bHQ6IHJldHVybiBhcmdzMS52MlswXTsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBj
YXNlIDE6CisgICAgICAgIGNhc2UgMjogeworICAgICAgICAgICAgVmVydGV4IG91dDsKKyAgICAg
ICAgICAgIG91dC5wb3NpdGlvbiA9IGlucHV0LnBvc2l0aW9uOworICAgICAgICAgICAgcmV0dXJu
IG91dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDM6IHJldHVybiAqYXJnczAudjA7CisgICAg
ICAgIGNhc2UgNDogcmV0dXJuICphcmdzMC52MTsKKyAgICAgICAgY2FzZSA1OiByZXR1cm4gKmFy
Z3MwLnYyOworICAgICAgICBjYXNlIDY6IHJldHVybiAqYXJnczEudjA7CisgICAgICAgIGNhc2Ug
NzogcmV0dXJuICphcmdzMS52MTsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuICphcmdzMS52MjsK
ICAgICB9CiB9CiAKQEAgLTY1LDExICs3NywyNyBAQCBmdW5jdGlvbiBjcmVhdGVVbmlmb3JtQnVm
ZmVyQmluZEdyb3VwTGF5b3V0KGJpbmROdW0sIHN0YWdlID0gV2ViR1BVU2hhZGVyU3RhZ2VCaQog
ICAgIH07CiB9CiAKLWNvbnN0IGJ1ZmZlclNpemUgPSA0ICogNDsKK2NvbnN0IHZlcnRleFNpemUg
PSA0ICogNDsKK2NvbnN0IHZlcnRpY2VzQnVmZmVyU2l6ZSA9IHZlcnRleFNpemUgKiAzOwogCiAv
LyBGSVhNRTogS2VlcCB1cCB0byBkYXRlIHdpdGggYnVmZmVyIHVwbG9hZCBkZWNpc2lvbnMuCitm
dW5jdGlvbiBjcmVhdGVWZXJ0aWNlc0J1ZmZlcihkZXZpY2UpIHsKKyAgICBjb25zdCBidWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTp2ZXJ0aWNlc0J1ZmZlclNpemUsIHVzYWdlOiBX
ZWJHUFVCdWZmZXJVc2FnZS5WRVJURVggfSk7CisKKyAgICBjb25zdCB2ZXJ0aWNlcyA9IFsKKyAg
ICAgICAgMCwgMSwgMCwgMSwKKyAgICAgICAgLTEsIC0xLCAwLCAxLAorICAgICAgICAxLCAtMSwg
MCwgMQorICAgIF07CisKKyAgICBjb25zdCBtYXBwZWRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
YnVmZmVyLm1hcHBpbmcpOworICAgIG1hcHBlZEFycmF5LnNldCh2ZXJ0aWNlcyk7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCiBmdW5jdGlvbiBjcmVhdGVGbG9hdDRCdWZmZXIoZGV2aWNlLCBh
LCBiKSB7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IGJ1
ZmZlclNpemUsIHVzYWdlOiBXZWJHUFVCdWZmZXJVc2FnZS5VTklGT1JNIH0pOworICAgIGNvbnN0
IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiB2ZXJ0ZXhTaXplLCB1c2FnZTog
V2ViR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSB9KTsKICAgICAKICAgICBjb25zdCBhcnJheUJ1ZmZl
ciA9IGJ1ZmZlci5tYXBwaW5nOwogICAgIGNvbnN0IGZsb2F0QXJyYXkgPSBuZXcgRmxvYXQzMkFy
cmF5KGFycmF5QnVmZmVyKTsKQEAgLTg2LDcgKzExNCw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJ1ZmZl
ckJpbmRpbmcoYnVmZmVyKSB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgYnVmZmVyOiBidWZmZXIs
CiAgICAgICAgIG9mZnNldDogMCwKLSAgICAgICAgc2l6ZTogYnVmZmVyU2l6ZQorICAgICAgICBz
aXplOiB2ZXJ0ZXhTaXplCiAgICAgfTsKIH0KIApAQCAtOTgsNiArMTI2LDggQEAgYXN5bmMgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKIAogICAgIC8vIENyZWF0ZSB2ZXJ0ZXgg
ZGF0YSBXZWJHUFVCdWZmZXJzLgorICAgIGNvbnN0IHZlcnRpY2VzQnVmZmVyID0gY3JlYXRlVmVy
dGljZXNCdWZmZXIoZGV2aWNlKTsKKwogICAgIGNvbnN0IHVwcGVyTGVmdCA9IGNyZWF0ZUZsb2F0
NEJ1ZmZlcihkZXZpY2UsIC0xLCAxKTsKICAgICBjb25zdCB1cHBlck1pZGRsZSA9IGNyZWF0ZUZs
b2F0NEJ1ZmZlcihkZXZpY2UsIDAsIDEpOwogICAgIGNvbnN0IHVwcGVyUmlnaHQgPSBjcmVhdGVG
bG9hdDRCdWZmZXIoZGV2aWNlLCAxLCAxKTsKQEAgLTEwNyw2ICsxMzcsMjIgQEAgYXN5bmMgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAvLyBDb2xvciBkYXRhIGJ1ZmZlci4KICAgICBjb25zdCBncmVl
biA9IGNyZWF0ZUZsb2F0NEJ1ZmZlcihkZXZpY2UsIDAsIDEpOwogCisgICAgLy8gQ3JlYXRlIHZl
cnRleCBpbnB1dCBzdGF0ZS4KKyAgICBjb25zdCBpbnB1dFN0YXRlID0geworICAgICAgICBpbmRl
eEZvcm1hdDogV2ViR1BVSW5kZXhGb3JtYXQuVUlOVDMyLAorICAgICAgICBhdHRyaWJ1dGVzOiBb
eworICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsCisgICAgICAgICAgICBpbnB1dFNsb3Q6
IDAsCisgICAgICAgICAgICBvZmZzZXQ6IDAsCisgICAgICAgICAgICBmb3JtYXQ6IFdlYkdQVVZl
cnRleEZvcm1hdC5GTE9BVF9SMzJfRzMyX0IzMl9BMzIKKyAgICAgICAgfV0sCisgICAgICAgIGlu
cHV0czogW3sKKyAgICAgICAgICAgIGlucHV0U2xvdDogMCwKKyAgICAgICAgICAgIHN0cmlkZTog
dmVydGV4U2l6ZSwKKyAgICAgICAgICAgIHN0ZXBNb2RlOiBXZWJHUFVJbnB1dFN0ZXBNb2RlLlZF
UlRFWAorICAgICAgICB9XQorICAgIH07CisKICAgICAvLyBDcmVhdGUgYnVmZmVyIFdlYkdQVUJp
bmRHcm91cExheW91dEJpbmRpbmdzLgogICAgIGNvbnN0IGxheW91dFVMID0gY3JlYXRlVW5pZm9y
bUJ1ZmZlckJpbmRHcm91cExheW91dChiaW5kaW5nTnVtcy5VTCk7CiAgICAgY29uc3QgbGF5b3V0
VU0gPSBjcmVhdGVVbmlmb3JtQnVmZmVyQmluZEdyb3VwTGF5b3V0KGJpbmRpbmdOdW1zLlVNKTsK
QEAgLTExOCwxMSArMTY0LDEwIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgLy8gV2Vi
R1BVQmluZEdyb3VwTGF5b3V0cwogICAgIGNvbnN0IGxlZnRUcmlhbmdsZUJHTGF5b3V0ID0gZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJpbmRpbmdzOiBbbGF5b3V0VUwsIGxheW91dFVN
LCBsYXlvdXRMTCwgbGF5b3V0R10gfSk7CiAgICAgY29uc3QgcmlnaHRUcmlhbmdsZUJHTGF5b3V0
ID0gZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7IGJpbmRpbmdzOiBbbGF5b3V0VVIsIGxh
eW91dFVNLCBsYXlvdXRMUl0gfSk7Ci0gICAgY29uc3QgbWlkZGxlVHJpYW5nbGVCR0xheW91dCA9
IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeyBiaW5kaW5nczogW2xheW91dFVNLCBsYXlv
dXRMTCwgbGF5b3V0TFIsIGxheW91dEddIH0pOwogCiAgICAgLy8gV2ViR1BVUGlwZWxpbmVMYXlv
dXQgYW5kIFdlYkdQVVJlbmRlclBpcGVsaW5lCi0gICAgY29uc3QgcGlwZWxpbmVMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeyBiaW5kR3JvdXBMYXlvdXRzOiBbbGVmdFRyaWFu
Z2xlQkdMYXlvdXQsIG1pZGRsZVRyaWFuZ2xlQkdMYXlvdXQsIHJpZ2h0VHJpYW5nbGVCR0xheW91
dF0gfSk7Ci0gICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1v
ZHVsZSwgZGV2aWNlLCBwaXBlbGluZUxheW91dCwgbnVsbCwgInRyaWFuZ2xlTGlzdCIpOworICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmlu
ZEdyb3VwTGF5b3V0czogW2xlZnRUcmlhbmdsZUJHTGF5b3V0LCByaWdodFRyaWFuZ2xlQkdMYXlv
dXRdIH0pOworICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJN
b2R1bGUsIGRldmljZSwgcGlwZWxpbmVMYXlvdXQsIGlucHV0U3RhdGUsICJ0cmlhbmdsZUxpc3Qi
KTsKIAogICAgIC8vIFdlYkdQVUJ1ZmZlckJpbmRpbmdzCiAgICAgY29uc3QgYmluZGluZ1VMID0g
Y3JlYXRlQnVmZmVyQmluZGluZyh1cHBlckxlZnQpOwpAQCAtMTQ5LDIyICsxOTQsMTcgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgbGF5b3V0OiByaWdodFRyaWFuZ2xlQkdMYXlv
dXQsCiAgICAgICAgIGJpbmRpbmdzOiBbYmdCaW5kaW5nVVIsIGJnQmluZGluZ1VNLCBiZ0JpbmRp
bmdMUl0KICAgICB9KTsKLSAgICBjb25zdCBtaWRkbGVUcmlhbmdsZUJHID0gZGV2aWNlLmNyZWF0
ZUJpbmRHcm91cCh7Ci0gICAgICAgIGxheW91dDogbWlkZGxlVHJpYW5nbGVCR0xheW91dCwKLSAg
ICAgICAgYmluZGluZ3M6IFtiZ0JpbmRpbmdVTSwgYmdCaW5kaW5nTEwsIGJnQmluZGluZ0xSLCBi
Z0JpbmRpbmdHXQotICAgIH0pOwogCiAgICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5j
cmVhdGVDb21tYW5kQnVmZmVyKCk7CiAgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2lj
UmVuZGVyUGFzcyhjb250ZXh0LCBjb21tYW5kQnVmZmVyKTsKICAgICBwYXNzRW5jb2Rlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7CiAKLSAgICAvLyBEcmF3IHVwcGVyIHRyaWFuZ2xlcy4KKyAgICAv
LyBWZXJ0ZXggZGF0YSBmb3IgdXBwZXIgdHJpYW5nbGVzLgogICAgIHBhc3NFbmNvZGVyLnNldEJp
bmRHcm91cCgwLCBsZWZ0VHJpYW5nbGVCRyk7CiAgICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KDEsIHJpZ2h0VHJpYW5nbGVCRyk7Ci0gICAgcGFzc0VuY29kZXIuZHJhdyg2LCAxLCAwLCAwKTsK
LSAgICAvLyBEcmF3IGxvd2VyIHRyaWFuZ2xlLgotICAgIHBhc3NFbmNvZGVyLnNldEJpbmRHcm91
cCgwLCBtaWRkbGVUcmlhbmdsZUJHKTsKLSAgICBwYXNzRW5jb2Rlci5kcmF3KDMsIDEsIDAsIDAp
OworICAgIC8vIExvd2VyIHRyaWFuZ2xlLgorICAgIHBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZl
cnMoMCwgW3ZlcnRpY2VzQnVmZmVyXSwgWzBdKTsKKyAgICBwYXNzRW5jb2Rlci5kcmF3KDksIDEs
IDAsIDApOwogCiAgICAgY29uc3QgZW5kQ29tbWFuZEJ1ZmZlciA9IHBhc3NFbmNvZGVyLmVuZFBh
c3MoKTsKICAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>