<?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>147644</bug_id>
          
          <creation_ts>2015-08-04 12:07:43 -0700</creation_ts>
          <short_desc>REGRESSION(r187815): Caused lots of Windows crashes (Requested by smfr on #webkit).</short_desc>
          <delta_ts>2015-08-04 12:12:02 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147142</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>sam</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114693</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-04 12:07:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/187815 broke the build:
Caused lots of Windows crashes (Requested by smfr on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114695</commentid>
    <comment_count>1</comment_count>
      <attachid>258197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-04 12:08:12 -0700</bug_when>
    <thetext>Created attachment 258197
ROLLOUT of r187815

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114700</commentid>
    <comment_count>2</comment_count>
      <attachid>258197</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-04 12:11:59 -0700</bug_when>
    <thetext>Comment on attachment 258197
ROLLOUT of r187815

Clearing flags on attachment: 258197

Committed r187875: &lt;http://trac.webkit.org/changeset/187875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114701</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-04 12:12:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258197</attachid>
            <date>2015-08-04 12:08:12 -0700</date>
            <delta_ts>2015-08-04 12:11:59 -0700</delta_ts>
            <desc>ROLLOUT of r187815</desc>
            <filename>bug-147644-20150804120805.patch</filename>
            <type>text/plain</type>
            <size>32807</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYzN2FhMTFkOGQxOThhYmJiYmRmZWE1
MjEzMWQyZTIxYmE3MTFhNTYuLjhhNGE5ODUxYjUzMTk1YTIwMDdjOWI4OTVjYWUyNGEzNmY2M2M1
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTUtMDgtMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
ODc4MTUgYW5kIHIxODc4MTcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDc2NDQKKworICAgICAgICBDYXVzZWQgbG90cyBvZiBXaW5kb3dzIGNyYXNo
ZXMgKFJlcXVlc3RlZCBieSBzbWZyIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldHM6CisKKyAgICAgICAgIltXVEZdIFR1cm4gdHJ5TWFrZVN0cmluZygpLCBtYWtlU3Ry
aW5nKCkgaW50byB2YXJpYWRpYworICAgICAgICB0ZW1wbGF0ZXMiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcxNDIKKyAgICAgICAgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg3ODE1CisKKyAgICAgICAgIlVucmV2aWV3ZWQgYnVp
bGQgZml4LiIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg3ODE3
CisKIDIwMTUtMDgtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBFbmFibGUgV2ViR0wgb24gV2luZG93cyBDTWFrZSBidWlsZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAppbmRleCA3ZTg0MzRlMjBhNWFkZjcyM2Mw
YjQ2ZTI5OTMzNDUzNDg3NDdjMDE1Li44Y2M0YjU4ZTIwNTMzZmFmNDEzNDJhZGE4YWZkOWFmODE2
MGEwNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0yNyw3
ICsyNyw2IEBACiAjZGVmaW5lIFN0cmluZ0NvbmNhdGVuYXRlX2gKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPHR1cGxlPgogCiAjaWZuZGVmIEF0b21pY1N0cmluZ19oCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC01Niw4ICs1NSw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMTsgfQot
ICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHVuc2lnbmVkIGxl
bmd0aCgpIHsgcmV0dXJuIDE7IH0KKyAgICBib29sIGlzOEJpdCgpIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZvaWQgd3JpdGVUbyhMQ2hhciogZGVzdGluYXRpb24pIGNvbnN0CiAgICAgewpAQCAt
OTksNzQgKzk4LDYgQEAgcHJpdmF0ZToKICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKIH07CiAKLXRl
bXBsYXRlPHNpemVfdCBzdHJpbmdMaXRlcmFsTGVuZ3RoPgotY2xhc3MgU3RyaW5nVHlwZUFkYXB0
ZXI8Y2hhcltzdHJpbmdMaXRlcmFsTGVuZ3RoXT4gewotcHVibGljOgotICAgIFN0cmluZ1R5cGVB
ZGFwdGVyKGNvbnN0IGNoYXIgKCZzdHJpbmdMaXRlcmFsKVtzdHJpbmdMaXRlcmFsTGVuZ3RoXSkK
LSAgICAgICAgOiBtX3N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3RyaW5n
TGl0ZXJhbCkpCi0gICAgewotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZ0xpdGVyYWxMZW5ndGggLSAxOyB9Ci0gICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9u
KSBjb25zdAotICAgIHsKLSAgICAgICAgU3RyaW5nVmlldyhtX3N0cmluZywgbGVuZ3RoKCkpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3RpbmF0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgU3RyaW5n
VmlldyhtX3N0cmluZywgbGVuZ3RoKCkpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRlc3Rp
bmF0aW9uKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgTENoYXIqIG1fc3RyaW5nOwot
fTsKLQotdGVtcGxhdGU8c2l6ZV90IHN0cmluZ0xpdGVyYWxMZW5ndGg+Ci1jbGFzcyBTdHJpbmdU
eXBlQWRhcHRlcjxjb25zdCBjaGFyW3N0cmluZ0xpdGVyYWxMZW5ndGhdPiA6IHB1YmxpYyBTdHJp
bmdUeXBlQWRhcHRlcjxjaGFyW3N0cmluZ0xpdGVyYWxMZW5ndGhdPiB7Ci1wdWJsaWM6Ci0gICAg
U3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgY2hhciAoJnN0cmluZ0xpdGVyYWwpW3N0cmluZ0xpdGVy
YWxMZW5ndGhdKQotICAgICAgICA6IFN0cmluZ1R5cGVBZGFwdGVyPGNoYXJbc3RyaW5nTGl0ZXJh
bExlbmd0aF0+KHN0cmluZ0xpdGVyYWwpCi0gICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPHNp
emVfdCBzdHJpbmdMaXRlcmFsTGVuZ3RoPgotY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8VUNoYXJb
c3RyaW5nTGl0ZXJhbExlbmd0aF0+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcihj
b25zdCBVQ2hhciAoJnN0cmluZ0xpdGVyYWwpW3N0cmluZ0xpdGVyYWxMZW5ndGhdKQotICAgICAg
ICA6IG1fc3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdHJpbmdMaXRlcmFs
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nTGl0ZXJhbExlbmd0aCAtIDE7IH0KLSAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgd3JpdGVUbyhM
Q2hhciopIGNvbnN0Ci0gICAgewotICAgICAgICBDUkFTSCgpOwotICAgIH0KLQotICAgIHZvaWQg
d3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nLCBsZW5ndGgoKSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGVzdGlu
YXRpb24pOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBVQ2hhciogbV9zdHJpbmc7Ci19
OwotCi10ZW1wbGF0ZTxzaXplX3Qgc3RyaW5nTGl0ZXJhbExlbmd0aD4KLWNsYXNzIFN0cmluZ1R5
cGVBZGFwdGVyPGNvbnN0IFVDaGFyW3N0cmluZ0xpdGVyYWxMZW5ndGhdPiA6IHB1YmxpYyBTdHJp
bmdUeXBlQWRhcHRlcjxVQ2hhcltzdHJpbmdMaXRlcmFsTGVuZ3RoXT4gewotcHVibGljOgotICAg
IFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFVDaGFyICgmc3RyaW5nTGl0ZXJhbClbc3RyaW5nTGl0
ZXJhbExlbmd0aF0pCi0gICAgICAgIDogU3RyaW5nVHlwZUFkYXB0ZXI8VUNoYXJbc3RyaW5nTGl0
ZXJhbExlbmd0aF0+KHN0cmluZ0xpdGVyYWwpCi0gICAgewotICAgIH0KLX07Ci0KIHRlbXBsYXRl
PD4KIGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IExDaGFyKj4gewogcHVibGljOgpAQCAt
MzE2LDg1ICsyNDcsNTcyIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi10ZW1wbGF0ZTxzaXplX3Qg
aW5kZXgsIHR5cGVuYW1lLi4uIEFkYXB0ZXJzPgotc3RydWN0IFN0cmluZ0FkYXB0ZXJUdXBsZSB7
Ci0gICAgc3RhdGljIGlubGluZSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gc3Vt
V2l0aE92ZXJmbG93KGNvbnN0IHN0ZDo6dHVwbGU8QWRhcHRlcnMuLi4+JiB0dXBsZSkKLSAgICB7
Ci0gICAgICAgIGF1dG8mIGFkYXB0ZXIgPSBzdGQ6OmdldDxzaXplb2YuLi4oQWRhcHRlcnMpIC0g
aW5kZXg+KHR1cGxlKTsKLSAgICAgICAgcmV0dXJuIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92
ZXJmbG93PihhZGFwdGVyLmxlbmd0aCgpKSArIFN0cmluZ0FkYXB0ZXJUdXBsZTxpbmRleCAtIDEs
IEFkYXB0ZXJzLi4uPjo6c3VtV2l0aE92ZXJmbG93KHR1cGxlKTsKLSAgICB9CitpbmxpbmUgdm9p
ZCBzdW1XaXRoT3ZlcmZsb3codW5zaWduZWQmIHRvdGFsLCB1bnNpZ25lZCBhZGRlbmQsIGJvb2wm
IG92ZXJmbG93KQoreworICAgIHVuc2lnbmVkIG9sZFRvdGFsID0gdG90YWw7CisgICAgdG90YWwg
PSBvbGRUb3RhbCArIGFkZGVuZDsKKyAgICBpZiAodG90YWwgPCBvbGRUb3RhbCkKKyAgICAgICAg
b3ZlcmZsb3cgPSB0cnVlOworfQogCi0gICAgc3RhdGljIGlubGluZSBib29sIGlzOEJpdChjb25z
dCBzdGQ6OnR1cGxlPEFkYXB0ZXJzLi4uPiYgdHVwbGUpCi0gICAgewotICAgICAgICBhdXRvJiBh
ZGFwdGVyID0gc3RkOjpnZXQ8c2l6ZW9mLi4uKEFkYXB0ZXJzKSAtIGluZGV4Pih0dXBsZSk7Ci0g
ICAgICAgIHJldHVybiBhZGFwdGVyLmlzOEJpdCgpICYmIFN0cmluZ0FkYXB0ZXJUdXBsZTxpbmRl
eCAtIDEsIEFkYXB0ZXJzLi4uPjo6aXM4Qml0KHR1cGxlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KK1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlN
YWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCit7Cisg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOworICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKKworICAg
IGJvb2wgb3ZlcmZsb3cgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBhZGFwdGVyMS5s
ZW5ndGgoKTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMi5sZW5ndGgoKSwg
b3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBpZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkpIHsKKyAgICAg
ICAgTENoYXIqIGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwg
PSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAg
ICAgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgTENoYXIqIHJlc3VsdCA9IGJ1ZmZlcjsKKyAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhy
ZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgICAgIGFk
YXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKKworICAgICAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3Vs
dEltcGwpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGlu
bGluZSB2b2lkIHdyaXRlVG8oVCogYnVmZmVyLCBjb25zdCBzdGQ6OnR1cGxlPEFkYXB0ZXJzLi4u
PiYgdHVwbGUpCi0gICAgewotICAgICAgICBhdXRvJiBhZGFwdGVyID0gc3RkOjpnZXQ8c2l6ZW9m
Li4uKEFkYXB0ZXJzKSAtIGluZGV4Pih0dXBsZSk7Ci0gICAgICAgIGFkYXB0ZXIud3JpdGVUbyhi
dWZmZXIpOwotICAgICAgICBTdHJpbmdBZGFwdGVyVHVwbGU8aW5kZXggLSAxLCBBZGFwdGVycy4u
Lj46OndyaXRlVG8oYnVmZmVyICsgYWRhcHRlci5sZW5ndGgoKSwgdHVwbGUpOworICAgIFVDaGFy
KiBidWZmZXI7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICBpZiAoIXJlc3Vs
dEltcGwpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVUNoYXIqIHJlc3VsdCA9IGJ1
ZmZlcjsKKyAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0
ZXIxLmxlbmd0aCgpOworICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKKworICAgIHJldHVy
biBXVEY6Om1vdmUocmVzdWx0SW1wbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5
cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTM+CitSZWZQdHI8
U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBl
MiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczKQoreworICAgIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ1R5cGUxPiBhZGFwdGVyMShzdHJpbmcxKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMj4gYWRhcHRlcjIoc3RyaW5nMik7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3Ry
aW5nVHlwZTM+IGFkYXB0ZXIzKHN0cmluZzMpOworCisgICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNl
OworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIHN1bVdpdGhP
dmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0
aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBpZiAo
b3ZlcmZsb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGFkYXB0ZXIxLmlz
OEJpdCgpICYmIGFkYXB0ZXIyLmlzOEJpdCgpICYmIGFkYXB0ZXIzLmlzOEJpdCgpKSB7CisgICAg
ICAgIExDaGFyKiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7Cisg
ICAgICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIExDaGFyKiByZXN1bHQgPSBidWZmZXI7CisgICAgICAgIGFkYXB0ZXIxLndyaXRlVG8o
cmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgICAgICBh
ZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5n
dGgoKTsKKyAgICAgICAgYWRhcHRlcjMud3JpdGVUbyhyZXN1bHQpOworCisgICAgICAgIHJldHVy
biBXVEY6Om1vdmUocmVzdWx0SW1wbCk7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSBSZWZQ
dHI8U3RyaW5nSW1wbD4gY3JlYXRlU3RyaW5nKGNvbnN0IHN0ZDo6dHVwbGU8QWRhcHRlcnMuLi4+
JiBhZGFwdGVycykKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgICAg
IGlmIChzdW1XaXRoT3ZlcmZsb3coYWRhcHRlcnMpLnNhZmVHZXQobGVuZ3RoKSA9PSBDaGVja2Vk
U3RhdGU6OkRpZE92ZXJmbG93KQorICAgIFVDaGFyKiBidWZmZXIgPSAwOworICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7CisgICAgYWRhcHRlcjEud3Jp
dGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBhZGFw
dGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwor
ICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKworICAgIHJldHVybiBXVEY6Om1vdmUocmVz
dWx0SW1wbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBT
dHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0Pgor
UmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3Ry
aW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5n
NCkKK3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5n
MSk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIp
OworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsK
KyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CisK
KyAgICBib29sIG92ZXJmbG93ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRl
cjEubGVuZ3RoKCk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3Ro
KCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5n
dGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxl
bmd0aCgpLCBvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGlmIChhZGFwdGVyMS5pczhCaXQoKSAmJiBhZGFwdGVyMi5pczhCaXQoKSAm
JiBhZGFwdGVyMy5pczhCaXQoKSAmJiBhZGFwdGVyNC5pczhCaXQoKSkgeworICAgICAgICBMQ2hh
ciogYnVmZmVyOworICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgICAgICBp
ZiAoIXJlc3VsdEltcGwpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBM
Q2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgICAgICBhZGFwdGVyMS53cml0ZVRvKHJlc3VsdCk7
CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICAgICAgYWRhcHRlcjIu
d3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7Cisg
ICAgICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9IGFkYXB0
ZXIzLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7CisKKyAgICAg
ICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICB9CisKKyAgICBVQ2hhciogYnVm
ZmVyOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXN1bHRJbXBs
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7
CisgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMS5s
ZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFk
YXB0ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1
bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOwor
CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
MywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1PgorUmVmUHRyPFN0
cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIg
c3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5n
VHlwZTUgc3RyaW5nNSkKK3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRh
cHRlcjEoc3RyaW5nMSk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0
ZXIyKHN0cmluZzIpOworICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVy
MyhzdHJpbmczKTsKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQo
c3RyaW5nNCk7CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0
cmluZzUpOworCisgICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0
ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRh
cHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBh
ZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgs
IGFkYXB0ZXI1Lmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChhZGFwdGVyMS5pczhCaXQoKSAmJiBhZGFwdGVy
Mi5pczhCaXQoKSAmJiBhZGFwdGVyMy5pczhCaXQoKSAmJiBhZGFwdGVyNC5pczhCaXQoKSAmJiBh
ZGFwdGVyNS5pczhCaXQoKSkgeworICAgICAgICBMQ2hhciogYnVmZmVyOworICAgICAgICBSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoLCBidWZmZXIpOworICAgICAgICBpZiAoIXJlc3VsdEltcGwpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBpZiAoaXM4Qml0KGFkYXB0ZXJzKSkgewot
ICAgICAgICAgICAgTENoYXIqIGJ1ZmZlcjsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBs
PiByZXN1bHQgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVm
ZmVyKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBMQ2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgICAgICBhZGFwdGVy
MS53cml0ZVRvKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsK
KyAgICAgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRh
cHRlcjIubGVuZ3RoKCk7CisgICAgICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAgICAg
ICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNC53cml0ZVRv
KHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICAgICAg
YWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOworCisgICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVz
dWx0SW1wbCk7CisgICAgfQorCisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoLCBidWZmZXIpOworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBVQ2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8o
cmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIu
d3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBh
ZGFwdGVyMy53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgp
OworICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjQu
bGVuZ3RoKCk7CisgICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOworCisgICAgcmV0dXJuIFdU
Rjo6bW92ZShyZXN1bHRJbXBsKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEs
IHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3Ry
aW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNj4KK1Jl
ZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmlu
Z1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQs
IFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYpCit7CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOworICAgIFN0cmluZ1R5
cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKKyAgICBTdHJpbmdUeXBl
QWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CisgICAgU3RyaW5nVHlwZUFk
YXB0ZXI8U3RyaW5nVHlwZTQ+IGFkYXB0ZXI0KHN0cmluZzQpOworICAgIFN0cmluZ1R5cGVBZGFw
dGVyPFN0cmluZ1R5cGU1PiBhZGFwdGVyNShzdHJpbmc1KTsKKyAgICBTdHJpbmdUeXBlQWRhcHRl
cjxTdHJpbmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CisKKyAgICBib29sIG92ZXJmbG93ID0g
ZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgc3Vt
V2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAgICBz
dW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOworICAg
IHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7Cisg
ICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93KTsK
KyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZsb3cp
OworICAgIGlmIChvdmVyZmxvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAo
YWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRlcjMuaXM4Qml0
KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkgJiYgYWRhcHRlcjUuaXM4Qml0KCkgJiYgYWRhcHRlcjYu
aXM4Qml0KCkpIHsKKyAgICAgICAgTENoYXIqIGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgYnVmZmVyKTsKKyAgICAgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIHdyaXRlVG8oYnVmZmVyLCBhZGFwdGVycyk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9CisgICAgICAgIExDaGFyKiByZXN1
bHQgPSBidWZmZXI7CisgICAgICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAg
cmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyMi53cml0ZVRvKHJl
c3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICAgICAgYWRh
cHRlcjMud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3Ro
KCk7CisgICAgICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9
IGFkYXB0ZXI0Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7Cisg
ICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAgICAgICAgYWRhcHRlcjYud3Jp
dGVUbyhyZXN1bHQpOworCisgICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0SW1wbCk7Cisg
ICAgfQorCisgICAgVUNoYXIqIGJ1ZmZlcjsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0
SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIp
OworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBV
Q2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0KTsKKyAg
ICByZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgYWRhcHRlcjIud3JpdGVUbyhyZXN1
bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMy53cml0
ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgIGFkYXB0
ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjQubGVuZ3RoKCk7Cisg
ICAgYWRhcHRlcjUud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5n
dGgoKTsKKyAgICBhZGFwdGVyNi53cml0ZVRvKHJlc3VsdCk7CisKKyAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlc3VsdEltcGwpOworfQogCi0gICAgICAgIFVDaGFyKiBidWZmZXI7Ci0gICAgICAgIFJl
ZlB0cjxTdHJpbmdJbXBsPiByZXN1bHQgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5
cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1l
IFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KK1JlZlB0cjxTdHJpbmdJbXBsPiB0
cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0
cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmlu
ZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcpCit7CisgICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOworICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKKyAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CisgICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTQ+IGFkYXB0ZXI0KHN0cmluZzQpOworICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGU1PiBhZGFwdGVyNShzdHJpbmc1KTsKKyAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CisgICAgU3RyaW5nVHlwZUFkYXB0
ZXI8U3RyaW5nVHlwZTc+IGFkYXB0ZXI3KHN0cmluZzcpOworCisgICAgYm9vbCBvdmVyZmxvdyA9
IGZhbHNlOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgIHN1
bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxvdyk7CisgICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAg
ICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3ZlcmZsb3cpOwor
ICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI1Lmxlbmd0aCgpLCBvdmVyZmxvdyk7
CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjYubGVuZ3RoKCksIG92ZXJmbG93
KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNy5sZW5ndGgoKSwgb3ZlcmZs
b3cpOworICAgIGlmIChvdmVyZmxvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRlcjMuaXM4
Qml0KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkgJiYgYWRhcHRlcjUuaXM4Qml0KCkgJiYgYWRhcHRl
cjYuaXM4Qml0KCkgJiYgYWRhcHRlcjcuaXM4Qml0KCkpIHsKKyAgICAgICAgTENoYXIqIGJ1ZmZl
cjsKKyAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICAgICAgaWYgKCFyZXN1
bHRJbXBsKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgd3JpdGVUbyhi
dWZmZXIsIGFkYXB0ZXJzKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci19OworICAg
ICAgICBMQ2hhciogcmVzdWx0ID0gYnVmZmVyOworICAgICAgICBhZGFwdGVyMS53cml0ZVRvKHJl
c3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5ndGgoKTsKKyAgICAgICAgYWRh
cHRlcjIud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3Ro
KCk7CisgICAgICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9
IGFkYXB0ZXIzLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7Cisg
ICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICAgICAgYWRhcHRlcjUud3Jp
dGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjUubGVuZ3RoKCk7CisgICAg
ICAgIGFkYXB0ZXI2LndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXI2
Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNy53cml0ZVRvKHJlc3VsdCk7CisKKyAgICAgICAg
cmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICB9CisKKyAgICBVQ2hhciogYnVmZmVy
OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXN1bHRJbXBsKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFVDaGFyKiByZXN1bHQgPSBidWZmZXI7Cisg
ICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyMS5sZW5n
dGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0
ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQg
Kz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOworICAg
IHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNS53cml0ZVRvKHJlc3Vs
dCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI2LndyaXRl
VG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7CisgICAgYWRhcHRl
cjcud3JpdGVUbyhyZXN1bHQpOworCisgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsK
K30KIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gQWRhcHRlcnM+Ci1zdHJ1Y3QgU3RyaW5nQWRhcHRl
clR1cGxlPDAsIEFkYXB0ZXJzLi4uPiB7Ci0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBzdW1XaXRoT3ZlcmZsb3coY29uc3Qgc3RkOjp0dXBsZTxBZGFwdGVycy4u
Lj4mKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIGJvb2wgaXM4Qml0KGNvbnN0IHN0ZDo6dHVw
bGU8QWRhcHRlcnMuLi4+JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0YXRpYyB2b2lkIHdyaXRlVG8oVCosIGNvbnN0IHN0ZDo6dHVwbGU8QWRhcHRlcnMuLi4+
JikgeyB9Ci19OwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVu
YW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTcsIHR5cGVuYW1lIFN0cmluZ1R5cGU4PgorUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJp
bmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMg
c3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5n
VHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCkK
K3sKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMT4gYWRhcHRlcjEoc3RyaW5nMSk7
CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTI+IGFkYXB0ZXIyKHN0cmluZzIpOwor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUzPiBhZGFwdGVyMyhzdHJpbmczKTsKKyAg
ICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlND4gYWRhcHRlcjQoc3RyaW5nNCk7CisgICAg
U3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTU+IGFkYXB0ZXI1KHN0cmluZzUpOworICAgIFN0
cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU2PiBhZGFwdGVyNihzdHJpbmc2KTsKKyAgICBTdHJp
bmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlNz4gYWRhcHRlcjcoc3RyaW5nNyk7CisgICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTg+IGFkYXB0ZXI4KHN0cmluZzgpOworCisgICAgYm9vbCBv
dmVyZmxvdyA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFkYXB0ZXIxLmxlbmd0aCgp
OworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXIyLmxlbmd0aCgpLCBvdmVyZmxv
dyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjMubGVuZ3RoKCksIG92ZXJm
bG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNC5sZW5ndGgoKSwgb3Zl
cmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI1Lmxlbmd0aCgpLCBv
dmVyZmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjYubGVuZ3RoKCks
IG92ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNy5sZW5ndGgo
KSwgb3ZlcmZsb3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI4Lmxlbmd0
aCgpLCBvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmIChhZGFwdGVyMS5pczhCaXQoKSAmJiBhZGFwdGVyMi5pczhCaXQoKSAmJiBh
ZGFwdGVyMy5pczhCaXQoKSAmJiBhZGFwdGVyNC5pczhCaXQoKSAmJiBhZGFwdGVyNS5pczhCaXQo
KSAmJiBhZGFwdGVyNi5pczhCaXQoKSAmJiBhZGFwdGVyNy5pczhCaXQoKSAmJiBhZGFwdGVyOC5p
czhCaXQoKSkgeworICAgICAgICBMQ2hhciogYnVmZmVyOworICAgICAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoLCBidWZmZXIpOworICAgICAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5nIEFkYXB0ZXJUeXBlID0g
U3RyaW5nVHlwZUFkYXB0ZXI8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT47CisgICAgICAg
IExDaGFyKiByZXN1bHQgPSBidWZmZXI7CisgICAgICAgIGFkYXB0ZXIxLndyaXRlVG8ocmVzdWx0
KTsKKyAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVy
Mi53cml0ZVRvKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMi5sZW5ndGgoKTsK
KyAgICAgICAgYWRhcHRlcjMud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRh
cHRlcjMubGVuZ3RoKCk7CisgICAgICAgIGFkYXB0ZXI0LndyaXRlVG8ocmVzdWx0KTsKKyAgICAg
ICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNS53cml0ZVRv
KHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKKyAgICAgICAg
YWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVu
Z3RoKCk7CisgICAgICAgIGFkYXB0ZXI3LndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0
ICs9IGFkYXB0ZXI3Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7
CisKKyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICB9CisKKyAgICBV
Q2hhciogYnVmZmVyOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5n
SW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFy
ZXN1bHRJbXBsKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFVDaGFyKiByZXN1bHQg
PSBidWZmZXI7CisgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBh
ZGFwdGVyMS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVz
dWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsK
KyAgICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVUbyhy
ZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNS53
cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAgIGFk
YXB0ZXI2LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7
CisgICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNy5s
ZW5ndGgoKTsKKyAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CisKKyAgICByZXR1cm4gV1RG
Ojptb3ZlKHJlc3VsdEltcGwpOworfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lLi4uIFRzPgotUmVmUHRyPFN0cmluZ0ltcGw+IHRyeU1ha2VTdHJpbmcoY29u
c3QgVDEmIHN0cmluZzEsIGNvbnN0IFQyJiBzdHJpbmcyLCBjb25zdCBUcyYuLi4gc3RyaW5ncykK
K3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdU
eXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFt
ZSBTdHJpbmdUeXBlOCwgdHlwZW5hbWUgU3RyaW5nVHlwZTk+CitSZWZQdHI8U3RyaW5nSW1wbD4g
dHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBT
dHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJp
bmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBl
OCBzdHJpbmc4LCBTdHJpbmdUeXBlOSBzdHJpbmc5KQogewotICAgIGF1dG8gYWRhcHRlcnMgPSBz
dGQ6Om1ha2VfdHVwbGUoQWRhcHRlclR5cGU8VDE+KHN0cmluZzEpLCBBZGFwdGVyVHlwZTxUMj4o
c3RyaW5nMiksIEFkYXB0ZXJUeXBlPFRzPihzdHJpbmdzKS4uLik7Ci0gICAgcmV0dXJuIFN0cmlu
Z0FkYXB0ZXJUdXBsZTwyICsgc2l6ZW9mLi4uKFRzKSwgQWRhcHRlclR5cGU8VDE+LCBBZGFwdGVy
VHlwZTxUMj4sIEFkYXB0ZXJUeXBlPFRzPi4uLj46OmNyZWF0ZVN0cmluZyhhZGFwdGVycyk7Cisg
ICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKHN0cmluZzEpOworICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihzdHJpbmcyKTsKKyAgICBT
dHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMz4gYWRhcHRlcjMoc3RyaW5nMyk7CisgICAgU3Ry
aW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTQ+IGFkYXB0ZXI0KHN0cmluZzQpOworICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFN0cmluZ1R5cGU1PiBhZGFwdGVyNShzdHJpbmc1KTsKKyAgICBTdHJpbmdU
eXBlQWRhcHRlcjxTdHJpbmdUeXBlNj4gYWRhcHRlcjYoc3RyaW5nNik7CisgICAgU3RyaW5nVHlw
ZUFkYXB0ZXI8U3RyaW5nVHlwZTc+IGFkYXB0ZXI3KHN0cmluZzcpOworICAgIFN0cmluZ1R5cGVB
ZGFwdGVyPFN0cmluZ1R5cGU4PiBhZGFwdGVyOChzdHJpbmc4KTsKKyAgICBTdHJpbmdUeXBlQWRh
cHRlcjxTdHJpbmdUeXBlOT4gYWRhcHRlcjkoc3RyaW5nOSk7CisKKyAgICBib29sIG92ZXJmbG93
ID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAg
c3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjIubGVuZ3RoKCksIG92ZXJmbG93KTsKKyAg
ICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyMy5sZW5ndGgoKSwgb3ZlcmZsb3cpOwor
ICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI0Lmxlbmd0aCgpLCBvdmVyZmxvdyk7
CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjUubGVuZ3RoKCksIG92ZXJmbG93
KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyNi5sZW5ndGgoKSwgb3ZlcmZs
b3cpOworICAgIHN1bVdpdGhPdmVyZmxvdyhsZW5ndGgsIGFkYXB0ZXI3Lmxlbmd0aCgpLCBvdmVy
Zmxvdyk7CisgICAgc3VtV2l0aE92ZXJmbG93KGxlbmd0aCwgYWRhcHRlcjgubGVuZ3RoKCksIG92
ZXJmbG93KTsKKyAgICBzdW1XaXRoT3ZlcmZsb3cobGVuZ3RoLCBhZGFwdGVyOS5sZW5ndGgoKSwg
b3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBpZiAoYWRhcHRlcjEuaXM4Qml0KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCkgJiYgYWRhcHRl
cjMuaXM4Qml0KCkgJiYgYWRhcHRlcjQuaXM4Qml0KCkgJiYgYWRhcHRlcjUuaXM4Qml0KCkgJiYg
YWRhcHRlcjYuaXM4Qml0KCkgJiYgYWRhcHRlcjcuaXM4Qml0KCkgJiYgYWRhcHRlcjguaXM4Qml0
KCkgJiYgYWRhcHRlcjkuaXM4Qml0KCkpIHsKKyAgICAgICAgTENoYXIqIGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKKyAgICAgICAgaWYgKCFyZXN1bHRJbXBsKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgTENoYXIqIHJlc3VsdCA9IGJ1
ZmZlcjsKKyAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQg
Kz0gYWRhcHRlcjEubGVuZ3RoKCk7CisgICAgICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsK
KyAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyMy53
cml0ZVRvKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyMy5sZW5ndGgoKTsKKyAg
ICAgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRl
cjQubGVuZ3RoKCk7CisgICAgICAgIGFkYXB0ZXI1LndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAg
cmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyNi53cml0ZVRvKHJl
c3VsdCk7CisgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyNi5sZW5ndGgoKTsKKyAgICAgICAgYWRh
cHRlcjcud3JpdGVUbyhyZXN1bHQpOworICAgICAgICByZXN1bHQgKz0gYWRhcHRlcjcubGVuZ3Ro
KCk7CisgICAgICAgIGFkYXB0ZXI4LndyaXRlVG8ocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ICs9
IGFkYXB0ZXI4Lmxlbmd0aCgpOworICAgICAgICBhZGFwdGVyOS53cml0ZVRvKHJlc3VsdCk7CisK
KyAgICAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICB9CisKKyAgICBVQ2hh
ciogYnVmZmVyOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gU3RyaW5nSW1w
bDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXN1
bHRJbXBsKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFVDaGFyKiByZXN1bHQgPSBi
dWZmZXI7CisgICAgYWRhcHRlcjEud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFw
dGVyMS5sZW5ndGgoKTsKKyAgICBhZGFwdGVyMi53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0
ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOworICAgIGFkYXB0ZXIzLndyaXRlVG8ocmVzdWx0KTsKKyAg
ICByZXN1bHQgKz0gYWRhcHRlcjMubGVuZ3RoKCk7CisgICAgYWRhcHRlcjQud3JpdGVUbyhyZXN1
bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKKyAgICBhZGFwdGVyNS53cml0
ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0ZXI1Lmxlbmd0aCgpOworICAgIGFkYXB0
ZXI2LndyaXRlVG8ocmVzdWx0KTsKKyAgICByZXN1bHQgKz0gYWRhcHRlcjYubGVuZ3RoKCk7Cisg
ICAgYWRhcHRlcjcud3JpdGVUbyhyZXN1bHQpOworICAgIHJlc3VsdCArPSBhZGFwdGVyNy5sZW5n
dGgoKTsKKyAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CisgICAgcmVzdWx0ICs9IGFkYXB0
ZXI4Lmxlbmd0aCgpOworICAgIGFkYXB0ZXI5LndyaXRlVG8ocmVzdWx0KTsKKworICAgIHJldHVy
biBXVEY6Om1vdmUocmVzdWx0SW1wbCk7CiB9CiAKKwogLy8gQ29udmVuaWVuY2Ugb25seS4KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1TdHJpbmcgbWFrZVN0cmluZyhUJiYgc3RyaW5nKQordGVtcGxh
dGU8dHlwZW5hbWUgU3RyaW5nVHlwZTE+CitTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdUeXBlMSBz
dHJpbmcxKQoreworICAgIHJldHVybiBTdHJpbmcoc3RyaW5nMSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KK1N0cmluZyBtYWtlU3Ry
aW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCit7CisgICAgUmVm
UHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmlu
ZzIpOworICAgIGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4g
V1RGOjptb3ZlKHJlc3VsdEltcGwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBl
MSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzPgorU3RyaW5nIG1h
a2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5n
VHlwZTMgc3RyaW5nMykKK3sKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRy
eU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMyk7CisgICAgaWYgKCFyZXN1bHRJ
bXBsKQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0SW1wbCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBl
MiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0PgorU3RyaW5nIG1h
a2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5n
VHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCkKK3sKKyAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5n
Mywgc3RyaW5nNCk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQorICAgICAgICBDUkFTSCgpOworICAg
IHJldHVybiBXVEY6Om1vdmUocmVzdWx0SW1wbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0
cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5
cGVuYW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNT4KK1N0cmluZyBtYWtlU3Ry
aW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUz
IHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCit7Cisg
ICAgUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEs
IHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUpOworICAgIGlmICghcmVzdWx0SW1w
bCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywg
U3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3Ry
aW5nNikKIHsKLSAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KHN0cmluZyk7CisgICAgUmVmUHRy
PFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIs
IHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYpOworICAgIGlmICghcmVzdWx0SW1w
bCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIs
IHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KK1N0
cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIs
IFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0
cmluZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcpCit7CisgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSB0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0
cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcpOworICAg
IGlmICghcmVzdWx0SW1wbCkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gV1RGOjptb3Zl
KHJlc3VsdEltcGwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBl
NCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+CitTdHJpbmcgbWFrZVN0cmluZyhTdHJp
bmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmcz
LCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBz
dHJpbmc2LCBTdHJpbmdUeXBlNyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4KQoreworICAg
IFJlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBz
dHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBzdHJpbmc3LCBzdHJp
bmc4KTsKKyAgICBpZiAoIXJlc3VsdEltcGwpCisgICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJu
IFdURjo6bW92ZShyZXN1bHRJbXBsKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZS4uLiBUcz4KLVN0cmluZyBtYWtlU3RyaW5nKGNvbnN0IFQxJiBzdHJp
bmcxLCBjb25zdCBUMiYgc3RyaW5nMiwgY29uc3QgVHMmLi4uIHN0cmluZ3MpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmlu
Z1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVu
YW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlw
ZTgsIHR5cGVuYW1lIFN0cmluZ1R5cGU5PgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwg
U3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTggc3RyaW5nOCwgU3RyaW5nVHlwZTkgc3Ry
aW5nOSkKIHsKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0ID0gdHJ5TWFrZVN0cmluZyhz
dHJpbmcxLCBzdHJpbmcyLCBzdHJpbmdzLi4uKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBSZWZQ
dHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IHRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5n
Miwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5nNywgc3RyaW5nOCwg
c3RyaW5nOSk7CisgICAgaWYgKCFyZXN1bHRJbXBsKQogICAgICAgICBDUkFTSCgpOwotICAgIHJl
dHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nT3BlcmF0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9y
cy5oCmluZGV4IDkxZDA3NGMwYjhlZDZhNDFkOGQ4MGU4NDIwYmNmMjUyODBjYjBjODYuLmNmZDJm
NmQ2Y2FjY2QxNjg2NTI1YTg3ZWE2ODIyZDdiNDAzY2I5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdPcGVyYXRvcnMuaApAQCAtMjQsMjAgKzI0LDIxIEBACiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBT
dHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CiBjbGFzcyBTdHJpbmdBcHBlbmQgewog
cHVibGljOgotICAgIFN0cmluZ0FwcGVuZChjb25zdCBUMSYgc3RyaW5nMSwgY29uc3QgVDImIHN0
cmluZzIpCi0gICAgICAgIDogbV90dXBsZShzdGQ6Om1ha2VfdHVwbGUoQWRhcHRlclR5cGU8VDE+
KHN0cmluZzEpLCBBZGFwdGVyVHlwZTxUMj4oc3RyaW5nMikpKQorICAgIFN0cmluZ0FwcGVuZChT
dHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQorICAgICAgICA6IG1fc3Ry
aW5nMShzdHJpbmcxKQorICAgICAgICAsIG1fc3RyaW5nMihzdHJpbmcyKQogICAgIHsKICAgICB9
CiAKICAgICBvcGVyYXRvciBTdHJpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgUmVmUHRyPFN0
cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBTdHJpbmdBZGFwdGVyVHVwbGU8MiwgQWRhcHRlclR5cGU8
VDE+LCBBZGFwdGVyVHlwZTxUMj4+OjpjcmVhdGVTdHJpbmcobV90dXBsZSk7CisgICAgICAgIFJl
ZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gdHJ5TWFrZVN0cmluZyhtX3N0cmluZzEsIG1f
c3RyaW5nMik7CiAgICAgICAgIGlmICghcmVzdWx0SW1wbCkKICAgICAgICAgICAgIENSQVNIKCk7
Ci0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0SW1wbCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHRJbXBsLnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmco
KSBjb25zdApAQCAtNDUsNTIgKzQ2LDU5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wZXJh
dG9yIFN0cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QKKyAgICBib29s
IGlzOEJpdCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RyaW5nMSgpLmlzOEJpdCgpICYmIHN0
cmluZzIoKS5pczhCaXQoKTsKKyAgICAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+
IGFkYXB0ZXIxKG1fc3RyaW5nMSk7CisgICAgICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5
cGUyPiBhZGFwdGVyMihtX3N0cmluZzIpOworICAgICAgICByZXR1cm4gYWRhcHRlcjEuaXM4Qml0
KCkgJiYgYWRhcHRlcjIuaXM4Qml0KCk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZVRvKExDaGFy
KiBkZXN0aW5hdGlvbikgY29uc3QKKyAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9u
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzOEJpdCgpKTsKLSAgICAgICAgc3RyaW5nMSgpLndy
aXRlVG8oZGVzdGluYXRpb24pOwotICAgICAgICBzdHJpbmcyKCkud3JpdGVUbyhkZXN0aW5hdGlv
biArIHN0cmluZzEoKS5sZW5ndGgoKSk7CisgICAgICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOworICAgICAgICBTdHJpbmdUeXBlQWRhcHRlcjxT
dHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsKKyAgICAgICAgYWRhcHRlcjEud3JpdGVU
byhkZXN0aW5hdGlvbik7CisgICAgICAgIGFkYXB0ZXIyLndyaXRlVG8oZGVzdGluYXRpb24gKyBh
ZGFwdGVyMS5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0
aW5hdGlvbikgY29uc3QKKyAgICB2b2lkIHdyaXRlVG8oVUNoYXIqIGRlc3RpbmF0aW9uKQogICAg
IHsKLSAgICAgICAgc3RyaW5nMSgpLndyaXRlVG8oZGVzdGluYXRpb24pOwotICAgICAgICBzdHJp
bmcyKCkud3JpdGVUbyhkZXN0aW5hdGlvbiArIHN0cmluZzEoKS5sZW5ndGgoKSk7CisgICAgICAg
IFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUxPiBhZGFwdGVyMShtX3N0cmluZzEpOworICAg
ICAgICBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdUeXBlMj4gYWRhcHRlcjIobV9zdHJpbmcyKTsK
KyAgICAgICAgYWRhcHRlcjEud3JpdGVUbyhkZXN0aW5hdGlvbik7CisgICAgICAgIGFkYXB0ZXIy
LndyaXRlVG8oZGVzdGluYXRpb24gKyBhZGFwdGVyMS5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKKyAgICB1bnNpZ25lZCBsZW5ndGgoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0cmluZzEoKS5sZW5ndGgoKSArIHN0cmluZzIoKS5sZW5ndGgoKTsKKyAg
ICAgICAgU3RyaW5nVHlwZUFkYXB0ZXI8U3RyaW5nVHlwZTE+IGFkYXB0ZXIxKG1fc3RyaW5nMSk7
CisgICAgICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmluZ1R5cGUyPiBhZGFwdGVyMihtX3N0cmlu
ZzIpOworICAgICAgICByZXR1cm4gYWRhcHRlcjEubGVuZ3RoKCkgKyBhZGFwdGVyMi5sZW5ndGgo
KTsKICAgICB9ICAgIAogCiBwcml2YXRlOgotICAgIHN0ZDo6dHVwbGU8QWRhcHRlclR5cGU8VDE+
LCBBZGFwdGVyVHlwZTxUMj4+IG1fdHVwbGU7Ci0gICAgY29uc3QgQWRhcHRlclR5cGU8VDE+JiBz
dHJpbmcxKCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8MD4obV90dXBsZSk7IH0KLSAgICBjb25z
dCBBZGFwdGVyVHlwZTxUMj4mIHN0cmluZzIoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDwxPiht
X3R1cGxlKTsgfQorICAgIFN0cmluZ1R5cGUxIG1fc3RyaW5nMTsKKyAgICBTdHJpbmdUeXBlMiBt
X3N0cmluZzI7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTI+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdBcHBlbmQ8U3RyaW5n
VHlwZTEsIFN0cmluZ1R5cGUyPj4gewogcHVibGljOgotICAgIFN0cmluZ1R5cGVBZGFwdGVyPFN0
cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+Pihjb25zdCBTdHJpbmdBcHBlbmQ8
U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgYnVmZmVyKQorICAgIFN0cmluZ1R5cGVBZGFwdGVy
PFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+PihTdHJpbmdBcHBlbmQ8U3Ry
aW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
cikKICAgICB7CiAgICAgfQogCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIubGVuZ3RoKCk7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2J1
ZmZlci5sZW5ndGgoKTsgfQogCi0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5pczhCaXQoKTsgfQorICAgIGJvb2wgaXM4Qml0KCkgeyByZXR1cm4gbV9idWZmZXIuaXM4
Qml0KCk7IH0KIAotICAgIHZvaWQgd3JpdGVUbyhMQ2hhciogZGVzdGluYXRpb24pIGNvbnN0IHsg
bV9idWZmZXIud3JpdGVUbyhkZXN0aW5hdGlvbik7IH0KLSAgICB2b2lkIHdyaXRlVG8oVUNoYXIq
IGRlc3RpbmF0aW9uKSBjb25zdCB7IG1fYnVmZmVyLndyaXRlVG8oZGVzdGluYXRpb24pOyB9Cisg
ICAgdm9pZCB3cml0ZVRvKExDaGFyKiBkZXN0aW5hdGlvbikgeyBtX2J1ZmZlci53cml0ZVRvKGRl
c3RpbmF0aW9uKTsgfQorICAgIHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pIHsgbV9i
dWZmZXIud3JpdGVUbyhkZXN0aW5hdGlvbik7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBTdHJp
bmdBcHBlbmQ8U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgbV9idWZmZXI7CisgICAgU3RyaW5n
QXBwZW5kPFN0cmluZ1R5cGUxLCBTdHJpbmdUeXBlMj4mIG1fYnVmZmVyOwogfTsKIAogaW5saW5l
IFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwgU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgY2hhciog
c3RyaW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>