<?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>231407</bug_id>
          
          <creation_ts>2021-10-07 19:35:05 -0700</creation_ts>
          <short_desc>[GPU Process] Unique RenderingResourceIdentifiers Part 7: Migrate RemoteResourceCache to QualifiedRenderingResourceIdentifier</short_desc>
          <delta_ts>2021-10-11 21:20:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>231546</dependson>
          <blocked>217638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801907</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 19:35:05 -0700</bug_when>
    <thetext>Migrate RemoteResourceCache to QualifiedRenderingResourceIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801908</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 19:35:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/84010479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801909</commentid>
    <comment_count>2</comment_count>
      <attachid>440567</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-07 19:54:52 -0700</bug_when>
    <thetext>Created attachment 440567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802719</commentid>
    <comment_count>3</comment_count>
      <attachid>440567</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-11 11:59:19 -0700</bug_when>
    <thetext>Comment on attachment 440567
Patch

This patch looks okay. But I am surprised that RemoteImageBuffer currently has two identifiers. One is from the base class: ConcreteImageBuffer::m_renderingResourceIdentifier and the other is RemoteImageBuffer::m_renderingResourceIdentifier. The later was added in r269682. Luckily they hold the same value. But I think this needs to be cleaned-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802724</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-10-11 12:03:34 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #3)
&gt; Comment on attachment 440567 [details]
&gt; Patch
&gt; 
&gt; This patch looks okay. But I am surprised that RemoteImageBuffer currently
&gt; has two identifiers. One is from the base class:
&gt; ConcreteImageBuffer::m_renderingResourceIdentifier and the other is
&gt; RemoteImageBuffer::m_renderingResourceIdentifier. The later was added in
&gt; r269682. Luckily they hold the same value. But I think this needs to be
&gt; cleaned-up.

On trunk, RemoteImageBuffer&apos;s `m_renderingResourceIdentifier` is a WebKit::QualifiedRenderingResourceIdentifier while the base class just has a regular RenderingResourceIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802905</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 17:46:13 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #3)
&gt; Comment on attachment 440567 [details]
&gt; Patch
&gt; 
&gt; This patch looks okay. But I am surprised that RemoteImageBuffer currently
&gt; has two identifiers. One is from the base class:
&gt; ConcreteImageBuffer::m_renderingResourceIdentifier and the other is
&gt; RemoteImageBuffer::m_renderingResourceIdentifier. The later was added in
&gt; r269682. Luckily they hold the same value. But I think this needs to be
&gt; cleaned-up.

Yeah. Personally I think it&apos;s a mistake to put the identifiers inside the objects themselves, but I do understand why it&apos;s expedient. Philosophically, I think the objects themselves should have no idea that they&apos;re being shared across processes, and the process sharing code should be out-of-band. I think that 1) not everyone on the team agrees with this, though, and 2) even if they did, doing so is out of scope for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802907</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 17:48:32 -0700</bug_when>
    <thetext>Committed r283955 (242806@main): &lt;https://commits.webkit.org/242806@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802912</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 18:33:15 -0700</bug_when>
    <thetext>This broke the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802914</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 18:41:03 -0700</bug_when>
    <thetext>Broke the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802958</commentid>
    <comment_count>9</comment_count>
      <attachid>440882</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 21:12:59 -0700</bug_when>
    <thetext>Created attachment 440882
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802963</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-11 21:20:14 -0700</bug_when>
    <thetext>Committed r283968 (242815@main): &lt;https://commits.webkit.org/242815@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440567</attachid>
            <date>2021-10-07 19:54:52 -0700</date>
            <delta_ts>2021-10-11 11:59:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>25696</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGVlY2ZkYmNlMTQzLi5jOTAyYzJhYTg3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTUgQEAKKzIwMjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzIFBhcnQgNTogTWlncmF0ZSBSZW1vdGVSZXNvdXJjZUNhY2hlIHRvIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNDA3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDAx
MDQ3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHB1c2hlcyBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZG93biBpbnRv
IFJlbW90ZVJlc291cmNlQ2FjaGUsIGJ1dCBkb2Vzbid0IGdvIGFsbCB0aGUgd2F5LgorICAgICAg
ICBUaGlzIHBhdGNoIGF1Z21lbnRzIFJlbW90ZVJlc291cmNlQ2FjaGUncyBBUEkgdG8gYWNjZXB0
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMsIGFuZCBhbHNvCisgICAgICAg
IG1pZ3JhdGVzIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1fcmVzb3VyY2VVc2VDb3VudGVycyB0byB1
c2UgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycy4KKworICAgICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlOjptX2ltYWdlQnVmZmVycywgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bV9u
YXRpdmVJbWFnZXMsIGFuZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptX2ZvbnRzCisgICAgICAgIGFy
ZSBXZWJDb3JlIHR5cGVkZWZzLCBhbmQgYXJlIHBhc3NlZCB0byBXZWJDb3JlJ3MgZGlzcGxheSBs
aXN0IHJlcGxheWluZyBjb2RlLCBidXQgdGhhdCBjb2RlIHNob3VsZCBoYXZlIG5vCisgICAgICAg
IG5vdGlvbiBvZiBwcm9jZXNzIGlkZW50aWZpZXJzLiBUaGVyZWZvcmUsIGluIG9yZGVyIHRvIG1h
a2UgdGhvc2UgbWVtYmVycyBob2xkIGRhdGEgdGhhdCBXZWJDb3JlIGRvZXNuJ3QKKyAgICAgICAg
dW5kZXJzdGFuZCwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gd3JhcCBhbiBvcGFxdWUgY2xhc3MgYXJv
dW5kIHRoZW0gYW5kIHBhc3MgdGhhdCBjbGFzcyBhcm91bmQgaW5zdGVhZCBvZgorICAgICAgICB0
aGUgcmF3IEhhc2hNYXBzLiBJJ2xsIGRvIHRoYXQgaW4gYW5vdGhlciBwYXRjaC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50UGl4ZWxCdWZm
ZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdh
dGU6OlJlcGxheWVyRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZXBsYXllckRlbGVnYXRlOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJB
cHBseWluZ0Rpc3BsYXlMaXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxpc3RXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJ
bWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRT
aGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdp
dGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVGb250V2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNv
dXJjZUNhY2hlOjpSZW1vdGVSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkRm9udCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmVuc3VyZVJlc291cmNlVXNlQ291bnRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVz
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmg6CisKIDIwMjEtMTAtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFVuaXF1ZSBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXJzIFBhcnQgNDogTWlncmF0ZSBQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24gdG8gUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAppbmRleCA0N2I0NjQ0MGE2ZjYuLjJiN2I4MjdkNzIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWlu
dFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcgogICAgIENvbmRp
dGlvbiBjb25kaXRpb25WYXJpYWJsZTsKICAgICBib29sIGlzRmluaXNoZWQgPSBmYWxzZTsKICAg
ICBtX3JlbmRlcmluZ0JhY2tlbmQtPmRpc3BhdGNoKFsmLCBjb250ZXh0QXR0cmlidXRlcyA9IG1f
Y29udGV4dC0+Y29udGV4dEF0dHJpYnV0ZXMoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZVJlc291cmNlQ2FjaGUo
KS5jYWNoZWRJbWFnZUJ1ZmZlcih0YXJnZXQub2JqZWN0KCkpKSB7CisgICAgICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gbV9yZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVSZXNvdXJjZUNhY2hlKCku
Y2FjaGVkSW1hZ2VCdWZmZXIodGFyZ2V0KSkgewogICAgICAgICAgICAgLy8gSGVyZSB3ZSBkbyBu
b3QgdHJ5IHRvIHBsYXkgYmFjayBwZW5kaW5nIGNvbW1hbmRzIGZvciBpbWFnZUJ1ZmZlci4gQ3Vy
cmVudGx5IHRoaXMgY2FsbCBpcyBvbmx5IG1hZGUgZm9yIGVtcHR5CiAgICAgICAgICAgICAvLyBp
bWFnZSBidWZmZXJzIGFuZCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGFkZCBkaXNwbGF5IGxpc3Rz
LgogICAgICAgICAgICAgaWYgKHBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IDZmMDBjYTVkMDUwNS4uYWU4YTVlOWU1NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CkBAIC04Miw2ICs4Miw3IEBAIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvCiAKIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFyYW1ldGVycykKICAgICA6IG1fd29ya1F1ZXVl
KFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBX
b3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkp
CisgICAgLCBtX3JlbW90ZVJlc291cmNlQ2FjaGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy53
ZWJQcm9jZXNzSWRlbnRpZmllcigpKQogICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlmaWVyKQogICAgICwgbV9yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycy5yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkpCkBAIC0xODcsMTYgKzE4OCwxNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3Qg
RmxvYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGUuY2FjaGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGltYWdlQnVmZmVyUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIAogICAgIGlm
IChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZv
cm1XYWtldXAoaW1hZ2VCdWZmZXJSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICByZXN1bWVG
cm9tUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uKCk7CiB9CiAKLVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OlJlcGxheWVyRGVsZWdhdGU6OlJlcGxheWVyRGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGRlc3RpbmF0aW9uLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5
ZXJEZWxlZ2F0ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyKQogICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAg
ICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAg
ICwgbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKIHsKIH0KIApA
QCAtMjIzLDcgKzIyNSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJE
ZWxlZ2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OnJlY29yZFJlc291cmNlVXNlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJj
ZVVzZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2UoeyByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CiB9CiAKIERp
c3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNv
bnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBk
ZXN0aW5hdGlvbikKQEAgLTIzMSw3ICsyMzMsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAog
ICAgIGlmIChkaXNwbGF5TGlzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBSZXBsYXllckRlbGVnYXRlIHJlcGxheWVyRGVsZWdhdGUoZGVzdGluYXRpb24sICp0aGlzKTsK
KyAgICBSZXBsYXllckRlbGVnYXRlIHJlcGxheWVyRGVsZWdhdGUoZGVzdGluYXRpb24sICp0aGlz
LCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOwog
CiAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CiAgICAgICAgIGRl
c3RpbmF0aW9uLmNvbnRleHQoKSwKQEAgLTI3OSw3ICsyODEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseQogICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKG9mZnNldCA8
PSBoYW5kbGUuc2hhcmVkTWVtb3J5KCkuc2l6ZSgpLCBudWxscHRyLCAiT3V0LW9mLWJvdW5kcyBv
ZmZzZXQgaW50byBzaGFyZWQgZGlzcGxheSBsaXN0IGhhbmRsZSIpOwogCiAgICAgICAgIGlmIChy
ZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlSZWFzb246
OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpyZXN1bHQubmV4dERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtX3JlbW90
ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqcmVzdWx0Lm5leHREZXN0aW5hdGlv
bkltYWdlQnVmZmVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgfSk7CiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKICAgICAgICAgICAgICAgICBtX3Bl
bmRpbmdXYWtldXBJbmZvID0ge3sKQEAgLTMyNyw3ICszMjksNyBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseQogICAgICAgICAgICAgYXV0byBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIgPSBtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXJUeXBlPihyZXN1bWVS
ZWFkaW5nSW5mby0+ZGVzdGluYXRpb24pOwogICAgICAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRI
X1JFVFVSTl9WQUxVRShuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIuaXNWYWxpZCgpLCBudWxscHRy
LCAiSW52YWxpZCBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24gd2hlbiByZXN1bWluZyBkaXNwbGF5
IGxpc3QgcHJvY2Vzc2luZyIpOwogCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIp
OworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVk
SW1hZ2VCdWZmZXIoeyBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9KTsKICAgICAgICAgICAgIE1FU1NB
R0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoZGVzdGluYXRpb24sIG51bGxwdHIsICJNaXNzaW5n
IGltYWdlIGJ1ZmZlciBkZXN0aW5hdGlvbiB3aGVuIHJlc3VtaW5nIGRpc3BsYXkgbGlzdCBwcm9j
ZXNzaW5nIik7CiAKICAgICAgICAgICAgIG9mZnNldCA9IHJlc3VtZVJlYWRpbmdJbmZvLT5vZmZz
ZXQ7CkBAIC0zNTIsNyArMzU0LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0V2l0aFF1YWxpZmllZElkZW50aWZpZXIoV2UKIAogICAgIHVw
ZGF0ZUxhc3RLbm93blN0YXRlKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRTdGF0ZTo6QmVnYW5SZXBs
YXlpbmdEaXNwbGF5TGlzdCk7CiAKLSAgICBSZWZQdHIgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbkltYWdl
QnVmZmVySWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgUmVmUHRyIGRlc3RpbmF0aW9uSW1hZ2VC
dWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0soZGVzdGluYXRpb25J
bWFnZUJ1ZmZlciwgIk1pc3NpbmcgZGVzdGluYXRpb24gaW1hZ2UgYnVmZmVyIik7CiAKICAgICBh
dXRvIGluaXRpYWxIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoaXRlbUJ1
ZmZlcklkZW50aWZpZXIpOwpAQCAtNDcyLDcgKzQ3NCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIo
Y29uCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBTdHJpbmcgdXJsU3Ry
aW5nOwotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNh
Y2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCisg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgdXJsU3RyaW5n
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNv
bHV0aW9uKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybFN0cmluZykpOwogfQpA
QCAtNDg5LDcgKzQ5MSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YUZv
ckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSkpCisgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgZGF0YSA9IGltYWdlQnVmZmVyLT50b0Rh
dGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0
YSkpOwogfQpAQCAtNTA3LDcgKzUwOSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Z2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpCiAKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgWyZdKCkgewotICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KGlkZW50aWZpZXIub2JqZWN0KCkpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGltYWdl
ID0gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5
OjpEb250Q29weUJhY2tpbmdTdG9yZSk7CkBAIC01NDYsNyArNTQ4LDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIo
Y29uc3QgU2hhcmUKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZSgqaW1hZ2UpOworICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKCppbWFnZSwgbmF0aXZlSW1hZ2VSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5n
V2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRp
ZmllcikpCiAgICAgICAgIHJlc3VtZUZyb21QZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24oKTsKQEAg
LTU2NCw3ICs1NjYsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udFdp
dGhRdWFsaWZpZWRJZGVudGlmaWVyKFJlZjxGb250PiYmIGZvbnQsCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250
KFdURk1vdmUoZm9udCkpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RG
TW92ZShmb250KSwgZm9udFJlc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKG1fcGVuZGluZ1dh
a2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChmb250
UmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmVzdW1lRnJvbVBlbmRpbmdXYWtldXBJbmZv
cm1hdGlvbigpOwogfQpAQCAtNTg1LDcgKzU4Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZVdpdGhR
dWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gc3VjY2VzcyA9IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLm9iamVjdCgpLCB1c2VDb3VudCk7CisgICAgYXV0byBzdWNjZXNzID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIHVzZUNvdW50KTsKICAgICBNRVNTQUdFX0NIRUNLKHN1Y2Nlc3MsICJSZXNvdXJjZSBpcyBi
ZWluZyByZWxlYXNlZCBiZWZvcmUgYmVpbmcgY2FjaGVkLiIpOwogICAgIHVwZGF0ZVJlbmRlcmlu
Z1Jlc291cmNlUmVxdWVzdCgpOwogfQpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlV2l0aFF1YWxpZmllZElkZW50aWZp
ZXIoUXVhbGlmCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZpbmFsaXplUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZ1VwZGF0ZUlEKQogewogICAgIGF1dG8g
c2hvdWxkUGVyZm9ybVdha2V1cCA9IFsmXSB7Ci0gICAgICAgIHJldHVybiBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIobV9wZW5kaW5nV2FrZXVwSW5mby0+ZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXIub2JqZWN0KCkpICYmIG1fc2hhcmVkRGlzcGxheUxpc3RI
YW5kbGVzLmNvbnRhaW5zKG1fcGVuZGluZ1dha2V1cEluZm8tPml0ZW1CdWZmZXJJZGVudGlmaWVy
KTsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZl
cihtX3BlbmRpbmdXYWtldXBJbmZvLT5kZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcikg
JiYgbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuY29udGFpbnMobV9wZW5kaW5nV2FrZXVwSW5m
by0+aXRlbUJ1ZmZlcklkZW50aWZpZXIpOwogICAgIH07CiAKICAgICBpZiAobV9wZW5kaW5nV2Fr
ZXVwSW5mbyAmJiBzaG91bGRQZXJmb3JtV2FrZXVwKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRl
eCA0MTlhZTZkMTZmNzIuLmRlYmRmMzYxZGExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxp
c3RSZXBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjUsNyAr
MTY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIFJlcGxheWVyRGVsZWdhdGUgOiBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBSZXBsYXllckRlbGVnYXRlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYpOworICAgICAgICBSZXBsYXllckRlbGVnYXRlKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
YXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYpIGZpbmFsOwpAQCAtMTc1LDYgKzE3Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIG1fZGVzdGluYXRpb247CiAgICAgICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKKyAgICAgICAgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNzSWRlbnRpZmllcjsKICAgICB9OwogCiAgICAg
c3RydWN0IFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXgg
MWQ1OTcyZDYzZWQ5Li5kNTFkNjNjOGI0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsOCArMzEs
MTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK1Jl
bW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUHJvY2Vzc0lkZW50aWZpZXIg
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCisgICAgOiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKHdlYlBy
b2Nlc3NJZGVudGlmaWVyKQoreworfQorCiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNv
dXJjZUNhY2hlKFJlbW90ZVJlc291cmNlQ2FjaGUmJiBvdGhlcikKLSAgICA6IG1faW1hZ2VCdWZm
ZXJzKFdURk1vdmUob3RoZXIubV9pbWFnZUJ1ZmZlcnMpKQorICAgIDogbV93ZWJQcm9jZXNzSWRl
bnRpZmllcihvdGhlci5tX3dlYlByb2Nlc3NJZGVudGlmaWVyKQorICAgICwgbV9pbWFnZUJ1ZmZl
cnMoV1RGTW92ZShvdGhlci5tX2ltYWdlQnVmZmVycykpCiAgICAgLCBtX25hdGl2ZUltYWdlcyhX
VEZNb3ZlKG90aGVyLm1fbmF0aXZlSW1hZ2VzKSkKICAgICAsIG1fZm9udHMoV1RGTW92ZShvdGhl
ci5tX2ZvbnRzKSkKICAgICAsIG1fcmVzb3VyY2VVc2VDb3VudGVycyhXVEZNb3ZlKG90aGVyLm1f
cmVzb3VyY2VVc2VDb3VudGVycykpCkBAIC00MCw0OCArNDYsNTMgQEAgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNhY2hlJiYgb3RoZXIpCiAg
ICAgdXBkYXRlSGFzQWN0aXZlRHJhd2FibGVzKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPEltYWdlQnVmZmVy
PiYmIGltYWdlQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwot
ICAgIG1faW1hZ2VCdWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKKyAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Lm9iamVjdCgpID09IGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIG1faW1hZ2VCdWZmZXJzLmFkZChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoaW1hZ2VCdWZmZXIp
KTsKICAgICB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAogICAgIGVuc3VyZVJlc291cmNl
VXNlQ291bnRlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi1JbWFnZUJ1ZmZl
ciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKK0ltYWdlQnVm
ZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25z
dAogewotICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogfQog
Ci12b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUlt
YWdlPiYmIGltYWdlKQordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdl
KFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciA9IGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KTsKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgQVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5v
YmplY3QoKSA9PSBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIEFT
U0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBt
X3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlKSk7CiAgICAgdXBkYXRl
SGFzQWN0aXZlRHJhd2FibGVzKCk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAotTmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0CitOYXRpdmVJbWFnZSogUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
QVNTRVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09
IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlcy5nZXQo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKIH0KIAotdm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKTsKLSAgICBtX2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFdURk1vdmUoZm9udCkpOworICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCkgPT0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAg
IEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9
PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBtX2ZvbnRzLmFkZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIub2JqZWN0KCksIFdURk1vdmUoZm9udCkpOwogCiAgICAgZW5zdXJlUmVz
b3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKLUZvbnQq
IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKK0ZvbnQqIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlZEZvbnQoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250
cy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbV9mb250cy5n
ZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKIH0KIAotdm9pZCBSZW1v
dGVSZXNvdXJjZUNhY2hlOjplbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0
byByZXN1bHQgPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyIHsgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkgewpAQCAtOTcsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxl
dGVBbGxGb250cygpCiAgICAgbV9mb250cy5jbGVhcigpOwogfQogCi1ib29sIFJlbW90ZVJlc291
cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRl
cmF0b3ImIGl0ZXJhdG9yKQorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJl
c291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6Oml0ZXJhdG9yJiBpdGVyYXRv
cikKIHsKICAgICBhdXRvJiB2YWx1ZSA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAodmFsdWUu
c3RhdGUgPT0gUmVzb3VyY2VTdGF0ZTo6QWxpdmUgfHwgdmFsdWUudXNlT3JQZW5kaW5nQ291bnQg
PCAwKQpAQCAtMTM4LDE4ICsxNDksMTggQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXli
ZVJlbW92ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXIKIAogICAg
IG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOwogCi0gICAgaWYgKG1faW1h
Z2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIHx8IG1fbmF0aXZl
SW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgaWYgKG1f
aW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkp
IHx8IG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2Jq
ZWN0KCkpKSB7CiAgICAgICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikpCisgICAgaWYgKG1fZm9udHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5vYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQ2Fj
aGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxl
YXNpbmcgaXQuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OnJlY29yZFJlc291cmNlVXNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlY29yZFJl
c291cmNlVXNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VVc2VD
b3VudGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKQEAgLTE2MSw3ICsx
NzIsNyBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlY29yZFJlc291cmNlVXNlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbgogICAgIG1heWJlUmVtb3ZlUmVzb3VyY2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpdGVyYXRvcik7CiB9CiAKLWJvb2wgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQor
Ym9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
dWludDY0X3QgdXNlQ291bnQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VVc2VD
b3VudGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ZXJh
dG9yID09IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDBl
NDA3MDkyYmI0MC4uOGY0MDBkOWY1NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw5ICsyNywxMSBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUXVhbGlmaWVkUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1h
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogCkBAIC0zOSwxOCArNDEsMTggQEAgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDsKIAogY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZSB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlUmVz
b3VyY2VDYWNoZSgpID0gZGVmYXVsdDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICBSZW1vdGVSZXNv
dXJjZUNhY2hlKFJlbW90ZVJlc291cmNlQ2FjaGUmJik7CiAKLSAgICB2b2lkIGNhY2hlSW1hZ2VC
dWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKLSAgICBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSBjb25zdDsKLSAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlPiYmKTsKLSAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZSogY2FjaGVkTmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKLSAgICB2b2lkIGNh
Y2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJik7Ci0gICAgV2ViQ29yZTo6Rm9udCogY2FjaGVk
Rm9udChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZv
aWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYsIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIq
IGNhY2hlZEltYWdlQnVmZmVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
Y29uc3Q7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFn
ZT4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3Jl
OjpOYXRpdmVJbWFnZSogY2FjaGVkTmF0aXZlSW1hZ2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9u
dD4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3Jl
OjpGb250KiBjYWNoZWRGb250KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikg
Y29uc3Q7CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwotICAgIGJvb2wgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3Qg
dXNlQ291bnQpOwotICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBib29sIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KTsKKyAg
ICB2b2lkIHJlY29yZFJlc291cmNlVXNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVm
ZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUltYWdlczsgfQpAQCAtNzgsMTMgKzgwLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291
cmNlU3RhdGUgc3RhdGUgeyBSZXNvdXJjZVN0YXRlOjpBbGl2ZSB9OwogICAgICAgICBpbnQ2NF90
IHVzZU9yUGVuZGluZ0NvdW50IHsgMCB9OwogICAgIH07Ci0gICAgdXNpbmcgUmVzb3VyY2VVc2VD
b3VudGVyc01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZXNvdXJjZVVzZUNvdW50ZXI+OworICAgIHVzaW5nIFJlc291cmNlVXNlQ291bnRlcnNNYXAg
PSBIYXNoTWFwPFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VV
c2VDb3VudGVyPjsKIAotICAgIGJvb2wgbWF5YmVSZW1vdmVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6Oml0ZXJhdG9y
Jik7Ci0gICAgdm9pZCBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBib29sIG1heWJlUmVtb3ZlUmVzb3VyY2UoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjpp
dGVyYXRvciYpOworICAgIHZvaWQgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKFF1YWxpZmllZFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHVwZGF0ZUhhc0FjdGl2ZURy
YXdhYmxlcygpOwogCisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV93ZWJQcm9jZXNz
SWRlbnRpZmllcjsKKwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVm
ZmVyczsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CiAg
ICAgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7Cg==
</data>
<flag name="review"
          id="464665"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440882</attachid>
            <date>2021-10-11 21:12:59 -0700</date>
            <delta_ts>2021-10-11 21:12:59 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>32795</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDE0NDJjMjI3OWM5ZDA3M2JkZTYwYjA1MzUxYjRhYzc1MTUxYjRiMzcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBNb24gT2N0IDEx
IDIxOjEyOjE0IDIwMjEgLTA3MDAKCiAgICBQYXJ0IDcKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUzYjEyNTY1OGVh
Yy4uYWE2NGE3MzJiODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTEwLTExICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBVbmlxdWUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVycyBQYXJ0IDU6IE1pZ3Jh
dGUgUmVtb3RlUmVzb3VyY2VDYWNoZSB0byBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTQwNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQwMTA0Nzk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgVGhpcyBwdXNoZXMgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRvd24gaW50byBSZW1vdGVSZXNvdXJjZUNhY2hl
LCBidXQgZG9lc24ndCBnbyBhbGwgdGhlIHdheS4KKyAgICAgICAgVGhpcyBwYXRjaCBhdWdtZW50
cyBSZW1vdGVSZXNvdXJjZUNhY2hlJ3MgQVBJIHRvIGFjY2VwdCBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXJzLCBhbmQgYWxzbworICAgICAgICBtaWdyYXRlcyBSZW1vdGVSZXNv
dXJjZUNhY2hlOjptX3Jlc291cmNlVXNlQ291bnRlcnMgdG8gdXNlIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcnMuCisKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bV9p
bWFnZUJ1ZmZlcnMsIFJlbW90ZVJlc291cmNlQ2FjaGU6Om1fbmF0aXZlSW1hZ2VzLCBhbmQgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6bV9mb250cworICAgICAgICBhcmUgV2ViQ29yZSB0eXBlZGVmcywg
YW5kIGFyZSBwYXNzZWQgdG8gV2ViQ29yZSdzIGRpc3BsYXkgbGlzdCByZXBsYXlpbmcgY29kZSwg
YnV0IHRoYXQgY29kZSBzaG91bGQgaGF2ZSBubworICAgICAgICBub3Rpb24gb2YgcHJvY2VzcyBp
ZGVudGlmaWVycy4gVGhlcmVmb3JlLCBpbiBvcmRlciB0byBtYWtlIHRob3NlIG1lbWJlcnMgaG9s
ZCBkYXRhIHRoYXQgV2ViQ29yZSBkb2Vzbid0CisgICAgICAgIHVuZGVyc3RhbmQsIEknbSBnb2lu
ZyB0byBoYXZlIHRvIHdyYXAgYW4gb3BhcXVlIGNsYXNzIGFyb3VuZCB0aGVtIGFuZCBwYXNzIHRo
YXQgY2xhc3MgYXJvdW5kIGluc3RlYWQgb2YKKyAgICAgICAgdGhlIHJhdyBIYXNoTWFwcy4gSSds
bCBkbyB0aGF0IGluIGFub3RoZXIgcGF0Y2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRpZmll
cnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpjbGlwVG9J
bWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0dseXBoc1dpdGhRdWFsaWZpZWRJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ltYWdl
QnVmZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2VXaXRoUXVhbGlmaWVkSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdQYXR0
ZXJuV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5ZXJEZWxlZ2F0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6
OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6c3VibWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNw
bGF5TGlzdFdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVmZmVyV2l0aFF1YWxpZmllZElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRE
YXRhRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVm
ZmVyV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnRXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZmluYWxpemVSZW5kZXJpbmdVcGRh
dGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNl
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6
Y2FjaGVkTmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZUZvbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWRGb250IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6ZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlY29yZFJlc291cmNlVXNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKwogMjAyMS0xMC0xMSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gVW5pcXVlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcnMgUGFydCA2OiBVbmlxdWlm
eSBtb3JlIG9mIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIgYXQgZW50cnkgcG9pbnRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTkwOTIzOTM1OTM0Li5iYjhkNjQ0YjZhMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEzMCwxOSArMTMwLDE5IEBAIHZv
aWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGVXaXRoUXVhbGlmaWVkSWRlbnRp
ZmllcnMoRGlzcGxheUxpc3Q6OlNlCiB7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBzdHJva2VQ
YXR0ZXJuSW1hZ2U7CiAgICAgaWYgKHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIpCi0gICAg
ICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFn
ZShzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICAgICAgc3Ryb2tl
UGF0dGVybkltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHN0cm9rZVBh
dHRlcm5JbWFnZUlkZW50aWZpZXIpOwogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmaWxsUGF0
dGVybkltYWdlOwogICAgIGlmIChmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcikKLSAgICAgICAg
ZmlsbFBhdHRlcm5JbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZShmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1h
Z2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoZmlsbFBhdHRlcm5JbWFnZUlk
ZW50aWZpZXIpOwogCiAgICAgaGFuZGxlSXRlbShXVEZNb3ZlKGl0ZW0pLCBzdHJva2VQYXR0ZXJu
SW1hZ2UuZ2V0KCksIGZpbGxQYXR0ZXJuSW1hZ2UuZ2V0KCkpOwogCiAgICAgaWYgKHN0cm9rZVBh
dHRlcm5JbWFnZSkKLSAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNlVXNlKHN0
cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIub2JqZWN0KCkpOworICAgICAgICByZXNvdXJjZUNh
Y2hlKCkucmVjb3JkUmVzb3VyY2VVc2Uoc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcik7CiAK
ICAgICBpZiAoZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29y
ZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICAg
ICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNlVXNlKGZpbGxQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpzZXRMaW5lQ2Fw
KExpbmVDYXAgbGluZUNhcCkKQEAgLTE4OSwxNCArMTg5LDE0IEBAIHZvaWQgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZm
ZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uUmVjdCkKIHsKLSAgICBSZWZQdHIgaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hl
KCkuY2FjaGVkSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAg
ICBSZWZQdHIgaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaGFu
ZGxlSXRlbShEaXNwbGF5TGlzdDo6Q2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlm
aWVyLm9iamVjdCgpLCBkZXN0aW5hdGlvblJlY3QpLCAqaW1hZ2VCdWZmZXIpOwotICAgIHJlc291
cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIub2JqZWN0
KCkpOworICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNsaXBPdXRU
b1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTIzMywxNCArMjMzLDE0IEBAIHZvaWQgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0dseXBocyhEaXNwbGF5TGlzdDo6RHJhd0dseXBocyYm
IGl0ZW0pCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0dseXBoc1dpdGhR
dWFsaWZpZWRJZGVudGlmaWVyKERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzJiYgaXRlbSwgUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKQogewotICAgIFJl
ZlB0ciBmb250ID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEZvbnQoZm9udElkZW50aWZpZXIub2Jq
ZWN0KCkpOworICAgIFJlZlB0ciBmb250ID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZEZvbnQoZm9u
dElkZW50aWZpZXIpOwogICAgIGlmICghZm9udCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShp
dGVtKSwgKmZvbnQpOwotICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShmb250
SWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmVzb3VyY2VDYWNoZSgpLnJlY29yZFJlc291cmNl
VXNlKGZvbnRJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0y
NTIsMTQgKzI1MiwxNCBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZwogCiB2b2lkIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVy
KFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIFJlZlB0
ciBpbWFnZUJ1ZmZlciA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlcklkZW50aWZpZXIub2JqZWN0KCkpOworICAgIFJlZlB0ciBpbWFnZUJ1ZmZlciA9IHJlc291
cmNlQ2FjaGUoKS5jYWNoZWRJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLm9iamVjdCgpLCBkZXN0aW5hdGlvblJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpLCAqaW1hZ2VCdWZmZXIpOwotICAgIHJlc291cmNlQ2FjaGUoKS5y
ZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIub2JqZWN0KCkpOworICAgIHJl
c291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShpbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTI3MSwxNCAr
MjcxLDE0IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlm
aWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgUmVmUHRyIGltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKGltYWdl
SWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgUmVmUHRyIGltYWdlID0gcmVzb3VyY2VDYWNoZSgp
LmNhY2hlZE5hdGl2ZUltYWdlKGltYWdlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpbWFnZSkgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGhhbmRsZUl0ZW0oRGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZShpbWFnZUlkZW50aWZp
ZXIub2JqZWN0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpLCAqaW1h
Z2UpOwotICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShpbWFnZUlkZW50aWZp
ZXIub2JqZWN0KCkpOworICAgIHJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShpbWFn
ZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC0yOTAsMTQgKzI5MCwxNCBAQCB2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBSZWZQdHIgaW1hZ2UgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1h
Z2UoaW1hZ2VJZGVudGlmaWVyLm9iamVjdCgpKTsKKyAgICBSZWZQdHIgaW1hZ2UgPSByZXNvdXJj
ZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoaW1hZ2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlt
YWdlKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm4oaW1hZ2VJZGVu
dGlmaWVyLm9iamVjdCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyksICppbWFnZSk7Ci0gICAgcmVzb3VyY2VDYWNoZSgp
LnJlY29yZFJlc291cmNlVXNlKGltYWdlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgcmVzb3Vy
Y2VDYWNoZSgpLnJlY29yZFJlc291cmNlVXNlKGltYWdlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBv
cGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggNDdiNDY0NDBhNmY2Li4yYjdi
ODI3ZDcyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIo
c3RkOjpvcHRpb25hbDxXZWJDb3IKICAgICBDb25kaXRpb24gY29uZGl0aW9uVmFyaWFibGU7CiAg
ICAgYm9vbCBpc0ZpbmlzaGVkID0gZmFsc2U7CiAgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5kaXNw
YXRjaChbJiwgY29udGV4dEF0dHJpYnV0ZXMgPSBtX2NvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVz
KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW5kZXJp
bmdCYWNrZW5kLT5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIodGFyZ2V0
Lm9iamVjdCgpKSkgeworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVuZGVyaW5n
QmFja2VuZC0+cmVtb3RlUmVzb3VyY2VDYWNoZSgpLmNhY2hlZEltYWdlQnVmZmVyKHRhcmdldCkp
IHsKICAgICAgICAgICAgIC8vIEhlcmUgd2UgZG8gbm90IHRyeSB0byBwbGF5IGJhY2sgcGVuZGlu
ZyBjb21tYW5kcyBmb3IgaW1hZ2VCdWZmZXIuIEN1cnJlbnRseSB0aGlzIGNhbGwgaXMgb25seSBt
YWRlIGZvciBlbXB0eQogICAgICAgICAgICAgLy8gaW1hZ2UgYnVmZmVycyBhbmQgdGhlcmUncyBu
byBnb29kIHdheSB0byBhZGQgZGlzcGxheSBsaXN0cy4KICAgICAgICAgICAgIGlmIChwaXhlbEJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBjN2QxYTgzZWVmZTMuLjMzODg5ZjRi
OTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODIsNiArODIsNyBAQCBSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlBybwogCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBjcmVhdGlv
blBhcmFtZXRlcnMpCiAgICAgOiBtX3dvcmtRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCB3b3JrIHF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdv
cmtRdWV1ZTo6UU9TOjpVc2VySW50ZXJhY3RpdmUpKQorICAgICwgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkKICAg
ICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihjcmVhdGlvblBhcmFtZXRlcnMu
aWRlbnRpZmllcikKICAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUoV1RGTW92ZShj
cmVhdGlvblBhcmFtZXRlcnMucmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKQpAQCAtMTg3LDE2
ICsxODgsMTcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
cldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IEZsb2EKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZUltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlSW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBpbWFnZUJ1ZmZlclJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdXBkYXRlUmVuZGVy
aW5nUmVzb3VyY2VSZXF1ZXN0KCk7CiAKICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBt
X3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKGltYWdlQnVmZmVyUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKICAgICAgICAgcmVzdW1lRnJvbVBlbmRpbmdXYWtldXBJbmZvcm1hdGlv
bigpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRlOjpSZXBs
YXllckRlbGVnYXRlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbiwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKK1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OlJlcGxheWVyRGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImIGRlc3RpbmF0aW9uLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLCBQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKICAgICA6
IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIo
d2ViUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiB9CiAKQEAgLTIyMyw3ICsyMjUsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmRpZFJlc2V0TWFza0ltYWdl
QnVmZmVyKCkKIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRl
OjpyZWNvcmRSZXNvdXJjZVVzZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1v
dGVSZXNvdXJjZUNhY2hlKCkucmVjb3JkUmVzb3VyY2VVc2UocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNo
ZSgpLnJlY29yZFJlc291cmNlVXNlKHsgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBtX3dl
YlByb2Nlc3NJZGVudGlmaWVyIH0pOwogfQogCiBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pCkBAIC0yMzEsNyArMjMz
LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpz
dWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3AKICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVwbGF5ZXJEZWxlZ2F0ZSByZXBsYXll
ckRlbGVnYXRlKGRlc3RpbmF0aW9uLCAqdGhpcyk7CisgICAgUmVwbGF5ZXJEZWxlZ2F0ZSByZXBs
YXllckRlbGVnYXRlKGRlc3RpbmF0aW9uLCAqdGhpcywgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCkBAIC0y
NzksNyArMjgxLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgTUVTU0FHRV9D
SEVDS19XSVRIX1JFVFVSTl9WQUxVRShvZmZzZXQgPD0gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNp
emUoKSwgbnVsbHB0ciwgIk91dC1vZi1ib3VuZHMgb2Zmc2V0IGludG8gc2hhcmVkIGRpc3BsYXkg
bGlzdCBoYW5kbGUiKTsKIAogICAgICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09
IERpc3BsYXlMaXN0OjpTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyKSB7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5j
YWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyKTsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKHsgKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOwogICAgICAgICAgICAg
aWYgKCFkZXN0aW5hdGlvbikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2Fr
ZXVwSW5mbyk7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7CkBAIC0z
MjcsNyArMzI5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgIGF1dG8g
bmV3RGVzdGluYXRpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyVHlwZT4ocmVzdW1lUmVhZGluZ0luZm8tPmRlc3RpbmF0aW9uKTsK
ICAgICAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUobmV3RGVzdGluYXRp
b25JZGVudGlmaWVyLmlzVmFsaWQoKSwgbnVsbHB0ciwgIkludmFsaWQgaW1hZ2UgYnVmZmVyIGRl
c3RpbmF0aW9uIHdoZW4gcmVzdW1pbmcgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmciKTsKIAotICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VC
dWZmZXIobmV3RGVzdGluYXRpb25JZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHsgbmV3RGVzdGluYXRp
b25JZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgfSk7CiAgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVF
KGRlc3RpbmF0aW9uLCBudWxscHRyLCAiTWlzc2luZyBpbWFnZSBidWZmZXIgZGVzdGluYXRpb24g
d2hlbiByZXN1bWluZyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAgICBv
ZmZzZXQgPSByZXN1bWVSZWFkaW5nSW5mby0+b2Zmc2V0OwpAQCAtMzUyLDcgKzM1NCw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdFdpdGhR
dWFsaWZpZWRJZGVudGlmaWVyKFdlCiAKICAgICB1cGRhdGVMYXN0S25vd25TdGF0ZShSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kU3RhdGU6OkJlZ2FuUmVwbGF5aW5nRGlzcGxheUxpc3QpOwogCi0gICAg
UmVmUHRyIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2Fj
aGVkSW1hZ2VCdWZmZXIoZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIub2JqZWN0KCkp
OworICAgIFJlZlB0ciBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLmNhY2hlZEltYWdlQnVmZmVyKGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
ICAgICBNRVNTQUdFX0NIRUNLKGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsICJNaXNzaW5nIGRlc3Rp
bmF0aW9uIGltYWdlIGJ1ZmZlciIpOwogCiAgICAgYXV0byBpbml0aWFsSGFuZGxlID0gbV9zaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGl0ZW1CdWZmZXJJZGVudGlmaWVyKTsKQEAgLTQ3Miw3
ICs0NzQsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFVUkxGb3JJbWFn
ZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbgogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCiAgICAgICAgIHVybFN0cmluZyA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwo
bWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZSh1cmxTdHJpbmcpKTsKIH0KQEAgLTQ4OSw3ICs0OTEsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJ
ZGVudGlmaWVyKGNvbnN0CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIub2JqZWN0KCkpKQorICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIGRhdGEgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRhdGEpKTsKIH0KQEAgLTUwNyw3ICs1MDksNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdl
QnVmZmVyV2l0aFF1YWxpZmllZElkZW50aQogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aGFuZGxlOwogICAgIFsmXSgpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyLm9iamVjdCgpKTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFn
ZUJ1ZmZlcihpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5TmF0aXZl
SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6RG9udENvcHlCYWNraW5nU3RvcmUpOwpA
QCAtNTQ2LDcgKzU0OCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFNoYXJlCiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0
aXZlSW1hZ2UoKmltYWdlKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJ
bWFnZSgqaW1hZ2UsIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGlmICht
X3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1X
YWtldXAobmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICByZXN1bWVGcm9t
UGVuZGluZ1dha2V1cEluZm9ybWF0aW9uKCk7CkBAIC01NjQsNyArNTY2LDcgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnRXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihSZWY8
Rm9udD4mJiBmb250LAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsKKyAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1vdmUoZm9udCksIGZvbnRSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1
cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoZm9udFJlc291cmNlSWRlbnRpZmllcikpCiAgICAg
ICAgIHJlc3VtZUZyb21QZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24oKTsKIH0KQEAgLTU4NSw3ICs1
ODcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcgogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCB1aW50NjRfdCB1c2VDb3VudCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICBhdXRvIHN1Y2Nlc3MgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJl
c291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSwgdXNlQ291bnQpOwor
ICAgIGF1dG8gc3VjY2VzcyA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVz
b3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CiAgICAgTUVTU0FH
RV9DSEVDSyhzdWNjZXNzLCAiUmVzb3VyY2UgaXMgYmVpbmcgcmVsZWFzZWQgYmVmb3JlIGJlaW5n
IGNhY2hlZC4iKTsKICAgICB1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKTsKIH0KQEAg
LTU5Myw3ICs1OTUsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZgogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCBy
ZW5kZXJpbmdVcGRhdGVJRCkKIHsKICAgICBhdXRvIHNob3VsZFBlcmZvcm1XYWtldXAgPSBbJl0g
ewotICAgICAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVy
KG1fcGVuZGluZ1dha2V1cEluZm8tPmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLm9i
amVjdCgpKSAmJiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jb250YWlucyhtX3BlbmRpbmdX
YWtldXBJbmZvLT5pdGVtQnVmZmVySWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBtX3JlbW90
ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIobV9wZW5kaW5nV2FrZXVwSW5mby0+ZGVz
dGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpICYmIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5k
bGVzLmNvbnRhaW5zKG1fcGVuZGluZ1dha2V1cEluZm8tPml0ZW1CdWZmZXJJZGVudGlmaWVyKTsK
ICAgICB9OwogCiAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8gJiYgc2hvdWxkUGVyZm9ybVdh
a2V1cCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjI4ZWMzOWI2YTE4Li5kOTJiNzRjMDAz
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTY3LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAKICAgICBj
bGFzcyBSZXBsYXllckRlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6RGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVwbGF5ZXJEZWxlZ2F0ZShX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKKyAgICAgICAg
UmVwbGF5ZXJEZWxlZ2F0ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBmaW5hbDsKQEAgLTE3Nyw2
ICsxNzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBtX2Rl
c3RpbmF0aW9uOwogICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7CisgICAgICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJv
Y2Vzc0lkZW50aWZpZXI7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nV2FrZXVwSW5mb3Jt
YXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDFkNTk3MmQ2M2VkOS4uZDUxZDYzYzhiNGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDggKzMxLDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVS
ZXNvdXJjZUNhY2hlKFByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQorICAg
IDogbV93ZWJQcm9jZXNzSWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcikKK3sKK30KKwog
UmVtb3RlUmVzb3VyY2VDYWNoZTo6UmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNh
Y2hlJiYgb3RoZXIpCi0gICAgOiBtX2ltYWdlQnVmZmVycyhXVEZNb3ZlKG90aGVyLm1faW1hZ2VC
dWZmZXJzKSkKKyAgICA6IG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIob3RoZXIubV93ZWJQcm9jZXNz
SWRlbnRpZmllcikKKyAgICAsIG1faW1hZ2VCdWZmZXJzKFdURk1vdmUob3RoZXIubV9pbWFnZUJ1
ZmZlcnMpKQogICAgICwgbV9uYXRpdmVJbWFnZXMoV1RGTW92ZShvdGhlci5tX25hdGl2ZUltYWdl
cykpCiAgICAgLCBtX2ZvbnRzKFdURk1vdmUob3RoZXIubV9mb250cykpCiAgICAgLCBtX3Jlc291
cmNlVXNlQ291bnRlcnMoV1RGTW92ZShvdGhlci5tX3Jlc291cmNlVXNlQ291bnRlcnMpKQpAQCAt
NDAsNDggKzQ2LDUzIEBAIFJlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUo
UmVtb3RlUmVzb3VyY2VDYWNoZSYmIG90aGVyKQogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxl
cygpOwogfQogCi12b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVm
PEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZUltYWdlQnVmZmVyKFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgUXVhbGlmaWVk
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
IHsKLSAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVyLT5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKLSAgICBtX2ltYWdlQnVmZmVycy5hZGQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgQVNT
RVJUKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSA9PSBpbWFnZUJ1ZmZlci0+
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKTsKKyAgICBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Lm9iamVjdCgpLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CiAgICAgdXBkYXRlSGFzQWN0aXZlRHJh
d2FibGVzKCk7CiAKICAgICBlbnN1cmVSZXNvdXJjZVVzZUNvdW50ZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIH0KIAotSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNh
Y2hlZEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIGNvbnN0CitJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6
Y2FjaGVkSW1hZ2VCdWZmZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbWFnZUJ1
ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fd2ViUHJvY2Vz
c0lkZW50aWZpZXIpOworICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKTsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKK3ZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2Us
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFn
ZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAgbV9uYXRpdmVJbWFnZXMuYWRk
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShpbWFnZSkpOworICAgIEFTU0VS
VChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkgPT0gaW1hZ2UtPnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgbV9uYXRpdmVJbWFnZXMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5vYmplY3Qo
KSwgV1RGTW92ZShpbWFnZSkpOwogICAgIHVwZGF0ZUhhc0FjdGl2ZURyYXdhYmxlcygpOwogCiAg
ICAgZW5zdXJlUmVzb3VyY2VVc2VDb3VudGVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiB9CiAKLU5hdGl2ZUltYWdlKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFn
ZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBjb25zdAorTmF0aXZlSW1hZ2UqIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2ZUlt
YWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEFTU0VSVChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3dlYlByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ci5vYmplY3QoKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJl
ZjxGb250PiYmIGZvbnQpCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udChSZWY8
Rm9udD4mJiBmb250LCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyID0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7Ci0gICAgbV9mb250
cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZvbnQpKTsKKyAgICBB
U1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpID09IGZvbnQtPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV93ZWJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpLCBX
VEZNb3ZlKGZvbnQpKTsKIAogICAgIGVuc3VyZVJlc291cmNlVXNlQ291bnRlcihyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi1Gb250KiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNo
ZWRGb250KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIGNvbnN0CitGb250KiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRGb250KFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZm9udHMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgcmV0dXJuIG1fZm9udHMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5vYmplY3QoKSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZW5zdXJlUmVz
b3VyY2VVc2VDb3VudGVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmVuc3VyZVJlc291cmNl
VXNlQ291bnRlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVVzZUNv
dW50ZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRl
ciB7IH0pOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKQEAgLTk3LDcgKzEwOCw3IEBA
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMoKQogICAgIG1fZm9udHMu
Y2xlYXIoKTsKIH0KIAotYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6Oml0ZXJhdG9yJiBpdGVyYXRvcikKK2Jvb2wgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZShRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVVz
ZUNvdW50ZXJzTWFwOjppdGVyYXRvciYgaXRlcmF0b3IpCiB7CiAgICAgYXV0byYgdmFsdWUgPSBp
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKHZhbHVlLnN0YXRlID09IFJlc291cmNlU3RhdGU6OkFs
aXZlIHx8IHZhbHVlLnVzZU9yUGVuZGluZ0NvdW50IDwgMCkKQEAgLTEzOCwxOCArMTQ5LDE4IEBA
IGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNvdXJjZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyCiAKICAgICBtX3Jlc291cmNlVXNlQ291bnRlcnMucmVt
b3ZlKGl0ZXJhdG9yKTsKIAotICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSB8fCBtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkgeworICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSB8fCBtX25hdGl2ZUltYWdlcy5yZW1vdmUo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLm9iamVjdCgpKSkgewogICAgICAgICB1cGRhdGVI
YXNBY3RpdmVEcmF3YWJsZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlm
IChtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgIGlmICht
X2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNvdXJjZSBz
aG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZShRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuZmluZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogCkBAIC0xNjEsNyArMTcyLDcgQEAgdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW4KICAgICBtYXliZVJlbW92ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgaXRlcmF0b3IpOwogfQogCi1ib29sIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCkKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQogewogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuZmluZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291cmNlVXNlQ291bnRl
cnMuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCAwZTQwNzA5MmJiNDAuLjhmNDAwZDlmNTcyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIlF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMzksMTggKzQxLDE4
IEBAIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAKIGNsYXNzIFJlbW90ZVJlc291cmNl
Q2FjaGUgewogcHVibGljOgotICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoKSA9IGRlZmF1bHQ7Cisg
ICAgUmVtb3RlUmVzb3VyY2VDYWNoZShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllcik7CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZXNvdXJjZUNh
Y2hlJiYpOwogCi0gICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4mJik7Ci0gICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7Ci0gICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7Ci0gICAgV2ViQ29yZTo6
TmF0aXZlSW1hZ2UqIGNhY2hlZE5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgY29uc3Q7Ci0gICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+
JiYpOwotICAgIFdlYkNvcmU6OkZvbnQqIGNhY2hlZEZvbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2UqIGNhY2hlZE5hdGl2
ZUltYWdlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgY29uc3Q7CisgICAg
dm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYsIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6Rm9udCogY2FjaGVkRm9udChRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlQWxs
Rm9udHMoKTsKLSAgICBib29sIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KTsKLSAgICB2b2lkIHJlY29y
ZFJlc291cmNlVXNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
Ym9vbCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShR
dWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlQnVmZmVyczsgfQogICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0
aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KQEAgLTc4LDEzICs4
MCwxNSBAQCBwcml2YXRlOgogICAgICAgICBSZXNvdXJjZVN0YXRlIHN0YXRlIHsgUmVzb3VyY2VT
dGF0ZTo6QWxpdmUgfTsKICAgICAgICAgaW50NjRfdCB1c2VPclBlbmRpbmdDb3VudCB7IDAgfTsK
ICAgICB9OwotICAgIHVzaW5nIFJlc291cmNlVXNlQ291bnRlcnNNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyPjsKKyAg
ICB1c2luZyBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwID0gSGFzaE1hcDxRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcj47CiAKLSAgICBib29sIG1h
eWJlUmVtb3ZlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBS
ZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjppdGVyYXRvciYpOwotICAgIHZvaWQgZW5zdXJlUmVzb3Vy
Y2VVc2VDb3VudGVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
Ym9vbCBtYXliZVJlbW92ZVJlc291cmNlKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgUmVzb3VyY2VVc2VDb3VudGVyc01hcDo6aXRlcmF0b3ImKTsKKyAgICB2b2lkIGVuc3Vy
ZVJlc291cmNlVXNlQ291bnRlcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogCiAgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEcmF3YWJsZXMoKTsKIAorICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisKICAgICBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAgIFdlYkNvcmU6OkZvbnRSZW5kZXJpbmdS
ZXNvdXJjZU1hcCBtX2ZvbnRzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>