<?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>81088</bug_id>
          
          <creation_ts>2012-03-14 01:01:42 -0700</creation_ts>
          <short_desc>Web Inspector: extract CompilerScriptMapping from RawSourceCode.</short_desc>
          <delta_ts>2012-03-15 10:03:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578222</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-14 01:01:42 -0700</bug_when>
    <thetext>Web Inspector: extract CompilerScriptMapping from RawSourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578228</commentid>
    <comment_count>1</comment_count>
      <attachid>131804</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-14 01:09:16 -0700</bug_when>
    <thetext>Created attachment 131804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578484</commentid>
    <comment_count>2</comment_count>
      <attachid>131869</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-14 09:26:25 -0700</bug_when>
    <thetext>Created attachment 131869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579297</commentid>
    <comment_count>3</comment_count>
      <attachid>131869</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-15 05:32:55 -0700</bug_when>
    <thetext>Comment on attachment 131869
Patch

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

&gt; Source/WebCore/inspector/front-end/CompilerScriptMapping.js:1
&gt; +/*

Could you please add new file to compilation.

&gt; Source/WebCore/inspector/front-end/CompilerScriptMapping.js:137
&gt; +        for (var url in this._uiSourceCodeByURL) {

This loop does not make sense, you probably meant to dispatch the event once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579464</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-15 10:03:06 -0700</bug_when>
    <thetext>Committed r110856: &lt;http://trac.webkit.org/changeset/110856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131804</attachid>
            <date>2012-03-14 01:09:16 -0700</date>
            <delta_ts>2012-03-14 09:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81088-20120314120913.patch</filename>
            <type>text/plain</type>
            <size>49799</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMTAyNWYxZDQ2NGE4
OWU2NjU3NDY4ZjJmYjZjZTZiZjIyNTc4ZS4uOGUzZGU2MmM5MzZkZTU1OTAzMzdhYzJlMTg5ZTYy
MmQ3NGY1MmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTE0ICBQYXZl
bCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGV4dHJhY3QgQ29tcGlsZXJTY3JpcHRNYXBwaW5nIGZyb20gUmF3U291cmNlQ29kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUuZ2V0IHVp
U291cmNlQ29kZUxpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFw
cGluZy5wcm90b3R5cGUuYWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVz
dENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0Nv
bnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUGF5bG9hZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUuc291cmNlVVJM
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy5w
cm90b3R5cGUuZmluZEVudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGls
ZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5maW5kRW50cnlSZXZlcnNlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZS5zZXRGb3JtYXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLl9yZXNvdXJjZUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZS5fY3JlYXRlVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKwogMjAxMi0wMy0xMiAgVnNldm9sb2QgVmxh
c292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDaGFu
Z2VzIHRvIHRoZSBsaXN0IG9mIHNjcmlwdHMgZm9yIGZyb250LWVuZCBjb21waWxhdGlvbiBzaG91
bGQgbm90IHJlcXVpcmUgdXBkYXRlIG9mIG51bWJlciBvZiBzY3JpcHRzIGluIG1vZHVsZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3Vy
Y2VNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxl
clNvdXJjZU1hcHBpbmcuanMKaW5kZXggMjBkNTJkZWFiMTE5ODY5ZjVmMzY2MzA4OGIzMTg4ZTc2
YjE1Njk3NC4uODI2OWRiZGZmMjMwMmJhMWMxZGE3MDU0NjM0YmJmMzRlNjg0ODk4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxl
clNvdXJjZU1hcHBpbmcuanMKQEAgLTI5LDM4ICsyOSwxNTggQEAKICAqLwogCiAvKioKLSAqIEBp
bnRlcmZhY2UKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TY3Jp
cHRNYXBwaW5nfQogICovCiBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVu
Y3Rpb24oKQogeworICAgIHRoaXMuX3NvdXJjZU1hcEJ5VVJMID0ge307CisgICAgdGhpcy5fc291
cmNlTWFwRm9yU2NyaXB0SWQgPSB7fTsKKyAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAgPSBu
ZXcgTWFwKCk7CisgICAgdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgp
OworICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5D
b21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgIC8qKgorICAgICAqIEBwYXJh
bSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtX
ZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8KKyAgICByYXdMb2NhdGlvblRvVUlMb2Nh
dGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCisgICAgeworICAgICAgICB2YXIgc291cmNlTWFw
ID0gdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAg
ICAgICB2YXIgZW50cnkgPSBzb3VyY2VNYXAuZmluZEVudHJ5KHJhd0xvY2F0aW9uLmxpbmVOdW1i
ZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFtlbnRyeVsyXV0s
IGVudHJ5WzNdLCBlbnRyeVs0XSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCi0g
ICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9j
YXRpb259CiAgICAgICovCi0gICAgY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1
bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgeyB9LAorICAgIHVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKKyAgICB7CisgICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9zb3VyY2VNYXBGb3JVSVNv
dXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciBlbnRyeSA9IHNvdXJjZU1h
cC5maW5kRW50cnlSZXZlcnNlZCh1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHRo
aXMuX3NjcmlwdEZvclNvdXJjZU1hcC5nZXQoc291cmNlTWFwKSwgZW50cnlbMF0sIGVudHJ5WzFd
KTsKKyAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAot
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCi0gICAgICogQHJldHVybiB7QXJyYXku
PG51bWJlcj59CisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGU+fQogICAgICAqLwotICAgIHNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uOiBmdW5j
dGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIpIHsgfSwKKyAgICB1aVNvdXJjZUNvZGVMaXN0OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yICh2
YXIgdXJsIGluIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMKQorICAgICAgICAgICAgcmVzdWx0LnB1
c2godGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbdXJsXSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfSwKIAogICAgIC8qKgotICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KICAgICAgKi8KLSAgICBzb3VyY2VzOiBmdW5jdGlvbigpIHsgfQorICAgIGFkZFNj
cmlwdDogZnVuY3Rpb24oc2NyaXB0KQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZU1hcFVSTCA9
IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fY2Fu
b25pY2FsaXplVVJMKHNjcmlwdC5zb3VyY2VNYXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOworICAg
ICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwQnlVUkxbc291cmNlTWFwVVJMXTsK
KyAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3QgPSBbXTsKKyAgICAgICAgaWYgKCFzb3VyY2VN
YXApIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1ha2Ug
c2VuZFJlcXVlc3QgYXN5bmMuCisgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc291cmNlTWFwVVJMKTsK
KyAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykgPT09ICIpXX0iKQorICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlc3BvbnNlLnN1YnN0cmluZyhyZXNwb25zZS5p
bmRleE9mKCdcbicpKTsKKyAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmdQYXlsb2FkfSAqLyBKU09O
LnBhcnNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VNYXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcoc291cmNlTWFwVVJMLCBwYXlsb2Fk
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoZS5tZXNzYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZVVSTHMo
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlVVJMcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VVUkwgPSBzb3VyY2VVUkxzW2ldOworICAg
ICAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihzb3VyY2VVUkwpOworICAgICAgICAgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShzb3Vy
Y2VVUkwsIHNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyKTsKKyAgICAgICAgICAgICAgICB1aVNv
dXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0LmlzQ29udGVudFNjcmlwdDsKKyAgICAg
ICAgICAgICAgICB1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW3NvdXJjZVVSTF0gPSB1aVNvdXJjZUNvZGU7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJj
ZUNvZGUsIHNvdXJjZU1hcCk7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdC5wdXNo
KHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9zb3VyY2VNYXBGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFwOworICAg
ICAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAucHV0KHNvdXJjZU1hcCwgc2NyaXB0KTsKKyAg
ICAgICAgdmFyIGRhdGEgPSB7IHJlbW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6IHVpU291cmNl
Q29kZUxpc3QsIHNjcmlwdElkczogW3NjcmlwdC5zY3JpcHRJZF0gfTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRz
LlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciB1
cmwgaW4gdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkwpIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0g
eyByZW1vdmVkSXRlbXM6IHRoaXMudWlTb3VyY2VDb2RlTGlzdCgpLCBhZGRlZEl0ZW1zOiBbXSwg
c2NyaXB0SWRzOiBbXSB9OworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkLCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9zb3VyY2VNYXBCeVVSTCA9IHt9
OworICAgICAgICB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlz
Ll9zY3JpcHRGb3JTb3VyY2VNYXAgPSBuZXcgTWFwKCk7CisgICAgICAgIHRoaXMuX3NvdXJjZU1h
cEZvclVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rl
QnlVUkwgPSB7fTsKKyAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBp
bmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0
b3IuQ29udGVudFByb3ZpZGVyfQorICovCitXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBw
aW5nQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc291cmNlVVJMKQoreworICAgIHRoaXMuX21p
bWVUeXBlID0gInRleHQvamF2YXNjcmlwdCI7CisgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNl
VVJMOworfQorCitXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3Zp
ZGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmlu
ZyxzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlv
bihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHZhciBzb3VyY2VDb2RlID0gIiI7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAvLyBGSVhNRTogbWFrZSBzZW5kUmVxdWVzdCBhc3luYy4KKyAg
ICAgICAgICAgIHNvdXJjZUNvZGUgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZFJlc291cmNl
U3luY2hyb25vdXNseSh0aGlzLl9zb3VyY2VVUkwpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKKyAgICAgICAgfQorICAgICAgICBj
YWxsYmFjayh0aGlzLl9taW1lVHlwZSwgc291cmNlQ29kZSk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2Fz
ZVNlbnNpdGl2ZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0
Y2g+KX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1
ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGNh
bGxiYWNrKFtdKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBp
bmdDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250
ZW50UHJvdmlkZXIucHJvdG90eXBlOworCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCiBXZWJJ
bnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZ1BheWxvYWQgPSBmdW5jdGlvbigp
CiB7CisgICAgdGhpcy5zZWN0aW9ucyA9IFtdOwogICAgIHRoaXMubWFwcGluZ3MgPSAiIjsKICAg
ICB0aGlzLnNvdXJjZVJvb3QgPSAiIjsKICAgICB0aGlzLnNvdXJjZXMgPSBbXTsKQEAgLTY5LDEy
ICsxODksMTEgQEAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmdQYXls
b2FkID0gZnVuY3Rpb24oKQogLyoqCiAgKiBJbXBsZW1lbnRzIFNvdXJjZSBNYXAgVjMgY29uc3Vt
ZXIuIFNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2xvc3VyZS1jb21waWxlci93aWtpL1Nv
dXJjZU1hcHMKICAqIGZvciBmb3JtYXQgZGVzY3JpcHRpb24uCi0gKiBAaW1wbGVtZW50cyB7V2Vi
SW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30KICAqIEBjb25zdHJ1Y3RvcgogICogQHBh
cmFtIHtzdHJpbmd9IHNvdXJjZU1hcHBpbmdVUkwKLSAqIEBwYXJhbSB7c3RyaW5nfSBzY3JpcHRT
b3VyY2VPcmlnaW4KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJj
ZU1hcHBpbmdQYXlsb2FkfSBwYXlsb2FkCiAgKi8KLVdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGls
ZXJTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24oc291cmNlTWFwcGluZ1VSTCwgc2NyaXB0U291cmNl
T3JpZ2luKQorV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcgPSBmdW5j
dGlvbihzb3VyY2VNYXBwaW5nVVJMLCBwYXlsb2FkKQogewogICAgIGlmICghV2ViSW5zcGVjdG9y
LkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9iYXNlNjRNYXApIHsKICAg
ICAgICAgY29uc3QgYmFzZTY0RGlnaXRzID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwpAQCAtODMsNzggKzIwMiwyNSBA
QCBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHNv
dXJjZU1hcHBpbmdVUkwsIHNjcmlwdFNvdQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNsb3N1
cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9iYXNlNjRNYXBbYmFzZTY0RGlnaXRz
LmNoYXJBdChpKV0gPSBpOwogICAgIH0KIAotICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdVUkwgPSB0
aGlzLl9jYW5vbmljYWxpemVVUkwoc291cmNlTWFwcGluZ1VSTCwgc2NyaXB0U291cmNlT3JpZ2lu
KTsKKyAgICB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlTWFwcGluZ1VSTDsKICAgICB0
aGlzLl9tYXBwaW5ncyA9IFtdOwogICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJM
ID0ge307CisgICAgdGhpcy5fcGFyc2VNYXBwaW5nUGF5bG9hZChwYXlsb2FkKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAg
IC8qKgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgbG9hZDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNl
bmRSZXF1ZXN0IGFzeW5jLgotICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodGhpcy5fc291cmNlTWFwcGluZ1VS
TCk7Ci0gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykgPT09ICIpXX0iKQotICAg
ICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2Uuc3Vic3RyaW5nKHJlc3BvbnNlLmluZGV4
T2YoJ1xuJykpOwotICAgICAgICAgICAgdGhpcy5fcGFyc2VNYXBwaW5nUGF5bG9hZChKU09OLnBh
cnNlKHJlc3BvbnNlKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZQotICAgICAgICB9IGNhdGNo
KGUpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1i
ZXIKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9Ci0gICAgICovCi0gICAgY29tcGlsZWRMb2NhdGlv
blRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAg
ICB7Ci0gICAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fZmluZE1hcHBpbmcobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIHsgc291cmNlVVJMOiBtYXBwaW5nWzJdLCBs
aW5lTnVtYmVyOiBtYXBwaW5nWzNdLCBjb2x1bW5OdW1iZXI6IG1hcHBpbmdbNF0gfTsKLSAgICB9
LAotCi0gICAgc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgbGluZU51bWJlcikKLSAgICB7Ci0gICAgICAgIHZhciBtYXBwaW5ncyA9IHRoaXMuX3Jl
dmVyc2VNYXBwaW5nc0J5U291cmNlVVJMW3NvdXJjZVVSTF07Ci0gICAgICAgIGZvciAoIDsgbGlu
ZU51bWJlciA8IG1hcHBpbmdzLmxlbmd0aDsgKytsaW5lTnVtYmVyKSB7Ci0gICAgICAgICAgICB2
YXIgbWFwcGluZyA9IG1hcHBpbmdzW2xpbmVOdW1iZXJdOwotICAgICAgICAgICAgaWYgKG1hcHBp
bmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFttYXBwaW5nWzBdLCBtYXBwaW5nWzFdXTsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5n
Pn0KICAgICAgKi8KLSAgICBzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgc291cmNlVVJMczogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZXMgPSBbXTsKKyAgICAgICAgdmFyIHNv
dXJjZVVSTHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgc291cmNlVVJMIGluIHRoaXMuX3JldmVy
c2VNYXBwaW5nc0J5U291cmNlVVJMKQotICAgICAgICAgICAgc291cmNlcy5wdXNoKHNvdXJjZVVS
TCk7Ci0gICAgICAgIHJldHVybiBzb3VyY2VzOworICAgICAgICAgICAgc291cmNlVVJMcy5wdXNo
KHNvdXJjZVVSTCk7CisgICAgICAgIHJldHVybiBzb3VyY2VVUkxzOwogICAgIH0sCiAKLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCi0gICAgICogQHJldHVybiB7c3Ry
aW5nfQotICAgICAqLwotICAgIGxvYWRTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VVUkwpCi0g
ICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2VuZFJlcXVl
c3QgYXN5bmMuCi0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoc291cmNlVVJMKTsKLSAgICAgICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgICAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4g
IiI7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2ZpbmRNYXBwaW5nOiBmdW5jdGlvbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgZmluZEVudHJ5OiBmdW5jdGlvbihsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgZmlyc3QgPSAwOwogICAgICAgICB2
YXIgY291bnQgPSB0aGlzLl9tYXBwaW5ncy5sZW5ndGg7CkBAIC0xNzIsNiArMjM4LDE3IEBAIFdl
Ykluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzW2ZpcnN0XTsKICAgICB9LAogCisgICAgZmluZEVu
dHJ5UmV2ZXJzZWQ6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlcikKKyAgICB7CisgICAg
ICAgIHZhciBtYXBwaW5ncyA9IHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJMW3NvdXJj
ZVVSTF07CisgICAgICAgIGZvciAoIDsgbGluZU51bWJlciA8IG1hcHBpbmdzLmxlbmd0aDsgKyts
aW5lTnVtYmVyKSB7CisgICAgICAgICAgICB2YXIgbWFwcGluZyA9IG1hcHBpbmdzW2xpbmVOdW1i
ZXJdOworICAgICAgICAgICAgaWYgKG1hcHBpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
cHBpbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzWzBdOworICAg
IH0sCisKICAgICBfcGFyc2VNYXBwaW5nUGF5bG9hZDogZnVuY3Rpb24obWFwcGluZ1BheWxvYWQp
CiAgICAgewogICAgICAgICBpZiAobWFwcGluZ1BheWxvYWQuc2VjdGlvbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMK
aW5kZXggOWYzNzM2YTNjZmM1OTIzYzk3ZDAzNTYzYzZkNGEwZTk0YTQ0N2ZjZi4uYjE0YmJjNGNk
MzQ5MTI1NWQ1ODhlNWU2MjIxM2RhZjA2MzM5M2ZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcwpAQCAtMjQzLDQx
ICsyNDMsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50UAogICogQGNvbnN0cnVjdG9yCiAgKiBA
aW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0KICAqLwotV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKQotewotICAgIHRoaXMuX21pbWVUeXBlID0gInRl
eHQvamF2YXNjcmlwdCI7Ci0gICAgdGhpcy5fc291cmNlVVJMID0gc291cmNlVVJMOwotICAgIHRo
aXMuX2NvbXBpbGVyU291cmNlTWFwcGluZyA9IGNvbXBpbGVyU291cmNlTWFwcGluZzsKLX0KLQot
V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5
cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsc3RyaW5nKX0g
Y2FsbGJhY2sKLSAgICAgKi8KLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICB2YXIgc291cmNlQ29kZSA9IHRoaXMuX2NvbXBpbGVyU291cmNlTWFw
cGluZy5sb2FkU291cmNlQ29kZSh0aGlzLl9zb3VyY2VVUkwpOwotICAgICAgICBjYWxsYmFjayh0
aGlzLl9taW1lVHlwZSwgc291cmNlQ29kZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBxdWVyeQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FzZVNlbnNpdGl2
ZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNSZWdleAotICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oQXJyYXkuPFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIuU2VhcmNoTWF0Y2g+KX0gY2Fs
bGJhY2sKLSAgICAgKi8KLSAgICBzZWFyY2hJbkNvbnRlbnQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjYXNl
U2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNrKFtd
KTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50
UHJvdmlkZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlk
ZXIucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxlbWVudHMge1dl
Ykluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9Ci0gKi8KIFdlYkluc3BlY3Rvci5TdGF0aWNDb250
ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCkKIHsKICAgICB0aGlzLl9t
aW1lVHlwZSA9IG1pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCmluZGV4IDRjMDQ2MzY0ZGNhNzgzMjEzMTI5NWVmMjBh
MmQ2YTlhYzcxMmQ2MGEuLjg3YTY3OWZlOTdkMTlmMmUwODY0MDg5Mjg5N2M3YzkxMTg4ZmEyZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNl
Q29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJj
ZUNvZGUuanMKQEAgLTM5LDkgKzM5LDggQEAKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291
cmNlfSByZXNvdXJjZQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyfSBm
b3JtYXR0ZXIKICAqIEBwYXJhbSB7Ym9vbGVhbn0gZm9ybWF0dGVkCi0gKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmd9IGNvbXBpbGVyU291cmNlTWFwcGluZwogICov
Ci1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291
cmNlLCBmb3JtYXR0ZXIsIGZvcm1hdHRlZCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKQorV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCByZXNvdXJjZSwgZm9y
bWF0dGVyLCBmb3JtYXR0ZWQpCiB7CiAgICAgdGhpcy5pZCA9IGlkOwogICAgIHRoaXMudXJsID0g
c2NyaXB0LnNvdXJjZVVSTDsKQEAgLTQ5LDEwICs0OCw5IEBAIFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgcmVzb3VyY2UsIGZvcm1hdHRlciwgZm9ybWF0
dGVkCiAgICAgdGhpcy5fc2NyaXB0cyA9IFtzY3JpcHRdOwogICAgIHRoaXMuX2Zvcm1hdHRlciA9
IGZvcm1hdHRlcjsKICAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7Ci0gICAgdGhpcy5f
Y29tcGlsZXJTb3VyY2VNYXBwaW5nID0gY29tcGlsZXJTb3VyY2VNYXBwaW5nOwogICAgIHRoaXMu
X3Jlc291cmNlID0gcmVzb3VyY2U7CiAKLSAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0g
IXRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZyAmJiB0aGlzLl9yZXNvdXJjZSAmJiAhdGhpcy5f
cmVzb3VyY2UuZmluaXNoZWQ7CisgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IHRoaXMu
X3Jlc291cmNlICYmICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsKICAgICB0aGlzLl9oYXNOZXdT
Y3JpcHRzID0gdHJ1ZTsKICAgICBpZiAoIXRoaXMuX3VzZVRlbXBvcmFyeUNvbnRlbnQpCiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKQEAgLTExNiwxNCArMTE0LDExIEBAIFdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMu
X2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7Ci0gICAgICAgIGlmICghdGhpcy5fY29tcGlsZXJT
b3VyY2VNYXBwaW5nKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwor
ICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAogICAgIF9yZXNv
dXJjZUZpbmlzaGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY29tcGls
ZXJTb3VyY2VNYXBwaW5nKQotICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl91c2VU
ZW1wb3JhcnlDb250ZW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBp
bmcoKTsKICAgICB9LApAQCAtMTc4LDI2ICsxNzMsNiBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NyZWF0ZVNvdXJjZU1hcHBpbmc6IGZ1
bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2NvbXBpbGVyU291cmNl
TWFwcGluZykgewotICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSB0aGlzLl9jb21waWxlclNvdXJj
ZU1hcHBpbmcubG9hZCgpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZzsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IFtdOwotICAgICAgICAgICAgdmFy
IHNvdXJjZVVSTHMgPSB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmcuc291cmNlcygpOwotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNvdXJjZVVSTHNbaV07Ci0gICAgICAgICAg
ICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3Vy
Y2VNYXBwaW5nQ29udGVudFByb3ZpZGVyKHNvdXJjZVVSTCwgdGhpcy5fY29tcGlsZXJTb3VyY2VN
YXBwaW5nKTsKLSAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRl
VUlTb3VyY2VDb2RlKHNvdXJjZVVSTCwgc291cmNlVVJMLCBjb250ZW50UHJvdmlkZXIpOwotICAg
ICAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3QucHVzaCh1aVNvdXJjZUNvZGUpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nKHRoaXMsIHVpU291cmNlQ29kZUxp
c3QsIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZyk7Ci0gICAgICAgICAgICBjYWxsYmFjayhz
b3VyY2VNYXBwaW5nKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAg
IHZhciBvcmlnaW5hbENvbnRlbnRQcm92aWRlciA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRQcm92aWRl
cigpOwogICAgICAgICBpZiAoIXRoaXMuX2Zvcm1hdHRlZCkgewogICAgICAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZSh0aGlzLnVybCwgdGhpcy51cmws
IG9yaWdpbmFsQ29udGVudFByb3ZpZGVyKTsKQEAgLTIzOSw4ICsyMTQsNyBAQCBXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoaWQsIHVybCwgY29udGVudFBy
b3ZpZGVyKTsKICAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IHRoaXMuaXND
b250ZW50U2NyaXB0OwotICAgICAgICB1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSA9IHRoaXMuX3Nj
cmlwdHMubGVuZ3RoID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXRo
aXMuX3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgIXRoaXMuX2Zvcm1hdHRlZCAmJiAhdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5n
OworICAgICAgICB1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSA9IHRoaXMuX3NjcmlwdHMubGVuZ3Ro
ID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXRoaXMuX3NjcmlwdHNb
MF0uY29sdW1uT2Zmc2V0ICYmICF0aGlzLl9mb3JtYXR0ZWQ7CiAgICAgICAgIHJldHVybiB1aVNv
dXJjZUNvZGU7CiAgICAgfSwKIApAQCAtMzczLDU1ICszNDcsNiBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogLyoqCiAg
KiBAY29uc3RydWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5Tb3VyY2VNYXBwaW5nfQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0g
cmF3U291cmNlQ29kZQotICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZT59IHVpU291cmNlQ29kZUxpc3QKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291
cmNlTWFwcGluZ30gbWFwcGluZwotICovCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Db21w
aWxlclNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGVM
aXN0LCBtYXBwaW5nKQotewotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2Rl
OwotICAgIHRoaXMuX3VpU291cmNlQ29kZUxpc3QgPSB1aVNvdXJjZUNvZGVMaXN0OwotICAgIHRo
aXMuX21hcHBpbmcgPSBtYXBwaW5nOwotICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMID0ge307
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKQot
ICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFt1aVNvdXJjZUNvZGVMaXN0W2ldLnVybF0g
PSB1aVNvdXJjZUNvZGVMaXN0W2ldOwotfQotCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5D
b21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJh
bSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KLSAgICAgKi8KLSAgICByYXdM
b2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCi0gICAgewotICAgICAg
ICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBwaW5nLmNvbXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxv
Y2F0aW9uKHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8
fCAwKTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUJ5VVJM
W2xvY2F0aW9uLnNvdXJjZVVSTF07Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb24odWlTb3VyY2VDb2RlLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1
bW5OdW1iZXIpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5l
TnVtYmVyCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgotICAgICAqIEByZXR1
cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259Ci0gICAgICovCi0gICAgdWlMb2NhdGlvblRvUmF3
TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQotICAgIHsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5zb3VyY2VMb2Nh
dGlvblRvQ29tcGlsZWRMb2NhdGlvbih1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyKTsKLSAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9u
KHRoaXMuX3Jhd1NvdXJjZUNvZGUuX3NjcmlwdHNbMF0sIGxvY2F0aW9uWzBdLCBsb2NhdGlvblsx
XSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlPn0KLSAgICAgKi8KLSAgICB1aVNvdXJjZUNvZGVMaXN0OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VDb2RlTGlzdDsKLSAgICB9
Ci19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9IHVpU291cmNlQ29kZQogICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAq
IEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKaW5kZXgg
Mzc5NmZmNDZmOWNmOGRhOTMwOWE3YTY1N2RmNmI1ZGE2Y2JjOTNjYS4uNTQwNTA1N2VlNTIzNDU1
YzliMzg3NGM2ZmZjNDcwODEyNjRlNzBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKQEAgLTEw
MCwxMSArMTAwLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29tcGlsZXJT
b3VyY2VNYXBwaW5nID0gbnVsbDsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5z
b3VyY2VNYXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKQotICAgICAgICAg
ICAgY29tcGlsZXJTb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGls
ZXJTb3VyY2VNYXBwaW5nKHNjcmlwdC5zb3VyY2VNYXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOwot
Ci0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlKHNjcmlwdC5zY3JpcHRJZCwgc2NyaXB0LCByZXNvdXJjZSwgdGhpcy5fZm9ybWF0dGVyLCB0
aGlzLl9mb3JtYXRTb3VyY2UsIGNvbXBpbGVyU291cmNlTWFwcGluZyk7CisgICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHNjcmlwdC5zY3Jp
cHRJZCwgc2NyaXB0LCByZXNvdXJjZSwgdGhpcy5fZm9ybWF0dGVyLCB0aGlzLl9mb3JtYXRTb3Vy
Y2UpOwogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rlcy5wdXNoKHJhd1NvdXJjZUNvZGUpOwog
ICAgICAgICB0aGlzLl9iaW5kU2NyaXB0VG9SYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmF3U291cmNl
Q29kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0TWFwcGluZy5qcwppbmRleCAzMDk0ZDkzZTA4MzNkNjM0OGYxNzEyYmIxMTdjNzhlOGYyMDhh
OTkyLi5iMDFiNmNkZmJjYTE0NDBjN2RkMmNjMjdjNTYxZjI1OTZlNTA1MjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCkBA
IC03MSw4ICs3MSwxMiBAQCBXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcgPSBmdW5jdGlv
bigpCiB7CiAgICAgdGhpcy5fbWFwcGluZ3MgPSBbXTsKICAgICB0aGlzLl9yZXNvdXJjZU1hcHBp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZygpOwotICAgIHRoaXMu
X3Jlc291cmNlTWFwcGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBw
aW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VD
b2RlTGlzdENoYW5nZWQsIHRoaXMpOwogICAgIHRoaXMuX21hcHBpbmdzLnB1c2godGhpcy5fcmVz
b3VyY2VNYXBwaW5nKTsKKyAgICB0aGlzLl9jb21waWxlck1hcHBpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZygpOworICAgIHRoaXMuX21hcHBpbmdzLnB1c2godGhp
cy5fY29tcGlsZXJNYXBwaW5nKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFw
cGluZ3MubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX21hcHBpbmdzW2ldLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RD
aGFuZ2VkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CiAKICAg
ICB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0SWQgPSB7fTsKICAgICB0aGlzLl9tYXBwaW5nRm9yVUlT
b3VyY2VDb2RlID0gbmV3IE1hcCgpOwpAQCAtMTU1LDEwICsxNTksMTQgQEAgV2ViSW5zcGVjdG9y
Lk1haW5TY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX2xp
dmVMb2NhdGlvbnNGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gW107CiAKLSAgICAgICAg
dmFyIG1hcHBpbmcgPSB0aGlzLl9yZXNvdXJjZU1hcHBpbmc7CisgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJsZWQuZ2V0KCkgJiYgc2NyaXB0LnNvdXJjZU1h
cFVSTCkgeworICAgICAgICAgICAgdGhpcy5fbWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3Jp
cHRJZF0gPSB0aGlzLl9jb21waWxlck1hcHBpbmc7CisgICAgICAgICAgICBpZiAodGhpcy5fY29t
cGlsZXJNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZFtzY3JpcHQuc2Ny
aXB0SWRdID0gbWFwcGluZzsKLSAgICAgICAgbWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKKyAg
ICAgICAgdGhpcy5fbWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSB0aGlzLl9y
ZXNvdXJjZU1hcHBpbmc7CisgICAgICAgIHRoaXMuX3Jlc291cmNlTWFwcGluZy5hZGRTY3JpcHQo
c2NyaXB0KTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmZjMWViYTM3MzEwNDE3MDNmMTE2
YmI4ZTU1MGQzNGMyNjI2ODYzOS4uOGRiZmY4ZTZlNDQ1MzNhZDg4MDQyODc3ZTI3OTA0Y2NmZjE1
ZTk1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTE0ICBQYXZlbCBQb2Rpdmlsb3Yg
IDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJh
Y3QgQ29tcGlsZXJTY3JpcHRNYXBwaW5nIGZyb20gUmF3U291cmNlQ29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmcuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZV9EZWJ1Z2dlclRlc3QuKToKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWw6CisKIDIw
MTItMDMtMTMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHNraXAgbmV3IGZhaWxpbmcgdGVzdCBvbiBHVEsuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGlu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxl
ci1zb3VyY2UtbWFwcGluZy1leHBlY3RlZC50eHQKaW5kZXggN2FmOWIzMjE0OGU5ZDIxMDAwZDcw
NTgwMjgxNzk1MDliODA0OTY5Zi4uN2EyOWIxMDVhNTAxNGI1ODFkN2Y2YWJlOTRhMzI2Y2NiMzIy
Njk2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGls
ZXItc291cmNlLW1hcHBpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtMTEs
NSArMTEsNyBAQCBSdW5uaW5nOiB0ZXN0U2VjdGlvbnMKIAogUnVubmluZzogdGVzdFJlc29sdmVT
b3VyY2VNYXBwaW5nVVJMCiAKLVJ1bm5pbmc6IHRlc3RMb2FkCitSdW5uaW5nOiB0ZXN0Q29tcGls
ZXJTY3JpcHRNYXBwaW5nCisKK1J1bm5pbmc6IHRlc3RDb21waWxlclNvdXJjZU1hcHBpbmdDb3Vs
ZE5vdEJlTG9hZGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy5odG1sCmluZGV4IDZkMjQ0Zjg5OWI4
OWE0ODNlZDg3MjQzOGNlYmVlMGEzZDEzYzM1NWUuLjI1ZGY0OWZjYjI4Zjg2MGRhMjc2ZTY3YTZl
NWM3NWVhZmY2OWIyZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmcuaHRtbApAQCAtMSw2ICsxLDcg
QEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImRlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0
PgogCkBAIC04LDE3ICs5LDE3IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGZ1bmN0aW9uIGNo
ZWNrTWFwcGluZyhjb21waWxlZExpbmVOdW1iZXIsIGNvbXBpbGVkQ29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwsIHNvdXJjZUxpbmVOdW1iZXIsIHNvdXJjZUNvbHVtbk51bWJlciwgbWFwcGluZykKICAg
ICB7Ci0gICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IG1hcHBpbmcuY29tcGlsZWRMb2NhdGlv
blRvU291cmNlTG9jYXRpb24oY29tcGlsZWRMaW5lTnVtYmVyLCBjb21waWxlZENvbHVtbk51bWJl
cik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZVVSTCwgc291cmNl
TG9jYXRpb24uc291cmNlVVJMKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
c291cmNlTGluZU51bWJlciwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcik7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZUNvbHVtbk51bWJlciwgc291cmNlTG9jYXRp
b24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdmFyIGVudHJ5ID0gbWFwcGluZy5maW5kRW50cnko
Y29tcGlsZWRMaW5lTnVtYmVyLCBjb21waWxlZENvbHVtbk51bWJlcik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZVVSTCwgZW50cnlbMl0pOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhzb3VyY2VMaW5lTnVtYmVyLCBlbnRyeVszXSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZUNvbHVtbk51bWJlciwgZW50cnlb
NF0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNoZWNrUmV2ZXJzZU1hcHBpbmcoY29tcGlsZWRM
aW5lTnVtYmVyLCBjb21waWxlZENvbHVtbk51bWJlciwgc291cmNlVVJMLCBzb3VyY2VMaW5lTnVt
YmVyLCBtYXBwaW5nKQogICAgIHsKLSAgICAgICAgdmFyIGNvbXBpbGVkTG9jYXRpb24gPSBtYXBw
aW5nLnNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uKHNvdXJjZVVSTCwgc291cmNlTGlu
ZU51bWJlcik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvbXBpbGVkTGlu
ZU51bWJlciwgY29tcGlsZWRMb2NhdGlvblswXSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGNvbXBpbGVkQ29sdW1uTnVtYmVyLCBjb21waWxlZExvY2F0aW9uWzFdKTsKKyAg
ICAgICAgdmFyIGVudHJ5ID0gbWFwcGluZy5maW5kRW50cnlSZXZlcnNlZChzb3VyY2VVUkwsIHNv
dXJjZUxpbmVOdW1iZXIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb21w
aWxlZExpbmVOdW1iZXIsIGVudHJ5WzBdKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoY29tcGlsZWRDb2x1bW5OdW1iZXIsIGVudHJ5WzFdKTsKICAgICB9CiAKICAgICBJbnNw
ZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCkBAIC00NCw4ICs0NSw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgICAgICJtYXBwaW5ncyI6IkFBQVNBLFFBQUFBLElBQUcsQ0FBQ0MsQ0FB
RCxDQUFhQyxDQUFiLENBQ1osQ0FDSSxNQUFPRCxFQUFQLENBQW9CQyxDQUR4QixDQUlBLElBQUlD
LE9BQVM7IiwKICAgICAgICAgICAgICAgICAic291cmNlcyI6WyJleGFtcGxlLmpzIl0KICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xv
c3VyZUNvbXBpbGVyU291cmNlTWFwcGluZygpOwotICAgICAgICAgICAgbWFwcGluZy5fcGFyc2VN
YXBwaW5nUGF5bG9hZChtYXBwaW5nUGF5bG9hZCk7CisgICAgICAgICAgICB2YXIgbWFwcGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZygnbWFwLmpzb24n
LCBtYXBwaW5nUGF5bG9hZCk7CiAKICAgICAgICAgICAgIGNoZWNrTWFwcGluZygwLCA5LCAiZXhh
bXBsZS5qcyIsIDAsIDksIG1hcHBpbmcpOwogICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAsIDEz
LCAiZXhhbXBsZS5qcyIsIDAsIDEzLCBtYXBwaW5nKTsKQEAgLTU5LDcgKzU5LDYgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICBjaGVja1JldmVyc2VNYXBwaW5nKDAsIDE4LCAiZXhhbXBs
ZS5qcyIsIDIsIG1hcHBpbmcpOwogICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAy
OSwgImV4YW1wbGUuanMiLCA0LCBtYXBwaW5nKTsKICAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1h
cHBpbmcoMCwgMjksICJleGFtcGxlLmpzIiwgNSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydFRydWUoIW1hcHBpbmcuc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9j
YXRpb24oImV4YW1wbGUuanMiLCA2KSk7CiAKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAg
fSwKQEAgLTcwLDggKzY5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgIm1h
cHBpbmdzIjoiQUFBQSxDLENBQUU7IiwKICAgICAgICAgICAgICAgICAic291cmNlcyI6WyJleGFt
cGxlLmpzIl0KICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB2YXIgbWFwcGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZygpOwotICAgICAgICAgICAg
bWFwcGluZy5fcGFyc2VNYXBwaW5nUGF5bG9hZChtYXBwaW5nUGF5bG9hZCk7CisgICAgICAgICAg
ICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFw
cGluZygnbWFwLmpzb24nLCBtYXBwaW5nUGF5bG9hZCk7CiAgICAgICAgICAgICBjaGVja01hcHBp
bmcoMCwgMCwgImV4YW1wbGUuanMiLCAwLCAwLCBtYXBwaW5nKTsKICAgICAgICAgICAgIGNoZWNr
TWFwcGluZygwLCAyLCAiZXhhbXBsZS5qcyIsIDAsIDIsIG1hcHBpbmcpOwogICAgICAgICAgICAg
bmV4dCgpOwpAQCAtODMsOCArODEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAg
ICAibWFwcGluZ3MiOiJBQUFBOzs7Q0FDQSIsCiAgICAgICAgICAgICAgICAgInNvdXJjZXMiOlsi
ZXhhbXBsZS5qcyJdCiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIG1hcHBpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcoKTsKLSAgICAgICAg
ICAgIG1hcHBpbmcuX3BhcnNlTWFwcGluZ1BheWxvYWQobWFwcGluZ1BheWxvYWQpOworICAgICAg
ICAgICAgdmFyIG1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJj
ZU1hcHBpbmcoJ21hcC5qc29uJywgbWFwcGluZ1BheWxvYWQpOwogICAgICAgICAgICAgY2hlY2tN
YXBwaW5nKDAsIDAsICJleGFtcGxlLmpzIiwgMCwgMCwgbWFwcGluZyk7CiAgICAgICAgICAgICBj
aGVja1JldmVyc2VNYXBwaW5nKDMsIDEsICJleGFtcGxlLmpzIiwgMSwgbWFwcGluZyk7CiAgICAg
ICAgICAgICBuZXh0KCk7CkBAIC0xMDcsOSArMTA0LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBdfTsKLSAg
ICAgICAgICAgIHZhciBtYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJT
b3VyY2VNYXBwaW5nKCk7Ci0gICAgICAgICAgICBtYXBwaW5nLl9wYXJzZU1hcHBpbmdQYXlsb2Fk
KG1hcHBpbmdQYXlsb2FkKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KDIsIG1hcHBpbmcuc291cmNlcygpLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbWFwcGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZygnbWFwLmpzb24n
LCBtYXBwaW5nUGF5bG9hZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygyLCBtYXBwaW5nLnNvdXJjZVVSTHMoKS5sZW5ndGgpOwogICAgICAgICAgICAgY2hlY2tNYXBw
aW5nKDAsIDAsICJzb3VyY2UxLmpzIiwgMCwgMCwgbWFwcGluZyk7CiAgICAgICAgICAgICBjaGVj
a01hcHBpbmcoMCwgMSwgInNvdXJjZTEuanMiLCAyLCAxLCBtYXBwaW5nKTsKICAgICAgICAgICAg
IGNoZWNrTWFwcGluZygyLCAxMCwgInNvdXJjZTIuanMiLCAwLCAwLCBtYXBwaW5nKTsKQEAgLTEy
NiwyMyArMTIyLDU2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RMb2FkKG5leHQpCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RDb21waWxlclNjcmlwdE1hcHBpbmcobmV4dCkKICAgICAgICAgewotICAgICAgICAg
ICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNv
dXJjZU1hcHBpbmcoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Nv
dXJjZS1tYXAuanNvbiIpOwotICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSBzb3VyY2VNYXBwaW5n
LmxvYWQoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShzdWNjZXNzKTsK
LQotICAgICAgICAgICAgdmFyIHNvdXJjZXMgPSBzb3VyY2VNYXBwaW5nLnNvdXJjZXMoKTsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHNvdXJjZXMubGVuZ3RoKTsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJodHRwOi8vbG9jYWxob3N0
OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzIiwgc291cmNlc1swXSk7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMi5qcyIsIHNvdXJjZXNbMV0pOwotCi0gICAgICAg
ICAgICB2YXIgc291cmNlQ29kZTEgPSBzb3VyY2VNYXBwaW5nLmxvYWRTb3VyY2VDb2RlKHNvdXJj
ZU1hcHBpbmcuc291cmNlcygpWzBdKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKDAsIHNvdXJjZUNvZGUxLmluZGV4T2YoIndpbmRvdy5hZGRFdmVudExpc3RlbmVyIikp
OworICAgICAgICAgICAgdmFyIG1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291
cmNlTWFwcGluZygpOworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHsgc2NyaXB0SWQ6IDEsIHNv
dXJjZU1hcFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3Nv
dXJjZS1tYXAuanNvbiIgfTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
Ll9zY3JpcHRzWzFdID0gc2NyaXB0OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCkpOworCisgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlTGlzdCA9IG1hcHBpbmcudWlTb3VyY2VDb2RlTGlzdCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlTb3VyY2VDb2RlTGlzdC5sZW5ndGgpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9pbnNwZWN0b3IvcmVzb3VyY2VzL3NvdXJjZTEuanMiLCB1aVNvdXJjZUNvZGVMaXN0WzBdLnVy
bCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMi5qcyIsIHVpU291cmNlQ29kZUxp
c3RbMV0udXJsKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24o
dWlTb3VyY2VDb2RlTGlzdFswXSwgNCwgNCwgbWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3JpcHQsIDAs
IDgxKSkpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlTGlzdFswXSwgNSwgNCwgbWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3JpcHQsIDAsIDkzKSkp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2Rl
TGlzdFsxXSwgNywgNCwgbWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3JpcHQsIDEsIDE1MSkpKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMCwgNDIs
IG1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlTGlzdFswXSwgMywg
MTApKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQs
IDEsIDg1LCBtYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZUxpc3Rb
MV0sIDAsIDApKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihz
Y3JpcHQsIDEsIDExMCwgbWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNv
ZGVMaXN0WzFdLCA1LCAyKSk7CisKKyAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3RbMF0ucmVx
dWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQxKTsKKworICAgICAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdENvbnRlbnQxKG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDAsIGNvbnRlbnQuaW5kZXhP
Zigid2luZG93LmFkZEV2ZW50TGlzdGVuZXIiKSk7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VD
b2RlTGlzdFsxXS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudDIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudDIobWltZVR5cGUs
IGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoMCwgY29udGVudC5pbmRleE9mKCJmdW5jdGlvbiBDbGlja0hhbmRsZXIoKSIp
KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAK
LSAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlMiA9IHNvdXJjZU1hcHBpbmcubG9hZFNvdXJjZUNv
ZGUoc291cmNlTWFwcGluZy5zb3VyY2VzKClbMV0pOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoMCwgc291cmNlQ29kZTIuaW5kZXhPZigiZnVuY3Rpb24gQ2xpY2tIYW5k
bGVyKCkiKSk7Ci0gICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIGZ1bmN0aW9uIHRlc3RDb21w
aWxlclNvdXJjZU1hcHBpbmdDb3VsZE5vdEJlTG9hZGVkKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBtYWluU2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuTWFpblNjcmlw
dE1hcHBpbmcoKTsKKyAgICAgICAgICAgIG1haW5TY3JpcHRNYXBwaW5nLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0
Q2hhbmdlZCwgdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQpOworCisgICAgICAgICAgICB2YXIgc2Ny
aXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAs
IHRydWUsICIiKTsKKyAgICAgICAgICAgIHNjcmlwdC5zb3VyY2VNYXBVUkwgPSAiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlLW1hcC5qc29uXyI7CisgICAg
ICAgICAgICBtYWluU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKKworICAgICAgICAg
ICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQoZXZlbnQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgZXZlbnQuZGF0
YS5hZGRlZEl0ZW1zLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoImNvbXBpbGVkLmpzIiwgZXZlbnQuZGF0YS5hZGRlZEl0ZW1zWzBdLnVybCk7Cisg
ICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgXSk7
CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMKaW5kZXggZGNjODg3ZjI5NjRmOGYwYTUwMDZmNzA5MDMzODQ5Y2JmOTNhM2U1Yy4uYWU2
OTgxYzQ3MzQ5N2M3ODM1ZTRjMjRmODc5MDhmNWU2ODkwNGU4NSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0yODIsNCArMjgy
LDMyIEBAIEluc3BlY3RvclRlc3QucXVlcnlTY3JpcHRzID0gZnVuY3Rpb24oZmlsdGVyKQogICAg
IHJldHVybiBzY3JpcHRzOwogfTsKIAorSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrID0g
ZnVuY3Rpb24odXJsLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNv
dXJjZSkKK3sKKyAgICB2YXIgc2NyaXB0SWQgPSArK0luc3BlY3RvclRlc3QuX2xhc3RTY3JpcHRJ
ZDsKKyAgICB2YXIgbGluZUNvdW50ID0gc291cmNlLmxpbmVFbmRpbmdzKCkubGVuZ3RoOworICAg
IHZhciBlbmRMaW5lID0gc3RhcnRMaW5lICsgbGluZUNvdW50IC0gMTsKKyAgICB2YXIgZW5kQ29s
dW1uID0gbGluZUNvdW50ID09PSAxID8gc3RhcnRDb2x1bW4gKyBzb3VyY2UubGVuZ3RoIDogc291
cmNlLmxlbmd0aCAtIHNvdXJjZS5saW5lRW5kaW5ncygpW2xpbmVDb3VudCAtIDJdOworICAgIHZh
ciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChzY3JpcHRJZCwgdXJsLCBzdGFydExp
bmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCk7Cisg
ICAgc2NyaXB0LnJlcXVlc3RTb3VyY2UgPSBmdW5jdGlvbihjYWxsYmFjaykgeyBjYWxsYmFjayhz
b3VyY2UpOyB9OworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9zY3JpcHRzW3Njcmlw
dElkXSA9IHNjcmlwdDsKKyAgICByZXR1cm4gc2NyaXB0OworfQorCitJbnNwZWN0b3JUZXN0Ll9s
YXN0U2NyaXB0SWQgPSAwOworCitJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24gPSBmdW5j
dGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbG9jYXRpb24pCit7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc2NyaXB0LnNjcmlwdElkLCBsb2NhdGlvbi5zY3Jp
cHRJZCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobGluZU51bWJlciwgbG9jYXRp
b24ubGluZU51bWJlcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29sdW1uTnVt
YmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworfTsKKworSW5zcGVjdG9yVGVzdC5jaGVja1VJ
TG9jYXRpb24gPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbG9jYXRpb24pCit7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModWlTb3VyY2VD
b2RlLCBsb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKGxpbmVOdW1iZXIsIGxvY2F0aW9uLmxpbmVOdW1iZXIpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKGNvbHVtbk51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKK307CisK
IH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJj
ZS1jb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXct
c291cmNlLWNvZGUtZXhwZWN0ZWQudHh0CmluZGV4IDEwNmI1NWM1NmMzMTJkODBjNzdiNzYzM2U0
NDg5ZDAyZWFmYzRhMWEuLmZkYTY1NWZhNTMwNGEyYzEwYmVkZTc4MTA3YjQ0YTNkYmM5ZGQ1NzEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNv
ZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXct
c291cmNlLWNvZGUtZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsxMywzIEBAIFJ1bm5pbmc6IHRlc3RG
b3JtYXR0aW5nV2l0aEZpbmlzaGVkUmVzb3VyY2UKIAogUnVubmluZzogdGVzdEZvcm1hdHRpbmdX
aXRoUGVuZGluZ1Jlc291cmNlCiAKLVJ1bm5pbmc6IHRlc3RDb21waWxlclNvdXJjZU1hcHBpbmcK
LQotUnVubmluZzogdGVzdENvbXBpbGVyU291cmNlTWFwcGluZ0NvdWxkTm90QmVMb2FkZWQKLQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29k
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5o
dG1sCmluZGV4IDJiYWJlZDU1MzcxNTZkNGUzZTExYzZiNjAyNWU0ODQ4MmFlNThiZDYuLjYwMjc1
NzMzNmQwZDlhODcyZDk5MjBkNjE2MmZjMmZiMDdhOTc0ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTEsMjIgKzEs
MTIgQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgogCiA8c2NyaXB0
PgogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBmdW5jdGlvbiBjcmVhdGVTY3JpcHRNb2NrKHVy
bCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2UpCi0gICAg
ewotICAgICAgICB2YXIgbGluZUNvdW50ID0gc291cmNlLmxpbmVFbmRpbmdzKCkubGVuZ3RoOwot
ICAgICAgICB2YXIgZW5kTGluZSA9IHN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7Ci0gICAgICAg
IHZhciBlbmRDb2x1bW4gPSBsaW5lQ291bnQgPT09IDEgPyBzdGFydENvbHVtbiArIHNvdXJjZS5s
ZW5ndGggOiBzb3VyY2UubGVuZ3RoIC0gc291cmNlLmxpbmVFbmRpbmdzKClbbGluZUNvdW50IC0g
Ml07Ci0gICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgxLCB1cmws
IHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2Ny
aXB0KTsKLSAgICAgICAgc2NyaXB0LnJlcXVlc3RTb3VyY2UgPSBmdW5jdGlvbihjYWxsYmFjaykg
eyBjYWxsYmFjayhzb3VyY2UpOyB9OwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5fc2NyaXB0c1sxXSA9IHNjcmlwdDsKLSAgICAgICAgcmV0dXJuIHNjcmlwdDsKLSAgICB9Ci0K
ICAgICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZU1vY2sodHlwZSwgZmluaXNoZWQsIGNvbnRlbnQp
CiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB7fTsKQEAgLTczLDMyICs2MywxOSBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgcmV0dXJuIHsgbGluZU51bWJlcjogbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjaGVj
a1Jhd0xvY2F0aW9uKHNjcmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsb2NhdGlvbikK
LSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNjcmlwdC5zY3JpcHRJ
ZCwgbG9jYXRpb24uc2NyaXB0SWQpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyhsaW5lTnVtYmVyLCBsb2NhdGlvbi5saW5lTnVtYmVyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoY29sdW1uTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbG9jYXRpb24pCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh1aVNvdXJjZUNvZGUsIGxvY2F0aW9uLnVpU291cmNlQ29kZSk7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGxpbmVOdW1iZXIsIGxvY2F0aW9uLmxpbmVO
dW1iZXIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb2x1bW5OdW1iZXIs
IGxvY2F0aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgfQotCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5U
ZXN0U3VpdGUoWwogICAgICAgICBmdW5jdGlvbiB0ZXN0U2NyaXB0V2l0aG91dFJlc291cmNlKG5l
eHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQgPSBjcmVhdGVTY3JpcHRNb2Nr
KCJmb28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fc2NyaXB0cyA9IFtdOworICAgICAgICAgICAgdmFy
IHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiZm9vLmpzIiwgMCwgMCwg
dHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOwogICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgbnVsbCk7CiAKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgp
Lmxlbmd0aCk7CiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGVMaXN0KClbMF07CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscygiZm9vLmpzIiwgdWlTb3VyY2VDb2RlLnVybCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyh0cnVlLCB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKLSAg
ICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHJhd1NvdXJjZUNv
ZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMCwgNSkpKTsKLSAg
ICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxMCwgMCwgcmF3U291cmNlQ29kZS51
aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEwLCAwKSk7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHJhd1Nv
dXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMCwgNSkp
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEw
LCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwg
MTAsIDApKTsKICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1
ZXN0Q29udGVudCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1p
bWVUeXBlLCBjb250ZW50KQpAQCAtMTExLDggKzg4LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICAgICAgZnVuY3Rpb24gdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRt
bCIsIDAsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7Ci0gICAgICAgICAgICB2YXIg
c2NyaXB0MiA9IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8
c2NyaXB0IHNvdXJjZSAyPiIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuX3NjcmlwdHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQxID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgMTAsIGZhbHNlLCAiPHNjcmlwdCBz
b3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2Ug
Mj4iKTsKICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1v
Y2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwogICAgICAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJlc291cmNlKTsKIApA
QCAtMTQzLDggKzEyMSw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIHRl
c3RIVE1MV2l0aEZpbmlzaGVkUmVzb3VyY2UobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAg
dmFyIHNjcmlwdDEgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZhbHNl
LCAiPHNjcmlwdCBzb3VyY2UgMT4iKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRl
U2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDUsIDQ1LCBmYWxzZSwgIjxzY3JpcHRcbnNvdXJjZVxu
Mj4iKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9zY3JpcHRzID0g
W107CisgICAgICAgICAgICB2YXIgc2NyaXB0MSA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0
TW9jaygiaW5kZXguaHRtbCIsIDEsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7Cisg
ICAgICAgICAgICB2YXIgc2NyaXB0MiA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygi
aW5kZXguaHRtbCIsIDUsIDQ1LCBmYWxzZSwgIjxzY3JpcHRcbnNvdXJjZVxuMj4iKTsKICAgICAg
ICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZUZpbmlzaGVkUmVzb3VyY2VNb2NrKCJkb2N1bWVu
dCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKICAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2Rl
ID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXNvdXJjZSk7CiAKQEAgLTE2MSw5ICsx
NDAsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUu
YWRkU2NyaXB0KHNjcmlwdDIpOwogICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuZm9yY2VV
cGRhdGVTb3VyY2VNYXBwaW5nKCk7Ci0gICAgICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVp
U291cmNlQ29kZSwgMSwgMjAsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24o
Y3JlYXRlUmF3TG9jYXRpb24oMSwgMjApKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tSYXdMb2Nh
dGlvbihzY3JpcHQxLCAxLCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9u
KHVpU291cmNlQ29kZSwgMSwgMCkpOwotICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24o
c2NyaXB0MiwgNiwgMCwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNv
dXJjZUNvZGUsIDYsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlM
b2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIwLCByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIwKSkpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxLCAwLCByYXdTb3VyY2VDb2Rl
LnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwgMCkpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA2LCAwLCByYXdT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgNiwgMCkpOwog
CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtMTcxLDkgKzE1MCwx
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9yY2VVcGRhdGVT
b3VyY2VNYXBwaW5nKG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQxID0g
Y3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291
cmNlIDE+Iik7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0MiA9IGNyZWF0ZVNjcmlwdE1vY2soImlu
ZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAyPiIpOwotICAgICAgICAg
ICAgdmFyIHNjcmlwdDMgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZh
bHNlLCAiPHNjcmlwdCBzb3VyY2UgMz4iKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLl9zY3JpcHRzID0gW107CisgICAgICAgICAgICB2YXIgc2NyaXB0MSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDEwLCBmYWxzZSwgIjxz
Y3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MiA9IEluc3BlY3RvclRl
c3QuY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDQ1LCBmYWxzZSwgIjxzY3JpcHQg
c291cmNlIDI+Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MyA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDEsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNl
IDM+Iik7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVQZW5kaW5nUmVzb3VyY2VN
b2NrKCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKICAgICAgICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXNvdXJjZSk7CiAK
QEAgLTIzNywxNCArMjE3LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9u
IHRlc3RGb3JtYXR0aW5nV2l0aEZpbmlzaGVkUmVzb3VyY2UobmV4dCkKICAgICAgICAgewotICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRy
dWUsICI8c2NyaXB0IHNvdXJjZT4iKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLl9zY3JpcHRzID0gW107CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJmb28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3Vy
Y2U+Iik7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVGaW5pc2hlZFJlc291cmNl
TW9jaygic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwogICAgICAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2UsIGZhbHNl
KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3U291cmNl
Q29kZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKICAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKVswXTsKLSAgICAgICAgICAg
IGNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIsIHJhd1NvdXJjZUNvZGUucmF3TG9j
YXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKLSAgICAgICAgICAg
IGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAyLCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAxLCAyLCByYXdTb3VyY2VDb2RlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIpKSk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAyLCAwLCByYXdTb3Vy
Y2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOwogICAg
ICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsK
IAogICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRl
bnQpCkBAIC0yNjEsOCArMjQyLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3U291cmNlQ29k
ZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKICAgICAgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KClbMF07Ci0gICAgICAgICAg
ICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgcmF3U291cmNlQ29kZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAg
ICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAwLCByYXdTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgcmF3
U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAy
KSkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3Jp
cHQsIDEsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VD
b2RlLCAyLCAwKSk7CiAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50
KGRpZFJlcXVlc3RGb3JtYXR0ZWRDb250ZW50KTsKICAgICAgICAgICAgIH0KIApAQCAtMjc5LDgg
KzI2MCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
TGlzdCgpLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1Nv
dXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgpWzBdOwotICAgICAgICAgICAgICAgIGNoZWNrVUlM
b2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKLSAgICAgICAgICAgICAgICBjaGVj
a1Jhd0xvY2F0aW9uKHNjcmlwdCwgMiwgMCwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdM
b2NhdGlvbih1aVNvdXJjZUNvZGUsIDIsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIsIHJhd1NvdXJjZUNvZGUucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAyLCAwLCByYXdT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOwog
ICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Tm90
Rm9ybWF0dGVkQ29udGVudCk7CiAgICAgICAgICAgICB9CiAKQEAgLTI5NSw3ICsyNzYsOCBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybWF0dGluZ1dpdGhQZW5k
aW5nUmVzb3VyY2UobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNy
ZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNvdXJjZT4iKTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9zY3JpcHRzID0gW107Cisg
ICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJm
b28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CiAgICAgICAgICAgICB2YXIg
cmVzb3VyY2UgPSBjcmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNl
IGNvbnRlbnQ+Iik7CiAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1Nv
dXJjZUNvZGUoc2NyaXB0LCByZXNvdXJjZSwgdHJ1ZSk7CiAKQEAgLTMwOCw3MyArMjkwLDEwIEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKDEsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgpLmxl
bmd0aCk7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUu
dWlTb3VyY2VDb2RlTGlzdCgpWzBdOwotICAgICAgICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbih1
aVNvdXJjZUNvZGUsIDIsIDQsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24o
Y3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKLSAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0
aW9uKHNjcmlwdCwgMSwgMCwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1
aVNvdXJjZUNvZGUsIDIsIDApKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0sCi0KLSAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBpbGVyU291cmNlTWFw
cGluZyhuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgY29tcGlsZXJTb3VyY2VNYXBw
aW5nTW9jayA9IHsKLSAgICAgICAgICAgICAgICBjb21waWxlZExvY2F0aW9uVG9Tb3VyY2VMb2Nh
dGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPCAxMCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZVVSTDogInNvdXJjZTEuanMiLCBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyICogMiwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgKiAyIH07Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZVVSTDogInNvdXJjZTIuanMiLCBsaW5lTnVt
YmVyOiAobGluZU51bWJlciAtIDEwKSAqIDIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyICog
MiB9OwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc291cmNlTG9jYXRpb25U
b0NvbXBpbGVkTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlcikKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VVUkwgPT09ICJzb3Vy
Y2UxLmpzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbTWF0aC5mbG9vcihsaW5l
TnVtYmVyIC8gMiksIDBdOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW01hdGguZmxvb3Io
bGluZU51bWJlciAvIDIpICsgMTAsIDBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgc291cmNlczogZnVuY3Rpb24oKSB7IHJldHVybiBbInNvdXJjZTEuanMiLCAic291cmNl
Mi5qcyJdOyB9LAotICAgICAgICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1
ZTsgfSwKLSAgICAgICAgICAgICAgICBsb2FkU291cmNlQ29kZTogZnVuY3Rpb24odXJsKSB7IHJl
dHVybiAiPGNvbnRlbnQgb2YgIiArIHVybCArICI+IjsgfQotICAgICAgICAgICAgfTsKLQotICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwgMCwg
MCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOwotICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
Y3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIp
OwotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNj
cmlwdCwgcmVzb3VyY2UsIGZhbHNlLCBjb21waWxlclNvdXJjZU1hcHBpbmdNb2NrKTsKLSAgICAg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0OwotCi0gICAgICAgICAgICB1aVNvdXJjZUNvZGVM
aXN0ID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KCk7Ci0gICAgICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlQnlVUkwgPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dWlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB1aVNvdXJjZUNv
ZGVCeVVSTFt1aVNvdXJjZUNvZGVMaXN0W2ldLnVybF0gPSB1aVNvdXJjZUNvZGVMaXN0W2ldOwot
ICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UxLmpz
Il0sIDIsIDQsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3
TG9jYXRpb24oMSwgMikpKTsKLSAgICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGVCeVVSTFsic291cmNlMi5qcyJdLCAxMCwgNDAsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMTUsIDIwKSkpOwotICAgICAgICAgICAgY2hl
Y2tSYXdMb2NhdGlvbihzY3JpcHQsIDEsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24odWlTb3VyY2VDb2RlQnlVUkxbInNvdXJjZTEuanMiXSwgMiwgMCkpOwotICAgICAg
ICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDE1LCAwLCByYXdTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UyLmpzIl0sIDEwLCAw
KSk7Ci0KLSAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3RbMF0ucmVxdWVzdENvbnRlbnQoZGlk
UmVxdWVzdENvbnRlbnQxKTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRl
bnQxKG1pbWVUeXBlLCBjb250ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0L2phdmFzY3JpcHQiLCBtaW1lVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxjb250ZW50IG9mIHNv
dXJjZTEuanM+IiwgY29udGVudCk7Ci0gICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdFsx
XS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudDIpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudDIobWltZVR5cGUsIGNvbnRlbnQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoInRleHQvamF2YXNjcmlwdCIsIG1pbWVUeXBlKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygiPGNvbnRlbnQgb2Ygc291cmNlMi5qcz4iLCBjb250ZW50KTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIDIsIDQsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3
TG9jYXRpb24oMSwgMikpKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3
TG9jYXRpb24oc2NyaXB0LCAxLCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0
aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbiB0ZXN0Q29tcGlsZXJTb3Vy
Y2VNYXBwaW5nQ291bGROb3RCZUxvYWRlZChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2
YXIgY29tcGlsZXJTb3VyY2VNYXBwaW5nTW9jayA9IHsgbG9hZDogZnVuY3Rpb24oKSB7IHJldHVy
biBmYWxzZTsgfSB9OwotCi0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9j
aygiY29tcGlsZWQuanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7Ci0gICAgICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCBudWxs
LCBmYWxzZSwgY29tcGlsZXJTb3VyY2VNYXBwaW5nTW9jayk7Ci0KLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgp
Lmxlbmd0aCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiY29tcGls
ZWQuanMiLCByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKVswXS51cmwpOwotICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICB9CiAgICAgXSk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131869</attachid>
            <date>2012-03-14 09:26:25 -0700</date>
            <delta_ts>2012-03-15 05:32:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81088-20120314202622.patch</filename>
            <type>text/plain</type>
            <size>43837</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ0ZDQ4ZGZiZmIzNTcw
YmYzNWFlY2M2Nzc4ZmY3MGNjNmYwYWQwZC4uM2IyYmQyZjUxMDQ4NDFmMGU2Nzk5YmNhMTEwMzll
ZDM3ZWVlM2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTE0ICBQYXZl
bCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGV4dHJhY3QgQ29tcGlsZXJTY3JpcHRNYXBwaW5nIGZyb20gUmF3U291cmNlQ29kZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuZ2V0
IHVpU291cmNlQ29kZUxpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0
TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0LmdldCB0aGlzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5sb2FkU291cmNl
TWFwRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBp
bmcucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1Nv
dXJjZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuc2V0Rm9ybWF0dGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fcmVzb3VyY2VG
aW5pc2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUu
X2NyZWF0ZVVJU291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlw
ZS5hZGRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0TWFwcGlu
Zy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTItMDMtMTQgIE1hcmphIEjDtmx0dMOkICA8
bWFyamFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWJIVFRQQm9keTogS2VlcCB0cmFjayBvZiB3
aGV0aGVyIHRoZSBkYXRhIGluY2x1ZGVzIHBhc3N3b3Jkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1
NzEyZmQ0NDFiNTFjMjQ2ZmJmOTFlYWZhMThkOGEyOWM0MTFiOGRlLi43NmZlMDk4ZjUzYzAyZTky
OTZjMzE2Y2ZiMzg0NDE5MWU4NzE4M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MTY1LDYgKzYx
NjUsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJh
clBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ2hlY2tib3guanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanMnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAzNGM1YjAwZDVlYTFl
ZDFmOTUyOTYzMjUzNThmNWI5NDJkOTMyYWIzLi5lMjA5YTgxNTNkMzU2YmZjMDMyZjA5OWQ2OGUz
NTNlZjNjODg1NDJjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtNzMzMDUsNiArNzMzMDUsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29tcGls
ZXJTY3JpcHRNYXBwaW5nLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDb21waWxlclNvdXJjZU1hcHBp
bmcuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggNmQwYzZiNWVlNTRmZThhN2U2OTRlODVkZDhkMzlj
MzZjMmNhOGVjYy4uNTg5ZGVmZjI4Njc0NTQzZTdiZTRiYTJlZjliNmY2OGMyNDQ2M2ZiMSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtNjEs
NiArNjEsNyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkluc3BlY3RvckJhY2tlbmQuanMi
LAogICAgICAgICAgICAgIkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qcyIsCiAgICAgICAgICAgICAi
Q29sb3IuanMiLAorICAgICAgICAgICAgIkNvbXBpbGVyU2NyaXB0TWFwcGluZy5qcyIsCiAgICAg
ICAgICAgICAiQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJDb25zb2xl
TW9kZWwuanMiLAogICAgICAgICAgICAgIkNvbnRlbnRQcm92aWRlcnMuanMiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBp
bmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0
TWFwcGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDY1ZTQzMDRiODAxMGZiN2U5OWI2Y2Q3ZGNkYTY2ZjJl
YzNhZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nfQorICov
CitXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQoreworICAg
IHRoaXMuX3NvdXJjZU1hcEJ5VVJMID0ge307CisgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0
SWQgPSB7fTsKKyAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAgPSBuZXcgTWFwKCk7CisgICAg
dGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3Vp
U291cmNlQ29kZUJ5VVJMID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1h
cHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlM
b2NhdGlvbn0KKyAgICAgKi8KKyAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24o
cmF3TG9jYXRpb24pCisgICAgeworICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNl
TWFwRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICB2YXIgbG9jYXRp
b24gPSBzb3VyY2VNYXAuY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb24ocmF3TG9jYXRp
b24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbbG9jYXRpb24uc291cmNl
VVJMXTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0KKyAgICAgKi8KKyAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rp
b24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAg
ICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwRm9yVUlTb3VyY2VDb2RlLmdldCh1aVNv
dXJjZUNvZGUpOworICAgICAgICB2YXIgbG9jYXRpb24gPSBzb3VyY2VNYXAuc291cmNlTG9jYXRp
b25Ub0NvbXBpbGVkTG9jYXRpb24odWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcik7CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbih0
aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAuZ2V0KHNvdXJjZU1hcCksIGxvY2F0aW9uWzBdLCBsb2Nh
dGlvblsxXSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNvZGVMaXN0OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yICh2
YXIgdXJsIGluIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMKQorICAgICAgICAgICAgcmVzdWx0LnB1
c2godGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbdXJsXSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0g
c2NyaXB0CisgICAgICovCisgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgewor
ICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlw
dCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3NjcmlwdEZvclNvdXJjZU1hcC5nZXQoc291cmNlTWFw
KSkgeworICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlw
dElkXSA9IHNvdXJjZU1hcDsKKyAgICAgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRlbXM6
IFtdLCBhZGRlZEl0ZW1zOiBbXSwgc2NyaXB0SWRzOiBbc2NyaXB0LnNjcmlwdElkXSB9OworICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlw
dE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRhKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0g
W107CisgICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgc291cmNlVVJMID0gc291cmNlVVJMc1tpXTsKKyAgICAgICAgICAgIGlmICh0aGlz
Ll91aVNvdXJjZUNvZGVCeVVSTFtzb3VyY2VVUkxdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29t
cGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyKHNvdXJjZVVSTCwgc291cmNlTWFwKTsK
KyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZShzb3VyY2VVUkwsIHNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyKTsKKyAgICAgICAgICAg
IHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXNDb250ZW50U2NyaXB0Owor
ICAgICAgICAgICAgdWlTb3VyY2VDb2RlLmlzRWRpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAg
IHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW3NvdXJjZVVSTF0gPSB1aVNvdXJjZUNvZGU7CisgICAg
ICAgICAgICB0aGlzLl9zb3VyY2VNYXBGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwg
c291cmNlTWFwKTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3QucHVzaCh1aVNvdXJjZUNv
ZGUpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbc2Ny
aXB0LnNjcmlwdElkXSA9IHNvdXJjZU1hcDsKKyAgICAgICAgdGhpcy5fc2NyaXB0Rm9yU291cmNl
TWFwLnB1dChzb3VyY2VNYXAsIHNjcmlwdCk7CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVk
SXRlbXM6IFtdLCBhZGRlZEl0ZW1zOiB1aVNvdXJjZUNvZGVMaXN0LCBzY3JpcHRJZHM6IFtzY3Jp
cHQuc2NyaXB0SWRdIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwg
ZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNj
cmlwdH0gc2NyaXB0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxl
clNvdXJjZU1hcHBpbmd9CisgICAgICovCisgICAgbG9hZFNvdXJjZU1hcEZvclNjcmlwdDogZnVu
Y3Rpb24oc2NyaXB0KQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZU1hcFVSTCA9IFdlYkluc3Bl
Y3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fY2Fub25pY2FsaXpl
VVJMKHNjcmlwdC5zb3VyY2VNYXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICB2YXIg
c291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwQnlVUkxbc291cmNlTWFwVVJMXTsKKyAgICAgICAg
aWYgKHNvdXJjZU1hcCkKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXA7CisKKyAgICAgICAg
c291cmNlTWFwID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5n
KHNjcmlwdC5zb3VyY2VNYXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICBpZiAoIXNv
dXJjZU1hcC5sb2FkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB0aGlz
Ll9zb3VyY2VNYXBCeVVSTFtzb3VyY2VNYXBVUkxdID0gc291cmNlTWFwOworICAgICAgICByZXR1
cm4gc291cmNlTWFwOworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgZm9yICh2YXIgdXJsIGluIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMKSB7CisgICAgICAg
ICAgICB2YXIgZGF0YSA9IHsgcmVtb3ZlZEl0ZW1zOiB0aGlzLnVpU291cmNlQ29kZUxpc3QoKSwg
YWRkZWRJdGVtczogW10sIHNjcmlwdElkczogW10gfTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNv
dXJjZUNvZGVMaXN0Q2hhbmdlZCwgZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc291
cmNlTWFwQnlVUkwgPSB7fTsKKyAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWQgPSB7
fTsKKyAgICAgICAgdGhpcy5fc2NyaXB0Rm9yU291cmNlTWFwID0gbmV3IE1hcCgpOworICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZUJ5VVJMID0ge307CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ29t
cGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2Ny
aXB0TWFwcGluZy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKaW5kZXggNGMwNDYzNjRkY2E3ODMyMTMxMjk1ZWYy
MGEyZDZhOWFjNzEyZDYwYS4uZTQxYTlkMTJjZTc0MTNlZDc2ZTcwYTg3YTRkZTUzNzljYTVhYWVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3Vy
Y2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291
cmNlQ29kZS5qcwpAQCAtMzksOSArMzksOCBAQAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVz
b3VyY2V9IHJlc291cmNlCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXJ9
IGZvcm1hdHRlcgogICogQHBhcmFtIHtib29sZWFufSBmb3JtYXR0ZWQKLSAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30gY29tcGlsZXJTb3VyY2VNYXBwaW5nCiAg
Ki8KLVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgcmVz
b3VyY2UsIGZvcm1hdHRlciwgZm9ybWF0dGVkLCBjb21waWxlclNvdXJjZU1hcHBpbmcpCitXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291cmNlLCBm
b3JtYXR0ZXIsIGZvcm1hdHRlZCkKIHsKICAgICB0aGlzLmlkID0gaWQ7CiAgICAgdGhpcy51cmwg
PSBzY3JpcHQuc291cmNlVVJMOwpAQCAtNDksMTAgKzQ4LDkgQEAgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCByZXNvdXJjZSwgZm9ybWF0dGVyLCBmb3Jt
YXR0ZWQKICAgICB0aGlzLl9zY3JpcHRzID0gW3NjcmlwdF07CiAgICAgdGhpcy5fZm9ybWF0dGVy
ID0gZm9ybWF0dGVyOwogICAgIHRoaXMuX2Zvcm1hdHRlZCA9IGZvcm1hdHRlZDsKLSAgICB0aGlz
Ll9jb21waWxlclNvdXJjZU1hcHBpbmcgPSBjb21waWxlclNvdXJjZU1hcHBpbmc7CiAgICAgdGhp
cy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKIAotICAgIHRoaXMuX3VzZVRlbXBvcmFyeUNvbnRlbnQg
PSAhdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nICYmIHRoaXMuX3Jlc291cmNlICYmICF0aGlz
Ll9yZXNvdXJjZS5maW5pc2hlZDsKKyAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gdGhp
cy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNlLmZpbmlzaGVkOwogICAgIHRoaXMuX2hhc05l
d1NjcmlwdHMgPSB0cnVlOwogICAgIGlmICghdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCkKICAg
ICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwpAQCAtMTE2LDE0ICsxMTQsMTEgQEAg
V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhp
cy5fZm9ybWF0dGVkID09PSBmb3JtYXR0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHRoaXMuX2Zvcm1hdHRlZCA9IGZvcm1hdHRlZDsKLSAgICAgICAgaWYgKCF0aGlzLl9jb21waWxl
clNvdXJjZU1hcHBpbmcpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7
CisgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCiAgICAgX3Jl
c291cmNlRmluaXNoZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jb21w
aWxlclNvdXJjZU1hcHBpbmcpCi0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3Vz
ZVRlbXBvcmFyeUNvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFw
cGluZygpOwogICAgIH0sCkBAIC0xNzgsMjYgKzE3Myw2IEBAIFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY3JlYXRlU291cmNlTWFwcGluZzog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3Vy
Y2VNYXBwaW5nKSB7Ci0gICAgICAgICAgICB2YXIgc3VjY2VzcyA9IHRoaXMuX2NvbXBpbGVyU291
cmNlTWFwcGluZy5sb2FkKCk7Ci0gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nOwotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gW107Ci0gICAgICAgICAgICB2
YXIgc291cmNlVVJMcyA9IHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZy5zb3VyY2VzKCk7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZVVSTHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc291cmNlVVJMID0gc291cmNlVVJMc1tpXTsKLSAgICAgICAg
ICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNv
dXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIoc291cmNlVVJMLCB0aGlzLl9jb21waWxlclNvdXJj
ZU1hcHBpbmcpOwotICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVh
dGVVSVNvdXJjZUNvZGUoc291cmNlVVJMLCBzb3VyY2VVUkwsIGNvbnRlbnRQcm92aWRlcik7Ci0g
ICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdC5wdXNoKHVpU291cmNlQ29kZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcodGhpcywgdWlTb3VyY2VDb2Rl
TGlzdCwgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHNvdXJjZU1hcHBpbmcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAg
ICAgdmFyIG9yaWdpbmFsQ29udGVudFByb3ZpZGVyID0gdGhpcy5fY3JlYXRlQ29udGVudFByb3Zp
ZGVyKCk7CiAgICAgICAgIGlmICghdGhpcy5fZm9ybWF0dGVkKSB7CiAgICAgICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlKHRoaXMudXJsLCB0aGlzLnVy
bCwgb3JpZ2luYWxDb250ZW50UHJvdmlkZXIpOwpAQCAtMjM5LDggKzIxNCw3IEBAIFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShpZCwgdXJsLCBjb250ZW50
UHJvdmlkZXIpOwogICAgICAgICB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gdGhpcy5p
c0NvbnRlbnRTY3JpcHQ7Ci0gICAgICAgIHVpU291cmNlQ29kZS5pc0VkaXRhYmxlID0gdGhpcy5f
c2NyaXB0cy5sZW5ndGggPT09IDEgJiYgIXRoaXMuX3NjcmlwdHNbMF0ubGluZU9mZnNldCAmJiAh
dGhpcy5fc2NyaXB0c1swXS5jb2x1bW5PZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmJiAhdGhpcy5fZm9ybWF0dGVkICYmICF0aGlzLl9jb21waWxlclNvdXJjZU1hcHBp
bmc7CisgICAgICAgIHVpU291cmNlQ29kZS5pc0VkaXRhYmxlID0gdGhpcy5fc2NyaXB0cy5sZW5n
dGggPT09IDEgJiYgIXRoaXMuX3NjcmlwdHNbMF0ubGluZU9mZnNldCAmJiAhdGhpcy5fc2NyaXB0
c1swXS5jb2x1bW5PZmZzZXQgJiYgIXRoaXMuX2Zvcm1hdHRlZDsKICAgICAgICAgcmV0dXJuIHVp
U291cmNlQ29kZTsKICAgICB9LAogCkBAIC0zNDUsNyArMzE5LDcgQEAgV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAg
IHsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5vcmlnaW5hbFRvRm9ybWF0
dGVkKHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlcik7Cisg
ICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcub3JpZ2luYWxUb0Zvcm1hdHRlZChy
YXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odGhpcy5fdWlTb3VyY2VD
b2RlTGlzdFswXSwgbG9jYXRpb25bMF0sIGxvY2F0aW9uWzFdKTsKICAgICB9LAogCkBAIC0zNzMs
NTUgKzM0Nyw2IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRlZFNvdXJjZU1h
cHBpbmcucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxlbWVu
dHMge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlNvdXJjZU1hcHBpbmd9Ci0gKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gKiBAcGFyYW0ge0Fy
cmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gdWlTb3VyY2VDb2RlTGlzdAotICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nfSBtYXBwaW5nCi0gKi8KLVdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9u
KHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZUxpc3QsIG1hcHBpbmcpCi17Ci0gICAgdGhpcy5f
cmF3U291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGU7Ci0gICAgdGhpcy5fdWlTb3VyY2VDb2RlTGlz
dCA9IHVpU291cmNlQ29kZUxpc3Q7Ci0gICAgdGhpcy5fbWFwcGluZyA9IG1hcHBpbmc7Ci0gICAg
dGhpcy5fdWlTb3VyY2VDb2RlQnlVUkwgPSB7fTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVp
U291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCi0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5
VVJMW3VpU291cmNlQ29kZUxpc3RbaV0udXJsXSA9IHVpU291cmNlQ29kZUxpc3RbaV07Ci19Ci0K
LVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5
cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSBy
YXdMb2NhdGlvbgotICAgICAqLwotICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlv
bihyYXdMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX21hcHBp
bmcuY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJl
ciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOwotICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbbG9jYXRpb24uc291cmNlVVJMXTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxvY2F0
aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2Rl
Ci0gICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKLSAgICAgKiBAcGFyYW0ge251bWJl
cn0gY29sdW1uTnVtYmVyCi0gICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0K
LSAgICAgKi8KLSAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VD
b2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICB2YXIgbG9jYXRp
b24gPSB0aGlzLl9tYXBwaW5nLnNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uKHVpU291
cmNlQ29kZS51cmwsIGxpbmVOdW1iZXIpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24odGhpcy5fcmF3U291cmNlQ29kZS5fc2NyaXB0
c1swXSwgbG9jYXRpb25bMF0sIGxvY2F0aW9uWzFdKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQotICAgICAqLwot
ICAgIHVpU291cmNlQ29kZUxpc3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl91aVNvdXJjZUNvZGVMaXN0OwotICAgIH0KLX0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IK
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgKiBA
cGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlU2NyaXB0TWFwcGluZy5qcwppbmRleCAzNzk2ZmY0NmY5Y2Y4ZGE5MzA5YTdhNjU3ZGY2
YjVkYTZjYmM5M2NhLi41NDA1MDU3ZWU1MjM0NTVjOWIzODc0YzZmZmM0NzA4MTI2NGU3MGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2Ny
aXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlU2NyaXB0TWFwcGluZy5qcwpAQCAtMTAwLDExICsxMDAsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIHZhciBjb21waWxlclNvdXJjZU1hcHBpbmcgPSBudWxsOwotICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkLmdldCgpICYmIHNj
cmlwdC5zb3VyY2VNYXBVUkwpCi0gICAgICAgICAgICBjb21waWxlclNvdXJjZU1hcHBpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcoc2NyaXB0LnNvdXJj
ZU1hcFVSTCwgc2NyaXB0LnNvdXJjZVVSTCk7Ci0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoc2NyaXB0LnNjcmlwdElkLCBzY3JpcHQs
IHJlc291cmNlLCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSwgY29tcGlsZXJT
b3VyY2VNYXBwaW5nKTsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUoc2NyaXB0LnNjcmlwdElkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlz
Ll9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CiAgICAgICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVzLnB1c2gocmF3U291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2JpbmRTY3JpcHRUb1Jh
d1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCmluZGV4IDYyODcyNWI2
Y2UwMmRkODdlMmYxYjU0ZGQ3NTM1OTk0NTYxNGYwZTMuLjY1YTljNDAyOTY3OWJjZjhhOWMyODhj
NWQ1OTU5ZDYzNTEzNDhlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanMKQEAgLTcwLDkgKzcwLDE0IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKIFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKCkK
IHsKICAgICB0aGlzLl9tYXBwaW5ncyA9IFtdOwotICAgIAorCiAgICAgdGhpcy5fcmVzb3VyY2VN
YXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKICAgICB0
aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CisgICAgdGhpcy5fY29t
cGlsZXJNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcoKTsK
KyAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX2NvbXBpbGVyTWFwcGluZyk7CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0
aGlzLl9tYXBwaW5nc1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBw
aW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VD
b2RlTGlzdENoYW5nZWQsIHRoaXMpOwogCiAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50
c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQoKSkgewogICAgICAgICB0aGlzLl9z
bmlwcGV0c01hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGluZygp
OwpAQCAtODEsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcgPSBmdW5j
dGlvbigpCiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsg
KytpKQogICAgICAgICB0aGlzLl9tYXBwaW5nc1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5f
aGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRoaXMpOwotICAgIAorCiAgICAgdGhpcy5f
bWFwcGluZ0ZvclNjcmlwdElkID0ge307CiAgICAgdGhpcy5fbWFwcGluZ0ZvclVJU291cmNlQ29k
ZSA9IG5ldyBNYXAoKTsKICAgICB0aGlzLl9saXZlTG9jYXRpb25zRm9yU2NyaXB0SWQgPSB7fTsK
QEAgLTE3OCw3ICsxODMsMTIgQEAgV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2RlbC5zbmlw
cGV0SWRGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX3NuaXBwZXRzTWFwcGluZzsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VNYXBzRW5hYmxlZC5nZXQoKSAm
JiBzY3JpcHQuc291cmNlTWFwVVJMKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJN
YXBwaW5nLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQoc2NyaXB0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fY29tcGlsZXJNYXBwaW5nOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYTQyNjRiMzIxZmI4YmU4NTZkNDJkYjA4
ZDg1YjFlNDZkMDliZTdkMy4uNGJiNDY3MjBkMzg4ZmZiNDUxYzA4MWQ5N2FkOGUzM2Y3NDUxOTU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpA
QCAtMTcsNiArMTcsNyBAQAogICAgIDxmaWxlPkNhbGxTdGFja1NpZGViYXJQYW5lLmpzPC9maWxl
PgogICAgIDxmaWxlPkNoZWNrYm94LmpzPC9maWxlPgogICAgIDxmaWxlPkNvbG9yLmpzPC9maWxl
PgorICAgIDxmaWxlPkNvbXBpbGVyU2NyaXB0TWFwcGluZy5qczwvZmlsZT4KICAgICA8ZmlsZT5D
b21waWxlclNvdXJjZU1hcHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZU1lc3NhZ2Uu
anM8L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZU1vZGVsLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNzNmMWVj
MTAzZTk0OGRlNzllMmM0MmExZGQ1NTNiZGU3OTVmYmM2ZC4uNWE2ZGZjZjQ3NDRiMjNjNzBhNTQx
MjI4YjkwY2Y5NTdmMDA1Yjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNzUsNiArMTc1LDcgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXJzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSYXdT
b3VyY2VDb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJSZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbXBpbGVyU2NyaXB0TWFwcGluZy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29tcGlsZXJT
b3VyY2VNYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJTY3JpcHRzU2VhcmNoU2NvcGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjYWUyYzczMGM0YzFhOTk0NzI2ZGNmZjc3ZTUzZjkxOWYzMmEzOWZlLi44YzBmYmZkOTAwODk0
NWExNDIxODQ3NGIzYTQ5OGVlYmNmM2Y1OWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDMtMTQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBDb21waWxlclNjcmlwdE1hcHBpbmcgZnJvbSBSYXdT
b3VyY2VDb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODEwODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFw
cGluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC4pOgorICAgICAgICAoaW5pdGlh
bGl6ZV9EZWJ1Z2dlclRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yYXct
c291cmNlLWNvZGUuaHRtbDoKKwogMjAxMi0wMy0xNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgc25pcHBldHMgdGFi
IHRvIHNjcmlwdHMgbmF2aWdhdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmctZXhwZWN0
ZWQudHh0CmluZGV4IDdhZjliMzIxNDhlOWQyMTAwMGQ3MDU4MDI4MTc5NTA5YjgwNDk2OWYuLjdh
MjliMTA1YTUwMTRiNTgxZDdmNmFiZTk0YTMyNmNjYjMyMjY5NjIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1z
b3VyY2UtbWFwcGluZy1leHBlY3RlZC50eHQKQEAgLTExLDUgKzExLDcgQEAgUnVubmluZzogdGVz
dFNlY3Rpb25zCiAKIFJ1bm5pbmc6IHRlc3RSZXNvbHZlU291cmNlTWFwcGluZ1VSTAogCi1SdW5u
aW5nOiB0ZXN0TG9hZAorUnVubmluZzogdGVzdENvbXBpbGVyU2NyaXB0TWFwcGluZworCitSdW5u
aW5nOiB0ZXN0Q29tcGlsZXJTb3VyY2VNYXBwaW5nQ291bGROb3RCZUxvYWRlZAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFw
cGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291
cmNlLW1hcHBpbmcuaHRtbAppbmRleCA2ZDI0NGY4OTliODlhNDgzZWQ4NzI0MzhjZWJlZTBhM2Qx
M2MzNTVlLi5hYjE2MzU0ZTdlNzkzYWRjNDA1NGNkMDI5MDBkMGEwMGEwYTU5NmM0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFw
cGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVy
LXNvdXJjZS1tYXBwaW5nLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8aHRtbD4KIDxoZWFkPgogPHNj
cmlwdCBzcmM9Imluc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJkZWJ1
Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KIAogPHNjcmlwdD4KIApAQCAtMTI2LDIzICsxMjcsNTYg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCiAKLSAg
ICAgICAgZnVuY3Rpb24gdGVzdExvYWQobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBp
bGVyU2NyaXB0TWFwcGluZyhuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc291cmNl
TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZygi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlLW1hcC5qc29u
Iik7Ci0gICAgICAgICAgICB2YXIgc3VjY2VzcyA9IHNvdXJjZU1hcHBpbmcubG9hZCgpOwotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKHN1Y2Nlc3MpOwotCi0gICAgICAgICAg
ICB2YXIgc291cmNlcyA9IHNvdXJjZU1hcHBpbmcuc291cmNlcygpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgc291cmNlcy5sZW5ndGgpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0
b3IvcmVzb3VyY2VzL3NvdXJjZTEuanMiLCBzb3VyY2VzWzBdKTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jl
c291cmNlcy9zb3VyY2UyLmpzIiwgc291cmNlc1sxXSk7Ci0KLSAgICAgICAgICAgIHZhciBzb3Vy
Y2VDb2RlMSA9IHNvdXJjZU1hcHBpbmcubG9hZFNvdXJjZUNvZGUoc291cmNlTWFwcGluZy5zb3Vy
Y2VzKClbMF0pOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMCwgc291
cmNlQ29kZTEuaW5kZXhPZigid2luZG93LmFkZEV2ZW50TGlzdGVuZXIiKSk7CisgICAgICAgICAg
ICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nKCk7
CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2Nr
KCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICIiKTsKKyAgICAgICAgICAgIHNjcmlwdC5zb3Vy
Y2VNYXBVUkwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291
cmNlLW1hcC5qc29uIjsKKyAgICAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisK
KyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gbWFwcGluZy51aVNvdXJjZUNvZGVM
aXN0KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCB1aVNvdXJj
ZUNvZGVMaXN0Lmxlbmd0aCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcyIs
IHVpU291cmNlQ29kZUxpc3RbMF0udXJsKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3Vy
Y2UyLmpzIiwgdWlTb3VyY2VDb2RlTGlzdFsxXS51cmwpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGVMaXN0WzBdLCA0LCA0LCBtYXBwaW5n
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0
ZVJhd0xvY2F0aW9uKHNjcmlwdCwgMCwgODEpKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGVMaXN0WzBdLCA1LCA0LCBtYXBwaW5nLnJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xv
Y2F0aW9uKHNjcmlwdCwgMCwgOTMpKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNr
VUlMb2NhdGlvbih1aVNvdXJjZUNvZGVMaXN0WzFdLCA3LCA0LCBtYXBwaW5nLnJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9u
KHNjcmlwdCwgMSwgMTUxKSkpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3
TG9jYXRpb24oc2NyaXB0LCAwLCA0MiwgbWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1
aVNvdXJjZUNvZGVMaXN0WzBdLCAzLCAxMCkpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
aGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgODUsIG1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9j
YXRpb24odWlTb3VyY2VDb2RlTGlzdFsxXSwgMCwgMCkpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgMTEwLCBtYXBwaW5nLnVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZUxpc3RbMV0sIDUsIDIpKTsKKworICAgICAgICAgICAg
dWlTb3VyY2VDb2RlTGlzdFswXS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudDEpOwor
CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudDEobWltZVR5cGUsIGNvbnRl
bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoMCwgY29udGVudC5pbmRleE9mKCJ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciIpKTsKKyAg
ICAgICAgICAgICAgICB1aVNvdXJjZUNvZGVMaXN0WzFdLnJlcXVlc3RDb250ZW50KGRpZFJlcXVl
c3RDb250ZW50Mik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RDb250ZW50MihtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygwLCBjb250ZW50LmluZGV4T2YoImZ1
bmN0aW9uIENsaWNrSGFuZGxlcigpIikpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSwKIAotICAgICAgICAgICAgdmFyIHNvdXJjZUNvZGUyID0gc291
cmNlTWFwcGluZy5sb2FkU291cmNlQ29kZShzb3VyY2VNYXBwaW5nLnNvdXJjZXMoKVsxXSk7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygwLCBzb3VyY2VDb2RlMi5pbmRl
eE9mKCJmdW5jdGlvbiBDbGlja0hhbmRsZXIoKSIpKTsKLSAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdENvbXBpbGVyU291cmNlTWFwcGluZ0NvdWxkTm90QmVMb2FkZWQo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG1haW5TY3JpcHRNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZygpOworICAgICAgICAgICAgbWFpblNjcmlw
dE1hcHBpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcu
RXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB1aVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCk7
CisKKyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1v
Y2soImNvbXBpbGVkLmpzIiwgMCwgMCwgdHJ1ZSwgIiIpOworICAgICAgICAgICAgc2NyaXB0LnNv
dXJjZU1hcFVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9z
b3VyY2UtbWFwLmpzb25fIjsKKyAgICAgICAgICAgIG1haW5TY3JpcHRNYXBwaW5nLmFkZFNjcmlw
dChzY3JpcHQpOworCisgICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVMaXN0Q2hhbmdl
ZChldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygxLCBldmVudC5kYXRhLmFkZGVkSXRlbXMubGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiY29tcGlsZWQuanMiLCBldmVudC5kYXRh
LmFkZGVkSXRlbXNbMF0udXJsKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICBdKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwppbmRleCAzNzQ3OWM5M2NkMGM1MTA0OWE3NTUz
MmQ1M2YzMjIyNzQ4MjM1NzMwLi45NWY0N2RkMDFkZTczZTQwYzE4NzA1OTk2YjYzOWVhMjM4NzIw
NjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
LXRlc3QuanMKQEAgLTI4Miw0ICsyODIsMzIgQEAgSW5zcGVjdG9yVGVzdC5xdWVyeVNjcmlwdHMg
PSBmdW5jdGlvbihmaWx0ZXIpCiAgICAgcmV0dXJuIHNjcmlwdHM7CiB9OwogCitJbnNwZWN0b3JU
ZXN0LmNyZWF0ZVNjcmlwdE1vY2sgPSBmdW5jdGlvbih1cmwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1
bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlKQoreworICAgIHZhciBzY3JpcHRJZCA9ICsrSW5z
cGVjdG9yVGVzdC5fbGFzdFNjcmlwdElkOworICAgIHZhciBsaW5lQ291bnQgPSBzb3VyY2UubGlu
ZUVuZGluZ3MoKS5sZW5ndGg7CisgICAgdmFyIGVuZExpbmUgPSBzdGFydExpbmUgKyBsaW5lQ291
bnQgLSAxOworICAgIHZhciBlbmRDb2x1bW4gPSBsaW5lQ291bnQgPT09IDEgPyBzdGFydENvbHVt
biArIHNvdXJjZS5sZW5ndGggOiBzb3VyY2UubGVuZ3RoIC0gc291cmNlLmxpbmVFbmRpbmdzKClb
bGluZUNvdW50IC0gMl07CisgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0
KHNjcmlwdElkLCB1cmwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVt
biwgaXNDb250ZW50U2NyaXB0KTsKKyAgICBzY3JpcHQucmVxdWVzdFNvdXJjZSA9IGZ1bmN0aW9u
KGNhbGxiYWNrKSB7IGNhbGxiYWNrKHNvdXJjZSk7IH07CisgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuX3NjcmlwdHNbc2NyaXB0SWRdID0gc2NyaXB0OworICAgIHJldHVybiBzY3JpcHQ7
Cit9CisKK0luc3BlY3RvclRlc3QuX2xhc3RTY3JpcHRJZCA9IDA7CisKK0luc3BlY3RvclRlc3Qu
Y2hlY2tSYXdMb2NhdGlvbiA9IGZ1bmN0aW9uKHNjcmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsb2NhdGlvbikKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhzY3JpcHQu
c2NyaXB0SWQsIGxvY2F0aW9uLnNjcmlwdElkKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhsaW5lTnVtYmVyLCBsb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyhjb2x1bW5OdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7Cit9Owor
CitJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbiA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsb2NhdGlvbikKK3sKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh1aVNvdXJjZUNvZGUsIGxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobGluZU51bWJlciwgbG9jYXRpb24ubGluZU51bWJl
cik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29sdW1uTnVtYmVyLCBsb2NhdGlv
bi5jb2x1bW5OdW1iZXIpOworfTsKKwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKaW5kZXggMTA2
YjU1YzU2YzMxMmQ4MGM3N2I3NjMzZTQ0ODlkMDJlYWZjNGExYS4uZmRhNjU1ZmE1MzA0YTJjMTBi
ZWRlNzgxMDdiNDRhM2RiYzlkZDU3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKQEAgLTEzLDcg
KzEzLDMgQEAgUnVubmluZzogdGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJjZQogCiBS
dW5uaW5nOiB0ZXN0Rm9ybWF0dGluZ1dpdGhQZW5kaW5nUmVzb3VyY2UKIAotUnVubmluZzogdGVz
dENvbXBpbGVyU291cmNlTWFwcGluZwotCi1SdW5uaW5nOiB0ZXN0Q29tcGlsZXJTb3VyY2VNYXBw
aW5nQ291bGROb3RCZUxvYWRlZAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKaW5kZXggMmJhYmVkNTUzNzE1NmQ0ZTNlMTFjNmI2
MDI1ZTQ4NDgyYWU1OGJkNi4uNjAyNzU3MzM2ZDBkOWE4NzJkOTkyMGQ2MTYyZmMyZmIwN2E5NzRl
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2Ut
Y29kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNl
LWNvZGUuaHRtbApAQCAtMSwyMiArMSwxMiBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5q
cyI+PC9zY3JpcHQ+CiAKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIGZ1bmN0
aW9uIGNyZWF0ZVNjcmlwdE1vY2sodXJsLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBpc0NvbnRl
bnRTY3JpcHQsIHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5lQ291bnQgPSBzb3VyY2Uu
bGluZUVuZGluZ3MoKS5sZW5ndGg7Ci0gICAgICAgIHZhciBlbmRMaW5lID0gc3RhcnRMaW5lICsg
bGluZUNvdW50IC0gMTsKLSAgICAgICAgdmFyIGVuZENvbHVtbiA9IGxpbmVDb3VudCA9PT0gMSA/
IHN0YXJ0Q29sdW1uICsgc291cmNlLmxlbmd0aCA6IHNvdXJjZS5sZW5ndGggLSBzb3VyY2UubGlu
ZUVuZGluZ3MoKVtsaW5lQ291bnQgLSAyXTsKLSAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0KDEsIHVybCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwg
ZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQpOwotICAgICAgICBzY3JpcHQucmVxdWVzdFNvdXJj
ZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IGNhbGxiYWNrKHNvdXJjZSk7IH07Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9zY3JpcHRzWzFdID0gc2NyaXB0OwotICAgICAgICBy
ZXR1cm4gc2NyaXB0OwotICAgIH0KLQogICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTW9jayh0
eXBlLCBmaW5pc2hlZCwgY29udGVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHt9
OwpAQCAtNzMsMzIgKzYzLDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICByZXR1cm4geyBs
aW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGxvY2F0aW9uKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoc2NyaXB0LnNjcmlwdElkLCBsb2NhdGlvbi5zY3JpcHRJZCk7Ci0gICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGxpbmVOdW1iZXIsIGxvY2F0aW9uLmxpbmVOdW1iZXIp
OwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb2x1bW5OdW1iZXIsIGxvY2F0
aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tVSUxvY2F0aW9u
KHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsb2NhdGlvbikKLSAgICB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNlQ29kZSwgbG9jYXRp
b24udWlTb3VyY2VDb2RlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobGlu
ZU51bWJlciwgbG9jYXRpb24ubGluZU51bWJlcik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGNvbHVtbk51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9Ci0K
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RT
Y3JpcHRXaXRob3V0UmVzb3VyY2UobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNj
cmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNv
dXJjZT4iKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9zY3JpcHRz
ID0gW107CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3Jp
cHRNb2NrKCJmb28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CiAgICAgICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCBudWxs
KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3U291cmNl
Q29kZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKICAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKVswXTsKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJmb28uanMiLCB1aVNvdXJjZUNvZGUudXJsKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHVpU291cmNlQ29k
ZS5pc0NvbnRlbnRTY3JpcHQpOwotICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNl
Q29kZSwgMCwgNSwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVS
YXdMb2NhdGlvbigwLCA1KSkpOwotICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQs
IDEwLCAwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29k
ZSwgMTAsIDApKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVp
U291cmNlQ29kZSwgMCwgNSwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihj
cmVhdGVSYXdMb2NhdGlvbigwLCA1KSkpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVj
a1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24odWlTb3VyY2VDb2RlLCAxMCwgMCkpOwogICAgICAgICAgICAgdWlTb3VyY2VDb2Rl
LnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKIAogICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCkBAIC0xMTEsOCArODgsOSBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0SFRNTFdpdGhQZW5kaW5n
UmVzb3VyY2UobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBjcmVh
dGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgMTAsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2Ug
MT4iKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXgu
aHRtbCIsIDAsIDQ1LCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDI+Iik7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fc2NyaXB0cyA9IFtdOworICAgICAgICAgICAgdmFy
IHNjcmlwdDEgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAw
LCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAgICAgICAgICAgdmFyIHNjcmlw
dDIgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwg
ZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAyPiIpOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0g
Y3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygiZG9jdW1lbnQiLCAiPHJlc291cmNlIGNvbnRlbnQ+
Iik7CiAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUo
c2NyaXB0MSwgcmVzb3VyY2UpOwogCkBAIC0xNDMsOCArMTIxLDkgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdEhUTUxXaXRoRmluaXNoZWRSZXNvdXJjZShuZXh0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0MSA9IGNyZWF0ZVNjcmlwdE1vY2soImlu
ZGV4Lmh0bWwiLCAxLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOwotICAgICAgICAg
ICAgdmFyIHNjcmlwdDIgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgNSwgNDUsIGZh
bHNlLCAiPHNjcmlwdFxuc291cmNlXG4yPiIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuX3NjcmlwdHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQxID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAsIGZhbHNlLCAi
PHNjcmlwdCBzb3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgNSwgNDUsIGZhbHNlLCAiPHNjcmlw
dFxuc291cmNlXG4yPiIpOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmluaXNo
ZWRSZXNvdXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwogICAgICAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJl
c291cmNlKTsKIApAQCAtMTYxLDkgKzE0MCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAg
ICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CiAgICAgICAgICAgICAg
ICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKLSAgICAgICAgICAg
ICAgICBjaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAxLCAyMCwgcmF3U291cmNlQ29kZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyMCkpKTsKLSAgICAg
ICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEsIDAsIHJhd1NvdXJjZUNvZGUu
dWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAxLCAwKSk7Ci0gICAgICAgICAg
ICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA2LCAwLCByYXdTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgNiwgMCkpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwgMjAsIHJhd1Nv
dXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMjAp
KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlw
dDEsIDEsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VD
b2RlLCAxLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0
aW9uKHNjcmlwdDIsIDYsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24o
dWlTb3VyY2VDb2RlLCA2LCAwKSk7CiAKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAg
ICAgICB9CkBAIC0xNzEsOSArMTUwLDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1
bmN0aW9uIHRlc3RGb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcobmV4dCkKICAgICAgICAgewotICAg
ICAgICAgICAgdmFyIHNjcmlwdDEgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwg
MTAsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMT4iKTsKLSAgICAgICAgICAgIHZhciBzY3JpcHQy
ID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDQ1LCBmYWxzZSwgIjxzY3JpcHQg
c291cmNlIDI+Iik7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0MyA9IGNyZWF0ZVNjcmlwdE1vY2so
ImluZGV4Lmh0bWwiLCAxLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAzPiIpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuX3NjcmlwdHMgPSBbXTsKKyAgICAgICAg
ICAgIHZhciBzY3JpcHQxID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5o
dG1sIiwgMCwgMTAsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZh
ciBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwg
MCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAgICAgIHZhciBzY3Jp
cHQzID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMSwgMTAs
IGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMz4iKTsKICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50
PiIpOwogICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2Rl
KHNjcmlwdDEsIHJlc291cmNlKTsKIApAQCAtMjM3LDE0ICsyMTcsMTUgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICAgICAgZnVuY3Rpb24gdGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJj
ZShuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0
TW9jaygiZm9vLmpzIiwgMCwgMCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuX3NjcmlwdHMgPSBbXTsKKyAgICAgICAgICAg
IHZhciBzY3JpcHQgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAs
IDAsIHRydWUsICI8c2NyaXB0IHNvdXJjZT4iKTsKICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IGNyZWF0ZUZpbmlzaGVkUmVzb3VyY2VNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+
Iik7CiAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUo
c2NyaXB0LCByZXNvdXJjZSwgZmFsc2UpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygxLCByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKS5sZW5ndGgpOwog
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
TGlzdCgpWzBdOwotICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwg
MiwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlv
bigxLCAyKSkpOwotICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDIsIDAsIHJh
d1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAyLCAwKSk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUs
IDEsIDIsIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9j
YXRpb24oMSwgMikpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlv
bihzY3JpcHQsIDIsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlT
b3VyY2VDb2RlLCAyLCAwKSk7CiAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRl
bnQoZGlkUmVxdWVzdENvbnRlbnQpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0
Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKQEAgLTI2MSw4ICsyNDIsOCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscygxLCByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKS5sZW5ndGgpOwogICAg
ICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29k
ZUxpc3QoKVswXTsKLSAgICAgICAgICAgICAgICBjaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2Rl
LCAyLCA0LCByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xv
Y2F0aW9uKDEsIDIpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQs
IDEsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2Rl
LCAyLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24o
dWlTb3VyY2VDb2RlLCAyLCA0LCByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9u
KGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIpKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgMCwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9u
VG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDIsIDApKTsKICAgICAgICAgICAgICAgICB1aVNv
dXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdEZvcm1hdHRlZENvbnRlbnQpOwogICAg
ICAgICAgICAgfQogCkBAIC0yNzksOCArMjYwLDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3
U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKICAgICAgICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KClbMF07Ci0g
ICAgICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwgMiwgcmF3U291
cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkp
OwotICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAyLCAwLCByYXdTb3Vy
Y2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwg
MSwgMiwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2Nh
dGlvbigxLCAyKSkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2Nh
dGlvbihzY3JpcHQsIDIsIDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24o
dWlTb3VyY2VDb2RlLCAyLCAwKSk7CiAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVl
c3RDb250ZW50KGRpZFJlcXVlc3ROb3RGb3JtYXR0ZWRDb250ZW50KTsKICAgICAgICAgICAgIH0K
IApAQCAtMjk1LDcgKzI3Niw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIGZ1bmN0aW9u
IHRlc3RGb3JtYXR0aW5nV2l0aFBlbmRpbmdSZXNvdXJjZShuZXh0KQogICAgICAgICB7Ci0gICAg
ICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9jaygiZm9vLmpzIiwgMCwgMCwgdHJ1
ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuX3NjcmlwdHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNvdXJj
ZT4iKTsKICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1v
Y2soInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKICAgICAgICAgICAgIHZhciByYXdT
b3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlc291cmNlLCB0cnVlKTsK
IApAQCAtMzA4LDczICsyOTAsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3U291cmNlQ29k
ZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKICAgICAgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KClbMF07Ci0gICAgICAgICAg
ICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgcmF3U291cmNlQ29kZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAg
ICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAwLCByYXdTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgMCkpOwotICAgICAgICAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlv
biB0ZXN0Q29tcGlsZXJTb3VyY2VNYXBwaW5nKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHZhciBjb21waWxlclNvdXJjZU1hcHBpbmdNb2NrID0gewotICAgICAgICAgICAgICAgIGNvbXBp
bGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobGluZU51
bWJlciA8IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlVVJMOiAi
c291cmNlMS5qcyIsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIgKiAyLCBjb2x1bW5OdW1iZXI6IGNv
bHVtbk51bWJlciAqIDIgfTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlVVJM
OiAic291cmNlMi5qcyIsIGxpbmVOdW1iZXI6IChsaW5lTnVtYmVyIC0gMTApICogMiwgY29sdW1u
TnVtYmVyOiBjb2x1bW5OdW1iZXIgKiAyIH07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICBzb3VyY2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbjogZnVuY3Rpb24oc291cmNl
VVJMLCBsaW5lTnVtYmVyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNvdXJjZVVSTCA9PT0gInNvdXJjZTEuanMiKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFtNYXRoLmZsb29yKGxpbmVOdW1iZXIgLyAyKSwgMF07Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBbTWF0aC5mbG9vcihsaW5lTnVtYmVyIC8gMikgKyAxMCwgMF07Ci0gICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBzb3VyY2VzOiBmdW5jdGlvbigpIHsgcmV0dXJu
IFsic291cmNlMS5qcyIsICJzb3VyY2UyLmpzIl07IH0sCi0gICAgICAgICAgICAgICAgbG9hZDog
ZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9LAotICAgICAgICAgICAgICAgIGxvYWRTb3VyY2VD
b2RlOiBmdW5jdGlvbih1cmwpIHsgcmV0dXJuICI8Y29udGVudCBvZiAiICsgdXJsICsgIj4iOyB9
Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0
TW9jaygiY29tcGlsZWQuanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7Ci0gICAg
ICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKCJzY3JpcHQi
LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9
IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXNvdXJjZSwgZmFsc2UsIGNvbXBpbGVyU291
cmNlTWFwcGluZ01vY2spOwotICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3Q7Ci0KLSAg
ICAgICAgICAgIHVpU291cmNlQ29kZUxpc3QgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxp
c3QoKTsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVCeVVSTCA9IHt9OwotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgICAgIHVpU291cmNlQ29kZUJ5VVJMW3VpU291cmNlQ29kZUxpc3RbaV0udXJsXSA9
IHVpU291cmNlQ29kZUxpc3RbaV07Ci0gICAgICAgICAgICBjaGVja1VJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlQnlVUkxbInNvdXJjZTEuanMiXSwgMiwgNCwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlv
blRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAgICAgICAgY2hl
Y2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UyLmpzIl0sIDEwLCA0MCwgcmF3
U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxNSwg
MjApKSk7Ci0gICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgMCwgcmF3U291
cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGVCeVVSTFsic291cmNl
MS5qcyJdLCAyLCAwKSk7Ci0gICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTUs
IDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlQnlV
UkxbInNvdXJjZTIuanMiXSwgMTAsIDApKTsKLQotICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlz
dFswXS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudDEpOwotCi0gICAgICAgICAgICBm
dW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudDEobWltZVR5cGUsIGNvbnRlbnQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2
YXNjcmlwdCIsIG1pbWVUeXBlKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscygiPGNvbnRlbnQgb2Ygc291cmNlMS5qcz4iLCBjb250ZW50KTsKLSAgICAgICAgICAg
ICAgICB1aVNvdXJjZUNvZGVMaXN0WzFdLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50
Mik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250
ZW50MihtaW1lVHlwZSwgY29udGVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygidGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOwot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8Y29udGVudCBvZiBz
b3VyY2UyLmpzPiIsIGNvbnRlbnQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hl
Y2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlv
blRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEsIDAsIHJhd1NvdXJjZUNv
ZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAyLCAwKSk7CiAgICAgICAg
ICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3RDb21waWxlclNvdXJjZU1hcHBpbmdDb3VsZE5vdEJlTG9hZGVkKG5leHQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBjb21waWxlclNvdXJjZU1hcHBpbmdNb2NrID0geyBs
b2FkOiBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9IH07Ci0KLSAgICAgICAgICAgIHZhciBz
Y3JpcHQgPSBjcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICI8c2Ny
aXB0IHNvdXJjZT4iKTsKLSAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3
U291cmNlQ29kZShzY3JpcHQsIG51bGwsIGZhbHNlLCBjb21waWxlclNvdXJjZU1hcHBpbmdNb2Nr
KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgcmF3U291cmNl
Q29kZS51aVNvdXJjZUNvZGVMaXN0KCkubGVuZ3RoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKCJjb21waWxlZC5qcyIsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
TGlzdCgpWzBdLnVybCk7Ci0gICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0KICAgICBdKTsK
IH07Cg==
</data>
<flag name="review"
          id="135318"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>