<?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>204329</bug_id>
          
          <creation_ts>2019-11-18 16:20:54 -0800</creation_ts>
          <short_desc>Move ElementRuleCollector to Style namespace</short_desc>
          <delta_ts>2019-11-19 07:35:30 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591306</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 16:20:54 -0800</bug_when>
    <thetext>etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591313</commentid>
    <comment_count>1</comment_count>
      <attachid>383806</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-18 16:37:06 -0800</bug_when>
    <thetext>Created attachment 383806
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591516</commentid>
    <comment_count>2</comment_count>
      <attachid>383806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-19 07:34:35 -0800</bug_when>
    <thetext>Comment on attachment 383806
patch

Clearing flags on attachment: 383806

Committed r252628: &lt;https://trac.webkit.org/changeset/252628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591517</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-19 07:34:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591518</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 07:35:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/57321594&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383806</attachid>
            <date>2019-11-18 16:37:06 -0800</date>
            <delta_ts>2019-11-19 07:34:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>elementrulecollector-namespace.patch</filename>
            <type>text/plain</type>
            <size>52153</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Y2Q0ZWZjODExNC4uYzhkM2EwNTA4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxOS0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBFbGVtZW50UnVsZUNvbGxlY3RvciB0byBTdHlsZSBuYW1lc3BhY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDMyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gbW92
ZSBQYWdlUnVsZUNvbGxlY3Rvci4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9DYWxsVHJhY2VyVHlwZXMuaDoKKyAgICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5OjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0
eWxlc2hlZXRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRG
b250KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU3R5bGVWYXJpYW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFN0cm9rZVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZp
bGxTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpzZXRGaWxsU3R5bGUpOgorCisgICAgICAgIFJlbmFtZSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpTdHlsZSB0byBTdHlsZVZhcmlhbnQgdG8gYXZvaWQgbmFtZSBjb25mbGlj
dHMuCisKKyAgICAgICAgKFdlYkNvcmU6OnRvU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNh
bnZhczo6YnVpbGRBY3Rpb24pOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c3R5bGVIaWRlc1Njcm9sbGJhcldpdGhPcmllbnRhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5l
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Qc2V1ZG9TdHlsZSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpnZXRTY3JvbGxiYXJQc2V1ZG9TdHlsZSBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQpOgorICAgICAgICAq
IHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6TWF0Y2hSZXF1ZXN0OjpNYXRjaFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpFbGVtZW50UnVsZUNvbGxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
Ojp0cmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hIb3N0UHNl
dWRvQ2xhc3NSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xs
ZWN0b3I6Om1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoUGFydFBzZXVkb0VsZW1lbnRSdWxl
c0ZvclNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaEFsbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBzdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmguCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UHNldWRvRWxlbWVudFJlcXVlc3Q6OlBzZXVkb0VsZW1lbnRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6c2V0UHNldWRvRWxlbWVu
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
OjpzdHlsZVJlbGF0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVyTWF0Y2hlZFJ1bGVzKToKKyAgICAgICAgKiBzdHlsZS9Q
YWdlUnVsZUNvbGxlY3Rvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvUGFn
ZVJ1bGVDb2xsZWN0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBhZ2VSdWxlQ29s
bGVjdG9yOjptYXRjaFBhZ2VSdWxlcyk6CisgICAgICAgICogc3R5bGUvUGFnZVJ1bGVDb2xsZWN0
b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBhZ2VSdWxlQ29sbGVjdG9yOjpQYWdlUnVsZUNv
bGxlY3Rvcik6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmg6CisKIDIwMTktMTEtMTggIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgUnVsZVNldCB0byBTdHls
ZSBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODliODIwNWI4MmIuLmVlOTczMzkwNTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtNzU1LDcgKzc1NSw2IEBAIGNzcy9ET01NYXRyaXhSZWFkT25seS5j
cHAKIGNzcy9EZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5jcHAKIGNzcy9EZXByZWNhdGVk
Q1NTT01WYWx1ZS5jcHAKIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuY3BwCi1jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCiBjc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAogY3NzL0lu
c3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCiBjc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtNzY3
LDcgKzc2Niw2IEBAIGNzcy9NZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAKIGNzcy9NZWRpYVF1ZXJ5
TGlzdC5jcHAKIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKIGNzcy9NZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dC5jcHAKLWNzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKIGNzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvUkdCQ29sb3IuY3BwCiBjc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjM0MCw5ICsyMzM4LDExIEBAIHN0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogCiBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwCiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHls
ZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCiBzdHlsZS9NYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUu
Y3BwCitzdHlsZS9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL1Byb3BlcnR5Q2FzY2FkZS5j
cHAKIHN0eWxlL1J1bGVGZWF0dXJlLmNwcAogc3R5bGUvUnVsZVNldC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZmM0ODgw
MGVhMy4uMDI4NTZkYmIwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MDE5LDEyICsyNzAxOSwxNiBAQAogCQkJCUU0QUJB
QkY0MjM2OEM2RUYwMEZBNDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCAqLywKIAkJCQlFNEE4MTRENTFD
NkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0
QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAor
CQkJCUZCREI2MTlBMTZENjAzMkEwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAg
Ki8sCisJCQkJRkJEQjYxOUUxNkQ2MDM2NTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVjdG9y
LmggKi8sCiAJCQkJRTRBODE0REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcCAqLywKIAkJCQlFNEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLywKIAkJCQkxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4
dEJveFN0eWxlLmNwcCAqLywKIAkJCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5l
VGV4dEJveFN0eWxlLmggKi8sCiAJCQkJRTQ1QkE2QUIyMzc0OTI3QjAwNERGQzA3IC8qIE1hdGNo
ZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAgKi8sCiAJCQkJRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3
IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oICovLAorCQkJCUZCREI2MTlDMTZENjAzNDYw
MEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5jcHAgKi8sCisJCQkJRkJEQjYxQTAxNkQ2MDM3
RTAwQkIzMzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0
MjAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMy
OTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAogCQkJCUE3OUJBRDlEMTYxRTdGM0Yw
MEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCkBAIC0yNzM4OCw4ICsyNzM5Miw2IEBACiAJ
CQkJODM2QUNFQzAxRUNBNjJCMDAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmggKi8sCiAJ
CQkJODM2QUNFQzExRUNBNjJCMDAwNEJEMDEyIC8qIERPTU1hdHJpeFJlYWRPbmx5LmlkbCAqLywK
IAkJCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlk
bCAqLywKLQkJCQlGQkRCNjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwICovLAotCQkJCUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNv
bGxlY3Rvci5oICovLAogCQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5j
cHAgKi8sCiAJCQkJMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggKi8sCiAJ
CQkJQzI4MDgzM0MxQzZEQjE5NDAwMTQ1MUI2IC8qIEZvbnRGYWNlLmlkbCAqLywKQEAgLTI3NDMy
LDggKzI3NDM0LDYgQEAKIAkJCQlEM0FBMTBGMjEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVy
eU1hdGNoZXIuaCAqLywKIAkJCQk0NDcxNzEwQjIwNUFGOTQ1MDAwQTExNkUgLyogTWVkaWFRdWVy
eVBhcnNlckNvbnRleHQuY3BwICovLAogCQkJCTQ0NzE3MTBDMjA1QUY5NDUwMDBBMTE2RSAvKiBN
ZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oICovLAotCQkJCUZCREI2MTlDMTZENjAzNDYwMEJCMzM5
NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5jcHAgKi8sCi0JCQkJRkJEQjYxQTAxNkQ2MDM3RTAwQkIz
Mzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmggKi8sCiAJCQkJQTgwRTZDRDEwQTE5ODlDQTAwN0ZC
OEM1IC8qIFBhaXIuaCAqLywKIAkJCQkzMTg5RTZEQjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lu
cy5jc3MgKi8sCiAJCQkJRTRCQkVEMEMxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
bGxUcmFjZXJUeXBlcy5oCmluZGV4IDJkYjc0MTA3NjYzLi5mNzhiZWFhYmFjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlclR5cGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlclR5cGVzLmgKQEAgLTEyMiw3ICsxMjIs
NyBAQCB1c2luZyBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50ID0gVmFyaWFudDwKIAogICAgIC8v
IHZhcmlhbnQKICAgICBDYW52YXNJbWFnZVNvdXJjZSwKLSAgICBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpTdHlsZSwKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHls
ZVZhcmlhbnQsCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OkJ1ZmZlckRhdGFTb3VyY2UsCiAgICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
Q1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggZDQ2MTg2NDM4YzMuLjI0YTI3NzNk
MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lzdGVyUHJvcGVydHkoRG9jdW1lbnQmIGRvY3VtCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5p
dGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4iIH07CiAKIAot
ICAgICAgICBNYXRjaFJlc3VsdCBtYXRjaFJlc3VsdDsKKyAgICAgICAgU3R5bGU6Ok1hdGNoUmVz
dWx0IG1hdGNoUmVzdWx0OwogCiAgICAgICAgIGF1dG8gcGFyZW50U3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y2xvbmUoKnN0eWxlKTsKICAgICAgICAgU3R5bGU6OkJ1aWxkZXIgZHVtbXlCdWlsZGVyKCpz
dHlsZSwgeyBkb2N1bWVudCwgcGFyZW50U3R5bGUgfSwgbWF0Y2hSZXN1bHQsIHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA2N2VlMDM5NDJhMC4uNGU2YmFlODUyYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMjEyNyw3ICsyMTI3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVz
aGVldHMKICAgICBhdXRvJiByZXNvbHZlciA9IGVsZW1lbnQuc3R5bGVSZXNvbHZlcigpOwogCiAg
ICAgaWYgKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgIT0gUHNldWRvSWQ6Ok5vbmUpCi0gICAgICAg
IHJldHVybiByZXNvbHZlci5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgUHNldWRvU3R5
bGVSZXF1ZXN0KHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLCAqcGFyZW50U3R5bGUpOworICAgICAg
ICByZXR1cm4gcmVzb2x2ZXIucHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRv
RWxlbWVudFNwZWNpZmllciB9LCAqcGFyZW50U3R5bGUpOwogCiAgICAgYXV0byBlbGVtZW50U3R5
bGUgPSByZXNvbHZlci5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgcGFyZW50U3R5bGUpOwogICAg
IGlmIChlbGVtZW50U3R5bGUucmVsYXRpb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA2MjQ0NzQx
NmZiZi4uNjlhZGEyYzQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTcyLDkgKzE3Miw5IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9u
dCkKIAogICAgIC8vIE5vdyBtYXAgdGhlIGZvbnQgcHJvcGVydHkgbG9uZ2hhbmRzIGludG8gdGhl
IHN0eWxlLgogCi0gICAgTWF0Y2hSZXN1bHQgbWF0Y2hSZXN1bHQ7CisgICAgU3R5bGU6Ok1hdGNo
UmVzdWx0IG1hdGNoUmVzdWx0OwogICAgIGF1dG8gcGFyZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y2xvbmUoKm5ld1N0eWxlKTsKLSAgICBXZWJDb3JlOjpTdHlsZTo6QnVpbGRlciBzdHlsZUJ1aWxk
ZXIoKm5ld1N0eWxlLCB7IGRvY3VtZW50LCBwYXJlbnRTdHlsZSB9LCBtYXRjaFJlc3VsdCwgeyB9
KTsKKyAgICBTdHlsZTo6QnVpbGRlciBzdHlsZUJ1aWxkZXIoKm5ld1N0eWxlLCB7IGRvY3VtZW50
LCBwYXJlbnRTdHlsZSB9LCBtYXRjaFJlc3VsdCwgeyB9KTsKIAogICAgIHN0eWxlQnVpbGRlci5h
cHBseVByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBwYXJzZWRTdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpLmdldCgpKTsKICAgICBzdHls
ZUJ1aWxkZXIuYXBwbHlQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCBwYXJzZWRT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCAzZGI1ODg5ZTc2YS4uODdiOWI4MDEwMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCkBAIC0xODcxLDcgKzE4NzEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBU
PiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXNDb21wb3NpdGVk
RHJhd0ltYQogICAgIGNvbXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9
CiAKLXN0YXRpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZSB0b1N0eWxlKGNv
bnN0IENhbnZhc1N0eWxlJiBzdHlsZSkKK3N0YXRpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpTdHlsZVZhcmlhbnQgdG9TdHlsZVZhcmlhbnQoY29uc3QgQ2FudmFzU3R5bGUmIHN0eWxl
KQogewogICAgIGlmIChhdXRvIGdyYWRpZW50ID0gc3R5bGUuY2FudmFzR3JhZGllbnQoKSkKICAg
ICAgICAgcmV0dXJuIGdyYWRpZW50OwpAQCAtMTg4MCwxMiArMTg4MCwxMiBAQCBzdGF0aWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGUgdG9TdHlsZShjb25zdCBDYW52YXNTdHls
ZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLmNvbG9yKCk7CiB9CiAKLUNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OlN0eWxlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnN0cm9r
ZVN0eWxlKCkgY29uc3QKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OlN0eWxlVmFyaWFu
dCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzdHJva2VTdHlsZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHRvU3R5bGUoc3RhdGUoKS5zdHJva2VTdHlsZSk7CisgICAgcmV0dXJuIHRvU3R5
bGVWYXJpYW50KHN0YXRlKCkuc3Ryb2tlU3R5bGUpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OnNldFN0cm9rZVN0eWxlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OlN0eWxlJiYgc3R5bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNl
dFN0cm9rZVN0eWxlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OlN0eWxlVmFyaWFudCYm
IHN0eWxlKQogewogICAgIFdURjo6c3dpdGNoT24oc3R5bGUsCiAgICAgICAgIFt0aGlzXSAoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIHsgdGhpcy0+c2V0U3Ryb2tlQ29sb3Ioc3RyaW5nKTsgfSwKQEAg
LTE4OTQsMTIgKzE4OTQsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpz
ZXRTdHJva2VTdHlsZShDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjoKICAgICApOwogfQog
Ci1DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpmaWxsU3R5bGUoKSBjb25zdAorQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6U3R5bGVWYXJpYW50IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZpbGxTdHlsZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvU3R5bGUoc3RhdGUoKS5maWxsU3R5bGUpOworICAgIHJl
dHVybiB0b1N0eWxlVmFyaWFudChzdGF0ZSgpLmZpbGxTdHlsZSk7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OlN0eWxlJiYgc3R5bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OnNldEZpbGxTdHlsZShDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlh
bnQmJiBzdHlsZSkKIHsKICAgICBXVEY6OnN3aXRjaE9uKHN0eWxlLAogICAgICAgICBbdGhpc10g
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSB7IHRoaXMtPnNldEZpbGxDb2xvcihzdHJpbmcpOyB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oCmluZGV4IDQwMTBlZDViODRlLi5hMDE5OWUzZWJmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaApAQCAtMTc5LDExICsxNzksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3
SW1hZ2VGcm9tUmVjdChIVE1MSW1hZ2VFbGVtZW50JiwgZmxvYXQgc3ggPSAwLCBmbG9hdCBzeSA9
IDAsIGZsb2F0IHN3ID0gMCwgZmxvYXQgc2ggPSAwLCBmbG9hdCBkeCA9IDAsIGZsb2F0IGR5ID0g
MCwgZmxvYXQgZHcgPSAwLCBmbG9hdCBkaCA9IDAsIGNvbnN0IFN0cmluZyYgY29tcG9zaXRlT3Bl
cmF0aW9uID0gZW1wdHlTdHJpbmcoKSk7CiAKLSAgICB1c2luZyBTdHlsZSA9IFZhcmlhbnQ8U3Ry
aW5nLCBSZWZQdHI8Q2FudmFzR3JhZGllbnQ+LCBSZWZQdHI8Q2FudmFzUGF0dGVybj4+OwotICAg
IFN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHls
ZSYmKTsKLSAgICBTdHlsZSBmaWxsU3R5bGUoKSBjb25zdDsKLSAgICB2b2lkIHNldEZpbGxTdHls
ZShTdHlsZSYmKTsKKyAgICB1c2luZyBTdHlsZVZhcmlhbnQgPSBWYXJpYW50PFN0cmluZywgUmVm
UHRyPENhbnZhc0dyYWRpZW50PiwgUmVmUHRyPENhbnZhc1BhdHRlcm4+PjsKKyAgICBTdHlsZVZh
cmlhbnQgc3Ryb2tlU3R5bGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0eWxl
VmFyaWFudCYmKTsKKyAgICBTdHlsZVZhcmlhbnQgZmlsbFN0eWxlKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRGaWxsU3R5bGUoU3R5bGVWYXJpYW50JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8UmVmPENh
bnZhc0dyYWRpZW50Pj4gY3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBm
bG9hdCB4MSwgZmxvYXQgeTEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVudD4+
IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCA5ZGZlNjQwMjgwNS4uZWEwNTkwMDc2MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMDY0LDcgKzEw
NjQsNyBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6
YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgWyZdIChjb25zdCBD
YW52YXNJbWFnZVNvdXJjZSYgdmFsdWUpIHsKICAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBh
cnNlUGFyYW1ldGVyLCB2YWx1ZSk7CiAgICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChj
b25zdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZSYgdmFsdWUpIHsKKyAgICAg
ICAgICAgIFsmXSAoY29uc3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGVWYXJp
YW50JiB2YWx1ZSkgewogICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIs
IHZhbHVlKTsKICAgICAgICAgICAgIH0sCiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IDhjY2VkNTdiNGNiLi5hNTI0ZTQzMzRmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMTQzMSw3ICsxNDMxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnN0
eWxlSGlkZXNTY3JvbGxiYXJXaXRoT3JpZW50YXRpb24oU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXQKICAgICBTdHlsZVNjcm9sbGJhclN0YXRlIHNjcm9sbGJhclN0YXRlOwogICAgIHNjcm9s
bGJhclN0YXRlLnNjcm9sbGJhclBhcnQgPSBTY3JvbGxiYXJCR1BhcnQ7CiAgICAgc2Nyb2xsYmFy
U3RhdGUub3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKLSAgICBhdXRvIHNjcm9sbGJhclN0eWxl
ID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBz
ZXVkb0lkOjpTY3JvbGxiYXIsIHNjcm9sbGJhclN0YXRlKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsK
KyAgICBhdXRvIHNjcm9sbGJhclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5
bGUoeyBQc2V1ZG9JZDo6U2Nyb2xsYmFyLCBzY3JvbGxiYXJTdGF0ZSB9LCAmcmVuZGVyZXItPnN0
eWxlKCkpOwogICAgIHJldHVybiBzY3JvbGxiYXJTdHlsZSAmJiBzY3JvbGxiYXJTdHlsZS0+ZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lOwogfQogCkBAIC0zODYyLDcgKzM4NjIsNyBAQCB2
b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAgRWxlbWVudCogYm9k
eSA9IGRvYyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChi
b2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyID0gYm9keS0+
cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2Fj
aGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3Ju
ZXIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5k
ZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIg
fSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KCFjb3JuZXJTdHlsZSkgewpAQCAtMzg3MCw3ICszODcwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpCiAgICAgICAgICAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9j
ID8gZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoZG9j
RWxlbWVudCAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAgICAgcmVu
ZGVyZXIgPSBkb2NFbGVtZW50LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIGNvcm5lclN0
eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0
KFBzZXVkb0lkOjpTY3JvbGxiYXJDb3JuZXIpLCAmcmVuZGVyZXItPnN0eWxlKCkpOworICAgICAg
ICAgICAgICAgIGNvcm5lclN0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5bGUo
eyBQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyIH0sICZyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zODc4LDcgKzM4NzgsNyBAQCB2b2lk
IEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAgICAgIC8vIElmIHdlIGhh
dmUgYW4gb3duaW5nIGlmcmFtZS9mcmFtZSBlbGVtZW50LCB0aGVuIGl0IGNhbiBzZXQgdGhlIGN1
c3RvbSBzY3JvbGxiYXIgYWxzby4KICAgICAgICAgICAgIC8vIEZJWE1FOiBTZWVtcyB3cm9uZyB0
byBkbyB0aGlzIGZvciBjcm9zcy1vcmlnaW4gZnJhbWVzLgogICAgICAgICAgICAgaWYgKFJlbmRl
cldpZGdldCogcmVuZGVyZXIgPSBmcmFtZSgpLm93bmVyUmVuZGVyZXIoKSkKLSAgICAgICAgICAg
ICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVk
b1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6U2Nyb2xsYmFyQ29ybmVyKSwgJnJlbmRlcmVyLT5zdHls
ZSgpKTsKKyAgICAgICAgICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hl
ZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lciB9LCAmcmVuZGVyZXItPnN0
eWxlKCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggMDM1NzQxM2FhODguLmJmNmMyYTc3NTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMzU4LDE1ICsxMzU4LDE1
IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBSZW5kZXJFbGVtZW50OjpnZXRDYWNoZWRQc2V1ZG9TdHls
ZShQc2V1ZG9JZCBwc2V1ZG8sIGNvbnN0IFJlCiAgICAgaWYgKGNhY2hlZFN0eWxlKQogICAgICAg
ICByZXR1cm4gY2FjaGVkU3R5bGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IHJlc3VsdCA9IGdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVSZXF1ZXN0KHBzZXVk
byksIHBhcmVudFN0eWxlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHJlc3Vs
dCA9IGdldFVuY2FjaGVkUHNldWRvU3R5bGUoeyBwc2V1ZG8gfSwgcGFyZW50U3R5bGUpOwogICAg
IGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlclN0eWxlJj4obV9z
dHlsZSkuYWRkQ2FjaGVkUHNldWRvU3R5bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50
OjpnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRv
U3R5bGVSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBvd25TdHlsZSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVu
ZGVyRWxlbWVudDo6Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShjb25zdCBTdHlsZTo6UHNldWRvRWxl
bWVudFJlcXVlc3QmIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBvd25TdHlsZSkgY29uc3QKIHsKLSAgICBpZiAo
cHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkIDwgUHNldWRvSWQ6OkZpcnN0SW50ZXJuYWxQc2V1
ZG9JZCAmJiAhb3duU3R5bGUgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUocHNldWRvU3R5bGVS
ZXF1ZXN0LnBzZXVkb0lkKSkKKyAgICBpZiAocHNldWRvRWxlbWVudFJlcXVlc3QucHNldWRvSWQg
PCBQc2V1ZG9JZDo6Rmlyc3RJbnRlcm5hbFBzZXVkb0lkICYmICFvd25TdHlsZSAmJiAhc3R5bGUo
KS5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50UmVxdWVzdC5wc2V1ZG9JZCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwYXJlbnRTdHlsZSkgewpAQCAtMTM3OSw3ICsx
Mzc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50OjpnZXRV
bmNhY2hlZFBzZXVkb1N0eWxlKGNvbnN0IFBzZXVkb1MKIAogICAgIGF1dG8mIHN0eWxlUmVzb2x2
ZXIgPSBlbGVtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZVJlc29sdmVyLnBzZXVkb1N0eWxlRm9yRWxlbWVudCgq
ZWxlbWVudCgpLCBwc2V1ZG9TdHlsZVJlcXVlc3QsICpwYXJlbnRTdHlsZSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlUmVzb2x2ZXIucHNldWRvU3R5bGVG
b3JFbGVtZW50KCplbGVtZW50KCksIHBzZXVkb0VsZW1lbnRSZXF1ZXN0LCAqcGFyZW50U3R5bGUp
OwogCiAgICAgaWYgKHN0eWxlKQogICAgICAgICBTdHlsZTo6bG9hZFBlbmRpbmdSZXNvdXJjZXMo
KnN0eWxlLCBkb2N1bWVudCgpLCBlbGVtZW50KCkpOwpAQCAtMTQxNSwxMSArMTQxNSwxMSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvblBzZXVk
b1N0eWxlKCkgY29uc3QKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+Y29u
dGFpbmluZ1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+bW9kZSgpID09IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpIHsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBzaGFkb3dI
b3N0ID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNo
YWRvd0hvc3QtPnJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRvU3R5bGUoUHNldWRvU3R5bGVS
ZXF1ZXN0KFBzZXVkb0lkOjpTZWxlY3Rpb24pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hh
ZG93SG9zdC0+cmVuZGVyZXIoKS0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZSh7IFBzZXVkb0lkOjpT
ZWxlY3Rpb24gfSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2V0VW5jYWNoZWRQ
c2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlNlbGVjdGlvbikpOworICAg
IHJldHVybiBnZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OlNlbGVjdGlvbiB9KTsK
IH0KIAogQ29sb3IgUmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDBlNjRkYzAy
M2ZhLi4wYTE5N2UzMmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcHNldWRvIGVsZW1lbnQg
c3R5bGUgY2FuIGJlIGNhY2hlZCBvciB1bmNhY2hlZC4gIFVzZSB0aGUgY2FjaGVkIG1ldGhvZCBp
ZiB0aGUgcHNldWRvIGVsZW1lbnQgZG9lc24ndCByZXNwZWN0CiAgICAgLy8gYW55IHBzZXVkbyBj
bGFzc2VzIChhbmQgdGhlcmVmb3JlIGhhcyBubyBjb25jZXB0IG9mIGNoYW5naW5nIHN0YXRlKS4K
ICAgICBjb25zdCBSZW5kZXJTdHlsZSogZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQsIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG51bGxwdHIpIGNvbnN0OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gZ2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShjb25zdCBQc2V1
ZG9TdHlsZVJlcXVlc3QmLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBudWxscHRy
LCBjb25zdCBSZW5kZXJTdHlsZSogb3duU3R5bGUgPSBudWxscHRyKSBjb25zdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGdldFVuY2FjaGVkUHNldWRvU3R5bGUoY29uc3QgU3R5
bGU6OlBzZXVkb0VsZW1lbnRSZXF1ZXN0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
ID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyU3R5bGUqIG93blN0eWxlID0gbnVsbHB0cikgY29uc3Q7
CiAKICAgICAvLyBUaGlzIGlzIG51bGwgZm9yIGFub255bW91cyByZW5kZXJlcnMuCiAgICAgRWxl
bWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KFJlbmRlck9i
amVjdDo6bm9kZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggNjllNWU3NjVkMDEuLmRjMDhmMDhlOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTY2OTgsNyArNjY5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVNjcm9sbGFibGVBcmVhU2V0KGJvb2wgaGFzT3ZlcmZsb3cpCiB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpCiB7CiAgICAgUmVuZGVyRWxlbWVudCogYWN0
dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKTsKLSAgICBhdXRv
IGNvcm5lciA9IHJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+
Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoUHNldWRvSWQ6OlNjcm9s
bGJhckNvcm5lciksICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOworICAgIGF1
dG8gY29ybmVyID0gcmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVy
LT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgUHNldWRvSWQ6OlNjcm9sbGJhckNvcm5lciB9LCAm
YWN0dWFsUmVuZGVyZXItPnN0eWxlKCkpIDogbnVsbHB0cjsKIAogICAgIGlmICghY29ybmVyKSB7
CiAgICAgICAgIGNsZWFyU2Nyb2xsQ29ybmVyKCk7CkBAIC02NzI1LDcgKzY3MjUsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpjbGVhclNjcm9sbENvcm5lcigpCiB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVSZXNpemVyU3R5bGUoKQogewogICAgIFJlbmRlckVsZW1lbnQqIGFjdHVhbFJlbmRlcmVyID0g
cmVuZGVyZXJGb3JTY3JvbGxiYXIocmVuZGVyZXIoKSk7Ci0gICAgYXV0byByZXNpemVyID0gcmVu
ZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSA/IGFjdHVhbFJlbmRlcmVyLT5nZXRVbmNhY2hlZFBz
ZXVkb1N0eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZDo6UmVzaXplciksICZhY3R1YWxS
ZW5kZXJlci0+c3R5bGUoKSkgOiBudWxscHRyOworICAgIGF1dG8gcmVzaXplciA9IHJlbmRlcmVy
KCkuaGFzT3ZlcmZsb3dDbGlwKCkgPyBhY3R1YWxSZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9T
dHlsZSh7IFBzZXVkb0lkOjpSZXNpemVyIH0sICZhY3R1YWxSZW5kZXJlci0+c3R5bGUoKSkgOiBu
dWxscHRyOwogCiAgICAgaWYgKCFyZXNpemVyKSB7CiAgICAgICAgIGNsZWFyUmVzaXplcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDc2ZTI4ZDdkZjM0Li5h
ZTg0YWJjZjEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAt
NTMsNyArNTMsNiBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgSW5saW5lQm94OwogY2xh
c3MgUGF0aDsKIGNsYXNzIFBvc2l0aW9uOwotY2xhc3MgUHNldWRvU3R5bGVSZXF1ZXN0OwogY2xh
c3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5k
ZXJCbG9jazsKQEAgLTg1LDYgKzg0LDEwIEBAIGVudW0gY2xhc3MgU2hvdWxkQWxsb3dDcm9zc09y
aWdpblNjcm9sbGluZyB7IE5vLCBZZXMgfTsKIAogc3RydWN0IFNjcm9sbFJlY3RUb1Zpc2libGVP
cHRpb25zOwogCituYW1lc3BhY2UgU3R5bGUgeworY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3Q7
Cit9CisKIC8vIEJhc2UgY2xhc3MgZm9yIGFsbCByZW5kZXJpbmcgdHJlZSBvYmplY3RzLgogY2xh
c3MgUmVuZGVyT2JqZWN0IDogcHVibGljIENhY2hlZEltYWdlQ2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVuZGVyT2JqZWN0PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5k
ZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNw
cAppbmRleCA5ZGM3MjIxZWViNC4uNGVlNTQ1MDU2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTY3JvbGxiYXI6OmdldFNjcm9sbGJhclBzZXVkb1N0
eWxlKFNjcm9sbGJhclAKICAgICBzY3JvbGxiYXJTdGF0ZS5lbmFibGVkID0gZW5hYmxlZCgpOwog
ICAgIHNjcm9sbGJhclN0YXRlLnNjcm9sbENvcm5lcklzVmlzaWJsZSA9IHNjcm9sbGFibGVBcmVh
KCkuaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiByZXN1bHQgPSBvd25pbmdSZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb1N0eWxlUmVxdWVzdChwc2V1ZG9JZCwgc2Nyb2xsYmFyU3RhdGUpLCAmb3duaW5n
UmVuZGVyZXIoKS0+c3R5bGUoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBy
ZXN1bHQgPSBvd25pbmdSZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgcHNldWRv
SWQsIHNjcm9sbGJhclN0YXRlIH0sICZvd25pbmdSZW5kZXJlcigpLT5zdHlsZSgpKTsKICAgICAv
LyBTY3JvbGxiYXJzIGZvciByb290IGZyYW1lcyBzaG91bGQgYWx3YXlzIGhhdmUgYmFja2dyb3Vu
ZCBjb2xvciAKICAgICAvLyB1bmxlc3MgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdHJhbnNwYXJl
bnQuIFNvIHdlIGZvcmNlIGl0LgogICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBXZWJLaXQgYXNzdW1l
cyBzY3JvbGxiYXIgdG8gYmUgYWx3YXlzIHBhaW50ZWQgYW5kIG1pc3NpbmcgYmFja2dyb3VuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
VXBkYXRlci5jcHAKaW5kZXggNDNlNmVjZjY1YWIuLjA1YTQ4M2VkY2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgYm9vbCBwc2V1ZG9TdHlsZUNhY2hlSXNJbnZh
bGlkKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogbmV3UwogCiAgICAgZm9y
IChhdXRvJiBjYWNoZSA6ICpwc2V1ZG9TdHlsZUNhY2hlKSB7CiAgICAgICAgIFBzZXVkb0lkIHBz
ZXVkb0lkID0gY2FjaGUtPnN0eWxlVHlwZSgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IG5ld1BzZXVkb1N0eWxlID0gcmVuZGVyZXItPmdldFVuY2FjaGVkUHNldWRvU3R5
bGUoUHNldWRvU3R5bGVSZXF1ZXN0KHBzZXVkb0lkKSwgbmV3U3R5bGUsIG5ld1N0eWxlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRl
cmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHsgcHNldWRvSWQgfSwgbmV3U3R5bGUsIG5ld1N0
eWxlKTsKICAgICAgICAgaWYgKCFuZXdQc2V1ZG9TdHlsZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBpZiAoKm5ld1BzZXVkb1N0eWxlICE9ICpjYWNoZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApzaW1pbGFyaXR5IGluZGV4IDg3
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
aW5kZXggYmYyMTBhMWQyNWMuLjVkNzI2M2U2YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUg
ewogCiBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBsZWZ0VG9SaWdodERlY2xhcmF0aW9u
KCkKIHsKQEAgLTcwLDE2ICs3MSwxNiBAQCBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBy
aWdodFRvTGVmdERlY2xhcmF0aW9uKCkKIAogY2xhc3MgTWF0Y2hSZXF1ZXN0IHsKIHB1YmxpYzoK
LSAgICBNYXRjaFJlcXVlc3QoY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQsIFN0eWxlOjpT
Y29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpFbGVt
ZW50KQorICAgIE1hdGNoUmVxdWVzdChjb25zdCBSdWxlU2V0KiBydWxlU2V0LCBTY29wZU9yZGlu
YWwgc3R5bGVTY29wZU9yZGluYWwgPSBTY29wZU9yZGluYWw6OkVsZW1lbnQpCiAgICAgICAgIDog
cnVsZVNldChydWxlU2V0KQogICAgICAgICAsIHN0eWxlU2NvcGVPcmRpbmFsKHN0eWxlU2NvcGVP
cmRpbmFsKQogICAgIHsKICAgICB9Ci0gICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIHJ1bGVTZXQ7
Ci0gICAgU3R5bGU6OlNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbDsKKyAgICBjb25zdCBS
dWxlU2V0KiBydWxlU2V0OworICAgIFNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbDsKIH07
CiAKLUVsZW1lbnRSdWxlQ29sbGVjdG9yOjpFbGVtZW50UnVsZUNvbGxlY3Rvcihjb25zdCBFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6U2NvcGVSdWxlU2V0cyYgcnVsZVNldHMsIGNvbnN0
IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK0VsZW1lbnRSdWxlQ29sbGVjdG9yOjpF
bGVtZW50UnVsZUNvbGxlY3Rvcihjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTY29wZVJ1
bGVTZXRzJiBydWxlU2V0cywgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQog
ICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX2F1dGhvclN0eWxlKHJ1bGVTZXRzLmF1
dGhvclN0eWxlKCkpCiAgICAgLCBtX3VzZXJTdHlsZShydWxlU2V0cy51c2VyU3R5bGUoKSkKQEAg
LTg5LDcgKzkwLDcgQEAgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjoKICAgICBBU1NFUlQoIW1fc2Vs
ZWN0b3JGaWx0ZXIgfHwgbV9zZWxlY3RvckZpbHRlci0+cGFyZW50U3RhY2tJc0NvbnNpc3RlbnQo
ZWxlbWVudC5wYXJlbnROb2RlKCkpKTsKIH0KIAotRWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1l
bnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpSdWxl
U2V0JiBhdXRob3JTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqIHNlbGVjdG9yRmlsdGVyKQor
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OkVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFJ1bGVTZXQmIGF1dGhvclN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRl
ciogc2VsZWN0b3JGaWx0ZXIpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fYXV0
aG9yU3R5bGUoYXV0aG9yU3R5bGUpCiAgICAgLCBtX3NlbGVjdG9yRmlsdGVyKHNlbGVjdG9yRmls
dGVyKQpAQCAtMTA5LDcgKzExMCw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4m
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUnVsZUxpc3QoKSBjb25zdAogICAgIHJldHVy
biBtX21hdGNoZWRSdWxlTGlzdDsKIH0KIAotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6OmFkZE1hdGNoZWRSdWxlKGNvbnN0IFN0eWxlOjpSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2ln
bmVkIHNwZWNpZmljaXR5LCBTdHlsZTo6U2NvcGVPcmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsKQor
aW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5hbCBzdHls
ZVNjb3BlT3JkaW5hbCkKIHsKICAgICBtX21hdGNoZWRSdWxlcy5hcHBlbmQoeyAmcnVsZURhdGEs
IHNwZWNpZmljaXR5LCBzdHlsZVNjb3BlT3JkaW5hbCB9KTsKIH0KQEAgLTEzNSw3ICsxMzYsNyBA
QCBpbmxpbmUgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkRWxlbWVudFN0eWxlUHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnRpZQogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QpCiB7CiAg
ICAgQVNTRVJUKG1hdGNoUmVxdWVzdC5ydWxlU2V0KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCEobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzSWdub3Jp
bmdWaXJ0dWFsUHNldWRvRWxlbWVudHMgJiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQg
IT0gUHNldWRvSWQ6Ok5vbmUpLCAiV2hlbiBpbiBTdHlsZUludmFsaWRhdGlvbiBvciBTaGFyaW5n
UnVsZXMsIFNlbGVjdG9yQ2hlY2tlciBkb2VzIG5vdCB0cnkgdG8gbWF0Y2ggdGhlIHBzZXVkbyBJ
RC4gV2hpbGUgRWxlbWVudFJ1bGVDb2xsZWN0b3Igc3VwcG9ydHMgbWF0Y2hpbmcgYSBwYXJ0aWN1
bGFyIHBzZXVkb0lkIGluIHRoaXMgY2FzZSwgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhIGVycm9yIGF0
IHRoZSBjYWxsIHNpdGUgc2luY2UgbWF0Y2hpbmcgYSBwYXJ0aWN1bGFyIGVsZW1lbnQgc2hvdWxk
IGJlIHVubmVjZXNzYXJ5LiIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShtX21vZGUgPT0g
U2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXNJZ25vcmluZ1ZpcnR1YWxQc2V1
ZG9FbGVtZW50cyAmJiBtX3BzZXVkb0VsZW1lbnRSZXF1ZXN0LnBzZXVkb0lkICE9IFBzZXVkb0lk
OjpOb25lKSwgIldoZW4gaW4gU3R5bGVJbnZhbGlkYXRpb24gb3IgU2hhcmluZ1J1bGVzLCBTZWxl
Y3RvckNoZWNrZXIgZG9lcyBub3QgdHJ5IHRvIG1hdGNoIHRoZSBwc2V1ZG8gSUQuIFdoaWxlIEVs
ZW1lbnRSdWxlQ29sbGVjdG9yIHN1cHBvcnRzIG1hdGNoaW5nIGEgcGFydGljdWxhciBwc2V1ZG9J
ZCBpbiB0aGlzIGNhc2UsIHRoaXMgd291bGQgaW5kaWNhdGUgYSBlcnJvciBhdCB0aGUgY2FsbCBz
aXRlIHNpbmNlIG1hdGNoaW5nIGEgcGFydGljdWxhciBlbGVtZW50IHNob3VsZCBiZSB1bm5lY2Vz
c2FyeS4iKTsKIAogICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBlbGVtZW50KCkuY29udGFpbmluZ1No
YWRvd1Jvb3QoKTsKICAgICBpZiAoc2hhZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgPT0g
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKQEAgLTE4MSw3ICsxODIsNyBAQCB2b2lkIEVsZW1l
bnRSdWxlQ29sbGVjdG9yOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25P
cmlnaW4gZGVjbGFyYQogICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKGRlY2xhcmF0aW9uT3JpZ2lu
KTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6dHJhbnNmZXJNYXRjaGVkUnVsZXMo
RGVjbGFyYXRpb25PcmlnaW4gZGVjbGFyYXRpb25PcmlnaW4sIE9wdGlvbmFsPFN0eWxlOjpTY29w
ZU9yZGluYWw+IGZyb21TY29wZSkKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnRyYW5zZmVy
TWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3JpZ2luIGRlY2xhcmF0aW9uT3JpZ2luLCBPcHRpb25h
bDxTY29wZU9yZGluYWw+IGZyb21TY29wZSkKIHsKICAgICBpZiAobV9tb2RlICE9IFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzKQogICAgICAgICBkZWNsYXJhdGlvbnNGb3JP
cmlnaW4obV9yZXN1bHQsIGRlY2xhcmF0aW9uT3JpZ2luKS5yZXNlcnZlQ2FwYWNpdHkobV9tYXRj
aGVkUnVsZXMuc2l6ZSgpKTsKQEAgLTI1MSw4ICsyNTIsOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpCiAgICAgaWYgKHNo
YWRvd1Jvb3QubW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBMb29rIHVwIHNoYWRvdyBwc2V1ZG8gZWxlbWVudHMgYWxzbyBmcm9tIHRo
ZSBob3N0IHNjb3BlIGF1dGhvciBzdHlsZSBhcyB0aGV5IGFyZSB3ZWItZXhwb3NlZC4KLSAgICBh
dXRvJiBob3N0QXV0aG9yUnVsZXMgPSBTdHlsZTo6U2NvcGU6OmZvck5vZGUoKnNoYWRvd1Jvb3Qu
aG9zdCgpKS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsKLSAgICBNYXRjaFJl
cXVlc3QgaG9zdEF1dGhvclJlcXVlc3QgeyAmaG9zdEF1dGhvclJ1bGVzLCBTdHlsZTo6U2NvcGVP
cmRpbmFsOjpDb250YWluaW5nSG9zdCB9OworICAgIGF1dG8mIGhvc3RBdXRob3JSdWxlcyA9IFNj
b3BlOjpmb3JOb2RlKCpzaGFkb3dSb290Lmhvc3QoKSkucmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF1
dGhvclN0eWxlKCk7CisgICAgTWF0Y2hSZXF1ZXN0IGhvc3RBdXRob3JSZXF1ZXN0IHsgJmhvc3RB
dXRob3JSdWxlcywgU2NvcGVPcmRpbmFsOjpDb250YWluaW5nSG9zdCB9OwogICAgIGNvbGxlY3RN
YXRjaGluZ1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhob3N0QXV0aG9yUmVxdWVzdCk7CiB9CiAK
QEAgLTI2NywxNyArMjY4LDE3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9z
dFBzZXVkb0NsYXNzUnVsZXMoKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faXNN
YXRjaGluZ0hvc3RQc2V1ZG9DbGFzcywgdHJ1ZSk7CiAKLSAgICBNYXRjaFJlcXVlc3QgaG9zdE1h
dGNoUmVxdWVzdCB7IG51bGxwdHIsIFN0eWxlOjpTY29wZU9yZGluYWw6OlNoYWRvdyB9OworICAg
IE1hdGNoUmVxdWVzdCBob3N0TWF0Y2hSZXF1ZXN0IHsgbnVsbHB0ciwgU2NvcGVPcmRpbmFsOjpT
aGFkb3cgfTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJnNoYWRvd0hvc3RSdWxl
cywgaG9zdE1hdGNoUmVxdWVzdCk7CiB9CiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpCiB7CiAgICAgYXV0byogc2xvdCA9IGVsZW1l
bnQoKS5hc3NpZ25lZFNsb3QoKTsKLSAgICBhdXRvIHN0eWxlU2NvcGVPcmRpbmFsID0gU3R5bGU6
OlNjb3BlT3JkaW5hbDo6Rmlyc3RTbG90OworICAgIGF1dG8gc3R5bGVTY29wZU9yZGluYWwgPSBT
Y29wZU9yZGluYWw6OkZpcnN0U2xvdDsKIAogICAgIGZvciAoOyBzbG90OyBzbG90ID0gc2xvdC0+
YXNzaWduZWRTbG90KCksICsrc3R5bGVTY29wZU9yZGluYWwpIHsKLSAgICAgICAgYXV0byYgc3R5
bGVTY29wZSA9IFN0eWxlOjpTY29wZTo6Zm9yTm9kZSgqc2xvdCk7CisgICAgICAgIGF1dG8mIHN0
eWxlU2NvcGUgPSBTY29wZTo6Zm9yTm9kZSgqc2xvdCk7CiAgICAgICAgIGlmICghc3R5bGVTY29w
ZS5yZXNvbHZlcigpLnJ1bGVTZXRzKCkuaXNBdXRob3JTdHlsZURlZmluZWQoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBGaW5kIG91dCBpZiB0aGVyZSBhcmUgYW55IDo6c2xv
dHRlZCBydWxlcyBpbiB0aGUgc2hhZG93IHRyZWUgbWF0Y2hpbmcgdGhlIGN1cnJlbnQgc2xvdC4K
QEAgLTMxNSw4ICszMTYsOCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFBhcnRQ
c2V1ZG9FbGVtZW50UnVsZXNGb3JTY29wZShjb25zdCBTaGFkb3dSb290JgogICAgIHsKICAgICAg
ICAgU2V0Rm9yU2NvcGU8UmVmUHRyPGNvbnN0IEVsZW1lbnQ+PiBwYXJ0TWF0Y2hpbmdTY29wZSht
X3NoYWRvd0hvc3RJblBhcnRSdWxlU2NvcGUsICZzaGFkb3dIb3N0KTsKIAotICAgICAgICBhdXRv
JiBob3N0QXV0aG9yUnVsZXMgPSBTdHlsZTo6U2NvcGU6OmZvck5vZGUoc2hhZG93SG9zdCkucmVz
b2x2ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCk7Ci0gICAgICAgIE1hdGNoUmVxdWVzdCBo
b3N0QXV0aG9yUmVxdWVzdCB7ICZob3N0QXV0aG9yUnVsZXMsIFN0eWxlOjpTY29wZU9yZGluYWw6
OkNvbnRhaW5pbmdIb3N0IH07CisgICAgICAgIGF1dG8mIGhvc3RBdXRob3JSdWxlcyA9IFNjb3Bl
Ojpmb3JOb2RlKHNoYWRvd0hvc3QpLnJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRob3JTdHlsZSgp
OworICAgICAgICBNYXRjaFJlcXVlc3QgaG9zdEF1dGhvclJlcXVlc3QgeyAmaG9zdEF1dGhvclJ1
bGVzLCBTY29wZU9yZGluYWw6OkNvbnRhaW5pbmdIb3N0IH07CiAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yTGlzdCgmaG9zdEF1dGhvclJ1bGVzLnBhcnRQc2V1ZG9FbGVtZW50UnVsZXMo
KSwgaG9zdEF1dGhvclJlcXVlc3QpOwogICAgIH0KIApAQCAtMzQ0LDcgKzM0NSw3IEBAIHZvaWQg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1NoYWRvd1BzZXVkb0VsZW1lbnRS
dWxlcyhjb25zdCBNYXRjaFJlCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChy
dWxlcy5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMocHNldWRvSWQpLCBtYXRjaFJlcXVlc3QpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90
KCkKK3N0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCgpCiB7CiAg
ICAgQVNTRVJUKGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCgpKSk7CiAKQEAgLTM1OSw3ICsz
NjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsbwogICAgIGlmIChtX21hdGNoZWRSdWxlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJ1bGVEYXRhVmVjdG9y
ID0gbWFrZVVuaXF1ZTxTdHlsZTo6UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0
byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7
CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVs
ZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMp
CiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1
bGVEYXRhKTsKQEAgLTM5Nyw3ICszOTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaFVBUnVsZXMoKQogICAgICAgICBtYXRjaFVBUnVsZXMoKm1fdXNlckFnZW50TWVkaWFRdWVy
eVN0eWxlKTsKIH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKGNv
bnN0IFN0eWxlOjpSdWxlU2V0JiBydWxlcykKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoVUFSdWxlcyhjb25zdCBSdWxlU2V0JiBydWxlcykKIHsKICAgICBjbGVhck1hdGNoZWRSdWxl
cygpOwogICAgIApAQCAtNDE4LDI4ICs0MTksMjggQEAgc3RhdGljIGNvbnN0IENTU1NlbGVjdG9y
KiBmaW5kU2xvdHRlZFBzZXVkb0VsZW1lbnRTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2UK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFN0eWxlOjpSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVk
JiBzcGVjaWZpY2l0eSkKK2lubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0
Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkJiBzcGVjaWZpY2l0eSkKIHsK
ICAgICAvLyBXZSBrbm93IGEgc3VmZmljaWVudGx5IHNpbXBsZSBzaW5nbGUgcGFydCBzZWxlY3Rv
ciBtYXRjaGVzIHNpbXBseSBiZWNhdXNlIHdlIGZvdW5kIGl0IGZyb20gdGhlIHJ1bGUgaGFzaCB3
aGVuIGZpbHRlcmluZyB0aGUgUnVsZVNldC4KICAgICAvLyBUaGlzIGlzIGxpbWl0ZWQgdG8gSFRN
TCBvbmx5IHNvIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIG5hbWVzcGFjZSAoYmVjYXVzZSBv
ZiB0YWcgbmFtZSBtYXRjaCkuCiAgICAgYXV0byBtYXRjaEJhc2VkT25SdWxlSGFzaCA9IHJ1bGVE
YXRhLm1hdGNoQmFzZWRPblJ1bGVIYXNoKCk7Ci0gICAgaWYgKG1hdGNoQmFzZWRPblJ1bGVIYXNo
ICE9IFN0eWxlOjpNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZSAmJiBlbGVtZW50KCkuaXNIVE1M
RWxlbWVudCgpKSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wc2V1ZG9TdHlsZVJl
cXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0
aGUgcnVsZSBoYXNoIHdoaWxlIGNvbGxlY3RpbmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxl
bWVudCBJRCwgd2Ugd291bGQgYWRkIGluY29ycmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxl
bWVudCBJRC4gV2Ugc2hvdWxkIG5ldmVyIGVuZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1
ZG8gZWxlbWVudCBpZiB0aGUgcnVsZURhdGEgY2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVu
dC4iKTsKKyAgICBpZiAobWF0Y2hCYXNlZE9uUnVsZUhhc2ggIT0gTWF0Y2hCYXNlZE9uUnVsZUhh
c2g6Ok5vbmUgJiYgZWxlbWVudCgpLmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fcHNldWRvRWxlbWVudFJlcXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6
Ok5vbmUsICJJZiB3ZSBtYXRjaCBiYXNlZCBvbiB0aGUgcnVsZSBoYXNoIHdoaWxlIGNvbGxlY3Rp
bmcgZm9yIGEgcGFydGljdWxhciBwc2V1ZG8gZWxlbWVudCBJRCwgd2Ugd291bGQgYWRkIGluY29y
cmVjdCBydWxlcyBmb3IgdGhhdCBwc2V1ZG8gZWxlbWVudCBJRC4gV2Ugc2hvdWxkIG5ldmVyIGVu
ZCBpbiBydWxlTWF0Y2hlcygpIHdpdGggYSBwc2V1ZG8gZWxlbWVudCBpZiB0aGUgcnVsZURhdGEg
Y2Fubm90IG1hdGNoIGFueSBwc2V1ZG8gZWxlbWVudC4iKTsKIAogICAgICAgICBzd2l0Y2ggKG1h
dGNoQmFzZWRPblJ1bGVIYXNoKSB7Ci0gICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpOb25lOgorICAgICAgICBjYXNlIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OlVuaXZlcnNhbDoKKyAgICAg
ICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6VW5pdmVyc2FsOgogICAgICAgICAgICAgc3Bl
Y2lmaWNpdHkgPSAwOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3R5bGU6Ok1h
dGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFzc0E6CisgICAgICAgIGNhc2UgTWF0Y2hCYXNlZE9uUnVs
ZUhhc2g6OkNsYXNzQToKICAgICAgICAgICAgIHNwZWNpZmljaXR5ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFNlbGVjdG9yU3BlY2lmaWNpdHlJbmNyZW1lbnQ6OkNsYXNzQSk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNz
QjoKKyAgICAgICAgY2FzZSBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NCOgogICAgICAgICAg
ICAgc3BlY2lmaWNpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU2VsZWN0b3JTcGVjaWZpY2l0
eUluY3JlbWVudDo6Q2xhc3NCKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0
eWxlOjpNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xhc3NDOgorICAgICAgICBjYXNlIE1hdGNoQmFz
ZWRPblJ1bGVIYXNoOjpDbGFzc0M6CiAgICAgICAgICAgICBzcGVjaWZpY2l0eSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihTZWxlY3RvclNwZWNpZmljaXR5SW5jcmVtZW50OjpDbGFzc0MpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ1OSw3ICs0NjAsNyBAQCBpbmxpbmUgYm9v
bCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgU3R5bGU6OlJ1bGVEYXRh
JiBydWxlRGF0YSwgdQogICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29t
cGlsZXI6OnJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21waWxl
ZFNlbGVjdG9yQ2hlY2tlciwgY29tcGlsZWRTZWxlY3Rvci5zdGF0dXMpOwogI2lmICFBU1NFUlRf
TVNHX0RJU0FCTEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNwZWNpZmljaXR5OwotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQoKSwgJmlnbm9y
ZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6Tm9uZSwgIldoZW4gbWF0Y2hpbmcgcHNldWRvIGVsZW1lbnRzLCB3ZSBzaG91bGQgbmV2ZXIg
Y29tcGlsZSBhIHNlbGVjdG9yIGNoZWNrZXIgd2l0aG91dCBjb250ZXh0IHVubGVzcyBpdCBjYW5u
b3QgbWF0Y2ggYW55dGhpbmcuIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlbGVj
dG9yQ2hlY2tlcigmZWxlbWVudCgpLCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNldWRvRWxl
bWVudFJlcXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJXaGVuIG1hdGNoaW5nIHBz
ZXVkbyBlbGVtZW50cywgd2Ugc2hvdWxkIG5ldmVyIGNvbXBpbGUgYSBzZWxlY3RvciBjaGVja2Vy
IHdpdGhvdXQgY29udGV4dCB1bmxlc3MgaXQgY2Fubm90IG1hdGNoIGFueXRoaW5nLiIpOwogI2Vu
ZGlmCiAjaWYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKICAgICAgICAgcnVsZURhdGEuY29t
cGlsZWRTZWxlY3RvclVzZWQoKTsKQEAgLTQ3NCw4ICs0NzUsOCBAQCBpbmxpbmUgYm9vbCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgU3R5bGU6OlJ1bGVEYXRhJiBydWxl
RGF0YSwgdQogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogCiAgICAgU2VsZWN0
b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQgY29udGV4dChtX21vZGUpOwotICAgIGNvbnRleHQu
cHNldWRvSWQgPSBtX3BzZXVkb1N0eWxlUmVxdWVzdC5wc2V1ZG9JZDsKLSAgICBjb250ZXh0LnNj
cm9sbGJhclN0YXRlID0gbV9wc2V1ZG9TdHlsZVJlcXVlc3Quc2Nyb2xsYmFyU3RhdGU7CisgICAg
Y29udGV4dC5wc2V1ZG9JZCA9IG1fcHNldWRvRWxlbWVudFJlcXVlc3QucHNldWRvSWQ7CisgICAg
Y29udGV4dC5zY3JvbGxiYXJTdGF0ZSA9IG1fcHNldWRvRWxlbWVudFJlcXVlc3Quc2Nyb2xsYmFy
U3RhdGU7CiAgICAgY29udGV4dC5pc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzID0gbV9pc01hdGNo
aW5nSG9zdFBzZXVkb0NsYXNzOwogICAgIGNvbnRleHQuc2hhZG93SG9zdEluUGFydFJ1bGVTY29w
ZSA9IG1fc2hhZG93SG9zdEluUGFydFJ1bGVTY29wZS5nZXQoKTsKIApAQCAtNTE0LDcgKzUxNSw3
IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyhjb25zdCBT
dHlsZTo6UnVsZURhdGEmIHJ1bGVEYXRhLCB1CiAgICAgcmV0dXJuIHNlbGVjdG9yTWF0Y2hlczsK
IH0KIAotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KGNvbnN0IFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciogcnVsZXMsIGNvbnN0IE1h
dGNoUmVxdWVzdCYgbWF0Y2hSZXF1ZXN0KQordm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBy
dWxlcywgY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QpCiB7CiAgICAgaWYgKCFydWxl
cykKICAgICAgICAgcmV0dXJuOwpAQCAtNTIyLDcgKzUyMyw3IEBAIHZvaWQgRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBTdHlsZTo6UnVsZVNl
dDo6UnVsCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHJ1bGVzLT5zaXplKCk7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgcnVsZURhdGEgPSBydWxlcy0+ZGF0
YSgpW2ldOwogCi0gICAgICAgIGlmICghcnVsZURhdGEuY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCkg
JiYgbV9wc2V1ZG9TdHlsZVJlcXVlc3QucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpCisgICAg
ICAgIGlmICghcnVsZURhdGEuY2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCkgJiYgbV9wc2V1ZG9FbGVt
ZW50UmVxdWVzdC5wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGlmIChtX3NlbGVjdG9yRmlsdGVyICYmIG1fc2VsZWN0b3JGaWx0ZXIt
PmZhc3RSZWplY3RTZWxlY3RvcihydWxlRGF0YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVy
SGFzaGVzKCkpKQpAQCAtNTkzLDEzICs1OTQsMTMgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rv
cjo6bWF0Y2hBbGxSdWxlcyhib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmMK
ICAgICAgICAgY29sbGVjdE1hdGNoaW5nQXV0aG9yUnVsZXMoKTsKICAgICAgICAgc29ydE1hdGNo
ZWRSdWxlcygpOwogCi0gICAgICAgIHRyYW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3Jp
Z2luOjpBdXRob3IsIFN0eWxlOjpTY29wZU9yZGluYWw6OkVsZW1lbnQpOworICAgICAgICB0cmFu
c2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbjo6QXV0aG9yLCBTY29wZU9yZGluYWw6
OkVsZW1lbnQpOwogCiAgICAgICAgIC8vIElubGluZSBzdHlsZSBiZWhhdmVzIGFzIGlmIGl0IGhh
cyBoaWdoZXIgc3BlY2lmaWNpdHkgdGhhbiBhbnkgcnVsZS4KICAgICAgICAgYWRkRWxlbWVudElu
bGluZVN0eWxlUHJvcGVydGllcyhpbmNsdWRlU01JTFByb3BlcnRpZXMpOwogCiAgICAgICAgIC8v
IFJ1bGVzIGZyb20gdGhlIGhvc3Qgc2NvcGUgb3ZlcnJpZGUgaW5saW5lIHN0eWxlLgotICAgICAg
ICB0cmFuc2Zlck1hdGNoZWRSdWxlcyhEZWNsYXJhdGlvbk9yaWdpbjo6QXV0aG9yLCBTdHlsZTo6
U2NvcGVPcmRpbmFsOjpDb250YWluaW5nSG9zdCk7CisgICAgICAgIHRyYW5zZmVyTWF0Y2hlZFJ1
bGVzKERlY2xhcmF0aW9uT3JpZ2luOjpBdXRob3IsIFNjb3BlT3JkaW5hbDo6Q29udGFpbmluZ0hv
c3QpOwogICAgIH0KIH0KIApAQCAtNjE4LDcgKzYxOSw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6OmFkZEVsZW1lbnRJbmxpbmVTdHlsZVByb3BlcnRpZXMoYm9vbCBpbmNsdWRlU01JTFBy
b3BlCiAgICAgICAgIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoZG93bmNhc3Q8U1ZHRWxlbWVu
dD4oZWxlbWVudCgpKS5hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKSwgZmFsc2UgLyogaXND
YWNoZWFibGUgKi8pOwogfQogCi1ib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpoYXNBbnlNYXRj
aGluZ1J1bGVzKGNvbnN0IFN0eWxlOjpSdWxlU2V0KiBydWxlU2V0KQorYm9vbCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyhjb25zdCBSdWxlU2V0KiBydWxlU2V0KQog
ewogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CiAKQEAgLTYzNSw3ICs2MzYsNyBAQCB2b2lkIEVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRjaGVkUHJvcGVydGll
cyYmIG1hdGNoZWRQcm9wZQogICAgICAgICBpZiAoIW1fcmVzdWx0LmlzQ2FjaGVhYmxlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtYXRjaGVkUHJvcGVydGllcy5z
dHlsZVNjb3BlT3JkaW5hbCAhPSBTdHlsZTo6U2NvcGVPcmRpbmFsOjpFbGVtZW50KQorICAgICAg
ICBpZiAobWF0Y2hlZFByb3BlcnRpZXMuc3R5bGVTY29wZU9yZGluYWwgIT0gU2NvcGVPcmRpbmFs
OjpFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGF1dG8mIHBy
b3BlcnRpZXMgPSAqbWF0Y2hlZFByb3BlcnRpZXMucHJvcGVydGllczsKQEAgLTY3Myw0ICs2NzQs
NSBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUHJvcGVydGllcyhNYXRj
aGVkUHJvcGVydGllcyYmIG1hdGNoZWRQcm9wZQogICAgIGRlY2xhcmF0aW9uc0Zvck9yaWdpbiht
X3Jlc3VsdCwgZGVjbGFyYXRpb25PcmlnaW4pLmFwcGVuZChXVEZNb3ZlKG1hdGNoZWRQcm9wZXJ0
aWVzKSk7CiB9CiAKK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApzaW1pbGFyaXR5IGluZGV4IDc1JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApyZW5hbWUgdG8gU291
cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRleCA4MDliYjMzZjIy
MS4uMGIwMGEyZWMwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmgKQEAgLTMxLDE2ICszMSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IE1hdGNoUmVxdWVzdDsKIGNsYXNzIFNlbGVjdG9yRmlsdGVyOwogCiBuYW1lc3BhY2UgU3R5bGUg
eworCitjbGFzcyBNYXRjaFJlcXVlc3Q7CiBjbGFzcyBTY29wZVJ1bGVTZXRzOwotfQogCi1jbGFz
cyBQc2V1ZG9TdHlsZVJlcXVlc3QgeworY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3QgewogcHVi
bGljOgotICAgIFBzZXVkb1N0eWxlUmVxdWVzdChQc2V1ZG9JZCBwc2V1ZG9JZCwgT3B0aW9uYWw8
U3R5bGVTY3JvbGxiYXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGUgPSBXVEY6Om51bGxvcHQpCisgICAg
UHNldWRvRWxlbWVudFJlcXVlc3QoUHNldWRvSWQgcHNldWRvSWQsIE9wdGlvbmFsPFN0eWxlU2Ny
b2xsYmFyU3RhdGU+IHNjcm9sbGJhclN0YXRlID0gV1RGOjpudWxsb3B0KQogICAgICAgICA6IHBz
ZXVkb0lkKHBzZXVkb0lkKQogICAgICAgICAsIHNjcm9sbGJhclN0YXRlKHNjcm9sbGJhclN0YXRl
KQogICAgIHsKQEAgLTUxLDE2ICs1MSwxNiBAQCBwdWJsaWM6CiB9OwogCiBzdHJ1Y3QgTWF0Y2hl
ZFJ1bGUgewotICAgIGNvbnN0IFN0eWxlOjpSdWxlRGF0YSogcnVsZURhdGE7CisgICAgY29uc3Qg
UnVsZURhdGEqIHJ1bGVEYXRhOwogICAgIHVuc2lnbmVkIHNwZWNpZmljaXR5OwotICAgIFN0eWxl
OjpTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWw7CisgICAgU2NvcGVPcmRpbmFsIHN0eWxl
U2NvcGVPcmRpbmFsOwogfTsKIAogc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsKICAgICBSZWZQ
dHI8Y29uc3QgU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzOwogICAgIHVpbnQxNl90IGxpbmtN
YXRjaFR5cGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoQWxsIH07Ci0gICAgdWludDE2X3Qgd2hp
dGVsaXN0VHlwZSB7IFN0eWxlOjpQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgfTsKLSAgICBTdHlsZTo6
U2NvcGVPcmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsIHsgU3R5bGU6OlNjb3BlT3JkaW5hbDo6RWxl
bWVudCB9OworICAgIHVpbnQxNl90IHdoaXRlbGlzdFR5cGUgeyBQcm9wZXJ0eVdoaXRlbGlzdE5v
bmUgfTsKKyAgICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTY29wZU9yZGluYWw6
OkVsZW1lbnQgfTsKIH07CiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC04Myw4ICs4Myw4IEBA
IHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAKIGNsYXNzIEVsZW1lbnRSdWxlQ29sbGVjdG9yIHsKIHB1
YmxpYzoKLSAgICBFbGVtZW50UnVsZUNvbGxlY3Rvcihjb25zdCBFbGVtZW50JiwgY29uc3QgU3R5
bGU6OlNjb3BlUnVsZVNldHMmLCBjb25zdCBTZWxlY3RvckZpbHRlciopOwotICAgIEVsZW1lbnRS
dWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6UnVsZVNldCYgYXV0aG9y
U3R5bGUsIGNvbnN0IFNlbGVjdG9yRmlsdGVyKik7CisgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3Io
Y29uc3QgRWxlbWVudCYsIGNvbnN0IFNjb3BlUnVsZVNldHMmLCBjb25zdCBTZWxlY3RvckZpbHRl
ciopOworICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBSdWxl
U2V0JiBhdXRob3JTdHlsZSwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqKTsKIAogICAgIHZvaWQgc2V0
SW5jbHVkZUVtcHR5UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVz
ID0gdmFsdWU7IH0KIApAQCAtOTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIG1hdGNo
ZXNBbnlBdXRob3JSdWxlcygpOwogCiAgICAgdm9pZCBzZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6
TW9kZSBtb2RlKSB7IG1fbW9kZSA9IG1vZGU7IH0KLSAgICB2b2lkIHNldFBzZXVkb1N0eWxlUmVx
dWVzdChjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHJlcXVlc3QpIHsgbV9wc2V1ZG9TdHlsZVJl
cXVlc3QgPSByZXF1ZXN0OyB9CisgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50UmVxdWVzdChjb25z
dCBQc2V1ZG9FbGVtZW50UmVxdWVzdCYgcmVxdWVzdCkgeyBtX3BzZXVkb0VsZW1lbnRSZXF1ZXN0
ID0gcmVxdWVzdDsgfQogICAgIHZvaWQgc2V0TWVkaXVtKGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3IqIG1lZGl1bSkgeyBtX2lzUHJpbnRTdHlsZSA9IG1lZGl1bS0+bWVkaWFUeXBlTWF0Y2hTcGVj
aWZpYygicHJpbnQiKTsgfQogCi0gICAgYm9vbCBoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFN0
eWxlOjpSdWxlU2V0Kik7CisgICAgYm9vbCBoYXNBbnlNYXRjaGluZ1J1bGVzKGNvbnN0IFJ1bGVT
ZXQqKTsKIAogICAgIGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCgpIGNvbnN0OwogICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mIG1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0
OwpAQCAtMTA3LDEzICsxMDcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJNYXRjaGVkUnVs
ZXMoKTsKIAogICAgIGNvbnN0IFBzZXVkb0lkU2V0JiBtYXRjaGVkUHNldWRvRWxlbWVudElkcygp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hlZFBzZXVkb0VsZW1lbnRJZHM7IH0KLSAgICBjb25zdCBT
dHlsZTo6UmVsYXRpb25zJiBzdHlsZVJlbGF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVS
ZWxhdGlvbnM7IH0KKyAgICBjb25zdCBSZWxhdGlvbnMmIHN0eWxlUmVsYXRpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHlsZVJlbGF0aW9uczsgfQogICAgIGJvb2wgZGlkTWF0Y2hVbmNvbW1vbkF0
dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kaWRNYXRjaFVuY29tbW9uQXR0cmli
dXRlU2VsZWN0b3I7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZEVsZW1lbnRTdHlsZVByb3Bl
cnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiwgYm9vbCBpc0NhY2hlYWJsZSA9IHRydWUpOwog
Ci0gICAgdm9pZCBtYXRjaFVBUnVsZXMoY29uc3QgU3R5bGU6OlJ1bGVTZXQmKTsKKyAgICB2b2lk
IG1hdGNoVUFSdWxlcyhjb25zdCBSdWxlU2V0Jik7CiAKICAgICB2b2lkIGNvbGxlY3RNYXRjaGlu
Z0F1dGhvclJ1bGVzKCk7CiAgICAgdm9pZCBhZGRFbGVtZW50SW5saW5lU3R5bGVQcm9wZXJ0aWVz
KGJvb2wgaW5jbHVkZVNNSUxQcm9wZXJ0aWVzKTsKQEAgLTEyNSwzOCArMTI1LDM4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBtYXRjaFBhcnRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTY29wZShjb25zdCBT
aGFkb3dSb290JiBzY29wZVNoYWRvd1Jvb3QpOwogCiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdT
aGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0Jik7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFN0eWxlOjpSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gY29sbGVjdFNsb3R0ZWRQ
c2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6
OlJ1bGVEYXRhVmVjdG9yPiBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3Qo
KTsKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0Jik7
Ci0gICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoY29uc3QgU3R5bGU6OlJ1bGVT
ZXQ6OlJ1bGVEYXRhVmVjdG9yKiwgY29uc3QgTWF0Y2hSZXF1ZXN0Jik7Ci0gICAgYm9vbCBydWxl
TWF0Y2hlcyhjb25zdCBTdHlsZTo6UnVsZURhdGEmLCB1bnNpZ25lZCAmc3BlY2lmaWNpdHkpOwor
ICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFJ1bGVTZXQ6OlJ1bGVE
YXRhVmVjdG9yKiwgY29uc3QgTWF0Y2hSZXF1ZXN0Jik7CisgICAgYm9vbCBydWxlTWF0Y2hlcyhj
b25zdCBSdWxlRGF0YSYsIHVuc2lnbmVkICZzcGVjaWZpY2l0eSk7CiAKICAgICB2b2lkIHNvcnRN
YXRjaGVkUnVsZXMoKTsKIAogICAgIGVudW0gY2xhc3MgRGVjbGFyYXRpb25PcmlnaW4geyBVc2Vy
QWdlbnQsIFVzZXIsIEF1dGhvciB9OwogICAgIHN0YXRpYyBWZWN0b3I8TWF0Y2hlZFByb3BlcnRp
ZXM+JiBkZWNsYXJhdGlvbnNGb3JPcmlnaW4oTWF0Y2hSZXN1bHQmLCBEZWNsYXJhdGlvbk9yaWdp
bik7CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25Pcmln
aW4pOwotICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4sIE9w
dGlvbmFsPFN0eWxlOjpTY29wZU9yZGluYWw+IGZvclNjb3BlID0geyB9KTsKKyAgICB2b2lkIHRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKERlY2xhcmF0aW9uT3JpZ2luLCBPcHRpb25hbDxTY29wZU9yZGlu
YWw+IGZvclNjb3BlID0geyB9KTsKIAotICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgU3R5
bGU6OlJ1bGVEYXRhJiwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFN0eWxlOjpTY29wZU9yZGluYWwp
OworICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEmLCB1bnNpZ25lZCBzcGVj
aWZpY2l0eSwgU2NvcGVPcmRpbmFsKTsKICAgICB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1h
dGNoZWRQcm9wZXJ0aWVzJiYsIERlY2xhcmF0aW9uT3JpZ2luKTsKIAogICAgIGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KIAogICAgIGNv
bnN0IFJlZjxjb25zdCBFbGVtZW50PiBtX2VsZW1lbnQ7Ci0gICAgY29uc3QgU3R5bGU6OlJ1bGVT
ZXQmIG1fYXV0aG9yU3R5bGU7Ci0gICAgY29uc3QgU3R5bGU6OlJ1bGVTZXQqIG1fdXNlclN0eWxl
IHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IFN0eWxlOjpSdWxlU2V0KiBtX3VzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBSdWxlU2V0JiBtX2F1dGhvclN0eWxl
OworICAgIGNvbnN0IFJ1bGVTZXQqIG1fdXNlclN0eWxlIHsgbnVsbHB0ciB9OworICAgIGNvbnN0
IFJ1bGVTZXQqIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlIHsgbnVsbHB0ciB9OwogICAgIGNv
bnN0IFNlbGVjdG9yRmlsdGVyKiBtX3NlbGVjdG9yRmlsdGVyIHsgbnVsbHB0ciB9OwogCiAgICAg
Ym9vbCBtX3Nob3VsZEluY2x1ZGVFbXB0eVJ1bGVzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQ
cmludFN0eWxlIHsgZmFsc2UgfTsKLSAgICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHls
ZVJlcXVlc3QgeyBQc2V1ZG9JZDo6Tm9uZSB9OworICAgIFBzZXVkb0VsZW1lbnRSZXF1ZXN0IG1f
cHNldWRvRWxlbWVudFJlcXVlc3QgeyBQc2V1ZG9JZDo6Tm9uZSB9OwogICAgIFNlbGVjdG9yQ2hl
Y2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OlJlc29sdmluZ1N0eWxl
IH07CiAgICAgYm9vbCBtX2lzTWF0Y2hpbmdTbG90dGVkUHNldWRvRWxlbWVudHMgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc01hdGNoaW5nSG9zdFBzZXVkb0NsYXNzIHsgZmFsc2UgfTsKICAgICBS
ZWZQdHI8Y29uc3QgRWxlbWVudD4gbV9zaGFkb3dIb3N0SW5QYXJ0UnVsZVNjb3BlOwotICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6OlJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPj4gbV9r
ZWVwQWxpdmVTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+PiBtX2tlZXBBbGl2ZVNsb3R0ZWRQc2V1ZG9F
bGVtZW50UnVsZXM7CiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRSdWxl
czsKICAgICBzaXplX3QgbV9tYXRjaGVkUnVsZVRyYW5zZmVySW5kZXggeyAwIH07CkBAIC0xNjUs
NyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IG1fbWF0
Y2hlZFJ1bGVMaXN0OwogICAgIGJvb2wgbV9kaWRNYXRjaFVuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3IgeyBmYWxzZSB9OwogICAgIE1hdGNoUmVzdWx0IG1fcmVzdWx0OwotICAgIFN0eWxlOjpSZWxh
dGlvbnMgbV9zdHlsZVJlbGF0aW9uczsKKyAgICBSZWxhdGlvbnMgbV9zdHlsZVJlbGF0aW9uczsK
ICAgICBQc2V1ZG9JZFNldCBtX21hdGNoZWRQc2V1ZG9FbGVtZW50SWRzOwogfTsKIApAQCAtMTc5
LDQgKzE3OSw1IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hlZFByb3BlcnRp
ZXMmIGEsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBiKQogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTcl
CnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKcmVu
YW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAppbmRleCA5
ZjY1ZmUwNjM3ZS4uM2M1ODc2OWI0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
YWdlUnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUGFnZVJ1bGVD
b2xsZWN0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBjb21wYXJlUGFnZVJ1bGVzKGNvbnN0IFN0eWxlUnVsZVBhZ2UqIHIxLCBjb25zdCBTdHls
ZVJ1bGVQYWdlKiByMikKIHsKQEAgLTc0LDcgKzc1LDcgQEAgdm9pZCBQYWdlUnVsZUNvbGxlY3Rv
cjo6bWF0Y2hBbGxQYWdlUnVsZXMoaW50IHBhZ2VJbmRleCkKICAgICAgICAgbWF0Y2hQYWdlUnVs
ZXMoJm1fcnVsZVNldHMuYXV0aG9yU3R5bGUoKSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKIH0K
IAotdm9pZCBQYWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoU3R5bGU6OlJ1bGVTZXQq
IHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYg
cGFnZU5hbWUpCit2b2lkIFBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlcyhSdWxlU2V0
KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcm
IHBhZ2VOYW1lKQogewogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEyOCw0
ICsxMjksNSBAQCB2b2lkIFBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlc0Zvckxpc3Qo
VmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bAogICAgIH0KIH0KIAorfSAvLyBuYW1l
c3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUGFn
ZVJ1bGVDb2xsZWN0b3IuaApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUv
c3R5bGUvUGFnZVJ1bGVDb2xsZWN0b3IuaAppbmRleCA4YWVmYjAyMGZiYy4uYzNkYTg4ZWZkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BhZ2VSdWxlQ29sbGVjdG9yLmgKQEAgLTI5LDkgKzI5LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5bGVSdWxlUGFnZTsKIAorbmFtZXNw
YWNlIFN0eWxlIHsKKwogY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3IgewogcHVibGljOgotICAgIFBh
Z2VSdWxlQ29sbGVjdG9yKFN0eWxlOjpSZXNvbHZlcjo6U3RhdGUmIHN0YXRlLCBTdHlsZTo6U2Nv
cGVSdWxlU2V0cyYgcnVsZVNldHMpCisgICAgUGFnZVJ1bGVDb2xsZWN0b3IoUmVzb2x2ZXI6OlN0
YXRlJiBzdGF0ZSwgU2NvcGVSdWxlU2V0cyYgcnVsZVNldHMpCiAgICAgICAgIDogbV9zdGF0ZShz
dGF0ZSkKICAgICAgICAgLCBtX3J1bGVTZXRzKHJ1bGVTZXRzKSB7IH0KIApAQCAtNDQsMTMgKzQ2
LDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25z
dDsKICAgICBTdHJpbmcgcGFnZU5hbWUoaW50IHBhZ2VJbmRleCkgY29uc3Q7CiAKLSAgICB2b2lk
IG1hdGNoUGFnZVJ1bGVzKFN0eWxlOjpSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBi
b29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKKyAgICB2b2lkIG1hdGNo
UGFnZVJ1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBh
Z2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXNGb3JM
aXN0KFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIG1hdGNoZWRSdWxlcywgY29uc3QgVmVjdG9yPFN0
eWxlUnVsZVBhZ2UqPiYgcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwg
Y29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CiAKLSAgICBjb25zdCBTdHlsZTo6UmVzb2x2ZXI6OlN0
YXRlJiBtX3N0YXRlOwotICAgIFN0eWxlOjpTY29wZVJ1bGVTZXRzJiBtX3J1bGVTZXRzOworICAg
IGNvbnN0IFJlc29sdmVyOjpTdGF0ZSYgbV9zdGF0ZTsKKyAgICBTY29wZVJ1bGVTZXRzJiBtX3J1
bGVTZXRzOwogCiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CiB9OwogCit9IC8vIG5hbWVzcGFj
ZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCBhZWExYTBkMWM5MS4uNGQ0N2JhODMzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBSZXNvbHZl
cjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUmVuZGVyU3QKICAgICB9CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVz
b2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBQc2V1ZG9TdHlsZVJlcXVlc3QmIHBzZXVkb1N0eWxlUmVxdWVzdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUsIGNvbnN0
IFNlbGVjdG9yRmlsdGVyKiBzZWxlY3RvckZpbHRlcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBQc2V1ZG9FbGVtZW50UmVxdWVzdCYgcHNldWRvRWxlbWVudFJlcXVlc3QsIGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJv
eFN0eWxlLCBjb25zdCBTZWxlY3RvckZpbHRlciogc2VsZWN0b3JGaWx0ZXIpCiB7CiAgICAgYXV0
byBzdGF0ZSA9IFN0YXRlKGVsZW1lbnQsICZwYXJlbnRTdHlsZSwgbV9vdmVycmlkZURvY3VtZW50
RWxlbWVudFN0eWxlKTsKIApAQCAtNDExLDcgKzQxMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBl
bGVtCiAgICAgfQogCiAgICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKGVsZW1lbnQs
IG1fcnVsZVNldHMsIHNlbGVjdG9yRmlsdGVyKTsKLSAgICBjb2xsZWN0b3Iuc2V0UHNldWRvU3R5
bGVSZXF1ZXN0KHBzZXVkb1N0eWxlUmVxdWVzdCk7CisgICAgY29sbGVjdG9yLnNldFBzZXVkb0Vs
ZW1lbnRSZXF1ZXN0KHBzZXVkb0VsZW1lbnRSZXF1ZXN0KTsKICAgICBjb2xsZWN0b3Iuc2V0TWVk
aXVtKCZtX21lZGlhUXVlcnlFdmFsdWF0b3IpOwogICAgIGNvbGxlY3Rvci5tYXRjaFVBUnVsZXMo
KTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVz
b2x2ZXI6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtCiAgICAgaWYg
KGNvbGxlY3Rvci5tYXRjaFJlc3VsdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBzdGF0ZS5zdHlsZSgpLT5zZXRTdHlsZVR5cGUocHNldWRvU3R5bGVSZXF1ZXN0
LnBzZXVkb0lkKTsKKyAgICBzdGF0ZS5zdHlsZSgpLT5zZXRTdHlsZVR5cGUocHNldWRvRWxlbWVu
dFJlcXVlc3QucHNldWRvSWQpOwogCiAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhzdGF0ZSwg
Y29sbGVjdG9yLm1hdGNoUmVzdWx0KCkpOwogCkBAIC00OTgsNyArNDk4LDcgQEAgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGU+PiBSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCogZWwKIAogICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3RvcigqZWxl
bWVudCwgbV9ydWxlU2V0cywgbnVsbHB0cik7CiAgICAgY29sbGVjdG9yLnNldE1vZGUoU2VsZWN0
b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXMpOwotICAgIGNvbGxlY3Rvci5zZXRQc2V1
ZG9TdHlsZVJlcXVlc3QoUHNldWRvU3R5bGVSZXF1ZXN0KHBzZXVkb0lkKSk7CisgICAgY29sbGVj
dG9yLnNldFBzZXVkb0VsZW1lbnRSZXF1ZXN0KHsgcHNldWRvSWQgfSk7CiAgICAgY29sbGVjdG9y
LnNldE1lZGl1bSgmbV9tZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKICAgICBjb2xsZWN0b3Iuc2V0SW5j
bHVkZUVtcHR5UnVsZXMocnVsZXNUb0luY2x1ZGUgJiBFbXB0eUNTU1J1bGVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCmluZGV4IDhlM2Y2YzY4NTQ4Li41NTE2NDg4NDQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBL
ZXlmcmFtZVZhbHVlOwotY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3I7CiBjbGFzcyBSdWxlRGF0YTsK
IGNsYXNzIFJ1bGVTZXQ7CiBjbGFzcyBTZWxlY3RvckZpbHRlcjsKQEAgLTkwLDcgKzg5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBrZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihjb25zdCBFbGVt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBLZXlmcmFtZUxpc3QmKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQm
LCBjb25zdCBQc2V1ZG9TdHlsZVJlcXVlc3QmLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSA9IG51bGxwdHIsIGNvbnN0IFNl
bGVjdG9yRmlsdGVyKiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBjb25zdCBQc2V1ZG9FbGVt
ZW50UmVxdWVzdCYsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEJveFN0eWxlID0gbnVsbHB0ciwgY29uc3QgU2VsZWN0b3JGaWx0ZXIqID0g
bnVsbHB0cik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFn
ZShpbnQgcGFnZUluZGV4KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGRlZmF1
bHRTdHlsZUZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopOwpAQCAtMTU1LDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJz
KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKIHByaXZhdGU6Ci0gICAg
ZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlBhZ2VSdWxlQ29sbGVjdG9yOworICAgIGZyaWVuZCBjbGFz
cyBQYWdlUnVsZUNvbGxlY3RvcjsKIAogICAgIGNsYXNzIFN0YXRlIHsKICAgICBwdWJsaWM6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>