<?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>236898</bug_id>
          
          <creation_ts>2022-02-19 16:24:06 -0800</creation_ts>
          <short_desc>[WebGPU] Tracer bullet part 5: Give Metal objects to WebGPU objects</short_desc>
          <delta_ts>2022-02-21 11:33:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>236891</dependson>
          <blocked>236879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843929</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-19 16:24:06 -0800</bug_when>
    <thetext>Each WebGPU object gets its own backing Metal object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843930</commentid>
    <comment_count>1</comment_count>
      <attachid>452662</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-19 16:26:13 -0800</bug_when>
    <thetext>Created attachment 452662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843944</commentid>
    <comment_count>2</comment_count>
      <attachid>452667</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-19 20:17:39 -0800</bug_when>
    <thetext>Created attachment 452667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844235</commentid>
    <comment_count>3</comment_count>
      <attachid>452667</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-21 09:23:50 -0800</bug_when>
    <thetext>Comment on attachment 452667
Patch

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

&gt; Source/WebGPU/WebGPU/BindGroup.h:53
&gt; +    id &lt;MTLBuffer&gt; m_vertexArgumentBuffer { nil };
&gt; +    id &lt;MTLBuffer&gt; m_fragmentArgumentBuffer { nil };
&gt; +    id &lt;MTLBuffer&gt; m_computeArgumentBuffer { nil };
&gt;  };

I think we do id&lt;MTLBuffer&gt; (without the space), here and elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844294</commentid>
    <comment_count>4</comment_count>
      <attachid>452667</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-21 11:28:50 -0800</bug_when>
    <thetext>Comment on attachment 452667
Patch

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

&gt;&gt; Source/WebGPU/WebGPU/BindGroup.h:53
&gt;&gt;  };
&gt; 
&gt; I think we do id&lt;MTLBuffer&gt; (without the space), here and elsewhere.

I polled the Apple L&amp;R team internally and they seemed to prefer id &lt;MTLBuffer&gt;, so that&apos;s what I went with :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844296</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-21 11:32:41 -0800</bug_when>
    <thetext>Committed r290256 (?): &lt;https://commits.webkit.org/r290256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844297</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-21 11:33:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89247804&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452662</attachid>
            <date>2022-02-19 16:26:13 -0800</date>
            <delta_ts>2022-02-19 20:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>39156</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9DaGFu
Z2VMb2cKaW5kZXggN2Q2MjViNmI3MzNlLi5hNDdhMzA4YzAyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTE2IEBACisyMDIyLTAyLTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gVHJhY2VyIGJ1bGxldCBwYXJ0IDU6IEdpdmUgTWV0
YWwgb2JqZWN0cyB0byBXZWJHUFUgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRWFjaCBXZWJHUFUgb2JqZWN0IGdldHMgaXRzIG93biBiYWNr
aW5nIE1ldGFsIG9iamVjdC4KKworICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAg
IChXZWJHUFU6OkFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06
CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OkFkYXB0ZXIpOgorICAgICAgICAqIFdlYkdQVS9C
aW5kR3JvdXAuaDoKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpCaW5kR3JvdXApOgorICAg
ICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaDoKKyAgICAgICAgKFdlYkdQVTo6QmluZEdy
b3VwTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW06
CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KToKKyAgICAg
ICAgKFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0OjpCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAq
IFdlYkdQVS9CdWZmZXIuaDoKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIFdlYkdQVS9CdWZmZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpCdWZmZXIpOgorICAgICAgICAqIFdl
YkdQVS9Db21tYW5kQnVmZmVyLmg6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRCdWZmZXIubW06CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIpOgorICAgICAgICAqIFdlYkdQVS9Db21t
YW5kRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5j
b2Rlcjo6Q29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6
YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdp
blJlbmRlclBhc3MpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToK
KyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmg6CisgICAgICAgIChXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBh
c3NFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OkNvbXB1
dGVQYXNzRW5jb2Rlcik6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oOgorICAg
ICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BV
L0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVDb21w
dXRlUGlwZWxpbmUpOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OkNvbXB1dGVQ
aXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3Vw
TGF5b3V0KToKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6
RGV2aWNlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpnZXRRdWV1ZSk6CisgICAgICAgICog
V2ViR1BVL0luc3RhbmNlLmg6CisgICAgICAgICogV2ViR1BVL0luc3RhbmNlLm1tOgorICAgICAg
ICAoV2ViR1BVOjpJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAod2dwdUluc3Rh
bmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAqIFdlYkdQVS9RdWVyeVNldC5oOgorICAgICAg
ICAoV2ViR1BVOjpRdWVyeVNldDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQu
bW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAo
V2ViR1BVOjpRdWVyeVNldDo6UXVlcnlTZXQpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5oOgor
ICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpRdWV1ZSk6CisgICAgICAgICogV2ViR1BVL1Jl
bmRlckJ1bmRsZS5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVy
QnVuZGxlOjpSZW5kZXJCdW5kbGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNv
ZGVyLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6
OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06CisgICAgICAgIChXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2Rlcik6CisgICAgICAgICogV2Vi
R1BVL1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBpcGVsaW5lOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5tbToKKyAgICAgICAgKFdl
YkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBp
cGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIFdlYkdQVS9TYW1wbGVyLmg6
CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1Nh
bXBsZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlU2FtcGxlcik6CisgICAg
ICAgIChXZWJHUFU6OlNhbXBsZXI6OlNhbXBsZXIpOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJN
b2R1bGUuaDoKKyAgICAgICAgKFdlYkdQVTo6U2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYkdQVTo6U2hhZGVyTW9kdWxlOjpTaGFkZXJN
b2R1bGUpOgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4ubW06CisgICAgICAgIChXZWJHUFU6
OlN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBXZWJHUFUvVGV4
dHVyZS5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIFdl
YkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lmg6Cisg
ICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9U
ZXh0dXJlVmlldy5tbToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3
KToKKyAgICAgICAgKiBXZWJHUFUvY29uZmlnLmg6CisKIDIwMjItMDItMTkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBUcmFjZXIg
YnVsbGV0IHBhcnQgNDogTW92ZSBEZXZpY2UncyBjb25zdHJ1Y3Rpb24gbWV0aG9kcyB0byB0aGUg
ZmlsZXMgb2YgdGhlIHRoaW5ncyB0aGV5IGNyZWF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4
IDMxZjlmNzFhYWMxMC4uMjYxZjI3NDVkZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC0z
OSw5ICszOSw5IEBAIGNsYXNzIERldmljZTsKIGNsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxBZGFwdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4g
Y3JlYXRlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFkYXB0ZXIoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFkYXB0
ZXIoZGV2aWNlKSk7CiAgICAgfQogCiAgICAgfkFkYXB0ZXIoKTsKQEAgLTUzLDcgKzUzLDkgQEAg
cHVibGljOgogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRv
ciosIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmUHRyPERl
dmljZT4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKIAogcHJpdmF0ZToKLSAgICBBZGFw
dGVyKCk7CisgICAgQWRhcHRlcihpZCA8TVRMRGV2aWNlPik7CisKKyAgICBpZCA8TVRMRGV2aWNl
PiBtX2RldmljZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5tbQppbmRleCAxZDIyZWVjMWNhNTUuLmM4MzUyOWZhNjM2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLm1tCkBAIC0zMiw3ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IAotQWRhcHRlcjo6QWRhcHRlcigpID0gZGVmYXVsdDsKK0FkYXB0ZXI6OkFkYXB0ZXIoaWQgPE1U
TERldmljZT4gZGV2aWNlKQorICAgIDogbV9kZXZpY2UoZGV2aWNlKQoreworICAgIFVOVVNFRF9W
QVJJQUJMRShtX2RldmljZSk7Cit9CiAKIEFkYXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCmluZGV4IDIyNjcxMjIxM2I0Ny4uOThjODU5NWNiODNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGNsYXNzIEJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpbmRHcm91cD4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
QmluZEdyb3VwPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QmluZEdyb3VwPiBjcmVhdGUoaWQg
PE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkIDxNVExCdWZmZXI+IGZyYWdtZW50
QXJndW1lbnRCdWZmZXIsIGlkIDxNVExCdWZmZXI+IGNvbXB1dGVBcmd1bWVudEJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRHcm91cCgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwKHZlcnRleEFyZ3VtZW50QnVmZmVyLCBmcmFn
bWVudEFyZ3VtZW50QnVmZmVyLCBjb21wdXRlQXJndW1lbnRCdWZmZXIpKTsKICAgICB9CiAKICAg
ICB+QmluZEdyb3VwKCk7CkBAIC00NSw3ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgQmluZEdyb3VwKCk7CisgICAgQmlu
ZEdyb3VwKGlkIDxNVExCdWZmZXI+IHZlcnRleEFyZ3VtZW50QnVmZmVyLCBpZCA8TVRMQnVmZmVy
PiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZCA8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRC
dWZmZXIpOworCisgICAgaWQgPE1UTEJ1ZmZlcj4gbV92ZXJ0ZXhBcmd1bWVudEJ1ZmZlciB7IG5p
bCB9OworICAgIGlkIDxNVExCdWZmZXI+IG1fZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciB7IG5pbCB9
OworICAgIGlkIDxNVExCdWZmZXI+IG1fY29tcHV0ZUFyZ3VtZW50QnVmZmVyIHsgbmlsIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQppbmRl
eCBiNGVjYmIyZGRkY2EuLjIyMzBmMTM0YmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5t
bQpAQCAtMzQsMTAgKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPEJpbmRHcm91
cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBCaW5kR3JvdXA6OmNyZWF0ZSgpOworICAgIHJldHVybiBCaW5kR3JvdXA6OmNyZWF0ZShuaWws
IG5pbCwgbmlsKTsKIH0KIAotQmluZEdyb3VwOjpCaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CitCaW5k
R3JvdXA6OkJpbmRHcm91cChpZCA8TVRMQnVmZmVyPiB2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciwgaWQg
PE1UTEJ1ZmZlcj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciwgaWQgPE1UTEJ1ZmZlcj4gY29tcHV0
ZUFyZ3VtZW50QnVmZmVyKQorICAgIDogbV92ZXJ0ZXhBcmd1bWVudEJ1ZmZlcih2ZXJ0ZXhBcmd1
bWVudEJ1ZmZlcikKKyAgICAsIG1fZnJhZ21lbnRBcmd1bWVudEJ1ZmZlcihmcmFnbWVudEFyZ3Vt
ZW50QnVmZmVyKQorICAgICwgbV9jb21wdXRlQXJndW1lbnRCdWZmZXIoY29tcHV0ZUFyZ3VtZW50
QnVmZmVyKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX3ZlcnRleEFyZ3VtZW50QnVmZmVyKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUobV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUobV9jb21wdXRlQXJndW1lbnRCdWZmZXIpOworfQogCiBCaW5kR3JvdXA6On5C
aW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0
LmgKaW5kZXggYzQ0MDI0ZTQ3ODM4Li5hYmNiYmM4OGU1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJHUFUgewog
Y2xhc3MgQmluZEdyb3VwTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8QmluZEdyb3VwTGF5b3V0
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCaW5kR3JvdXBMYXlv
dXQ+IGNyZWF0ZShpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIs
IGlkIDxNVExBcmd1bWVudEVuY29kZXI+IGZyYWdtZW50QXJndW1lbnRFbmNvZGVyLCBpZCA8TVRM
QXJndW1lbnRFbmNvZGVyPiBjb21wdXRlQXJndW1lbnRFbmNvZGVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCaW5kR3JvdXBMYXlvdXQodmVydGV4QXJndW1lbnRFbmNvZGVyLCBmcmFn
bWVudEFyZ3VtZW50RW5jb2RlciwgY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikpOwogICAgIH0KIAog
ICAgIH5CaW5kR3JvdXBMYXlvdXQoKTsKQEAgLTQ1LDcgKzQ1LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBCaW5kR3JvdXBMYXlv
dXQoKTsKKyAgICBCaW5kR3JvdXBMYXlvdXQoaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4
QXJndW1lbnRFbmNvZGVyLCBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50
RW5jb2RlciwgaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2Rlcik7
CisKKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBtX3ZlcnRleEFyZ3VtZW50RW5jb2RlciB7
IG5pbCB9OworICAgIGlkIDxNVExBcmd1bWVudEVuY29kZXI+IG1fZnJhZ21lbnRBcmd1bWVudEVu
Y29kZXIgeyBuaWwgfTsKKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2NvbXB1dGVBcmd1
bWVudEVuY29kZXIgeyBuaWwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCmluZGV4IDViODFiNzIzZWM0Zi4uZGNhMTNi
NGI4YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCkBAIC0zNCwx
MCArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8QmluZEdyb3VwTGF5b3V0PiBE
ZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEJpbmRHcm91
cExheW91dDo6Y3JlYXRlKG5pbCwgbmlsLCBuaWwpOwogfQogCi1CaW5kR3JvdXBMYXlvdXQ6OkJp
bmRHcm91cExheW91dCgpID0gZGVmYXVsdDsKK0JpbmRHcm91cExheW91dDo6QmluZEdyb3VwTGF5
b3V0KGlkIDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaWQgPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkIDxNVExBcmd1bWVu
dEVuY29kZXI+IGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCisgICAgOiBtX3ZlcnRleEFyZ3VtZW50
RW5jb2Rlcih2ZXJ0ZXhBcmd1bWVudEVuY29kZXIpCisgICAgLCBtX2ZyYWdtZW50QXJndW1lbnRF
bmNvZGVyKGZyYWdtZW50QXJndW1lbnRFbmNvZGVyKQorICAgICwgbV9jb21wdXRlQXJndW1lbnRF
bmNvZGVyKGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1f
dmVydGV4QXJndW1lbnRFbmNvZGVyKTsKKyAgICBVTlVTRURfVkFSSUFCTEUobV9mcmFnbWVudEFy
Z3VtZW50RW5jb2Rlcik7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fY29tcHV0ZUFyZ3VtZW50RW5j
b2Rlcik7Cit9CiAKIEJpbmRHcm91cExheW91dDo6fkJpbmRHcm91cExheW91dCgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CdWZmZXIuaAppbmRleCBjMzRiN2NjMDdlMGUuLmJiYmU2M2Q2ZjgzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQnVmZmVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCdWZmZXI+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRl
KCkKKyAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKGlkIDxNVExCdWZmZXI+IGJ1ZmZlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJ1ZmZlcigpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5CdWZm
ZXIoKTsKQEAgLTUxLDcgKzUxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
Y2hhciopOwogCiBwcml2YXRlOgotICAgIEJ1ZmZlcigpOworICAgIEJ1ZmZlcihpZCA8TVRMQnVm
ZmVyPik7CisKKyAgICBpZCA8TVRMQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCmluZGV4IDQxYTYxOTcyNjZkMC4uOWYzNjE2
ODRiMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBAIC0zNCwxMCArMzQsMTQgQEAgbmFtZXNw
YWNlIFdlYkdQVSB7CiBSZWZQdHI8QnVmZmVyPiBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBX
R1BVQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEJ1ZmZl
cjo6Y3JlYXRlKG5pbCk7CiB9CiAKLUJ1ZmZlcjo6QnVmZmVyKCkgPSBkZWZhdWx0OworQnVmZmVy
OjpCdWZmZXIoaWQgPE1UTEJ1ZmZlcj4gYnVmZmVyKQorICAgIDogbV9idWZmZXIoYnVmZmVyKQor
eworICAgIFVOVVNFRF9WQVJJQUJMRShtX2J1ZmZlcik7Cit9CiAKIEJ1ZmZlcjo6fkJ1ZmZlcigp
ID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1
ZmZlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDZmOGY0
NjZmY2MwNy4uMDNmMmY2OGVkNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5o
CkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgQ29tbWFuZEJ1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPENvbW1hbmRCdWZmZXI+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbW1hbmRCdWZmZXI+IGNyZWF0
ZSgpCisgICAgc3RhdGljIFJlZjxDb21tYW5kQnVmZmVyPiBjcmVhdGUoaWQgPE1UTENvbW1hbmRC
dWZmZXI+IGNvbW1hbmRCdWZmZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb21tYW5kQnVmZmVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21tYW5k
QnVmZmVyKGNvbW1hbmRCdWZmZXIpKTsKICAgICB9CiAKICAgICB+Q29tbWFuZEJ1ZmZlcigpOwpA
QCAtNDUsNyArNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7
CiAKIHByaXZhdGU6Ci0gICAgQ29tbWFuZEJ1ZmZlcigpOworICAgIENvbW1hbmRCdWZmZXIoaWQg
PE1UTENvbW1hbmRCdWZmZXI+KTsKKworICAgIGlkIDxNVExDb21tYW5kQnVmZmVyPiBtX2NvbW1h
bmRCdWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kQnVmZmVyLm1tCmluZGV4IDhiOTdjMGU2Njc4ZS4uNzc2OWY0NTAxYjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KQEAgLTMwLDcgKzMwLDExIEBACiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1Db21tYW5kQnVmZmVyOjpDb21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0
OworQ29tbWFuZEJ1ZmZlcjo6Q29tbWFuZEJ1ZmZlcihpZCA8TVRMQ29tbWFuZEJ1ZmZlcj4gY29t
bWFuZEJ1ZmZlcikKKyAgICA6IG1fY29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyKQoreworICAg
IFVOVVNFRF9WQVJJQUJMRShtX2NvbW1hbmRCdWZmZXIpOworfQogCiBDb21tYW5kQnVmZmVyOjp+
Q29tbWFuZEJ1ZmZlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLmgKaW5kZXggNjY2ODcyNTI1YmYxLi5iYzIxNTVlNTFlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBSZW5kZXJQYXNzRW5j
b2RlcjsKIGNsYXNzIENvbW1hbmRFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZEVu
Y29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPENvbW1hbmRFbmNvZGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Q29tbWFuZEVu
Y29kZXI+IGNyZWF0ZShpZCA8TVRMQ29tbWFuZEJ1ZmZlcj4gY29tbWFuZEJ1ZmZlcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmRFbmNvZGVyKCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21tYW5kRW5jb2Rlcihjb21tYW5kQnVmZmVyKSk7CiAg
ICAgfQogCiAgICAgfkNvbW1hbmRFbmNvZGVyKCk7CkBAIC02NSw3ICs2NSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBDb21tYW5k
RW5jb2RlcigpOworICAgIENvbW1hbmRFbmNvZGVyKGlkIDxNVExDb21tYW5kQnVmZmVyPik7CisK
KyAgICBpZCA8TVRMQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4
IDJlM2JiMWQ1NGU2Yi4uZDliYTlmNWM4YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbQpAQCAtMzksMjMgKzM5LDI3IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRy
PENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVD
b21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuIENvbW1hbmRFbmNvZGVyOjpjcmVhdGUobmlsKTsKIH0KIAotQ29tbWFuZEVuY29kZXI6
OkNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworQ29tbWFuZEVuY29kZXI6OkNvbW1hbmRFbmNv
ZGVyKGlkIDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyKQorICAgIDogbV9jb21tYW5k
QnVmZmVyKGNvbW1hbmRCdWZmZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fY29tbWFuZEJ1
ZmZlcik7Cit9CiAKIENvbW1hbmRFbmNvZGVyOjp+Q29tbWFuZEVuY29kZXIoKSA9IGRlZmF1bHQ7
CiAKIFJlZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1
dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBDb21wdXRlUGFzc0VuY29k
ZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiBDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZShuaWwp
OwogfQogCiBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+IENvbW1hbmRFbmNvZGVyOjpiZWdpblJl
bmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewog
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVyUGFzc0VuY29k
ZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiBSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKG5pbCk7
CiB9CiAKIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZm
ZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0
aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKQEAgLTk4LDcg
KzEwMiw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYg
YnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90CiBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4g
Q29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKG5pbCk7CiB9CiAKIHZvaWQgQ29tbWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNv
bnN0IGNoYXIqIG1hcmtlckxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0Vu
Y29kZXIuaAppbmRleCBkMDY0MzJiMjBkMmQuLjU5NDc3ODUzZTJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgUXVl
cnlTZXQ7CiBjbGFzcyBDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb21w
dXRlUGFzc0VuY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKGlkIDxNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXI+IGNvbXB1dGVDb21tYW5kRW5jb2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbXB1dGVQYXNzRW5jb2RlcigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVDb21tYW5kRW5jb2RlcikpOwogICAgIH0KIAog
ICAgIH5Db21wdXRlUGFzc0VuY29kZXIoKTsKQEAgLTYwLDcgKzYwLDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgotICAgIENvbXB1dGVQYXNz
RW5jb2RlcigpOworICAgIENvbXB1dGVQYXNzRW5jb2RlcihpZCA8TVRMQ29tcHV0ZUNvbW1hbmRF
bmNvZGVyPik7CisKKyAgICBpZCA8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBtX2NvbXB1dGVD
b21tYW5kRW5jb2RlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCmluZGV4IDg5YmEwNGQ1M2U5YS4uNGFiZDll
YTNjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29k
ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCkBA
IC0zNCw3ICszNCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpDb21wdXRlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CitDb21wdXRlUGFzc0VuY29kZXI6
OkNvbXB1dGVQYXNzRW5jb2RlcihpZCA8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBjb21wdXRl
Q29tbWFuZEVuY29kZXIpCisgICAgOiBtX2NvbXB1dGVDb21tYW5kRW5jb2Rlcihjb21wdXRlQ29t
bWFuZEVuY29kZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fY29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKTsKK30KIAogQ29tcHV0ZVBhc3NFbmNvZGVyOjp+Q29tcHV0ZVBhc3NFbmNvZGVyKCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxp
bmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCmluZGV4IGQ1OWIx
YjM5OTgyZC4uNTk5MzFlYmE0MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21wdXRlUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxp
bmUuaApAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CiBjbGFzcyBDb21w
dXRlUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxDb21wdXRlUGlwZWxpbmU+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbXB1dGVQ
aXBlbGluZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENvbXB1dGVQaXBlbGluZT4gY3JlYXRl
KGlkIDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gY29tcHV0ZVBpcGVsaW5lU3RhdGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wdXRlUGlwZWxpbmUoKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbXB1dGVQaXBlbGluZShjb21wdXRlUGlwZWxpbmVT
dGF0ZSkpOwogICAgIH0KIAogICAgIH5Db21wdXRlUGlwZWxpbmUoKTsKQEAgLTQ4LDcgKzQ4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgot
ICAgIENvbXB1dGVQaXBlbGluZSgpOworICAgIENvbXB1dGVQaXBlbGluZShpZCA8TVRMQ29tcHV0
ZVBpcGVsaW5lU3RhdGU+KTsKKworICAgIGlkIDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gbV9j
b21wdXRlUGlwZWxpbmVTdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCmluZGV4IDA1ZGFiNWMzZjZkMi4uYjlhYzVk
N2M1ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPENvbXB1dGVQaXBlbGluZT4gRGV2
aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAg
IHJldHVybiBDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZSgpOworICAgIHJldHVybiBDb21wdXRlUGlw
ZWxpbmU6OmNyZWF0ZShuaWwpOwogfQogCiB2b2lkIERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRy
PENvbXB1dGVQaXBlbGluZT4mJiwgY29uc3QgY2hhciogbWVzc2FnZSk+JiYgY2FsbGJhY2spCkBA
IC00NSwxNCArNDUsMTggQEAgdm9pZCBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5j
KGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXMKICAgICBVTlVTRURfUEFS
QU0oY2FsbGJhY2spOwogfQogCi1Db21wdXRlUGlwZWxpbmU6OkNvbXB1dGVQaXBlbGluZSgpID0g
ZGVmYXVsdDsKK0NvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKGlkIDxNVExDb21wdXRl
UGlwZWxpbmVTdGF0ZT4gY29tcHV0ZVBpcGVsaW5lU3RhdGUpCisgICAgOiBtX2NvbXB1dGVQaXBl
bGluZVN0YXRlKGNvbXB1dGVQaXBlbGluZVN0YXRlKQoreworICAgIFVOVVNFRF9WQVJJQUJMRSht
X2NvbXB1dGVQaXBlbGluZVN0YXRlKTsKK30KIAogQ29tcHV0ZVBpcGVsaW5lOjp+Q29tcHV0ZVBp
cGVsaW5lKCkgPSBkZWZhdWx0OwogCiBSZWY8QmluZEdyb3VwTGF5b3V0PiBDb21wdXRlUGlwZWxp
bmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KQogewogICAgIFVOVVNF
RF9QQVJBTShncm91cEluZGV4KTsKLSAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUo
KTsKKyAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUobmlsLCBuaWwsIG5pbCk7CiB9
CiAKIHZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvRGV2aWNlLmgKaW5kZXggZThjNTgyYjEwMmU1Li44ODMzYjg1MzRhYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0RldmljZS5oCkBAIC01MywxMCArNTMsNyBAQCBjbGFzcyBRdWV1ZTsKIGNsYXNzIERldmlj
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPERldmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGV2aWNlKCkpOwotICAgIH0KKyAgICBzdGF0aWMg
UmVmUHRyPERldmljZT4gY3JlYXRlKGlkIDxNVExEZXZpY2U+KTsKIAogICAgIH5EZXZpY2UoKTsK
IApAQCAtODcsNyArODQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFy
Kik7CiAKIHByaXZhdGU6Ci0gICAgRGV2aWNlKCk7CisgICAgRGV2aWNlKGlkIDxNVExEZXZpY2U+
KTsKKworICAgIGlkIDxNVExEZXZpY2U+IG1fZGV2aWNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KaW5kZXggNjcyYWFkYzFlMGVjLi43YjZhM2NlNTk1
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KQEAgLTQ2LDcgKzQ2LDE2IEBACiAKIG5hbWVzcGFj
ZSBXZWJHUFUgewogCi1EZXZpY2U6OkRldmljZSgpID0gZGVmYXVsdDsKK1JlZlB0cjxEZXZpY2U+
IERldmljZTo6Y3JlYXRlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEZXZpY2UoZGV2aWNlKSk7Cit9CisKK0RldmljZTo6RGV2aWNlKGlkIDxNVExE
ZXZpY2U+IGRldmljZSkKKyAgICA6IG1fZGV2aWNlKGRldmljZSkKK3sKKyAgICBVTlVTRURfVkFS
SUFCTEUobV9kZXZpY2UpOworfQogCiBEZXZpY2U6On5EZXZpY2UoKSA9IGRlZmF1bHQ7CiAKQEAg
LTY4LDcgKzc3LDcgQEAgYm9vbCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRz
KiBsaW1pdHMpCiAKIFJlZlB0cjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCiB7Ci0gICAgcmV0
dXJuIFF1ZXVlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gUXVldWU6OmNyZWF0ZShuaWwpOwogfQog
CiBib29sIERldmljZTo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9JbnN0YW5jZS5oCmluZGV4IGM0NTBkZWViNTE1Ny4uNTIzNWQ0ZmQzZGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0luc3RhbmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRy
PFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKik7CiAg
ICAgdm9pZCBwcm9jZXNzRXZlbnRzKCk7Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBX
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0
QWRhcHRlclN0YXR1cywgUmVmPEFkYXB0ZXI+JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7
CisgICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
KiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFk
YXB0ZXI+JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6CiAgICAgSW5z
dGFuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KaW5kZXggZDg3OTI5ZmRmMjI0Li43NjM2
ZmQxNjBkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBAIC00OCwxMSArNDgsMTEgQEAg
dm9pZCBJbnN0YW5jZTo6cHJvY2Vzc0V2ZW50cygpCiB7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OnJl
cXVlc3RBZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMqIG9wdGlvbnMsIFdU
Rjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZjxBZGFwdGVyPiYm
LCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCit2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4mJiwgY29uc3Qg
Y2hhciopPiYmIGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICBV
TlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1c19VbmF2YWlsYWJsZSwgQWRhcHRlcjo6Y3JlYXRlKCksICJBZGFwdGVyIik7CisgICAgY2Fs
bGJhY2soV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1VuYXZhaWxhYmxlLCBBZGFwdGVyOjpjcmVh
dGUobmlsKSwgIkFkYXB0ZXIiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCkBAIC0zMTEs
OCArMzExLDggQEAgdm9pZCB3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBp
bnN0YW5jZSkKIAogdm9pZCB3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcihXR1BVSW5zdGFuY2Ug
aW5zdGFuY2UsIGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMqIG9wdGlvbnMsIFdHUFVS
ZXF1ZXN0QWRhcHRlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBp
bnN0YW5jZS0+aW5zdGFuY2UtPnJlcXVlc3RBZGFwdGVyKG9wdGlvbnMsIFtjYWxsYmFjaywgdXNl
cmRhdGFdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpBZGFw
dGVyPiYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2so
c3RhdHVzLCBuZXcgV0dQVUFkYXB0ZXJJbXBsIHsgV1RGTW92ZShhZGFwdGVyKSB9LCBtZXNzYWdl
LCB1c2VyZGF0YSk7CisgICAgaW5zdGFuY2UtPmluc3RhbmNlLT5yZXF1ZXN0QWRhcHRlcihvcHRp
b25zLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1
cywgUmVmUHRyPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdl
KSB7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRhcHRlcklt
cGwgeyBhZGFwdGVyLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJk
YXRhKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVl
cnlTZXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKaW5kZXggZmFjZTI1MTg2
MjZmLi41NzMxYTM0YzAzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5
U2V0LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIFF1ZXJ5U2V0IDogcHVibGljIFJlZkNvdW50
ZWQ8UXVlcnlTZXQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFF1ZXJ5U2V0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8UXVlcnlTZXQ+
IGNyZWF0ZShpZCA8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gY291bnRlclNhbXBsZUJ1ZmZlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXJ5U2V0KCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWVyeVNldChjb3VudGVyU2FtcGxlQnVmZmVyKSk7CiAg
ICAgfQogCiAgICAgflF1ZXJ5U2V0KCk7CkBAIC00Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBRdWVyeVNldCgpOwor
ICAgIFF1ZXJ5U2V0KGlkIDxNVExDb3VudGVyU2FtcGxlQnVmZmVyPik7CisKKyAgICBpZCA8TVRM
Q291bnRlclNhbXBsZUJ1ZmZlcj4gbV9jb3VudGVyU2FtcGxlQnVmZmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNl
dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1tCmluZGV4IGY1NjdlZGNmZTNk
Zi4uN2VmNTcwNmQ0NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNl
dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAtMzQsMTAgKzM0
LDE0IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPFF1ZXJ5U2V0PiBEZXZpY2U6OmNyZWF0
ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBRdWVyeVNldDo6Y3JlYXRl
KCk7CisgICAgcmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUobmlsKTsKIH0KIAotUXVlcnlTZXQ6OlF1
ZXJ5U2V0KCkgPSBkZWZhdWx0OworUXVlcnlTZXQ6OlF1ZXJ5U2V0KGlkIDxNVExDb3VudGVyU2Ft
cGxlQnVmZmVyPiBjb3VudGVyU2FtcGxlQnVmZmVyKQorICAgIDogbV9jb3VudGVyU2FtcGxlQnVm
ZmVyKGNvdW50ZXJTYW1wbGVCdWZmZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fY291bnRl
clNhbXBsZUJ1ZmZlcik7Cit9CiAKIFF1ZXJ5U2V0Ojp+UXVlcnlTZXQoKSA9IGRlZmF1bHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmggYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9RdWV1ZS5oCmluZGV4IGY3NmU2OTFhMzZlZC4uY2ZhYWM0ZGQzOThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1F1ZXVlLmgKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKIGNsYXNz
IFF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8UXVldWU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFF1ZXVlPiBjcmVhdGUoKQorICAgIHN0
YXRpYyBSZWY8UXVldWU+IGNyZWF0ZShpZCA8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZSgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWUoY29tbWFuZFF1ZXVlKSk7CiAgICAgfQogCiAgICAg
flF1ZXVlKCk7CkBAIC01NCw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNv
bnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBRdWV1ZSgpOworICAgIFF1ZXVlKGlkIDxNVExD
b21tYW5kUXVldWU+KTsKKworICAgIGlkIDxNVExDb21tYW5kUXVldWU+IG1fY29tbWFuZFF1ZXVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9RdWV1ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IGFl
NGMyY2M0Nzc1ZC4uZTk4ZDc1N2Q0MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtMzIsNyAr
MzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVF1ZXVlOjpRdWV1ZSgpID0gZGVmYXVs
dDsKK1F1ZXVlOjpRdWV1ZShpZCA8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUpCisgICAg
OiBtX2NvbW1hbmRRdWV1ZShjb21tYW5kUXVldWUpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1f
Y29tbWFuZFF1ZXVlKTsKK30KIAogUXVldWU6On5RdWV1ZSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGUuaAppbmRleCAyYzBiYWM2YWM0YTMuLjU0OTU3ZDVjZjVhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNw
YWNlIFdlYkdQVSB7CiBjbGFzcyBSZW5kZXJCdW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5k
ZXJCdW5kbGU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbmRlckJ1bmRsZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFJlbmRlckJ1
bmRsZT4gY3JlYXRlKGlkIDxNVExJbmRpcmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlckJ1bmRs
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyQnVuZGxlKGluZGlyZWN0
Q29tbWFuZEJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5SZW5kZXJCdW5kbGUoKTsKQEAgLTQ1LDcg
KzQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2
YXRlOgotICAgIFJlbmRlckJ1bmRsZSgpOworICAgIFJlbmRlckJ1bmRsZShpZCA8TVRMSW5kaXJl
Y3RDb21tYW5kQnVmZmVyPik7CisKKyAgICBpZCA8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBt
X2luZGlyZWN0Q29tbWFuZEJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCmluZGV4IDY3NTdiNDk3NTllMS4uMDlkMDljMjUx
YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCkBAIC0zMCw3ICszMCwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVuZGVyQnVuZGxlOjpSZW5kZXJCdW5kbGUoKSA9
IGRlZmF1bHQ7CitSZW5kZXJCdW5kbGU6OlJlbmRlckJ1bmRsZShpZCA8TVRMSW5kaXJlY3RDb21t
YW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCisgICAgOiBtX2luZGlyZWN0Q29tbWFu
ZEJ1ZmZlcihpbmRpcmVjdENvbW1hbmRCdWZmZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1f
aW5kaXJlY3RDb21tYW5kQnVmZmVyKTsKK30KIAogUmVuZGVyQnVuZGxlOjp+UmVuZGVyQnVuZGxl
KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJC
dW5kbGVFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVy
LmgKaW5kZXggNTAwY2ViOThiNWY4Li5jMmQxMjc5YThlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTQxLDkgKzQxLDkgQEAgY2xhc3MgUmVuZGVy
UGlwZWxpbmU7CiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVuZGVyQnVuZGxlRW5jb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKCkKKyAgICBz
dGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZShpZCA8TVRMSW5kaXJlY3RDb21t
YW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW5kZXJCdW5kbGVFbmNvZGVyKCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW5kZXJCdW5kbGVFbmNvZGVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikpOwog
ICAgIH0KIAogICAgIH5SZW5kZXJCdW5kbGVFbmNvZGVyKCk7CkBAIC02Myw3ICs2Myw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBS
ZW5kZXJCdW5kbGVFbmNvZGVyKCk7CisgICAgUmVuZGVyQnVuZGxlRW5jb2RlcihpZCA8TVRMSW5k
aXJlY3RDb21tYW5kQnVmZmVyPik7CisKKyAgICBpZCA8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVy
PiBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KaW5kZXggM2RiMTEw
MGVhN2VjLi42NzQzYmUxODI2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Jl
bmRlckJ1bmRsZUVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVu
ZGxlRW5jb2Rlci5tbQpAQCAtMzgsMTAgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVm
UHRyPFJlbmRlckJ1bmRsZUVuY29kZXI+IERldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rl
cihjb25zdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW5kZXJCdW5kbGVF
bmNvZGVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gUmVuZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRl
KG5pbCk7CiB9CiAKLVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIoKSA9
IGRlZmF1bHQ7CitSZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW5kZXJCdW5kbGVFbmNvZGVyKGlkIDxN
VExJbmRpcmVjdENvbW1hbmRCdWZmZXI+IGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikKKyAgICA6IG1f
aW5kaXJlY3RDb21tYW5kQnVmZmVyKGluZGlyZWN0Q29tbWFuZEJ1ZmZlcikKK3sKKyAgICBVTlVT
RURfVkFSSUFCTEUobV9pbmRpcmVjdENvbW1hbmRCdWZmZXIpOworfQogCiBSZW5kZXJCdW5kbGVF
bmNvZGVyOjp+UmVuZGVyQnVuZGxlRW5jb2RlcigpID0gZGVmYXVsdDsKIApAQCAtNzcsNyArODEs
NyBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdChjb25zdCBCdWZmZXIm
IGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbgogUmVmUHRyPFJlbmRlckJ1bmRsZT4gUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
UmVuZGVyQnVuZGxlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gUmVuZGVyQnVuZGxlOjpjcmVhdGUo
bmlsKTsKIH0KIAogdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihj
b25zdCBjaGFyKiBtYXJrZXJMYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5j
b2Rlci5oCmluZGV4IDVjOTQ5NWEwNTkzOC4uMTdiNjQ4ZmQ3OTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUmVuZGVy
UGlwZWxpbmU7CiBjbGFzcyBSZW5kZXJQYXNzRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
bmRlclBhc3NFbmNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UmVmPFJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoaWQgPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
PiByZW5kZXJDb21tYW5kRW5jb2RlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbmRlclBhc3NFbmNvZGVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW5kZXJQYXNzRW5jb2RlcihyZW5kZXJDb21tYW5kRW5jb2RlcikpOwogICAgIH0KIAogICAgIH5S
ZW5kZXJQYXNzRW5jb2RlcigpOwpAQCAtNzQsNyArNzQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyUGFzc0VuY29kZXIo
KTsKKyAgICBSZW5kZXJQYXNzRW5jb2RlcihpZCA8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+KTsK
KworICAgIGlkIDxNVExSZW5kZXJDb21tYW5kRW5jb2Rlcj4gbV9yZW5kZXJDb21tYW5kRW5jb2Rl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJQYXNzRW5jb2Rlci5tbQppbmRleCBjYjlkYmExYmQzNWUuLjNlMjVhMzY3MmJkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KQEAgLTM1LDcgKzM1LDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1SZW5kZXJQYXNzRW5jb2Rlcjo6UmVuZGVyUGFzc0Vu
Y29kZXIoKSA9IGRlZmF1bHQ7CitSZW5kZXJQYXNzRW5jb2Rlcjo6UmVuZGVyUGFzc0VuY29kZXIo
aWQgPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyPiByZW5kZXJDb21tYW5kRW5jb2RlcikKKyAgICA6
IG1fcmVuZGVyQ29tbWFuZEVuY29kZXIocmVuZGVyQ29tbWFuZEVuY29kZXIpCit7CisgICAgVU5V
U0VEX1ZBUklBQkxFKG1fcmVuZGVyQ29tbWFuZEVuY29kZXIpOworfQogCiBSZW5kZXJQYXNzRW5j
b2Rlcjo6flJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyUGlwZWxpbmUuaAppbmRleCBjZGFjOTAxYTZjM2IuLjE2ZWQyNmVmYjAwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCkBAIC0zNyw5ICszNyw5IEBAIGNsYXNzIEJp
bmRHcm91cExheW91dDsKIGNsYXNzIFJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVuZGVyUGlwZWxpbmU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbmRlclBpcGVsaW5lPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8
UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShpZCA8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVy
UGlwZWxpbmVTdGF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRl
clBpcGVsaW5lKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJQaXBlbGlu
ZShyZW5kZXJQaXBlbGluZVN0YXRlKSk7CiAgICAgfQogCiAgICAgflJlbmRlclBpcGVsaW5lKCk7
CkBAIC00OCw3ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIq
KTsKIAogcHJpdmF0ZToKLSAgICBSZW5kZXJQaXBlbGluZSgpOworICAgIFJlbmRlclBpcGVsaW5l
KGlkIDxNVExSZW5kZXJQaXBlbGluZVN0YXRlPik7CisKKyAgICBpZCA8TVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gbV9yZW5kZXJQaXBlbGluZVN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCmluZGV4IGRjM2Y1MmQxNWM0
ZS4uYmZkNWI0OWFiYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQ
aXBlbGluZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQpA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxSZW5kZXJQaXBlbGlu
ZT4gRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
LSAgICByZXR1cm4gUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpOworICAgIHJldHVybiBSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRy
PFJlbmRlclBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKQEAg
LTQ0LDE0ICs0NCwxOCBAQCB2b2lkIERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhj
b25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcgogICAgIFVOVVNFRF9QQVJB
TShjYWxsYmFjayk7CiB9CiAKLVJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSgpID0gZGVm
YXVsdDsKK1JlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZShpZCA8TVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gcmVuZGVyUGlwZWxpbmVTdGF0ZSkKKyAgICA6IG1fcmVuZGVyUGlwZWxpbmVTdGF0
ZShyZW5kZXJQaXBlbGluZVN0YXRlKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX3JlbmRlclBp
cGVsaW5lU3RhdGUpOworfQogCiBSZW5kZXJQaXBlbGluZTo6flJlbmRlclBpcGVsaW5lKCkgPSBk
ZWZhdWx0OwogCiBSZWY8QmluZEdyb3VwTGF5b3V0PiBSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdy
b3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdyb3Vw
SW5kZXgpOwotICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZSgpOworICAgIHJldHVy
biBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZShuaWwsIG5pbCwgbmlsKTsKIH0KIAogdm9pZCBSZW5k
ZXJQaXBlbGluZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVy
LmgKaW5kZXggMWI3MzY1ZGU4YjgxLi42MTcwYjVmNWMwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVy
LmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBTYW1wbGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8U2FtcGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UmVmPFNhbXBsZXI+IGNyZWF0ZShpZCA8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYW1wbGVyKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTYW1wbGVyKHNhbXBsZXJTdGF0ZSkpOwogICAgIH0KIAogICAg
IH5TYW1wbGVyKCk7CkBAIC00NSw3ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVs
KGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBTYW1wbGVyKCk7CisgICAgU2FtcGxlcihp
ZCA8TVRMU2FtcGxlclN0YXRlPik7CisKKyAgICBpZCA8TVRMU2FtcGxlclN0YXRlPiBtX3NhbXBs
ZXJTdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIu
bW0KaW5kZXggMTFjODk0YzdlMTI0Li41OWNlMTg3YjczZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxl
ci5tbQpAQCAtMzQsMTAgKzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPFNhbXBs
ZXI+IERldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBT
YW1wbGVyOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gU2FtcGxlcjo6Y3JlYXRlKG5pbCk7CiB9CiAK
LVNhbXBsZXI6OlNhbXBsZXIoKSA9IGRlZmF1bHQ7CitTYW1wbGVyOjpTYW1wbGVyKGlkIDxNVExT
YW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0ZSkKKyAgICA6IG1fc2FtcGxlclN0YXRlKHNhbXBsZXJT
dGF0ZSkKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9zYW1wbGVyU3RhdGUpOworfQogCiBTYW1w
bGVyOjp+U2FtcGxlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUu
aAppbmRleCBjMmFkM2VlZDE4NzEuLmEyNzgwMTkzZjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hh
ZGVyTW9kdWxlLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBT
aGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkZXJNb2R1bGU+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYWRlck1vZHVs
ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlKGlkIDxNVExM
aWJyYXJ5PiBsaWJyYXJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
ZGVyTW9kdWxlKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkZXJNb2R1bGUo
bGlicmFyeSkpOwogICAgIH0KIAogICAgIH5TaGFkZXJNb2R1bGUoKTsKQEAgLTQ2LDcgKzQ2LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgot
ICAgIFNoYWRlck1vZHVsZSgpOworICAgIFNoYWRlck1vZHVsZShpZCA8TVRMTGlicmFyeT4pOwor
CisgICAgaWQgPE1UTExpYnJhcnk+IG1fbGlicmFyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCmluZGV4IDVkM2U0ZGMyYzYyZi4u
MmE4Mzg5NjZiODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1
bGUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCkBAIC0zNCwx
MCArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8U2hhZGVyTW9kdWxlPiBEZXZp
Y2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IFNoYWRlck1vZHVsZTo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRl
KG5pbCk7CiB9CiAKLVNoYWRlck1vZHVsZTo6U2hhZGVyTW9kdWxlKCkgPSBkZWZhdWx0OworU2hh
ZGVyTW9kdWxlOjpTaGFkZXJNb2R1bGUoaWQgPE1UTExpYnJhcnk+IGxpYnJhcnkpCisgICAgOiBt
X2xpYnJhcnkobGlicmFyeSkKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9saWJyYXJ5KTsKK30K
IAogU2hhZGVyTW9kdWxlOjp+U2hhZGVyTW9kdWxlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Td2FwQ2hhaW4ubW0KaW5kZXggYmYxMWEzMTM1ZWIyLi4xYWQ4YTc4ZGYwN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Td2FwQ2hhaW4ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgU3dhcENoYWluOjp+U3dhcENo
YWluKCkgPSBkZWZhdWx0OwogCiBSZWY8VGV4dHVyZVZpZXc+IFN3YXBDaGFpbjo6Z2V0Q3VycmVu
dFRleHR1cmVWaWV3KCkKIHsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOworICAg
IHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgU3dhcENoYWluOjpw
cmVzZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRleCA3Mjk4ZjE4M2MwNjkuLjY3MDc0NzFk
MTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBUZXh0
dXJlVmlldzsKIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0
dXJlPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKGlkIDxNVExUZXh0
dXJlPiB0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVy
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZSh0ZXh0dXJlKSk7CiAg
ICAgfQogCiAgICAgflRleHR1cmUoKTsKQEAgLTUwLDcgKzUwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgotICAgIFRleHR1cmUoKTsKKyAg
ICBUZXh0dXJlKGlkIDxNVExUZXh0dXJlPik7CisKKyAgICBpZCA8TVRMVGV4dHVyZT4gbV90ZXh0
dXJlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpp
bmRleCBhNmQyZDY0MGUwNTkuLmE2OTMzY2EzNDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1t
CkBAIC0zNSwxNyArMzUsMjEgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8VGV4dHVyZT4g
RGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciogZGVzY3Jp
cHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFRleHR1
cmU6OmNyZWF0ZSgpOworICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUobmlsKTsKIH0KIAotVGV4
dHVyZTo6VGV4dHVyZSgpID0gZGVmYXVsdDsKK1RleHR1cmU6OlRleHR1cmUoaWQgPE1UTFRleHR1
cmU+IHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKKyAgICBVTlVTRURfVkFS
SUFCTEUobV90ZXh0dXJlKTsKK30KIAogVGV4dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1bHQ7CiAK
IFJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOworICAgIHJldHVybiBUZXh0
dXJlVmlldzo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6ZGVzdHJveSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZVZpZXcuaAppbmRleCBiOWM2MmQ5ZmI5OWYuLjkwOGQyNjEwMjI2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFj
ZSBXZWJHUFUgewogY2xhc3MgVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJl
Vmlldz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxUZXh0dXJlVmlldz4g
Y3JlYXRlKGlkIDxNVExUZXh0dXJlPiB0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHR1cmVWaWV3KHRleHR1cmUpKTsKICAgICB9CiAKICAgICB+VGV4dHVyZVZpZXcoKTsKQEAg
LTQ1LDcgKzQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwog
CiBwcml2YXRlOgotICAgIFRleHR1cmVWaWV3KCk7CisgICAgVGV4dHVyZVZpZXcoaWQgPE1UTFRl
eHR1cmU+KTsKKworICAgIGlkIDxNVExUZXh0dXJlPiBtX3RleHR1cmU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVW
aWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KaW5kZXggY2I3YmMx
ZmRhYjVkLi5mMWNkMjFhN2M4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCkBA
IC0zMCw3ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotVGV4dHVyZVZpZXc6OlRl
eHR1cmVWaWV3KCkgPSBkZWZhdWx0OworVGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3KGlkIDxNVExU
ZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCit7CisgICAgVU5VU0VE
X1ZBUklBQkxFKG1fdGV4dHVyZSk7Cit9CiAKIFRleHR1cmVWaWV3Ojp+VGV4dHVyZVZpZXcoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmgKaW5kZXggOGMxMjdhOTQzNDBhLi5mNWVmMWZi
ODU5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbmNsdWRl
ICJFeHBvcnRNYWNyb3MuaCIKIAorI2luY2x1ZGUgPE1ldGFsL01ldGFsLmg+CisKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452667</attachid>
            <date>2022-02-19 20:17:39 -0800</date>
            <delta_ts>2022-02-21 09:23:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>39284</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9DaGFu
Z2VMb2cKaW5kZXggN2Q2MjViNmI3MzNlLi5hNDdhMzA4YzAyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTE2IEBACisyMDIyLTAyLTE5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gVHJhY2VyIGJ1bGxldCBwYXJ0IDU6IEdpdmUgTWV0
YWwgb2JqZWN0cyB0byBXZWJHUFUgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRWFjaCBXZWJHUFUgb2JqZWN0IGdldHMgaXRzIG93biBiYWNr
aW5nIE1ldGFsIG9iamVjdC4KKworICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAg
IChXZWJHUFU6OkFkYXB0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIubW06
CisgICAgICAgIChXZWJHUFU6OkFkYXB0ZXI6OkFkYXB0ZXIpOgorICAgICAgICAqIFdlYkdQVS9C
aW5kR3JvdXAuaDoKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpCaW5kR3JvdXApOgorICAg
ICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaDoKKyAgICAgICAgKFdlYkdQVTo6QmluZEdy
b3VwTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW06
CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KToKKyAgICAg
ICAgKFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0OjpCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAq
IFdlYkdQVS9CdWZmZXIuaDoKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAqIFdlYkdQVS9CdWZmZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjpCdWZmZXIpOgorICAgICAgICAqIFdl
YkdQVS9Db21tYW5kQnVmZmVyLmg6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRCdWZmZXIubW06CisgICAgICAgIChXZWJH
UFU6OkNvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIpOgorICAgICAgICAqIFdlYkdQVS9Db21t
YW5kRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5j
b2Rlcjo6Q29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6
YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpiZWdp
blJlbmRlclBhc3MpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToK
KyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmg6CisgICAgICAgIChXZWJHUFU6
OkNvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBh
c3NFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OkNvbXB1
dGVQYXNzRW5jb2Rlcik6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oOgorICAg
ICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BV
L0NvbXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVDb21w
dXRlUGlwZWxpbmUpOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OkNvbXB1dGVQ
aXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQaXBlbGluZTo6Z2V0QmluZEdyb3Vw
TGF5b3V0KToKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6
RGV2aWNlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpnZXRRdWV1ZSk6CisgICAgICAgICog
V2ViR1BVL0luc3RhbmNlLmg6CisgICAgICAgICogV2ViR1BVL0luc3RhbmNlLm1tOgorICAgICAg
ICAoV2ViR1BVOjpJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAod2dwdUluc3Rh
bmNlUmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAqIFdlYkdQVS9RdWVyeVNldC5oOgorICAgICAg
ICAoV2ViR1BVOjpRdWVyeVNldDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUXVlcnlTZXQu
bW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUXVlcnlTZXQpOgorICAgICAgICAo
V2ViR1BVOjpRdWVyeVNldDo6UXVlcnlTZXQpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5oOgor
ICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpRdWV1ZSk6CisgICAgICAgICogV2ViR1BVL1Jl
bmRlckJ1bmRsZS5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UmVuZGVy
QnVuZGxlOjpSZW5kZXJCdW5kbGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNv
ZGVyLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW06CisgICAgICAgIChXZWJHUFU6
OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2gpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5oOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW06CisgICAgICAgIChXZWJH
UFU6OlJlbmRlclBhc3NFbmNvZGVyOjpSZW5kZXJQYXNzRW5jb2Rlcik6CisgICAgICAgICogV2Vi
R1BVL1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBpcGVsaW5lOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5tbToKKyAgICAgICAgKFdl
YkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OlJl
bmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlclBp
cGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIFdlYkdQVS9TYW1wbGVyLmg6
CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1Nh
bXBsZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlU2FtcGxlcik6CisgICAg
ICAgIChXZWJHUFU6OlNhbXBsZXI6OlNhbXBsZXIpOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJN
b2R1bGUuaDoKKyAgICAgICAgKFdlYkdQVTo6U2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYkdQVTo6U2hhZGVyTW9kdWxlOjpTaGFkZXJN
b2R1bGUpOgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4ubW06CisgICAgICAgIChXZWJHUFU6
OlN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmVWaWV3KToKKyAgICAgICAgKiBXZWJHUFUvVGV4
dHVyZS5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIFdl
YkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVRleHR1cmUp
OgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6Y3JlYXRlVmlldyk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lmg6Cisg
ICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIFdlYkdQVS9U
ZXh0dXJlVmlldy5tbToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3
KToKKyAgICAgICAgKiBXZWJHUFUvY29uZmlnLmg6CisKIDIwMjItMDItMTkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBUcmFjZXIg
YnVsbGV0IHBhcnQgNDogTW92ZSBEZXZpY2UncyBjb25zdHJ1Y3Rpb24gbWV0aG9kcyB0byB0aGUg
ZmlsZXMgb2YgdGhlIHRoaW5ncyB0aGV5IGNyZWF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCmluZGV4
IDMxZjlmNzFhYWMxMC4uMjYxZjI3NDVkZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCkBAIC0z
OSw5ICszOSw5IEBAIGNsYXNzIERldmljZTsKIGNsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxBZGFwdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4g
Y3JlYXRlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFkYXB0ZXIoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFkYXB0
ZXIoZGV2aWNlKSk7CiAgICAgfQogCiAgICAgfkFkYXB0ZXIoKTsKQEAgLTUzLDcgKzUzLDkgQEAg
cHVibGljOgogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRv
ciosIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmUHRyPERl
dmljZT4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKTsKIAogcHJpdmF0ZToKLSAgICBBZGFw
dGVyKCk7CisgICAgQWRhcHRlcihpZCA8TVRMRGV2aWNlPik7CisKKyAgICBpZCA8TVRMRGV2aWNl
PiBtX2RldmljZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5tbQppbmRleCAxZDIyZWVjMWNhNTUuLmM4MzUyOWZhNjM2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9BZGFwdGVyLm1tCkBAIC0zMiw3ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IAotQWRhcHRlcjo6QWRhcHRlcigpID0gZGVmYXVsdDsKK0FkYXB0ZXI6OkFkYXB0ZXIoaWQgPE1U
TERldmljZT4gZGV2aWNlKQorICAgIDogbV9kZXZpY2UoZGV2aWNlKQoreworICAgIFVOVVNFRF9W
QVJJQUJMRShtX2RldmljZSk7Cit9CiAKIEFkYXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCmluZGV4IDIyNjcxMjIxM2I0Ny4uOThjODU5NWNiODNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGNsYXNzIEJpbmRHcm91cCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpbmRHcm91cD4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
QmluZEdyb3VwPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QmluZEdyb3VwPiBjcmVhdGUoaWQg
PE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkIDxNVExCdWZmZXI+IGZyYWdtZW50
QXJndW1lbnRCdWZmZXIsIGlkIDxNVExCdWZmZXI+IGNvbXB1dGVBcmd1bWVudEJ1ZmZlcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRHcm91cCgpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwKHZlcnRleEFyZ3VtZW50QnVmZmVyLCBmcmFn
bWVudEFyZ3VtZW50QnVmZmVyLCBjb21wdXRlQXJndW1lbnRCdWZmZXIpKTsKICAgICB9CiAKICAg
ICB+QmluZEdyb3VwKCk7CkBAIC00NSw3ICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgQmluZEdyb3VwKCk7CisgICAgQmlu
ZEdyb3VwKGlkIDxNVExCdWZmZXI+IHZlcnRleEFyZ3VtZW50QnVmZmVyLCBpZCA8TVRMQnVmZmVy
PiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZCA8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRC
dWZmZXIpOworCisgICAgaWQgPE1UTEJ1ZmZlcj4gbV92ZXJ0ZXhBcmd1bWVudEJ1ZmZlciB7IG5p
bCB9OworICAgIGlkIDxNVExCdWZmZXI+IG1fZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciB7IG5pbCB9
OworICAgIGlkIDxNVExCdWZmZXI+IG1fY29tcHV0ZUFyZ3VtZW50QnVmZmVyIHsgbmlsIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQppbmRl
eCBiNGVjYmIyZGRkY2EuLjIyMzBmMTM0YmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5t
bQpAQCAtMzQsMTAgKzM0LDE4IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPEJpbmRHcm91
cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBCaW5kR3JvdXA6OmNyZWF0ZSgpOworICAgIHJldHVybiBCaW5kR3JvdXA6OmNyZWF0ZShuaWws
IG5pbCwgbmlsKTsKIH0KIAotQmluZEdyb3VwOjpCaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CitCaW5k
R3JvdXA6OkJpbmRHcm91cChpZCA8TVRMQnVmZmVyPiB2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciwgaWQg
PE1UTEJ1ZmZlcj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciwgaWQgPE1UTEJ1ZmZlcj4gY29tcHV0
ZUFyZ3VtZW50QnVmZmVyKQorICAgIDogbV92ZXJ0ZXhBcmd1bWVudEJ1ZmZlcih2ZXJ0ZXhBcmd1
bWVudEJ1ZmZlcikKKyAgICAsIG1fZnJhZ21lbnRBcmd1bWVudEJ1ZmZlcihmcmFnbWVudEFyZ3Vt
ZW50QnVmZmVyKQorICAgICwgbV9jb21wdXRlQXJndW1lbnRCdWZmZXIoY29tcHV0ZUFyZ3VtZW50
QnVmZmVyKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX3ZlcnRleEFyZ3VtZW50QnVmZmVyKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUobV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUobV9jb21wdXRlQXJndW1lbnRCdWZmZXIpOworfQogCiBCaW5kR3JvdXA6On5C
aW5kR3JvdXAoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0
LmgKaW5kZXggYzQ0MDI0ZTQ3ODM4Li5hYmNiYmM4OGU1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBXZWJHUFUgewog
Y2xhc3MgQmluZEdyb3VwTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8QmluZEdyb3VwTGF5b3V0
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCaW5kR3JvdXBMYXlv
dXQ+IGNyZWF0ZShpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIs
IGlkIDxNVExBcmd1bWVudEVuY29kZXI+IGZyYWdtZW50QXJndW1lbnRFbmNvZGVyLCBpZCA8TVRM
QXJndW1lbnRFbmNvZGVyPiBjb21wdXRlQXJndW1lbnRFbmNvZGVyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCaW5kR3JvdXBMYXlvdXQodmVydGV4QXJndW1lbnRFbmNvZGVyLCBmcmFn
bWVudEFyZ3VtZW50RW5jb2RlciwgY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikpOwogICAgIH0KIAog
ICAgIH5CaW5kR3JvdXBMYXlvdXQoKTsKQEAgLTQ1LDcgKzQ1LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBCaW5kR3JvdXBMYXlv
dXQoKTsKKyAgICBCaW5kR3JvdXBMYXlvdXQoaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4
QXJndW1lbnRFbmNvZGVyLCBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50
RW5jb2RlciwgaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2Rlcik7
CisKKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBtX3ZlcnRleEFyZ3VtZW50RW5jb2RlciB7
IG5pbCB9OworICAgIGlkIDxNVExBcmd1bWVudEVuY29kZXI+IG1fZnJhZ21lbnRBcmd1bWVudEVu
Y29kZXIgeyBuaWwgfTsKKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBtX2NvbXB1dGVBcmd1
bWVudEVuY29kZXIgeyBuaWwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCmluZGV4IDViODFiNzIzZWM0Zi4uZGNhMTNi
NGI4YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCkBAIC0zNCwx
MCArMzQsMTggQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8QmluZEdyb3VwTGF5b3V0PiBE
ZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEJpbmRHcm91
cExheW91dDo6Y3JlYXRlKG5pbCwgbmlsLCBuaWwpOwogfQogCi1CaW5kR3JvdXBMYXlvdXQ6OkJp
bmRHcm91cExheW91dCgpID0gZGVmYXVsdDsKK0JpbmRHcm91cExheW91dDo6QmluZEdyb3VwTGF5
b3V0KGlkIDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaWQgPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkIDxNVExBcmd1bWVu
dEVuY29kZXI+IGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCisgICAgOiBtX3ZlcnRleEFyZ3VtZW50
RW5jb2Rlcih2ZXJ0ZXhBcmd1bWVudEVuY29kZXIpCisgICAgLCBtX2ZyYWdtZW50QXJndW1lbnRF
bmNvZGVyKGZyYWdtZW50QXJndW1lbnRFbmNvZGVyKQorICAgICwgbV9jb21wdXRlQXJndW1lbnRF
bmNvZGVyKGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1f
dmVydGV4QXJndW1lbnRFbmNvZGVyKTsKKyAgICBVTlVTRURfVkFSSUFCTEUobV9mcmFnbWVudEFy
Z3VtZW50RW5jb2Rlcik7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fY29tcHV0ZUFyZ3VtZW50RW5j
b2Rlcik7Cit9CiAKIEJpbmRHcm91cExheW91dDo6fkJpbmRHcm91cExheW91dCgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CdWZmZXIuaAppbmRleCBjMzRiN2NjMDdlMGUuLmJiYmU2M2Q2ZjgzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQnVmZmVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7
CiBjbGFzcyBCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCdWZmZXI+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRl
KCkKKyAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKGlkIDxNVExCdWZmZXI+IGJ1ZmZlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJ1ZmZlcigpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5CdWZm
ZXIoKTsKQEAgLTUxLDcgKzUxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qg
Y2hhciopOwogCiBwcml2YXRlOgotICAgIEJ1ZmZlcigpOworICAgIEJ1ZmZlcihpZCA8TVRMQnVm
ZmVyPik7CisKKyAgICBpZCA8TVRMQnVmZmVyPiBtX2J1ZmZlciB7IG5pbCB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZm
ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggNDFhNjE5NzI2NmQw
Li45ZjM2MTY4NGIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5t
bQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTM0LDEwICszNCwxNCBA
QCBuYW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVy
KGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXR1
cm4gQnVmZmVyOjpjcmVhdGUobmlsKTsKIH0KIAotQnVmZmVyOjpCdWZmZXIoKSA9IGRlZmF1bHQ7
CitCdWZmZXI6OkJ1ZmZlcihpZCA8TVRMQnVmZmVyPiBidWZmZXIpCisgICAgOiBtX2J1ZmZlcihi
dWZmZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fYnVmZmVyKTsKK30KIAogQnVmZmVyOjp+
QnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKaW5k
ZXggNmY4ZjQ2NmZjYzA3Li4wM2YyZjY4ZWQ2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
QnVmZmVyLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBDb21t
YW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZEJ1ZmZlcj4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29tbWFuZEJ1ZmZl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENvbW1hbmRCdWZmZXI+IGNyZWF0ZShpZCA8TVRM
Q29tbWFuZEJ1ZmZlcj4gY29tbWFuZEJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbW1hbmRCdWZmZXIoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5Db21tYW5kQnVm
ZmVyKCk7CkBAIC00NSw3ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0
IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBDb21tYW5kQnVmZmVyKCk7CisgICAgQ29tbWFuZEJ1
ZmZlcihpZCA8TVRMQ29tbWFuZEJ1ZmZlcj4pOworCisgICAgaWQgPE1UTENvbW1hbmRCdWZmZXI+
IG1fY29tbWFuZEJ1ZmZlciB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQppbmRleCA4Yjk3YzBlNjY3OGUuLjc3Njlm
NDUwMWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5t
bQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCkBAIC0zMCw3ICsz
MCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotQ29tbWFuZEJ1ZmZlcjo6Q29tbWFuZEJ1
ZmZlcigpID0gZGVmYXVsdDsKK0NvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZmZXIoaWQgPE1UTENv
bW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIpCisgICAgOiBtX2NvbW1hbmRCdWZmZXIoY29tbWFu
ZEJ1ZmZlcikKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9jb21tYW5kQnVmZmVyKTsKK30KIAog
Q29tbWFuZEJ1ZmZlcjo6fkNvbW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kRW5jb2Rlci5oCmluZGV4IDY2Njg3MjUyNWJmMS4uYmMyMTU1ZTUxZWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xh
c3MgUmVuZGVyUGFzc0VuY29kZXI7CiBjbGFzcyBDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZD
b3VudGVkPENvbW1hbmRFbmNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb21tYW5kRW5jb2Rlcj4gY3JlYXRlKCkKKyAgICBzdGF0
aWMgUmVmPENvbW1hbmRFbmNvZGVyPiBjcmVhdGUoaWQgPE1UTENvbW1hbmRCdWZmZXI+IGNvbW1h
bmRCdWZmZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21tYW5kRW5j
b2RlcigpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tbWFuZEVuY29kZXIoY29t
bWFuZEJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5Db21tYW5kRW5jb2RlcigpOwpAQCAtNjUsNyAr
NjUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZh
dGU6Ci0gICAgQ29tbWFuZEVuY29kZXIoKTsKKyAgICBDb21tYW5kRW5jb2RlcihpZCA8TVRMQ29t
bWFuZEJ1ZmZlcj4pOworCisgICAgaWQgPE1UTENvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZl
ciB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDJlM2JiMWQ1NGU2Yi4uZDliYTlmNWM4YzhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMzksMjMgKzM5LDI3IEBAIG5h
bWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBDb21tYW5k
RW5jb2Rlcjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIENvbW1hbmRFbmNvZGVyOjpjcmVhdGUobmls
KTsKIH0KIAotQ29tbWFuZEVuY29kZXI6OkNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworQ29t
bWFuZEVuY29kZXI6OkNvbW1hbmRFbmNvZGVyKGlkIDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5k
QnVmZmVyKQorICAgIDogbV9jb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIpCit7CisgICAgVU5V
U0VEX1ZBUklBQkxFKG1fY29tbWFuZEJ1ZmZlcik7Cit9CiAKIENvbW1hbmRFbmNvZGVyOjp+Q29t
bWFuZEVuY29kZXIoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0cjxDb21wdXRlUGFzc0VuY29kZXI+IENv
bW1hbmRFbmNvZGVyOjpiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAg
IHJldHVybiBDb21wdXRlUGFzc0VuY29kZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiBDb21wdXRl
UGFzc0VuY29kZXI6OmNyZWF0ZShuaWwpOwogfQogCiBSZWZQdHI8UmVuZGVyUGFzc0VuY29kZXI+
IENvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoY29uc3QgV0dQVVJlbmRlclBhc3NEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAg
ICByZXR1cm4gUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiBSZW5kZXJQ
YXNzRW5jb2Rlcjo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0
LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwg
dWludDY0X3Qgc2l6ZSkKQEAgLTk4LDcgKzEwMiw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNs
ZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90
CiBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBXR1BV
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBy
ZXR1cm4gQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgQ29tbWFuZEVuY29k
ZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaAppbmRleCBkMDY0MzJiMjBkMmQuLjU5NDc3
ODUzZTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAg
LTQwLDkgKzQwLDkgQEAgY2xhc3MgUXVlcnlTZXQ7CiBjbGFzcyBDb21wdXRlUGFzc0VuY29kZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxDb21wdXRlUGFzc0VuY29kZXI+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbXB1dGVQYXNzRW5jb2Rl
cj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPENvbXB1dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKGlk
IDxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IGNvbXB1dGVDb21tYW5kRW5jb2RlcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbXB1dGVQYXNzRW5jb2RlcigpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBhc3NFbmNvZGVyKGNvbXB1dGVDb21t
YW5kRW5jb2RlcikpOwogICAgIH0KIAogICAgIH5Db21wdXRlUGFzc0VuY29kZXIoKTsKQEAgLTYw
LDcgKzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBw
cml2YXRlOgotICAgIENvbXB1dGVQYXNzRW5jb2RlcigpOworICAgIENvbXB1dGVQYXNzRW5jb2Rl
cihpZCA8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPik7CisKKyAgICBpZCA8TVRMQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyPiBtX2NvbXB1dGVDb21tYW5kRW5jb2RlciB7IG5pbCB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29k
ZXIubW0KaW5kZXggODliYTA0ZDUzZTlhLi40YWJkOWVhM2NkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KQEAgLTM0LDcgKzM0LDExIEBACiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1Db21wdXRlUGFzc0VuY29kZXI6OkNvbXB1dGVQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKK0NvbXB1dGVQYXNzRW5jb2Rlcjo6Q29tcHV0ZVBhc3NFbmNvZGVyKGlkIDxN
VExDb21wdXRlQ29tbWFuZEVuY29kZXI+IGNvbXB1dGVDb21tYW5kRW5jb2RlcikKKyAgICA6IG1f
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyKGNvbXB1dGVDb21tYW5kRW5jb2RlcikKK3sKKyAgICBVTlVT
RURfVkFSSUFCTEUobV9jb21wdXRlQ29tbWFuZEVuY29kZXIpOworfQogCiBDb21wdXRlUGFzc0Vu
Y29kZXI6On5Db21wdXRlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tcHV0ZVBpcGVsaW5lLmgKaW5kZXggZDU5YjFiMzk5ODJkLi41OTkzMWViYTQyYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oCkBAIC0zNyw5ICszNyw5IEBAIGNs
YXNzIEJpbmRHcm91cExheW91dDsKIGNsYXNzIENvbXB1dGVQaXBlbGluZSA6IHB1YmxpYyBSZWZD
b3VudGVkPENvbXB1dGVQaXBlbGluZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUoKQorICAgIHN0
YXRpYyBSZWY8Q29tcHV0ZVBpcGVsaW5lPiBjcmVhdGUoaWQgPE1UTENvbXB1dGVQaXBlbGluZVN0
YXRlPiBjb21wdXRlUGlwZWxpbmVTdGF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvbXB1dGVQaXBlbGluZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29tcHV0ZVBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZVN0YXRlKSk7CiAgICAgfQogCiAgICAgfkNv
bXB1dGVQaXBlbGluZSgpOwpAQCAtNDgsNyArNDgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgQ29tcHV0ZVBpcGVsaW5lKCk7Cisg
ICAgQ29tcHV0ZVBpcGVsaW5lKGlkIDxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4pOworCisgICAg
aWQgPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX2NvbXB1dGVQaXBlbGluZVN0YXRlIHsgbmls
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1
dGVQaXBlbGluZS5tbQppbmRleCAwNWRhYjVjM2Y2ZDIuLmI5YWM1ZDdjNWViMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6Y3JlYXRlQ29tcHV0
ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gQ29tcHV0ZVBp
cGVsaW5lOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUobmls
KTsKIH0KIAogdm9pZCBEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZlB0cjxDb21wdXRlUGlwZWxpbmU+
JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQpAQCAtNDUsMTQgKzQ1LDE4IEBA
IHZvaWQgRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKIH0K
IAotQ29tcHV0ZVBpcGVsaW5lOjpDb21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CitDb21wdXRl
UGlwZWxpbmU6OkNvbXB1dGVQaXBlbGluZShpZCA8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNv
bXB1dGVQaXBlbGluZVN0YXRlKQorICAgIDogbV9jb21wdXRlUGlwZWxpbmVTdGF0ZShjb21wdXRl
UGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9jb21wdXRlUGlwZWxpbmVT
dGF0ZSk7Cit9CiAKIENvbXB1dGVQaXBlbGluZTo6fkNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVs
dDsKIAogUmVmPEJpbmRHcm91cExheW91dD4gQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBM
YXlvdXQodWludDMyX3QgZ3JvdXBJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRl
eCk7Ci0gICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIEJp
bmRHcm91cExheW91dDo6Y3JlYXRlKG5pbCwgbmlsLCBuaWwpOwogfQogCiB2b2lkIENvbXB1dGVQ
aXBlbGluZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCmlu
ZGV4IGU4YzU4MmIxMDJlNS4uODgzM2I4NTM0YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApAQCAt
NTMsMTAgKzUzLDcgQEAgY2xhc3MgUXVldWU7CiBjbGFzcyBEZXZpY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERldmljZT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERldmljZSgpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZlB0cjxEZXZpY2U+IGNy
ZWF0ZShpZCA8TVRMRGV2aWNlPik7CiAKICAgICB+RGV2aWNlKCk7CiAKQEAgLTg3LDcgKzg0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRlOgot
ICAgIERldmljZSgpOworICAgIERldmljZShpZCA8TVRMRGV2aWNlPik7CisKKyAgICBpZCA8TVRM
RGV2aWNlPiBtX2RldmljZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UubW0KaW5kZXggNjcyYWFkYzFlMGVjLi43YjZhM2NlNTk1YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UubW0KQEAgLTQ2LDcgKzQ2LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCi1EZXZpY2U6OkRldmljZSgpID0gZGVmYXVsdDsKK1JlZlB0cjxEZXZpY2U+IERldmljZTo6
Y3JlYXRlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEZXZpY2UoZGV2aWNlKSk7Cit9CisKK0RldmljZTo6RGV2aWNlKGlkIDxNVExEZXZpY2U+IGRl
dmljZSkKKyAgICA6IG1fZGV2aWNlKGRldmljZSkKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9k
ZXZpY2UpOworfQogCiBEZXZpY2U6On5EZXZpY2UoKSA9IGRlZmF1bHQ7CiAKQEAgLTY4LDcgKzc3
LDcgQEAgYm9vbCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMp
CiAKIFJlZlB0cjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCiB7Ci0gICAgcmV0dXJuIFF1ZXVl
OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gUXVldWU6OmNyZWF0ZShuaWwpOwogfQogCiBib29sIERl
dmljZTo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUgZmVhdHVyZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0
YW5jZS5oCmluZGV4IGM0NTBkZWViNTE1Ny4uNTIzNWQ0ZmQzZGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0lu
c3RhbmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFN1cmZhY2U+
IGNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKik7CiAgICAgdm9pZCBw
cm9jZXNzRXZlbnRzKCk7Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVz
dEFkYXB0ZXJPcHRpb25zKiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1cywgUmVmPEFkYXB0ZXI+JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7CisgICAgdm9p
ZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiwgV1RGOjpG
dW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+JiYs
IGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6CiAgICAgSW5zdGFuY2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KaW5kZXggZDg3OTI5ZmRmMjI0Li43NjM2ZmQxNjBkNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCkBAIC00OCwxMSArNDgsMTEgQEAgdm9pZCBJbnN0
YW5jZTo6cHJvY2Vzc0V2ZW50cygpCiB7CiB9CiAKLXZvaWQgSW5zdGFuY2U6OnJlcXVlc3RBZGFw
dGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMqIG9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZjxBZGFwdGVyPiYmLCBjb25zdCBj
aGFyKik+JiYgY2FsbGJhY2spCit2b2lkIEluc3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBX
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQ
VVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRhcHRlcj4mJiwgY29uc3QgY2hhciopPiYm
IGNhbGxiYWNrKQogewogICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKICAgICBVTlVTRURfUEFS
QU0oY2FsbGJhY2spOwotICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2
YWlsYWJsZSwgQWRhcHRlcjo6Y3JlYXRlKCksICJBZGFwdGVyIik7CisgICAgY2FsbGJhY2soV0dQ
VVJlcXVlc3RBZGFwdGVyU3RhdHVzX1VuYXZhaWxhYmxlLCBBZGFwdGVyOjpjcmVhdGUobmlsKSwg
IkFkYXB0ZXIiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCkBAIC0zMTEsOCArMzExLDgg
QEAgdm9pZCB3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkK
IAogdm9pZCB3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcihXR1BVSW5zdGFuY2UgaW5zdGFuY2Us
IGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMqIG9wdGlvbnMsIFdHUFVSZXF1ZXN0QWRh
cHRlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBpbnN0YW5jZS0+
aW5zdGFuY2UtPnJlcXVlc3RBZGFwdGVyKG9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChX
R1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpBZGFwdGVyPiYmIGFk
YXB0ZXIsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBu
ZXcgV0dQVUFkYXB0ZXJJbXBsIHsgV1RGTW92ZShhZGFwdGVyKSB9LCBtZXNzYWdlLCB1c2VyZGF0
YSk7CisgICAgaW5zdGFuY2UtPmluc3RhbmNlLT5yZXF1ZXN0QWRhcHRlcihvcHRpb25zLCBbY2Fs
bGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywgUmVmUHRy
PFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7CisgICAg
ICAgIGNhbGxiYWNrKHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRhcHRlckltcGwgeyBhZGFw
dGVyLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKaW5kZXggZmFjZTI1MTg2MjZmLi41NzMx
YTM0YzAzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1l
c3BhY2UgV2ViR1BVIHsKIGNsYXNzIFF1ZXJ5U2V0IDogcHVibGljIFJlZkNvdW50ZWQ8UXVlcnlT
ZXQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFF1ZXJ5U2V0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8UXVlcnlTZXQ+IGNyZWF0ZShp
ZCA8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gY291bnRlclNhbXBsZUJ1ZmZlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXJ5U2V0KCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBRdWVyeVNldChjb3VudGVyU2FtcGxlQnVmZmVyKSk7CiAgICAgfQogCiAg
ICAgflF1ZXJ5U2V0KCk7CkBAIC00Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExh
YmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBRdWVyeVNldCgpOworICAgIFF1ZXJ5
U2V0KGlkIDxNVExDb3VudGVyU2FtcGxlQnVmZmVyPik7CisKKyAgICBpZCA8TVRMQ291bnRlclNh
bXBsZUJ1ZmZlcj4gbV9jb3VudGVyU2FtcGxlQnVmZmVyIHsgbmlsIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0KaW5kZXggZjU2N2VkY2ZlM2Rm
Li43ZWY1NzA2ZDQ2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1tCkBAIC0zNCwxMCArMzQs
MTQgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8UXVlcnlTZXQ+IERldmljZTo6Y3JlYXRl
UXVlcnlTZXQoY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUo
KTsKKyAgICByZXR1cm4gUXVlcnlTZXQ6OmNyZWF0ZShuaWwpOwogfQogCi1RdWVyeVNldDo6UXVl
cnlTZXQoKSA9IGRlZmF1bHQ7CitRdWVyeVNldDo6UXVlcnlTZXQoaWQgPE1UTENvdW50ZXJTYW1w
bGVCdWZmZXI+IGNvdW50ZXJTYW1wbGVCdWZmZXIpCisgICAgOiBtX2NvdW50ZXJTYW1wbGVCdWZm
ZXIoY291bnRlclNhbXBsZUJ1ZmZlcikKK3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV9jb3VudGVy
U2FtcGxlQnVmZmVyKTsKK30KIAogUXVlcnlTZXQ6On5RdWVyeVNldCgpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1F1ZXVlLmgKaW5kZXggZjc2ZTY5MWEzNmVkLi5jZmFhYzRkZDM5OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvUXVldWUuaApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDb21tYW5kQnVmZmVyOwogY2xhc3Mg
UXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UXVldWU+IGNyZWF0ZSgpCisgICAgc3Rh
dGljIFJlZjxRdWV1ZT4gY3JlYXRlKGlkIDxNVExDb21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXVlKCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZShjb21tYW5kUXVldWUpKTsKICAgICB9CiAKICAgICB+
UXVldWUoKTsKQEAgLTU0LDcgKzU0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29u
c3QgY2hhciopOwogCiBwcml2YXRlOgotICAgIFF1ZXVlKCk7CisgICAgUXVldWUoaWQgPE1UTENv
bW1hbmRRdWV1ZT4pOworCisgICAgaWQgPE1UTENvbW1hbmRRdWV1ZT4gbV9jb21tYW5kUXVldWUg
eyBuaWwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpp
bmRleCBhZTRjMmNjNDc3NWQuLmU5OGQ3NTdkNDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUXVldWUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAg
LTMyLDcgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1RdWV1ZTo6UXVldWUoKSA9
IGRlZmF1bHQ7CitRdWV1ZTo6UXVldWUoaWQgPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFuZFF1ZXVl
KQorICAgIDogbV9jb21tYW5kUXVldWUoY29tbWFuZFF1ZXVlKQoreworICAgIFVOVVNFRF9WQVJJ
QUJMRShtX2NvbW1hbmRRdWV1ZSk7Cit9CiAKIFF1ZXVlOjp+UXVldWUoKSA9IGRlZmF1bHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmgKaW5kZXggMmMwYmFjNmFjNGEzLi41NDk1N2Q1
Y2Y1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5oCkBAIC0zNSw5ICszNSw5IEBA
IG5hbWVzcGFjZSBXZWJHUFUgewogY2xhc3MgUmVuZGVyQnVuZGxlIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVuZGVyQnVuZGxlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW5kZXJCdW5kbGU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxS
ZW5kZXJCdW5kbGU+IGNyZWF0ZShpZCA8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVj
dENvbW1hbmRCdWZmZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5k
ZXJCdW5kbGUoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlckJ1bmRsZShp
bmRpcmVjdENvbW1hbmRCdWZmZXIpKTsKICAgICB9CiAKICAgICB+UmVuZGVyQnVuZGxlKCk7CkBA
IC00NSw3ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsK
IAogcHJpdmF0ZToKLSAgICBSZW5kZXJCdW5kbGUoKTsKKyAgICBSZW5kZXJCdW5kbGUoaWQgPE1U
TEluZGlyZWN0Q29tbWFuZEJ1ZmZlcj4pOworCisgICAgaWQgPE1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcj4gbV9pbmRpcmVjdENvbW1hbmRCdWZmZXIgeyBuaWwgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCmluZGV4IDY3NTdiNDk3
NTllMS4uMDlkMDljMjUxYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLm1tCkBA
IC0zMCw3ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotUmVuZGVyQnVuZGxlOjpS
ZW5kZXJCdW5kbGUoKSA9IGRlZmF1bHQ7CitSZW5kZXJCdW5kbGU6OlJlbmRlckJ1bmRsZShpZCA8
TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCisgICAgOiBt
X2luZGlyZWN0Q29tbWFuZEJ1ZmZlcihpbmRpcmVjdENvbW1hbmRCdWZmZXIpCit7CisgICAgVU5V
U0VEX1ZBUklBQkxFKG1faW5kaXJlY3RDb21tYW5kQnVmZmVyKTsKK30KIAogUmVuZGVyQnVuZGxl
Ojp+UmVuZGVyQnVuZGxlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGVFbmNvZGVyLmgKaW5kZXggNTAwY2ViOThiNWY4Li5jMmQxMjc5YThlMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTQxLDkgKzQxLDkg
QEAgY2xhc3MgUmVuZGVyUGlwZWxpbmU7CiBjbGFzcyBSZW5kZXJCdW5kbGVFbmNvZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4g
Y3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFJlbmRlckJ1bmRsZUVuY29kZXI+IGNyZWF0ZShpZCA8
TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJCdW5kbGVFbmNvZGVyKCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJCdW5kbGVFbmNvZGVyKGluZGlyZWN0Q29t
bWFuZEJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5SZW5kZXJCdW5kbGVFbmNvZGVyKCk7CkBAIC02
Myw3ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAog
cHJpdmF0ZToKLSAgICBSZW5kZXJCdW5kbGVFbmNvZGVyKCk7CisgICAgUmVuZGVyQnVuZGxlRW5j
b2RlcihpZCA8TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyPik7CisKKyAgICBpZCA8TVRMSW5kaXJl
Y3RDb21tYW5kQnVmZmVyPiBtX2luZGlyZWN0Q29tbWFuZEJ1ZmZlciB7IG5pbCB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJCdW5kbGVFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxl
RW5jb2Rlci5tbQppbmRleCAzZGIxMTAwZWE3ZWMuLjY3NDNiZTE4MjZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCkBAIC0zOCwxMCArMzgsMTQgQEAg
bmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpj
cmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIFJlbmRlckJ1bmRsZUVuY29kZXI6OmNyZWF0ZSgpOworICAgIHJldHVybiBSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpjcmVhdGUobmlsKTsKIH0KIAotUmVuZGVyQnVuZGxlRW5jb2Rlcjo6
UmVuZGVyQnVuZGxlRW5jb2RlcigpID0gZGVmYXVsdDsKK1JlbmRlckJ1bmRsZUVuY29kZXI6OlJl
bmRlckJ1bmRsZUVuY29kZXIoaWQgPE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlcj4gaW5kaXJlY3RD
b21tYW5kQnVmZmVyKQorICAgIDogbV9pbmRpcmVjdENvbW1hbmRCdWZmZXIoaW5kaXJlY3RDb21t
YW5kQnVmZmVyKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX2luZGlyZWN0Q29tbWFuZEJ1ZmZl
cik7Cit9CiAKIFJlbmRlckJ1bmRsZUVuY29kZXI6On5SZW5kZXJCdW5kbGVFbmNvZGVyKCkgPSBk
ZWZhdWx0OwogCkBAIC03Nyw3ICs4MSw3IEBAIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6ZHJh
d0luZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluCiBSZWZQ
dHI8UmVuZGVyQnVuZGxlPiBSZW5kZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVVJl
bmRlckJ1bmRsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIHJldHVybiBSZW5kZXJCdW5kbGU6OmNyZWF0ZSgpOworICAgIHJldHVy
biBSZW5kZXJCdW5kbGU6OmNyZWF0ZShuaWwpOwogfQogCiB2b2lkIFJlbmRlckJ1bmRsZUVuY29k
ZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggNWM5NDk1YTA1OTM4Li4xN2I2NDhm
ZDc5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDMs
OSArNDMsOSBAQCBjbGFzcyBSZW5kZXJQaXBlbGluZTsKIGNsYXNzIFJlbmRlclBhc3NFbmNvZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyUGFzc0VuY29kZXI+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbmRlclBhc3NFbmNvZGVy
PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8UmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShpZCA8
TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+IHJlbmRlckNvbW1hbmRFbmNvZGVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyUGFzc0VuY29kZXIoKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbmRlclBhc3NFbmNvZGVyKHJlbmRlckNvbW1hbmRFbmNv
ZGVyKSk7CiAgICAgfQogCiAgICAgflJlbmRlclBhc3NFbmNvZGVyKCk7CkBAIC03NCw3ICs3NCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToK
LSAgICBSZW5kZXJQYXNzRW5jb2RlcigpOworICAgIFJlbmRlclBhc3NFbmNvZGVyKGlkIDxNVExS
ZW5kZXJDb21tYW5kRW5jb2Rlcj4pOworCisgICAgaWQgPE1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
PiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyIHsgbmlsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVy
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KaW5kZXggY2I5
ZGJhMWJkMzVlLi4zZTI1YTM2NzJiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlclBhc3NFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBh
c3NFbmNvZGVyLm1tCkBAIC0zNSw3ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAot
UmVuZGVyUGFzc0VuY29kZXI6OlJlbmRlclBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OworUmVuZGVy
UGFzc0VuY29kZXI6OlJlbmRlclBhc3NFbmNvZGVyKGlkIDxNVExSZW5kZXJDb21tYW5kRW5jb2Rl
cj4gcmVuZGVyQ29tbWFuZEVuY29kZXIpCisgICAgOiBtX3JlbmRlckNvbW1hbmRFbmNvZGVyKHJl
bmRlckNvbW1hbmRFbmNvZGVyKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX3JlbmRlckNvbW1h
bmRFbmNvZGVyKTsKK30KIAogUmVuZGVyUGFzc0VuY29kZXI6On5SZW5kZXJQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlw
ZWxpbmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmgKaW5kZXggY2Rh
YzkwMWE2YzNiLi4xNmVkMjZlZmIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxp
bmUuaApAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CiBjbGFzcyBSZW5k
ZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclBpcGVsaW5lPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW5kZXJQaXBl
bGluZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFJlbmRlclBpcGVsaW5lPiBjcmVhdGUoaWQg
PE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHJlbmRlclBpcGVsaW5lU3RhdGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJQaXBlbGluZSgpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVuZGVyUGlwZWxpbmUocmVuZGVyUGlwZWxpbmVTdGF0ZSkpOwog
ICAgIH0KIAogICAgIH5SZW5kZXJQaXBlbGluZSgpOwpAQCAtNDgsNyArNDgsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVy
UGlwZWxpbmUoKTsKKyAgICBSZW5kZXJQaXBlbGluZShpZCA8TVRMUmVuZGVyUGlwZWxpbmVTdGF0
ZT4pOworCisgICAgaWQgPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IG1fcmVuZGVyUGlwZWxpbmVT
dGF0ZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlclBpcGVsaW5lLm1tCmluZGV4IGRjM2Y1MmQxNWM0ZS4uYmZkNWI0OWFiYWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQpAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViR1BVIHsKIFJlZlB0cjxSZW5kZXJQaXBlbGluZT4gRGV2aWNlOjpjcmVhdGVS
ZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewogICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVuZGVy
UGlwZWxpbmU6OmNyZWF0ZSgpOworICAgIHJldHVybiBSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG5p
bCk7CiB9CiAKIHZvaWQgRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9p
ZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmUHRyPFJlbmRlclBpcGVsaW5lPiYm
LCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjaykKQEAgLTQ0LDE0ICs0NCwxOCBAQCB2
b2lkIERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKiBkZXNjcgogICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CiB9CiAK
LVJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKK1JlbmRlclBpcGVs
aW5lOjpSZW5kZXJQaXBlbGluZShpZCA8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gcmVuZGVyUGlw
ZWxpbmVTdGF0ZSkKKyAgICA6IG1fcmVuZGVyUGlwZWxpbmVTdGF0ZShyZW5kZXJQaXBlbGluZVN0
YXRlKQoreworICAgIFVOVVNFRF9WQVJJQUJMRShtX3JlbmRlclBpcGVsaW5lU3RhdGUpOworfQog
CiBSZW5kZXJQaXBlbGluZTo6flJlbmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwogCiBSZWY8Qmlu
ZEdyb3VwTGF5b3V0PiBSZW5kZXJQaXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90
IGdyb3VwSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOwotICAgIHJldHVy
biBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZSgpOworICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6
OmNyZWF0ZShuaWwsIG5pbCwgbmlsKTsKIH0KIAogdm9pZCBSZW5kZXJQaXBlbGluZTo6c2V0TGFi
ZWwoY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
YW1wbGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKaW5kZXggMWI3MzY1ZGU4
YjgxLi42MTcwYjVmNWMwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKQEAgLTM1LDkgKzM1LDkg
QEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBTYW1wbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
U2FtcGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFNhbXBsZXI+IGNyZWF0
ZShpZCA8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTYW1wbGVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTYW1wbGVyKHNhbXBsZXJTdGF0ZSkpOwogICAgIH0KIAogICAgIH5TYW1wbGVyKCk7CkBAIC00
NSw3ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAog
cHJpdmF0ZToKLSAgICBTYW1wbGVyKCk7CisgICAgU2FtcGxlcihpZCA8TVRMU2FtcGxlclN0YXRl
Pik7CisKKyAgICBpZCA8TVRMU2FtcGxlclN0YXRlPiBtX3NhbXBsZXJTdGF0ZSB7IG5pbCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQppbmRleCAx
MWM4OTRjN2UxMjQuLjU5Y2UxODdiNzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2FtcGxlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCkBAIC0z
NCwxMCArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8U2FtcGxlcj4gRGV2aWNl
OjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
IHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFNhbXBsZXI6OmNy
ZWF0ZSgpOworICAgIHJldHVybiBTYW1wbGVyOjpjcmVhdGUobmlsKTsKIH0KIAotU2FtcGxlcjo6
U2FtcGxlcigpID0gZGVmYXVsdDsKK1NhbXBsZXI6OlNhbXBsZXIoaWQgPE1UTFNhbXBsZXJTdGF0
ZT4gc2FtcGxlclN0YXRlKQorICAgIDogbV9zYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlKQorewor
ICAgIFVOVVNFRF9WQVJJQUJMRShtX3NhbXBsZXJTdGF0ZSk7Cit9CiAKIFNhbXBsZXI6On5TYW1w
bGVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCmluZGV4IGMy
YWQzZWVkMTg3MS4uYTI3ODAxOTNmMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUu
aApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIFNoYWRlck1vZHVs
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYWRlck1vZHVsZT4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGUo
KQorICAgIHN0YXRpYyBSZWY8U2hhZGVyTW9kdWxlPiBjcmVhdGUoaWQgPE1UTExpYnJhcnk+IGxp
YnJhcnkpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkZXJNb2R1bGUo
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYWRlck1vZHVsZShsaWJyYXJ5KSk7
CiAgICAgfQogCiAgICAgflNoYWRlck1vZHVsZSgpOwpAQCAtNDYsNyArNDYsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBjaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgU2hhZGVy
TW9kdWxlKCk7CisgICAgU2hhZGVyTW9kdWxlKGlkIDxNVExMaWJyYXJ5Pik7CisKKyAgICBpZCA8
TVRMTGlicmFyeT4gbV9saWJyYXJ5IHsgbmlsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQppbmRleCA1ZDNlNGRjMmM2MmYuLjJh
ODM4OTY2YjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQpAQCAtMzQsMTAg
KzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogUmVmUHRyPFNoYWRlck1vZHVsZT4gRGV2aWNl
OjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBT
aGFkZXJNb2R1bGU6OmNyZWF0ZSgpOworICAgIHJldHVybiBTaGFkZXJNb2R1bGU6OmNyZWF0ZShu
aWwpOwogfQogCi1TaGFkZXJNb2R1bGU6OlNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKK1NoYWRl
ck1vZHVsZTo6U2hhZGVyTW9kdWxlKGlkIDxNVExMaWJyYXJ5PiBsaWJyYXJ5KQorICAgIDogbV9s
aWJyYXJ5KGxpYnJhcnkpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKG1fbGlicmFyeSk7Cit9CiAK
IFNoYWRlck1vZHVsZTo6flNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
U3dhcENoYWluLm1tCmluZGV4IGJmMTFhMzEzNWViMi4uMWFkOGE3OGRmMDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU3dhcENoYWluLm1tCkBAIC00NSw3ICs0NSw3IEBAIFN3YXBDaGFpbjo6flN3YXBDaGFp
bigpID0gZGVmYXVsdDsKIAogUmVmPFRleHR1cmVWaWV3PiBTd2FwQ2hhaW46OmdldEN1cnJlbnRU
ZXh0dXJlVmlldygpCiB7Ci0gICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGUoKTsKKyAgICBy
ZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZShuaWwpOwogfQogCiB2b2lkIFN3YXBDaGFpbjo6cHJl
c2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXggNzI5OGYxODNjMDY5Li42NzA3NDcxZDE0
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgVGV4dHVy
ZVZpZXc7CiBjbGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dHVy
ZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZShpZCA8TVRMVGV4dHVy
ZT4gdGV4dHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUo
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUodGV4dHVyZSkpOwogICAg
IH0KIAogICAgIH5UZXh0dXJlKCk7CkBAIC01MCw3ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlKCk7CisgICAg
VGV4dHVyZShpZCA8TVRMVGV4dHVyZT4pOworCisgICAgaWQgPE1UTFRleHR1cmU+IG1fdGV4dHVy
ZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZS5tbQppbmRleCBhNmQyZDY0MGUwNTkuLmE2OTMzY2EzNDQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0
dXJlLm1tCkBAIC0zNSwxNyArMzUsMjEgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBSZWZQdHI8VGV4
dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IFRleHR1cmU6OmNyZWF0ZSgpOworICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUobmlsKTsKIH0K
IAotVGV4dHVyZTo6VGV4dHVyZSgpID0gZGVmYXVsdDsKK1RleHR1cmU6OlRleHR1cmUoaWQgPE1U
TFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKKyAgICBVTlVT
RURfVkFSSUFCTEUobV90ZXh0dXJlKTsKK30KIAogVGV4dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1
bHQ7CiAKIFJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShk
ZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOworICAgIHJldHVy
biBUZXh0dXJlVmlldzo6Y3JlYXRlKG5pbCk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6ZGVzdHJveSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAppbmRleCBiOWM2MmQ5ZmI5OWYuLjkwOGQyNjEw
MjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC0zNSw5ICszNSw5IEBAIG5h
bWVzcGFjZSBXZWJHUFUgewogY2xhc3MgVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0dXJlVmlldz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxUZXh0dXJl
Vmlldz4gY3JlYXRlKGlkIDxNVExUZXh0dXJlPiB0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFRleHR1cmVWaWV3KHRleHR1cmUpKTsKICAgICB9CiAKICAgICB+VGV4dHVyZVZpZXco
KTsKQEAgLTQ1LDcgKzQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hh
ciopOwogCiBwcml2YXRlOgotICAgIFRleHR1cmVWaWV3KCk7CisgICAgVGV4dHVyZVZpZXcoaWQg
PE1UTFRleHR1cmU+KTsKKworICAgIGlkIDxNVExUZXh0dXJlPiBtX3RleHR1cmUgeyBuaWwgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvVGV4dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5t
bQppbmRleCBjYjdiYzFmZGFiNWQuLmYxY2QyMWE3YzgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZVZpZXcubW0KQEAgLTMwLDcgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1U
ZXh0dXJlVmlldzo6VGV4dHVyZVZpZXcoKSA9IGRlZmF1bHQ7CitUZXh0dXJlVmlldzo6VGV4dHVy
ZVZpZXcoaWQgPE1UTFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUodGV4dHVyZSkK
K3sKKyAgICBVTlVTRURfVkFSSUFCTEUobV90ZXh0dXJlKTsKK30KIAogVGV4dHVyZVZpZXc6On5U
ZXh0dXJlVmlldygpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvY29uZmlnLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAppbmRleCA4YzEyN2E5
NDM0MGEuLmY1ZWYxZmI4NTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29u
ZmlnLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmgKQEAgLTI1LDYgKzI1LDgg
QEAKIAogI2luY2x1ZGUgIkV4cG9ydE1hY3Jvcy5oIgogCisjaW5jbHVkZSA8TWV0YWwvTWV0YWwu
aD4KKwogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKICNpbmNsdWRlIDx3dGYvRGlzYWxs
b3dDVHlwZS5oPgo=
</data>
<flag name="review"
          id="479783"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>