<?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>194346</bug_id>
          
          <creation_ts>2019-02-06 09:31:31 -0800</creation_ts>
          <short_desc>Roll out parts of r238819 since it is a PLT performance regression.</short_desc>
          <delta_ts>2019-02-06 11:52:16 -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>WebCore Misc.</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="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1503356</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-02-06 09:31:31 -0800</bug_when>
    <thetext>The other parts of r238819 has already been reverted in r240808.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503358</commentid>
    <comment_count>1</comment_count>
      <attachid>361300</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-02-06 09:38:25 -0800</bug_when>
    <thetext>Created attachment 361300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503368</commentid>
    <comment_count>2</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2019-02-06 10:00:23 -0800</bug_when>
    <thetext>Committed r241026: &lt;https://trac.webkit.org/changeset/241026/webkit&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503371</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-06 10:20:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/47854046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503412</commentid>
    <comment_count>4</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-02-06 11:52:16 -0800</bug_when>
    <thetext>After this revert we have a timing out API test:

Timeout

    TestWebKitAPI.RenderingProgress.FirstMeaningfulPaint
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.


build:
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK1%20%28Tests%29/builds/2759

verified this locally using run-api-tests on r241026. 241025 does not have the failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361300</attachid>
            <date>2019-02-06 09:38:25 -0800</date>
            <delta_ts>2019-02-06 09:38:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194346-20190206093825.patch</filename>
            <type>text/plain</type>
            <size>35990</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDEwMjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDE5LTAyLTA2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBSb2xsIG91dCBwYXJ0cyBvZiBy
MjM4ODE5IHNpbmNlIGl0IGlzIGEgUExUIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQzNDYKKworICAgICAg
ICBVbnJldmlld2VkIHBlcmZvcm1hbmNlIGZpeC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgIChkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KToKKyAgICAgICAgKGRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChnbG9iYWxPYmpl
Y3RJc0F2YWlsYWJsZUZvckZyYW1lKToKKyAgICAgICAgKGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJh
cmNoeSk6CisgICAgICAgIChkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUpOgorICAgICAgICAoZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAg
ICAgKGRpZExheW91dEZvckZyYW1lKToKKyAgICAgICAgKGRpZFJlYWNoTGF5b3V0TWlsZXN0b25l
KToKKyAgICAgICAgKGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToKKyAg
ICAgICAgKGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKToKKyAgICAgICAgKHVzZXJBZ2Vu
dEZvclVSTCk6CisgICAgICAgIChzZXRVcFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAod2ls
bFNlbmRSZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAoZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3Vy
Y2UpOgorICAgICAgICAoZGlkRmluaXNoTG9hZEZvclJlc291cmNlKToKKyAgICAgICAgKGRpZEZh
aWxMb2FkRm9yUmVzb3VyY2UpOgorICAgICAgICAoc2V0VXBSZXNvdXJjZUxvYWRDbGllbnQpOgor
ICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgc2V0
TG9hZERlbGVnYXRlOl0pOgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50OjpSZXNvdXJjZUxv
YWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50Ojpsb2FkRGVs
ZWdhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50OjpwbHVn
aW5Db250ZXh0Q29udHJvbGxlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQYWdlTG9hZGVy
Q2xpZW50OjpQYWdlTG9hZGVyQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFBhZ2VMb2FkZXJD
bGllbnQ6OmxvYWREZWxlZ2F0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQYWdlTG9hZGVy
Q2xpZW50OjpwbHVnaW5Db250ZXh0Q29udHJvbGxlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChQYWdlTG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKFBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChQYWdl
TG9hZGVyQ2xpZW50OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKFBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSk6
IERlbGV0ZWQuCisgICAgICAgIChQYWdlTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAoUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoUGFnZUxvYWRlckNsaWVudDo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOiBEZWxldGVk
LgorICAgICAgICAoUGFnZUxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dEZv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlYWNoTGF5
b3V0TWlsZXN0b25lKTogRGVsZXRlZC4KKyAgICAgICAgKFBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFBh
Z2VMb2FkZXJDbGllbnQ6OmxheW91dE1pbGVzdG9uZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoUGFnZUxvYWRlckNsaWVudDo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpOiBEZWxl
dGVkLgorICAgICAgICAoUGFnZUxvYWRlckNsaWVudDo6dXNlckFnZW50Rm9yVVJMIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFJlc291cmNlTG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0Rm9y
RnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRJbml0aWF0
ZUxvYWRGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChSZXNvdXJjZUxvYWRDbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChSZXNvdXJjZUxv
YWRDbGllbnQ6OmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UpOiBEZWxldGVkLgorCiAyMDE5LTAyLTA2
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNDA3ODUpOiBbU09VUF0gQnJva2UgY29va2llIHBlcnNpc3RlbnQgc3RvcmFn
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjQxMDIw
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiQVBJRGF0
YS5oIgotI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCIKICNpbXBvcnQgIlJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVz
c2FnZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKQEAg
LTY1LDY3ICs2NCwxMiBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdLRGVwcmVjYXRl
ZERlbGVnYXRlTWV0aG9kcykKIC0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICop
Y29udHJvbGxlciBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6KFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lICopZnJhbWU7CiBAZW5kCiAKLWNsYXNzIFJlc291cmNlTG9hZENsaWVudCA6
IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZENsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5M
b2FkRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVy
KQotICAgICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpIHsgfQotICAgIAotICAgIHZvaWQgZGlk
SW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFt
ZSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV2ViS2l0
OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgdWludDY0X3QgaWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6
V2ViRnJhbWUmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkxv
YWREZWxlZ2F0ZT4gbG9hZERlbGVnYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQo
KS5nZXQoKTsgfQotICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciAqcGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZXIu
Z2V0KCkuZ2V0KCk7IH0KLSAgICAKLSAgICBXZWFrT2JqQ1B0cjxXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBXZWFrT2JqQ1B0cjxp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKLX07Ci0KLWNs
YXNzIFBhZ2VMb2FkZXJDbGllbnQgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxv
YWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgUGFnZUxvYWRlckNsaWVudChXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fY29u
dHJvbGxlcihjb250cm9sbGVyKQotICAgICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpIHsgfQot
ICAgIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6Oldl
YkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFt
ZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEZpbmlzaExv
YWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJL
aXQ6OldlYkZyYW1lJiwgV2ViS2l0OjpTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5KFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpP
YmplY3Q+Jikgb3ZlcnJpZGU7Ci0gICAgCi0gICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTGF5b3V0Rm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoV2ViS2l0OjpXZWJQYWdlJiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4sIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKLSAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBsYXlvdXRNaWxlc3RvbmVzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgCi0gICAgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJikgb3ZlcnJpZGU7Ci0gICAg
Ci0gICAgdm9pZCBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBvdmVycmlk
ZTsKLQotICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJLaXQ6OldlYkZyYW1lJiwg
Y29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgCi1wcml2YXRlOgotICAgIGlkIDxXS1dl
YlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+IGxvYWREZWxlZ2F0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7IH0KLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250cm9sbGVyLmdldCgpLmdldCgpOyB9Ci0KLSAgICBXZWFrT2JqQ1B0cjxXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKLSAgICBX
ZWFrT2JqQ1B0cjxpZCA8V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPj4gbV9kZWxlZ2F0
ZTsKLX07Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgewogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYlBhZ2U+IF9w
YWdlOwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+
PiBfbG9hZERlbGVnYXRlOwpAQCAtMTM1LDE1OSArNzksMjU0IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5PiBfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9
CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpCitzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVz
ZXJEYXRhUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIGlmIChbbG9hZERlbGVn
YXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KV0pCi0g
ICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyKCkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZTp3cmFwcGVyKGZyYW1lKV07CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxl
ciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
KiljbGllbnRJbmZvOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRy
b2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopXSkKKyAgICAgICAgW2xv
YWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdp
bkNvbnRleHRDb250cm9sbGVyIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6d3JhcHBl
cigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKV07CiB9CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0
OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYgZnJhbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4m
KQorc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiAqdXNlckRhdGFSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgaWYg
KFtsb2FkRGVsZWdhdGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6KV0pCi0gICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9s
bGVyKCkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
d3JhcHBlcihmcmFtZSldOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19i
cmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50
SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5f
bG9hZERlbGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOildKQor
ICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKV07
CiB9CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmIGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+
JikKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKIHsKLSAgICBpZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpk
aWRGaW5pc2hMb2FkRm9yRnJhbWU6KV0pCi0gICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVy
KCkgZGlkRmluaXNoTG9hZEZvckZyYW1lOndyYXBwZXIoZnJhbWUpXTsKKyAgICBhdXRvIHBsdWdp
bkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBw
bHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChb
bG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6KV0pCisgICAg
ICAgIFtsb2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjpwbHVnaW5Db250ZXh0Q29udHJvbGxlciBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6d3JhcHBlcigq
V2ViS2l0Ojp0b0ltcGwoZnJhbWUpKV07CiB9CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6Z2xv
YmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6Oldl
YkZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiBzY3JpcHRXb3JsZCkKK3N0
YXRpYyB2b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2Ny
aXB0V29ybGQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgaWYgKFtsb2FkRGVsZWdh
dGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTppblNjcmlw
dFdvcmxkOildKQotICAgICAgICBbbG9hZERlbGVnYXRlKCkgd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxlcigpIGdsb2JhbE9iamVj
dElzQXZhaWxhYmxlRm9yRnJhbWU6d3JhcHBlcihmcmFtZSkgaW5TY3JpcHRXb3JsZDpBUEk6Ondy
YXBwZXIoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShzY3Jp
cHRXb3JsZCkpXTsKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdl
IFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWRE
ZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpnbG9i
YWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOmluU2NyaXB0V29ybGQ6KV0pCisgICAgICAgIFts
b2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVn
aW5Db250ZXh0Q29udHJvbGxlciBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lOndyYXBw
ZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSkgaW5TY3JpcHRXb3JsZDp3cmFwcGVyKCpXZWJLaXQ6
OnRvSW1wbChzY3JpcHRXb3JsZCkpXTsKIH0KIAotdm9pZCBQYWdlTG9hZGVyQ2xpZW50OjpkaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFt
ZSYgZnJhbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKQorc3RhdGljIHZvaWQgZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
IGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJh
cmNoeTopXSkKLSAgICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSBkaWRSZW1vdmVGcmFt
ZUZyb21IaWVyYXJjaHk6d3JhcHBlcihmcmFtZSldOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENv
bnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRl
eHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyOmRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTopXSkKKyAgICAgICAg
W2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBs
dWdpbkNvbnRleHRDb250cm9sbGVyIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTp3cmFwcGVy
KCpXZWJLaXQ6OnRvSW1wbChmcmFtZSkpXTsKIH0KIAotdm9pZCBQYWdlTG9hZGVyQ2xpZW50Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYg
ZnJhbWUsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKQorc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIGlmIChbbG9h
ZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZENvbW1pdExvYWRGb3JGcmFtZTopXSkKLSAgICAg
ICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSBkaWRDb21taXRMb2FkRm9yRnJhbWU6d3JhcHBl
cihmcmFtZSldOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2Ug
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsK
KyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERl
bGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZENv
bW1pdExvYWRGb3JGcmFtZTopXSkKKyAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGRpZENv
bW1pdExvYWRGb3JGcmFtZTp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChmcmFtZSkpXTsKIH0KIAot
dm9pZCBQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJL
aXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYpCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBpZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTopXSkKLSAgICAgICAgW2xvYWRE
ZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2lu
Q29udGV4dENvbnRyb2xsZXIoKSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTp3cmFwcGVy
KGZyYW1lKV07CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwor
ICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVs
ZWdhdGUuZ2V0KCk7CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6KV0pCisgICAgICAgIFtsb2FkRGVsZWdhdGUgd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxl
ciBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChm
cmFtZSkpXTsKIH0KIAotdm9pZCBQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYg
ZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBSZWZQdHI8QVBJOjpP
YmplY3Q+JikKK3N0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tFcnJv
clJlZiB3a0Vycm9yLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KQogewotICAgIGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZTplcnJvcjopXSkKLSAgICAgICAgW2xvYWREZWxlZ2F0
ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4
dENvbnRyb2xsZXIoKSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU6d3Jh
cHBlcihmcmFtZSkgZXJyb3I6ZXJyb3JdOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xs
ZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
ICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250
cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZTplcnJvcjop
XSkKKyAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGRpZEZhaWxQcm92aXNpb25hbExvYWRX
aXRoRXJyb3JGb3JGcmFtZTp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChmcmFtZSkpIGVycm9yOndy
YXBwZXIoKldlYktpdDo6dG9JbXBsKHdrRXJyb3IpKV07CiB9CiAKLXZvaWQgUGFnZUxvYWRlckNs
aWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJL
aXQ6OldlYkZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlZlB0cjxBUEk6Ok9iamVjdD4mKQorc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tF
cnJvclJlZiB3a0Vycm9yLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKQogewotICAgIGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWU6ZXJyb3I6KV0pCi0gICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9s
bGVyKCkgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTp3cmFwcGVyKGZyYW1lKSBlcnJvcjpl
cnJvcl07CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAg
IGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdh
dGUuZ2V0KCk7CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmFpbExv
YWRXaXRoRXJyb3JGb3JGcmFtZTplcnJvcjopXSkKKyAgICAgICAgW2xvYWREZWxlZ2F0ZSB3ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9s
bGVyIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwo
ZnJhbWUpKSBlcnJvcjp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbCh3a0Vycm9yKSldOwogfQogCi12
b2lkIFBhZ2VMb2FkZXJDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
ZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgV2ViS2l0OjpTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikKK3N0YXRpYyB2
b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0
eXBlLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAg
IGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b246Zm9yRnJhbWU6KV0pCi0gICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyKCkgZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbjp0b1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUodHlwZSkg
Zm9yRnJhbWU6d3JhcHBlcihmcmFtZSldOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xs
ZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
ICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250
cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246Zm9yRnJhbWU6KV0pCisgICAgICAg
IFtsb2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpw
bHVnaW5Db250ZXh0Q29udHJvbGxlciBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOnRvV0tTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZShXZWJLaXQ6OnRvU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUodHlwZSkpIGZvckZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSldOwogICAg
IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBjbGllbnRzIHN3aXRj
aCB0byBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIGRlbGVnYXRlIG1ldGhvZC4KLSAgICAgICAgaWYg
KFtsb2FkRGVsZWdhdGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lOildKQotICAgICAgICAgICAgWyhOU09iamVjdCAqKWxvYWREZWxlZ2F0ZSgpIHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xs
ZXIoKSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6d3JhcHBlcihmcmFtZSldOwor
ICAgICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lOildKQorICAgICAgICAgICAgWyhOU09iamVjdCAqKWxvYWREZWxlZ2F0
ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRD
b250cm9sbGVyIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTp3cmFwcGVyKCpXZWJL
aXQ6OnRvSW1wbChmcmFtZSkpXTsKICAgICB9CiB9CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6
ZGlkTGF5b3V0Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYgZnJh
bWUpCitzdGF0aWMgdm9pZCBkaWRMYXlvdXRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBp
ZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRMYXlvdXRGb3JGcmFtZTopXSkKLSAg
ICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSBkaWRMYXlvdXRGb3JGcmFtZTp3cmFwcGVy
KGZyYW1lKV07Ci19CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRn
ZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZv
OworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAKLXZvaWQgUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVhY2hMYXlvdXRN
aWxlc3RvbmUoV2ViS2l0OjpXZWJQYWdlJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVz
dG9uZT4gbWlsZXN0b25lcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYpCi17Ci0gICAgaWYgKFtsb2Fk
RGVsZWdhdGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2U6KV0pCi0g
ICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyKCkgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2U6cmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMobWlsZXN0b25lcyldOworICAgIGlmIChbbG9hZERl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjpkaWRMYXlvdXRGb3JGcmFtZTopXSkKKyAgICAgICAgW2xvYWRE
ZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNv
bnRleHRDb250cm9sbGVyIGRpZExheW91dEZvckZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBs
KGZyYW1lKSldOwogfQogCi12b2lkIFBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUm
IGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikKK3N0YXRpYyB2b2lkIGRpZFJlYWNoTGF5b3V0
TWlsZXN0b25lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZXMgbWlsZXN0
b25lcywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAg
ICBpZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JGcmFtZTopXSkKLSAgICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIoKSBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZTp3cmFwcGVyKGZyYW1lKV07Cisg
ICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gbG9h
ZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7
CisKKyAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2U6KV0pCisgICAgICAgIFtsb2FkRGVsZWdhdGUgd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxlciByZW5kZXJpbmdQcm9n
cmVzc0RpZENoYW5nZTpyZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyhXZWJLaXQ6OnRvTGF5b3V0TWls
ZXN0b25lcyhtaWxlc3RvbmVzKSldOwogfQogCi1PcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPiBQYWdlTG9hZGVyQ2xpZW50OjpsYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QKK3N0YXRp
YyB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6KV0pIHsKLSAgICAgICAgX1dLUmVuZGVyaW5n
UHJvZ3Jlc3NFdmVudHMgbWlsZXN0b25lcyA9IFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHM6cGx1Z2lu
Q29udGV4dENvbnRyb2xsZXIoKV07Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OnRvTGF5b3V0TWls
ZXN0b25lcyhzdGF0aWNfY2FzdDxXS0xheW91dE1pbGVzdG9uZXM+KG1pbGVzdG9uZXMpKTsKLSAg
ICB9CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1
dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUu
Z2V0KCk7CiAKLSAgICByZXR1cm4geyB9OworICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZTopXSkKKyAgICAgICAg
W2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBs
dWdpbkNvbnRleHRDb250cm9sbGVyIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZy
YW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSldOwogfQogCi12b2lkIFBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYs
IFdlYktpdDo6V2ViRnJhbWUmIGZyYW1lKQorc3RhdGljIHZvaWQgZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgaWYgKFtsb2FkRGVsZWdhdGUoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXI6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6KV0pCi0gICAgICAgIFtsb2Fk
RGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdp
bkNvbnRleHRDb250cm9sbGVyKCkgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6d3JhcHBl
cihmcmFtZSldOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2Ug
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsK
KyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERl
bGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lOildKQorICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xs
ZXIgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWU6d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwo
ZnJhbWUpKV07CiB9CiAKLVdURjo6U3RyaW5nIFBhZ2VMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudEZv
clVSTChXZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CitzdGF0
aWMgV0tTdHJpbmdSZWYgdXNlckFnZW50Rm9yVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBpZiAoW2xvYWREZWxl
Z2F0ZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjpmcmFtZTp1c2VyQWdlbnRGb3JVUkw6KV0pCi0gICAgICAgIHJl
dHVybiBbbG9hZERlbGVnYXRlKCkgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxlcigpIGZyYW1lOndyYXBwZXIoZnJhbWUpIHVzZXJB
Z2VudEZvclVSTDp1cmxdOwotICAgIHJldHVybiB7IH07CisgICAgYXV0byBwbHVnaW5Db250ZXh0
Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29u
dGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgCisgICAgaWYgKFtsb2Fk
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOnVzZXJBZ2VudEZvclVSTDopXSkgeworICAgICAg
ICBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqbmV3RnJhbWUgPSB3cmFwcGVyKCpXZWJLaXQ6OnRv
SW1wbChmcmFtZSkpOworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW2xvYWREZWxlZ2F0ZSB3
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250
cm9sbGVyIGZyYW1lOm5ld0ZyYW1lIHVzZXJBZ2VudEZvclVSTDp3cmFwcGVyKCpXZWJLaXQ6OnRv
SW1wbCh1cmwpKV07CisgICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilzdHJpbmcpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdEZvckZyYW1l
KFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmIGZyYW1lLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3N0YXRpYyB2b2lk
IHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIgKmNvbnRleHRDb250cm9sbGVyLCBXZWJLaXQ6OldlYlBhZ2UmIHBhZ2UpCiB7Ci0g
ICAgaWYgKFtsb2FkRGVsZWdhdGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZnJhbWU6d2lsbFNlbmRSZXF1ZXN0
Rm9yUmVzb3VyY2U6cmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOildKSB7Ci0gICAgICAgIFJldGFp
blB0cjxOU1VSTFJlcXVlc3Q+IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0
KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAg
ICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gc3Vic3RpdHV0ZVJlcXVlc3QgPSBbbG9hZERl
bGVnYXRlKCkgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5D
b250ZXh0Q29udHJvbGxlcigpIGZyYW1lOndyYXBwZXIoZnJhbWUpIHdpbGxTZW5kUmVxdWVzdEZv
clJlc291cmNlOnJlc291cmNlSWRlbnRpZmllcgotICAgICAgICAgICAgcmVxdWVzdDpvcmlnaW5h
bFJlcXVlc3QuZ2V0KCkgcmVkaXJlY3RSZXNwb25zZTpyZWRpcmVjdFJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKV07CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjkgY2xpZW50OworICAgIG1l
bXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKLSAgICAgICAgaWYgKHN1YnN0aXR1
dGVSZXF1ZXN0ICE9IG9yaWdpbmFsUmVxdWVzdCkgewotICAgICAgICAgICAgcmVxdWVzdCA9IHN1
YnN0aXR1dGVSZXF1ZXN0LmdldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOndpbGxTZW5k
UmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOildKSB7Ci0gICAgICAgIFJldGFpblB0cjxOU1VSTFJl
cXVlc3Q+IG9yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICAgICAgUmV0YWlu
UHRyPE5TVVJMUmVxdWVzdD4gc3Vic3RpdHV0ZVJlcXVlc3QgPSBbbG9hZERlbGVnYXRlKCkgd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJv
bGxlcigpIGZyYW1lOndyYXBwZXIoZnJhbWUpIHdpbGxTZW5kUmVxdWVzdDpvcmlnaW5hbFJlcXVl
c3QuZ2V0KCkKLSAgICAgICAgICAgIHJlZGlyZWN0UmVzcG9uc2U6cmVkaXJlY3RSZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCldOworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSA4OworICAgIGNsaWVu
dC5iYXNlLmNsaWVudEluZm8gPSAoX19icmlkZ2Ugdm9pZCopY29udGV4dENvbnRyb2xsZXI7Cisg
ICAgY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lOworICAgIGNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIGNsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUg
PSBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisgICAgY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lID0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU7CisgICAgY2xpZW50LmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBjbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZSA9IGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgY2xpZW50LmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZTsKKyAgICBjbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lOworICAgIGNsaWVudC5nbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lID0g
Z2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKKyAgICBjbGllbnQuZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5ID0gZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OworICAgIGNsaWVu
dC5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSA9IGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lOworICAgIGNsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFt
ZSA9IGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lOworICAgIGNsaWVudC51
c2VyQWdlbnRGb3JVUkwgPSB1c2VyQWdlbnRGb3JVUkw7CisKKyAgICBjbGllbnQuZGlkTGF5b3V0
Rm9yRnJhbWUgPSBkaWRMYXlvdXRGb3JGcmFtZTsKKyAgICBjbGllbnQuZGlkTGF5b3V0ID0gZGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmU7CisKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KHRvQVBJKCZwYWdlKSwgJmNsaWVudC5iYXNlKTsKK30KKworc3RhdGljIFdLVVJMUmVxdWVz
dFJlZiB3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVm
IHJlcXVlc3QsIFdLVVJMUmVzcG9uc2VSZWYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJp
ZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudElu
Zm87CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xv
YWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpm
cmFtZTp3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZTpyZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6
KV0pIHsKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3QgPSB3cmFwcGVyKCpX
ZWJLaXQ6OnRvSW1wbChyZXF1ZXN0KSk7CisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+
IHN1YnN0aXR1dGVSZXF1ZXN0ID0gW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGZyYW1lOndyYXBwZXIo
KldlYktpdDo6dG9JbXBsKGZyYW1lKSkgd2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6cmVzb3Vy
Y2VJZGVudGlmaWVyCisgICAgICAgICAgICByZXF1ZXN0Om9yaWdpbmFsUmVxdWVzdCByZWRpcmVj
dFJlc3BvbnNlOldlYktpdDo6dG9JbXBsKHJlZGlyZWN0UmVzcG9uc2UpLT5yZXNvdXJjZVJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpXTsKKworICAgICAgICBpZiAoc3Vic3RpdHV0ZVJlcXVlc3Qg
IT0gb3JpZ2luYWxSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVSZXF1ZXN0
ID8gV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aE5TVVJMUmVxdWVzdChzdWJzdGl0dXRlUmVxdWVzdC5n
ZXQoKSkgOiBudWxscHRyOworICAgIH0gZWxzZSBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI6ZnJhbWU6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6KV0pIHsKKyAgICAgICAg
TlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3QgPSB3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChy
ZXF1ZXN0KSk7CisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHN1YnN0aXR1dGVSZXF1
ZXN0ID0gW2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyIGZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBs
KGZyYW1lKSkgd2lsbFNlbmRSZXF1ZXN0Om9yaWdpbmFsUmVxdWVzdAorICAgICAgICAgICAgcmVk
aXJlY3RSZXNwb25zZTpXZWJLaXQ6OnRvSW1wbChyZWRpcmVjdFJlc3BvbnNlKS0+cmVzb3VyY2VS
ZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKV07CiAKLSAgICAgICAgaWYgKHN1YnN0aXR1dGVSZXF1
ZXN0ICE9IG9yaWdpbmFsUmVxdWVzdCkgewotICAgICAgICAgICAgcmVxdWVzdCA9IHN1YnN0aXR1
dGVSZXF1ZXN0LmdldCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAg
IGlmIChzdWJzdGl0dXRlUmVxdWVzdCAhPSBvcmlnaW5hbFJlcXVlc3QpCisgICAgICAgICAgICBy
ZXR1cm4gc3Vic3RpdHV0ZVJlcXVlc3QgPyBXS1VSTFJlcXVlc3RDcmVhdGVXaXRoTlNVUkxSZXF1
ZXN0KHN1YnN0aXR1dGVSZXF1ZXN0LmdldCgpKSA6IG51bGxwdHI7CiAgICAgfQorCisgICAgV0tS
ZXRhaW4ocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkQ2xpZW50OjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBX
ZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcGFnZUlzUHJvdmlzaW9u
YWxseUxvYWRpbmcpCitzdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1
bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGJvb2wgcGFnZUlzUHJvdmlzaW9uYWxs
eUxvYWRpbmcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgaWYgKFtsb2FkRGVsZWdh
dGUoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI6ZnJhbWU6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U6cmVxdWVz
dDpwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZzopXSkgewotICAgICAgICBbbG9hZERlbGVnYXRl
KCkgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0
Q29udHJvbGxlcigpIGZyYW1lOndyYXBwZXIoZnJhbWUpIGRpZEluaXRpYXRlTG9hZEZvclJlc291
cmNlOnJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KQorICAgIGF1dG8g
cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0
ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOworCisgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOmRpZEluaXRpYXRlTG9hZEZvclJl
c291cmNlOnJlcXVlc3Q6cGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmc6KV0pIHsKKyAgICAgICAg
W2xvYWREZWxlZ2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBs
dWdpbkNvbnRleHRDb250cm9sbGVyIGZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKGZyYW1l
KSkgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U6cmVzb3VyY2VJZGVudGlmaWVyIHJlcXVlc3Q6
d3JhcHBlcigqV2ViS2l0Ojp0b0ltcGwocmVxdWVzdCkpCiAgICAgICAgICAgICBwYWdlSXNQcm92
aXNpb25hbGx5TG9hZGluZzpwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZ107Ci0gICAgfSBlbHNl
IGlmIChbbG9hZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOmRpZEluaXRpYXRlTG9hZEZv
clJlc291cmNlOnJlcXVlc3Q6KV0pIHsKLSAgICAgICAgW2xvYWREZWxlZ2F0ZSgpIHdlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIo
KSBmcmFtZTp3cmFwcGVyKGZyYW1lKSBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZTpyZXNvdXJj
ZUlkZW50aWZpZXIgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIH0gZWxzZSBpZiAoW2xv
YWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZnJhbWU6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U6
cmVxdWVzdDopXSkgeworICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgZnJhbWU6d3JhcHBl
cigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZTpyZXNv
dXJjZUlkZW50aWZpZXIgcmVxdWVzdDp3cmFwcGVyKCpXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0KSld
OwogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JS
ZXNvdXJjZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiBmcmFtZSwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyKQorc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291
cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGlmIChbbG9h
ZERlbGVnYXRlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZTop
XSkgewotICAgICAgICBbbG9hZERlbGVnYXRlKCkgd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjpwbHVnaW5Db250ZXh0Q29udHJvbGxlcigpIGZyYW1lOndyYXBwZXIoZnJh
bWUpIGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZTpyZXNvdXJjZUlkZW50aWZpZXJdOworICAgIGF1
dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGxvYWREZWxl
Z2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOworCisg
ICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOmRpZEZpbmlzaExvYWRGb3JS
ZXNvdXJjZTopXSkgeworICAgICAgICBbbG9hZERlbGVnYXRlIHdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgZnJhbWU6d3JhcHBl
cigqV2ViS2l0Ojp0b0ltcGwoZnJhbWUpKSBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2U6cmVzb3Vy
Y2VJZGVudGlmaWVyXTsKICAgICB9CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkQ2xpZW50OjpkaWRG
YWlsTG9hZEZvclJlc291cmNlKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmIGZy
YW1lLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQorc3RhdGljIHZvaWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRs
ZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRp
ZmllciwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBp
ZiAoW2xvYWREZWxlZ2F0ZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpmcmFtZTpkaWRGYWlsTG9hZEZvclJlc291
cmNlOmVycm9yOildKSB7Ci0gICAgICAgIFtsb2FkRGVsZWdhdGUoKSB3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRleHRDb250cm9sbGVyKCkgZnJhbWU6
d3JhcHBlcihmcmFtZSkgZGlkRmFpbExvYWRGb3JSZXNvdXJjZTpyZXNvdXJjZUlkZW50aWZpZXIg
ZXJyb3I6ZXJyb3JdOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlk
Z2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5m
bzsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9h
ZERlbGVnYXRlLmdldCgpOworCisgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZy
YW1lOmRpZEZhaWxMb2FkRm9yUmVzb3VyY2U6ZXJyb3I6KV0pIHsKKyAgICAgICAgW2xvYWREZWxl
Z2F0ZSB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOnBsdWdpbkNvbnRl
eHRDb250cm9sbGVyIGZyYW1lOndyYXBwZXIoKldlYktpdDo6dG9JbXBsKGZyYW1lKSkgZGlkRmFp
bExvYWRGb3JSZXNvdXJjZTpyZXNvdXJjZUlkZW50aWZpZXIgZXJyb3I6d3JhcHBlcigqV2ViS2l0
Ojp0b0ltcGwoZXJyb3IpKV07CiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBzZXRVcFJlc291cmNl
TG9hZENsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNv
bnRleHRDb250cm9sbGVyLCBXZWJLaXQ6OldlYlBhZ2UmIHBhZ2UpCit7CisgICAgV0tCdW5kbGVQ
YWdlUmVzb3VyY2VMb2FkQ2xpZW50VjEgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBz
aXplb2YoY2xpZW50KSk7CisKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMTsKKyAgICBjbGll
bnQuYmFzZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIHZvaWQqKSBjb250ZXh0Q29udHJvbGxlcjsK
KyAgICBjbGllbnQud2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUgPSB3aWxsU2VuZFJlcXVlc3RGb3JG
cmFtZTsKKyAgICBjbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UgPSBkaWRJbml0aWF0
ZUxvYWRGb3JSZXNvdXJjZTsKKyAgICBjbGllbnQuZGlkRmluaXNoTG9hZEZvclJlc291cmNlID0g
ZGlkRmluaXNoTG9hZEZvclJlc291cmNlOworICAgIGNsaWVudC5kaWRGYWlsTG9hZEZvclJlc291
cmNlID0gZGlkRmFpbExvYWRGb3JSZXNvdXJjZTsKKworICAgIFdLQnVuZGxlUGFnZVNldFJlc291
cmNlTG9hZENsaWVudCh0b0FQSSgmcGFnZSksICZjbGllbnQuYmFzZSk7Cit9CisKIC0gKGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+KWxvYWREZWxlZ2F0ZQogewogICAgIHJldHVy
biBfbG9hZERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpOwpAQCAtMjk4LDExICszMzcsMTEgQEAg
LSAodm9pZClzZXRMb2FkRGVsZWdhdGU6KGlkIDxXS1dlYlByb2NlcwogICAgIF9sb2FkRGVsZWdh
dGUgPSBsb2FkRGVsZWdhdGU7CiAKICAgICBpZiAobG9hZERlbGVnYXRlKSB7Ci0gICAgICAgIF9w
YWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlTG9hZGVyQ2xpZW50PihzZWxmLCBsb2FkRGVsZWdhdGUpKTsKLSAgICAgICAgX3BhZ2UtPnNl
dEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UmVzb3Vy
Y2VMb2FkQ2xpZW50PihzZWxmLCBsb2FkRGVsZWdhdGUpKTsKKyAgICAgICAgc2V0VXBQYWdlTG9h
ZGVyQ2xpZW50KHNlbGYsICpfcGFnZSk7CisgICAgICAgIHNldFVwUmVzb3VyY2VMb2FkQ2xpZW50
KHNlbGYsICpfcGFnZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudChudWxscHRyKTsKLSAgICAgICAgX3BhZ2UtPnNldEluamVj
dGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG51bGxwdHIpOworICAgICAgICBXS0J1bmRsZVBh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJKF9wYWdlLmdldCgpKSwgbnVsbHB0cik7CisgICAg
ICAgIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudCh0b0FQSShfcGFnZS5nZXQoKSks
IG51bGxwdHIpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>