<?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>177881</bug_id>
          
          <creation_ts>2017-10-04 10:21:20 -0700</creation_ts>
          <short_desc>WTF: Update std::expected to match current proposal</short_desc>
          <delta_ts>2017-10-04 13:55:46 -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 Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356490</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-10-04 10:21:20 -0700</bug_when>
    <thetext>The proposal is likely to be in C++20 and I&apos;ve been asked to help co-champion it. I&apos;m therefore updating our implementation to more closely match the current proposal, and to make sure it&apos;ll work for us if standardized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356503</commentid>
    <comment_count>1</comment_count>
      <attachid>322688</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-10-04 10:45:47 -0700</bug_when>
    <thetext>Created attachment 322688
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356510</commentid>
    <comment_count>2</comment_count>
      <attachid>322688</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-10-04 10:52:47 -0700</bug_when>
    <thetext>Comment on attachment 322688
patch

r=me if EWS bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356638</commentid>
    <comment_count>3</comment_count>
      <attachid>322688</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-04 13:54:30 -0700</bug_when>
    <thetext>Comment on attachment 322688
patch

Clearing flags on attachment: 322688

Committed r222878: &lt;http://trac.webkit.org/changeset/222878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356639</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-04 13:54:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356642</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-04 13:55:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/34819951&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322688</attachid>
            <date>2017-10-04 10:45:47 -0700</date>
            <delta_ts>2017-10-04 13:54:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WTF-Update-std-expected-to-match-current-proposal.patch</filename>
            <type>text/plain</type>
            <size>41683</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzZjUxOTU4MGMzN2NkNjI4NGZhMWNlN2ViNTJlYjcwMjI5NDA4MGI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDI4IFNlcCAyMDE3IDEyOjAwOjI3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV1RGOiBV
cGRhdGUgc3RkOjpleHBlY3RlZCB0byBtYXRjaCBjdXJyZW50IHByb3Bvc2FsCgpUaGUgcHJvcG9z
YWwgaXMgbGlrZWx5IHRvIGJlIGluIEMrKzIwIGFuZCBJJ3ZlIGJlZW4gYXNrZWQgdG8gaGVscCBj
by1jaGFtcGlvbgppdC4gSSdtIHRoZXJlZm9yZSB1cGRhdGluZyBvdXIgaW1wbGVtZW50YXRpb24g
dG8gbW9yZSBjbG9zZWx5IG1hdGNoIHRoZSBjdXJyZW50CnByb3Bvc2FsLCBhbmQgdG8gbWFrZSBz
dXJlIGl0J2xsIHdvcmsgZm9yIHVzIGlmIHN0YW5kYXJkaXplZC4KCiAtIFJlbmFtZSBVbmV4cGVj
dGVkVHlwZSB0byBVbmV4cGVjdGVkIHRvIG1hdGNoIHRoZSBwcm9wb3NhbC4KIC0gUmVtb3ZlIHJl
bGF0aW9uYWwgb3BlcmF0b3JzLCBvbmx5IGVxdWFsaXR5IC8gaW5lcXVhbGl0eSByZW1haW5zLgog
LSBGaXggbWlub3IgdHlwZSBzaWduYXR1cmVzLgogLSBBZGQgVW5leHBlY3RlZFR5cGUgdHlwZWRl
Zi4KIC0gVW5jb21tZW50IHJlYmluZCBpbXBsZW1lbnRhdGlvbi4KIC0gQWRkIGluLXBsYWNlIGNv
bnN0cnVjdGlvbiB0YWcsIGFzIHdlbGwgYXMgZXhwbGljaXQgZXJyb3IgY29uc3RydWN0aW9uIHRh
Zy4KIC0gQWRkIHRlbXBsYXRlIHVuZXhwZWN0ZWQgY29uc3RydWN0b3IuCiAtIE5vdGUgdGhhdCBt
YWtlX3VuZXhwZWN0ZWQgaXNuJ3QgaW4gdGhlIHByb3Bvc2FsIGFueW1vcmUsIGJ1dCB3ZSBrZWVw
IGl0IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBDKysxNyBkZWR1Y3Rpb24gZ3VpZGVzLgogLSBSZW1v
dmUgaGFzaGluZywgd2hpY2ggaXNuJ3QgaW4gdGhlIHByb3Bvc2FsIGFueW1vcmUuCi0tLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAgMTggKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCAgIHwgICAy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcCAgICAgICAgICB8
ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oICAgICAgICAg
ICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAg
ICAgICAgIHwgICAyICstCiAuLi4vd2FzbS9nZW5lcmF0ZVdhc21WYWxpZGF0ZUlubGluZXNIZWFk
ZXIucHkgICAgICB8ICAxNiArLQogU291cmNlL1dURi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMzEgKysrKwogU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAyMDEgKysrKysrKysrKy0tLS0tLS0tLS0tCiBUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArKysKIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcCAgICAgICAgIHwgMTEwICsr
LS0tLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygrKSwgMjE1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM0ZDdjMzIuLjAyN2MxMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEwLTA0ICBKRiBC
YXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXVEY6IFVwZGF0ZSBzdGQ6
OmV4cGVjdGVkIHRvIG1hdGNoIGN1cnJlbnQgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg4MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkuCisKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjptYWtlVmFsaWRhdGlvblJlc3VsdCk6CisgICAgICAgICogd2Fz
bS9XYXNtUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAg
ICAqIHdhc20vZ2VuZXJhdGVXYXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5OgorICAgICAgICAo
bG9hZE1hY3JvKToKKyAgICAgICAgKHN0b3JlTWFjcm8pOgorCiAyMDE3LTEwLTA0ICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEdlbmVy
YXRlIGEgY29tcGlsZSBlcnJvciBpZiByZWxlYXNlIGlzIGJ1aWx0IHdpdGhvdXQgY29tcGlsZXIg
b3B0aW1pemF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IGFmNmNmZTguLjNkYThmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBFeHByZXNzaW9uVHlwZSBlbXB0eUV4cHJl
c3Npb24gPSBudWxscHRyOwogCiAgICAgdHlwZWRlZiBTdHJpbmcgRXJyb3JUeXBlOwotICAgIHR5
cGVkZWYgVW5leHBlY3RlZFR5cGU8RXJyb3JUeXBlPiBVbmV4cGVjdGVkUmVzdWx0OworICAgIHR5
cGVkZWYgVW5leHBlY3RlZDxFcnJvclR5cGU+IFVuZXhwZWN0ZWRSZXN1bHQ7CiAgICAgdHlwZWRl
ZiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIEVycm9yVHlwZT4g
UmVzdWx0OwogICAgIHR5cGVkZWYgRXhwZWN0ZWQ8dm9pZCwgRXJyb3JUeXBlPiBQYXJ0aWFsUmVz
dWx0OwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTW9kdWxlLmNwcAppbmRleCA5OTJlM2Q2Li4wYjIxY2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0
aWMgTW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0IG1ha2VWYWxpZGF0aW9uUmVzdWx0KEJCUVBsYW4m
IHBsYW4pCiB7CiAgICAgQVNTRVJUKCFwbGFuLmhhc1dvcmsoKSk7CiAgICAgaWYgKHBsYW4uZmFp
bGVkKCkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxTdHJpbmc+KHBsYW4uZXJyb3JN
ZXNzYWdlKCkpOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxTdHJpbmc+KHBsYW4uZXJyb3JN
ZXNzYWdlKCkpOwogICAgIHJldHVybiBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQoTW9kdWxlOjpj
cmVhdGUocGxhbi50YWtlTW9kdWxlSW5mb3JtYXRpb24oKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggZmYyOGRiMC4uOTVmNGRiNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAtNTQsNyArNTQsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KIGNsYXNzIFBhcnNlciB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBTdHJpbmcgRXJyb3JUeXBlOwotICAgIHR5cGVkZWYgVW5leHBlY3RlZFR5cGU8RXJyb3JU
eXBlPiBVbmV4cGVjdGVkUmVzdWx0OworICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFcnJvclR5cGU+
IFVuZXhwZWN0ZWRSZXN1bHQ7CiAgICAgdHlwZWRlZiBFeHBlY3RlZDx2b2lkLCBFcnJvclR5cGU+
IFBhcnRpYWxSZXN1bHQ7CiAgICAgdHlwZWRlZiBFeHBlY3RlZDxTdWNjZXNzVHlwZSwgRXJyb3JU
eXBlPiBSZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUu
Y3BwCmluZGV4IDFhNDZmNWMuLjExNmY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVZhbGlkYXRlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5
cGUgbV9zaWduYXR1cmU7CiAgICAgfTsKICAgICB0eXBlZGVmIFN0cmluZyBFcnJvclR5cGU7Ci0g
ICAgdHlwZWRlZiBVbmV4cGVjdGVkVHlwZTxFcnJvclR5cGU+IFVuZXhwZWN0ZWRSZXN1bHQ7Cisg
ICAgdHlwZWRlZiBVbmV4cGVjdGVkPEVycm9yVHlwZT4gVW5leHBlY3RlZFJlc3VsdDsKICAgICB0
eXBlZGVmIEV4cGVjdGVkPHZvaWQsIEVycm9yVHlwZT4gUmVzdWx0OwogICAgIHR5cGVkZWYgVHlw
ZSBFeHByZXNzaW9uVHlwZTsKICAgICB0eXBlZGVmIENvbnRyb2xEYXRhIENvbnRyb2xUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtVmFsaWRh
dGVJbmxpbmVzSGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVX
YXNtVmFsaWRhdGVJbmxpbmVzSGVhZGVyLnB5CmluZGV4IDZjOTk5MGIuLjE4MDUzZDMgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbVZhbGlkYXRlSW5s
aW5lc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdh
c21WYWxpZGF0ZUlubGluZXNIZWFkZXIucHkKQEAgLTYzLDcgKzYzLDcgQEAgZGVmIHVuYXJ5TWFj
cm8obmFtZSk6CiB0ZW1wbGF0ZTw+IGF1dG8gVmFsaWRhdGU6OmFkZE9wPE9wVHlwZTo6IiIiICsg
dG9DcHAobmFtZSkgKyAiIiI+KEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBSZXN1bHQKIHsKICAgICBpZiAoVU5MSUtFTFkodmFsdWUgIT0gIiIiICsgY3Bw
VHlwZShvcFsicGFyYW1ldGVyIl1bMF0pICsgIiIiKSkKLSAgICAgICAgcmV0dXJuIFVuZXhwZWN0
ZWRUeXBlPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUg
KyAiIiIgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxS
ZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHZh
bHVlIHR5cGUgbWlzbWF0Y2giKTsKIAogICAgIHJlc3VsdCA9ICIiIiArIGNwcFR5cGUob3BbInJl
dHVybiJdWzBdKSArICIiIjsKICAgICByZXR1cm4geyB9OwpAQCAtNzcsMTAgKzc3LDEwIEBAIGRl
ZiBiaW5hcnlNYWNybyhuYW1lKToKIHRlbXBsYXRlPD4gYXV0byBWYWxpZGF0ZTo6YWRkT3A8T3BU
eXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIj4oRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVz
c2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFJlc3VsdAogewogICAg
IGlmIChVTkxJS0VMWShsZWZ0ICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFtZXRlciJdWzBdKSAr
ICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxSZXN1bHQ6OkVycm9yVHlwZT4o
InZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIGxlZnQgdmFsdWUgdHlwZSBtaXNt
YXRjaCIpOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZh
bGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIGxlZnQgdmFsdWUgdHlwZSBtaXNtYXRj
aCIpOwogCiAgICAgaWYgKFVOTElLRUxZKHJpZ2h0ICE9ICIiIiArIGNwcFR5cGUob3BbInBhcmFt
ZXRlciJdWzFdKSArICIiIikpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxSZXN1bHQ6
OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHJpZ2h0IHZh
bHVlIHR5cGUgbWlzbWF0Y2giKTsKKyAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVzdWx0OjpF
cnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsgbmFtZSArICIiIiByaWdodCB2YWx1
ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICByZXN1bHQgPSAiIiIgKyBjcHBUeXBlKG9wWyJyZXR1
cm4iXVswXSkgKyAiIiI7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTkyLDcgKzkyLDcgQEAgZGVmIGxv
YWRNYWNybyhuYW1lKToKICAgICByZXR1cm4gIiIiCiAgICAgY2FzZSBMb2FkT3BUeXBlOjoiIiIg
KyB0b0NwcChuYW1lKSArICIiIjogewogICAgICAgICBpZiAoVU5MSUtFTFkocG9pbnRlciAhPSAi
IiIgKyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAgICAgICAgcmV0
dXJuIFVuZXhwZWN0ZWRUeXBlPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6
ICIiIiArIG5hbWUgKyAiIiIgcG9pbnRlciB0eXBlIG1pc21hdGNoIik7CisgICAgICAgICAgICBy
ZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAi
IiIgKyBuYW1lICsgIiIiIHBvaW50ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgICAgIHJlc3Vs
dCA9ICIiIiArIGNwcFR5cGUob3BbInJldHVybiJdWzBdKSArICIiIjsKICAgICAgICAgcmV0dXJu
IHsgfTsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIGRlZiBzdG9yZU1hY3JvKG5hbWUpOgogICAgIHJl
dHVybiAiIiIKICAgICBjYXNlIFN0b3JlT3BUeXBlOjoiIiIgKyB0b0NwcChuYW1lKSArICIiIjog
ewogICAgICAgICBpZiAoVU5MSUtFTFkocG9pbnRlciAhPSAiIiIgKyBjcHBUeXBlKG9wWyJwYXJh
bWV0ZXIiXVswXSkgKyAiIiIpKQotICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlPFJl
c3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIiIiArIG5hbWUgKyAiIiIgcG9p
bnRlciB0eXBlIG1pc21hdGNoIik7CisgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1
bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiAiIiIgKyBuYW1lICsgIiIiIHBvaW50
ZXIgdHlwZSBtaXNtYXRjaCIpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZSAhPSAiIiIg
KyBjcHBUeXBlKG9wWyJwYXJhbWV0ZXIiXVsxXSkgKyAiIiIpKQotICAgICAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWRUeXBlPFJlc3VsdDo6RXJyb3JUeXBlPigidmFsaWRhdGlvbiBmYWlsZWQ6ICIi
IiArIG5hbWUgKyAiIiIgdmFsdWUgdHlwZSBtaXNtYXRjaCIpOworICAgICAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWQ8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogIiIiICsg
bmFtZSArICIiIiB2YWx1ZSB0eXBlIG1pc21hdGNoIik7CiAKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9IiIiCkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIGF1dG8gVmFsaWRhdGU6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUg
cG9pbnRlciwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCwgdWludDMyX3QpIC0+IFJlc3VsdAogewog
ICAgIGlmIChVTkxJS0VMWSghaGFzTWVtb3J5KCkpKQotICAgICAgICByZXR1cm4gVW5leHBlY3Rl
ZFR5cGU8UmVzdWx0OjpFcnJvclR5cGU+KCJ2YWxpZGF0aW9uIGZhaWxlZDogbG9hZCBpbnN0cnVj
dGlvbiB3aXRob3V0IG1lbW9yeSIpOworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6
OkVycm9yVHlwZT4oInZhbGlkYXRpb24gZmFpbGVkOiBsb2FkIGluc3RydWN0aW9uIHdpdGhvdXQg
bWVtb3J5Iik7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAiIiIgKyBsb2FkQ2FzZXMgKyAiIiIKQEAg
LTE1MCw3ICsxNTAsNyBAQCBhdXRvIFZhbGlkYXRlOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJl
c3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJiByZXN1bAogYXV0byBWYWxpZGF0ZTo6
c3RvcmUoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25U
eXBlIHZhbHVlLCB1aW50MzJfdCkgLT4gUmVzdWx0CiB7CiAgICAgaWYgKFVOTElLRUxZKCFoYXNN
ZW1vcnkoKSkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkVHlwZTxSZXN1bHQ6OkVycm9yVHlw
ZT4oInZhbGlkYXRpb24gZmFpbGVkOiBzdG9yZSBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIp
OworICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZXN1bHQ6OkVycm9yVHlwZT4oInZhbGlkYXRp
b24gZmFpbGVkOiBzdG9yZSBpbnN0cnVjdGlvbiB3aXRob3V0IG1lbW9yeSIpOwogCiAgICAgc3dp
dGNoIChvcCkgewogIiIiICsgc3RvcmVDYXNlcyArICIiIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1MjliMGZmLi5kYWMyMDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE3LTEwLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KKworICAgICAgICBXVEY6IFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNo
IGN1cnJlbnQgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3Nzg4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBwcm9wb3NhbCBpcyBsaWtlbHkgdG8gYmUgaW4gQysrMjAgYW5kIEkndmUg
YmVlbiBhc2tlZCB0byBoZWxwIGNvLWNoYW1waW9uCisgICAgICAgIGl0LiBJJ20gdGhlcmVmb3Jl
IHVwZGF0aW5nIG91ciBpbXBsZW1lbnRhdGlvbiB0byBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIGN1
cnJlbnQKKyAgICAgICAgcHJvcG9zYWwsIGFuZCB0byBtYWtlIHN1cmUgaXQnbGwgd29yayBmb3Ig
dXMgaWYgc3RhbmRhcmRpemVkLgorCisgICAgICAgICAtIFJlbmFtZSBVbmV4cGVjdGVkVHlwZSB0
byBVbmV4cGVjdGVkIHRvIG1hdGNoIHRoZSBwcm9wb3NhbC4KKyAgICAgICAgIC0gUmVtb3ZlIHJl
bGF0aW9uYWwgb3BlcmF0b3JzLCBvbmx5IGVxdWFsaXR5IC8gaW5lcXVhbGl0eSByZW1haW5zLgor
ICAgICAgICAgLSBGaXggbWlub3IgdHlwZSBzaWduYXR1cmVzLgorICAgICAgICAgLSBBZGQgVW5l
eHBlY3RlZFR5cGUgdHlwZWRlZi4KKyAgICAgICAgIC0gVW5jb21tZW50IHJlYmluZCBpbXBsZW1l
bnRhdGlvbi4KKyAgICAgICAgIC0gQWRkIGluLXBsYWNlIGNvbnN0cnVjdGlvbiB0YWcsIGFzIHdl
bGwgYXMgZXhwbGljaXQgZXJyb3IgY29uc3RydWN0aW9uIHRhZy4KKyAgICAgICAgIC0gQWRkIHRl
bXBsYXRlIHVuZXhwZWN0ZWQgY29uc3RydWN0b3IuCisgICAgICAgICAtIE5vdGUgdGhhdCBtYWtl
X3VuZXhwZWN0ZWQgaXNuJ3QgaW4gdGhlIHByb3Bvc2FsIGFueW1vcmUsIGJ1dCB3ZSBrZWVwIGl0
IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBDKysxNyBkZWR1Y3Rpb24gZ3VpZGVzLgorICAgICAgICAg
LSBSZW1vdmUgaGFzaGluZywgd2hpY2ggaXNuJ3QgaW4gdGhlIHByb3Bvc2FsIGFueW1vcmUuCisK
KyAgICAgICAgKiB3dGYvRXhwZWN0ZWQuaDoKKyAgICAgICAgKFdURjo6VW5leHBlY3RlZDo6VW5l
eHBlY3RlZCk6CisgICAgICAgIChXVEY6OlVuZXhwZWN0ZWQ6OnZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoV1RGOjptYWtlVW5leHBlY3RlZCk6CisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpFeHBlY3Rl
ZCk6CisgICAgICAgIChXVEY6OkV4cGVjdGVkOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpF
eHBlY3RlZDo6Z2V0VW5leHBlY3RlZCBjb25zdCk6CisKIDIwMTctMTAtMDQgIENhcmxvcyBBbGJl
cnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgR2VuZXJhdGUg
YSBjb21waWxlIGVycm9yIGlmIHJlbGVhc2UgaXMgYnVpbHQgd2l0aG91dCBjb21waWxlciBvcHRp
bWl6YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oIGIvU291cmNl
L1dURi93dGYvRXhwZWN0ZWQuaAppbmRleCBhMzc2Y2QwLi4yNTBhZWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzgsMTMgKzM4LDEzIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZSA8Y2xhc3MgRT4K
LWNsYXNzIFVuZXhwZWN0ZWRUeXBlIHsKK3RlbXBsYXRlPGNsYXNzIEU+CitjbGFzcyBVbmV4cGVj
dGVkIHsKIHB1YmxpYzoKLSAgICBVbmV4cGVjdGVkVHlwZSgpID0gZGVsZXRlOwotICAgIGNvbnN0
ZXhwciBleHBsaWNpdCBVbmV4cGVjdGVkVHlwZShjb25zdCBFJiBlKSA6IHZhbChlKSB7IH0KLSAg
ICBjb25zdGV4cHIgZXhwbGljaXQgVW5leHBlY3RlZFR5cGUoRSYmIGUpIDogdmFsKHN0ZDo6Zm9y
d2FyZDxFPihlKSkgeyB9Ci0gICAgY29uc3RleHByIGNvbnN0IEUmIHZhbHVlKCkgY29uc3QmIHsg
cmV0dXJuIHZhbDsgfQorICAgIFVuZXhwZWN0ZWQoKSA9IGRlbGV0ZTsKKyAgICBjb25zdGV4cHIg
ZXhwbGljaXQgVW5leHBlY3RlZChjb25zdCBFJiBlKSA6IHZhbChlKSB7IH0KKyAgICBjb25zdGV4
cHIgZXhwbGljaXQgVW5leHBlY3RlZChFJiYgZSkgOiB2YWwoc3RkOjpmb3J3YXJkPEU+KGUpKSB7
IH0KKyAgICBjb25zdGV4cHIgY29uc3QgRSYgdmFsdWUoKSBjb25zdCAmIHsgcmV0dXJuIHZhbDsg
fQogICAgIFJFTEFYRURfQ09OU1RFWFBSIEUmIHZhbHVlKCkgJiB7IHJldHVybiB2YWw7IH0KICAg
ICBSRUxBWEVEX0NPTlNURVhQUiBFJiYgdmFsdWUoKSAmJiB7IHJldHVybiBXVEZNb3ZlKHZhbCk7
IH0KIApAQCAtNTIsMTkgKzUyLDIxIEBAIHByaXZhdGU6CiAgICAgRSB2YWw7CiB9OwogCi10ZW1w
bGF0ZSA8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmV4cGVjdGVk
VHlwZTxFPiYgbGhzLCBjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgcmhzKSB7IHJldHVybiBsaHMu
dmFsdWUoKSA9PSByaHMudmFsdWUoKTsgfQotdGVtcGxhdGUgPGNsYXNzIEU+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIGxocywgY29uc3QgVW5leHBl
Y3RlZFR5cGU8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgIT0gcmhzLnZhbHVlKCk7IH0K
LXRlbXBsYXRlIDxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5leHBl
Y3RlZFR5cGU8RT4mIGxocywgY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHJocykgeyByZXR1cm4g
bGhzLnZhbHVlKCkgPCByaHMudmFsdWUoKTsgfQotdGVtcGxhdGUgPGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgbGhzLCBjb25zdCBVbmV4
cGVjdGVkVHlwZTxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSA+IHJocy52YWx1ZSgpOyB9
Ci10ZW1wbGF0ZSA8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBVbmV4
cGVjdGVkVHlwZTxFPiYgbGhzLCBjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgcmhzKSB7IHJldHVy
biBsaHMudmFsdWUoKSA8PSByaHMudmFsdWUoKTsgfQotdGVtcGxhdGUgPGNsYXNzIEU+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIGxocywgY29uc3Qg
VW5leHBlY3RlZFR5cGU8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgPj0gcmhzLnZhbHVl
KCk7IH0KK3RlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCBVbmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJuIGxo
cy52YWx1ZSgpID09IHJocy52YWx1ZSgpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgVW5leHBlY3Rl
ZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSAhPSByaHMudmFsdWUoKTsgfQogCi10ZW1w
bGF0ZSA8Y2xhc3MgRT4gY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlPHN0ZDo6ZGVjYXlfdDxFPj4g
bWFrZVVuZXhwZWN0ZWQoRSYmIHYpIHsgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlPHR5cGVuYW1lIHN0
ZDo6ZGVjYXk8RT46OnR5cGU+KHN0ZDo6Zm9yd2FyZDxFPih2KSk7IH0KK3RlbXBsYXRlPGNsYXNz
IEU+IGNvbnN0ZXhwciBVbmV4cGVjdGVkPHN0ZDo6ZGVjYXlfdDxFPj4gbWFrZVVuZXhwZWN0ZWQo
RSYmIHYpIHsgcmV0dXJuIFVuZXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpkZWNheTxFPjo6dHlwZT4o
c3RkOjpmb3J3YXJkPEU+KHYpKTsgfQogCiBzdHJ1Y3QgVW5leHBlY3RUYWcgewotICAgIFVuZXhw
ZWN0VGFnKCkgPSBkZWxldGU7CisgICAgVW5leHBlY3RUYWcoKSA9IGRlZmF1bHQ7CiB9OwotY29u
c3RleHByIFVuZXhwZWN0VGFnIFVuZXhwZWN0IHsgfTsKK2NvbnN0ZXhwciBVbmV4cGVjdFRhZyBV
bmV4cGVjdCB7IH07IC8vIEZJWE1FIFRoaXMgaXMgYW4gaW5saW5lIHZhcmlhYmxlIGZvciBDKysx
NyBhbmQgbGF0ZXIuCisKKy8vIEZJWE1FIHRoaXMgc2hvdWxkIGp1c3QgYmUgc3RkOjppbl9wbGFj
ZV90IHdoaWNoIHdlIGFsc28gZGVmaW5lIGluIG9wdGlvbmFsIGFuZCB2YXJpYW50Lgorc3RydWN0
IEluUGxhY2VUYWcgeworICAgIEluUGxhY2VUYWcoKSA9IGRlZmF1bHQ7Cit9OworY29uc3RleHBy
IEluUGxhY2VUYWcgSW5QbGFjZSB7IH07CiAKIG5hbWVzcGFjZSBFeHBlY3RlZERldGFpbCB7CiAK
QEAgLTc3LDEwICs3OSwxMSBAQCBzdGF0aWMgY29uc3RleHByIGVudW0gY2xhc3MgRXJyb3JUYWdU
eXBlIHsgfSBFcnJvclRhZyB7IH07CiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+IHZv
aWQgZGVzdHJveShUJikgeyB9CiB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OmVuYWJsZV9pZl90PCFz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlICYmIChzdGQ6OmlzX2NsYXNz
PFQ+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSk+KiA9IG51bGxwdHI+IHZvaWQg
ZGVzdHJveShUJiB0KSB7IHQuflQoKTsgfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4K
K3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+CiB1bmlvbiBDb25zdGV4cHJTdG9yYWdlIHsKICAg
ICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7CisgICAgdHlw
ZWRlZiBVbmV4cGVjdGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwogICAgIGNoYXIgZHVtbXk7CiAgICAg
VmFsdWVUeXBlIHZhbDsKICAgICBFcnJvclR5cGUgZXJyOwpAQCAtOTIsMTAgKzk1LDExIEBAIHVu
aW9uIENvbnN0ZXhwclN0b3JhZ2UgewogICAgIH5Db25zdGV4cHJTdG9yYWdlKCkgPSBkZWZhdWx0
OwogfTsKIAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+Cit0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPgogdW5pb24gU3RvcmFnZSB7CiAgICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKICAgICB0
eXBlZGVmIEUgRXJyb3JUeXBlOworICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVk
VHlwZTsKICAgICBjaGFyIGR1bW15OwogICAgIFZhbHVlVHlwZSB2YWw7CiAgICAgRXJyb3JUeXBl
IGVycjsKQEAgLTEwOSwxMCArMTEzLDExIEBAIHVuaW9uIFN0b3JhZ2UgewogICAgIH5TdG9yYWdl
KCkgeyB9CiB9OwogCi10ZW1wbGF0ZSA8Y2xhc3MgRT4KK3RlbXBsYXRlPGNsYXNzIEU+CiB1bmlv
biBDb25zdGV4cHJTdG9yYWdlPHZvaWQsIEU+IHsKICAgICB0eXBlZGVmIHZvaWQgVmFsdWVUeXBl
OwogICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7CisgICAgdHlwZWRlZiBVbmV4cGVjdGVkPEU+IFVu
ZXhwZWN0ZWRUeXBlOwogICAgIGNoYXIgZHVtbXk7CiAgICAgRXJyb3JUeXBlIGVycjsKICAgICBj
b25zdGV4cHIgQ29uc3RleHByU3RvcmFnZSgpIDogZHVtbXkoKSB7IH0KQEAgLTEyMiwxMCArMTI3
LDExIEBAIHVuaW9uIENvbnN0ZXhwclN0b3JhZ2U8dm9pZCwgRT4gewogICAgIH5Db25zdGV4cHJT
dG9yYWdlKCkgPSBkZWZhdWx0OwogfTsKIAotdGVtcGxhdGUgPGNsYXNzIEU+Cit0ZW1wbGF0ZTxj
bGFzcyBFPgogdW5pb24gU3RvcmFnZTx2b2lkLCBFPiB7CiAgICAgdHlwZWRlZiB2b2lkIFZhbHVl
VHlwZTsKICAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOworICAgIHR5cGVkZWYgVW5leHBlY3RlZDxF
PiBVbmV4cGVjdGVkVHlwZTsKICAgICBjaGFyIGR1bW15OwogICAgIEVycm9yVHlwZSBlcnI7CiAg
ICAgY29uc3RleHByIFN0b3JhZ2UoKSA6IGR1bW15KCkgeyB9CkBAIC0xMzYsMTAgKzE0MiwxMSBA
QCB1bmlvbiBTdG9yYWdlPHZvaWQsIEU+IHsKICAgICB+U3RvcmFnZSgpIHsgfQogfTsKIAotdGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgogc3Ry
dWN0IENvbnN0ZXhwckJhc2UgewogICAgIHR5cGVkZWYgVCBWYWx1ZVR5cGU7CiAgICAgdHlwZWRl
ZiBFIEVycm9yVHlwZTsKKyAgICB0eXBlZGVmIFVuZXhwZWN0ZWQ8RT4gVW5leHBlY3RlZFR5cGU7
CiAgICAgQ29uc3RleHByU3RvcmFnZTxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gczsKICAgICBib29s
IGhhczsKICAgICBjb25zdGV4cHIgQ29uc3RleHByQmFzZSgpIDogcygpLCBoYXModHJ1ZSkgeyB9
CkBAIC0xNTAsMTAgKzE1NywxMSBAQCBzdHJ1Y3QgQ29uc3RleHByQmFzZSB7CiAgICAgfkNvbnN0
ZXhwckJhc2UoKSA9IGRlZmF1bHQ7CiB9OwogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4K
K3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+CiBzdHJ1Y3QgQmFzZSB7CiAgICAgdHlwZWRlZiBU
IFZhbHVlVHlwZTsKICAgICB0eXBlZGVmIEUgRXJyb3JUeXBlOworICAgIHR5cGVkZWYgVW5leHBl
Y3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKICAgICBTdG9yYWdlPFZhbHVlVHlwZSwgRXJyb3JUeXBl
PiBzOwogICAgIGJvb2wgaGFzOwogICAgIGNvbnN0ZXhwciBCYXNlKCkgOiBzKCksIGhhcyh0cnVl
KSB7IH0KQEAgLTE4OCwxMCArMTk2LDExIEBAIHN0cnVjdCBCYXNlIHsKICAgICB9CiB9OwogCi10
ZW1wbGF0ZSA8Y2xhc3MgRT4KK3RlbXBsYXRlPGNsYXNzIEU+CiBzdHJ1Y3QgQ29uc3RleHByQmFz
ZTx2b2lkLCBFPiB7CiAgICAgdHlwZWRlZiB2b2lkIFZhbHVlVHlwZTsKICAgICB0eXBlZGVmIEUg
RXJyb3JUeXBlOworICAgIHR5cGVkZWYgVW5leHBlY3RlZDxFPiBVbmV4cGVjdGVkVHlwZTsKICAg
ICBDb25zdGV4cHJTdG9yYWdlPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiBzOwogICAgIGJvb2wgaGFz
OwogICAgIGNvbnN0ZXhwciBDb25zdGV4cHJCYXNlKCkgOiBzKCksIGhhcyh0cnVlKSB7IH0KQEAg
LTIwMiwxMCArMjExLDExIEBAIHN0cnVjdCBDb25zdGV4cHJCYXNlPHZvaWQsIEU+IHsKICAgICB+
Q29uc3RleHByQmFzZSgpID0gZGVmYXVsdDsKIH07CiAKLXRlbXBsYXRlIDxjbGFzcyBFPgordGVt
cGxhdGU8Y2xhc3MgRT4KIHN0cnVjdCBCYXNlPHZvaWQsIEU+IHsKICAgICB0eXBlZGVmIHZvaWQg
VmFsdWVUeXBlOwogICAgIHR5cGVkZWYgRSBFcnJvclR5cGU7CisgICAgdHlwZWRlZiBVbmV4cGVj
dGVkPEU+IFVuZXhwZWN0ZWRUeXBlOwogICAgIFN0b3JhZ2U8VmFsdWVUeXBlLCBFcnJvclR5cGU+
IHM7CiAgICAgYm9vbCBoYXM7CiAgICAgY29uc3RleHByIEJhc2UoKSA6IHMoKSwgaGFzKHRydWUp
IHsgfQpAQCAtMjMyLDcgKzI0Miw3IEBAIHN0cnVjdCBCYXNlPHZvaWQsIEU+IHsKICAgICB9CiB9
OwogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEU+CiB1c2luZyBCYXNlU2VsZWN0ID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKICAgICAo
KHN0ZDo6aXNfdm9pZDxUPjo6dmFsdWUgfHwgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSkKICAgICAgICAgJiYgc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEU+
Ojp2YWx1ZSksCkBAIC0yNDIsNDIgKzI1Miw0NyBAQCB1c2luZyBCYXNlU2VsZWN0ID0gdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDwKIAogfSAvLyBuYW1lc3BhY2UgRXhwZWN0ZWREZXRhaWwKIAot
dGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPgog
Y2xhc3MgRXhwZWN0ZWQgOiBwcml2YXRlIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PFQsIEU+
IHsKICAgICB0eXBlZGVmIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PFQsIEU+IGJhc2U7CiAK
IHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlZhbHVlVHlwZSBWYWx1ZVR5cGU7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpFcnJvclR5cGUgRXJyb3JUeXBlOworICAgIHR5
cGVkZWYgdHlwZW5hbWUgYmFzZTo6VW5leHBlY3RlZFR5cGUgVW5leHBlY3RlZFR5cGU7CiAKIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gdHlwZTsK
IAogcHVibGljOgotICAgIC8vIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsgdXNp
bmcgdHlwZSA9IEV4cGVjdGVkPFUsIEVycm9yVHlwZT47IH07CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VT4gc3RydWN0IHJlYmluZCB7CisgICAgICAgIHVzaW5nIHR5cGUgPSBFeHBlY3RlZDxVLCBFcnJv
clR5cGU+OworICAgIH07CiAKICAgICBjb25zdGV4cHIgRXhwZWN0ZWQoKSA6IGJhc2UoRXhwZWN0
ZWREZXRhaWw6OlZhbHVlVGFnKSB7IH0KICAgICBFeHBlY3RlZChjb25zdCBFeHBlY3RlZCYpID0g
ZGVmYXVsdDsKICAgICBFeHBlY3RlZChFeHBlY3RlZCYmKSA9IGRlZmF1bHQ7CisKICAgICBjb25z
dGV4cHIgRXhwZWN0ZWQoY29uc3QgVmFsdWVUeXBlJiBlKSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6
OlZhbHVlVGFnLCBlKSB7IH0KICAgICBjb25zdGV4cHIgRXhwZWN0ZWQoVmFsdWVUeXBlJiYgZSkg
OiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRhZywgc3RkOjpmb3J3YXJkPFZhbHVlVHlwZT4o
ZSkpIHsgfQotICAgIC8vIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiBjb25zdGV4cHIgZXhwbGlj
aXQgRXhwZWN0ZWQoaW5fcGxhY2VfdCwgQXJncyYmLi4uKTsKLSAgICAvLyB0ZW1wbGF0ZSA8Y2xh
c3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKGluX3BsYWNl
X3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKLSAgICBjb25zdGV4cHIg
RXhwZWN0ZWQoVW5leHBlY3RlZFR5cGU8RXJyb3JUeXBlPiBjb25zdCYgdSkgOiBiYXNlKEV4cGVj
dGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KLSAgICBjb25zdGV4cHIgRXhwZWN0
ZWQoVW5leHBlY3RlZFR5cGU8RXJyb3JUeXBlPiYmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6
RXJyb3JUYWcsIHN0ZDo6Zm9yd2FyZDxVbmV4cGVjdGVkVHlwZTxFPj4odSkudmFsdWUoKSkgeyB9
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEVycj4gY29uc3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWRU
eXBlPEVycj4gY29uc3QmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFs
dWUoKSkgeyB9Ci0gICAgLy8gdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGNvbnN0ZXhwciBleHBs
aWNpdCBFeHBlY3RlZChVbmV4cGVjdFRhZywgQXJncyYmLi4uKTsKLSAgICAvLyB0ZW1wbGF0ZSA8
Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKFVuZXhw
ZWN0VGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7CisgICAgdGVtcGxh
dGU8Y2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKEluUGxhY2VUYWcs
IEFyZ3MmJi4uLiBhcmdzKSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OlZhbHVlVGFnLCBWYWx1ZVR5
cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisgICAgLy8gdGVtcGxhdGU8Y2xh
c3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKGluX3BsYWNl
X3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICBjb25zdGV4cHIg
RXhwZWN0ZWQoY29uc3QgVW5leHBlY3RlZFR5cGUmIHUpIDogYmFzZShFeHBlY3RlZERldGFpbDo6
RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9CisgICAgY29uc3RleHByIEV4cGVjdGVkKFVuZXhwZWN0
ZWRUeXBlJiYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgc3RkOjpmb3J3YXJk
PFVuZXhwZWN0ZWRUeXBlPih1KS52YWx1ZSgpKSB7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBFcnI+
IGNvbnN0ZXhwciBFeHBlY3RlZChjb25zdCBVbmV4cGVjdGVkPEVycj4mIHUpIDogYmFzZShFeHBl
Y3RlZERldGFpbDo6RXJyb3JUYWcsIHUudmFsdWUoKSkgeyB9CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RXJyPiBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZDxFcnI+JiYgdSkgOiBiYXNlKEV4cGVj
dGVkRGV0YWlsOjpFcnJvclRhZywgc3RkOjpmb3J3YXJkPEVycj4odS52YWx1ZSgpKSkgeyB9Cisg
ICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4cGVjdGVkKFVu
ZXhwZWN0VGFnLCBBcmdzJiYuLi4gYXJncykgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpWYWx1ZVRh
ZywgVW5leHBlY3RlZFR5cGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisgICAg
Ly8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gY29uc3RleHByIGV4cGxpY2l0IEV4
cGVjdGVkKFVuZXhwZWN0VGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4sIEFyZ3MmJi4uLik7
CiAKICAgICB+RXhwZWN0ZWQoKSA9IGRlZmF1bHQ7CiAKICAgICBFeHBlY3RlZCYgb3BlcmF0b3I9
KGNvbnN0IEV4cGVjdGVkJiBlKSB7IHR5cGUoZSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsg
fQogICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oRXhwZWN0ZWQmJiBlKSB7IHR5cGUoV1RGTW92ZShl
KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBF
eHBlY3RlZCYgb3BlcmF0b3I9KFUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7
IHJldHVybiAqdGhpczsgfQotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5leHBlY3Rl
ZFR5cGU8RXJyb3JUeXBlPiYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7
IH0KLSAgICBFeHBlY3RlZCYgb3BlcmF0b3I9KFVuZXhwZWN0ZWRUeXBlPEVycm9yVHlwZT4mJiB1
KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsgfQotICAgIC8v
IHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiB2b2lkIGVtcGxhY2UoQXJncyYmLi4uKTsKLSAgICAv
LyB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gdm9pZCBlbXBsYWNlKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBFeHBl
Y3RlZCYgb3BlcmF0b3I9KFUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJl
dHVybiAqdGhpczsgfQorICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgVW5leHBlY3RlZFR5
cGUmIHUpIHsgdHlwZSh1KS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgRXhwZWN0
ZWQmIG9wZXJhdG9yPShVbmV4cGVjdGVkVHlwZSYmIHUpIHsgdHlwZShXVEZNb3ZlKHUpKS5zd2Fw
KCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CisgICAgLy8gdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4g
dm9pZCBlbXBsYWNlKEFyZ3MmJi4uLik7CisgICAgLy8gdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4gdm9pZCBlbXBsYWNlKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4u
KTsKIAogICAgIHZvaWQgc3dhcChFeHBlY3RlZCYgbykKICAgICB7CkBAIC0zMTgsMzkgKzMzMyw0
MiBAQCBwdWJsaWM6CiAgICAgRXJyb3JUeXBlJiBlcnJvcigpICYgeyByZXR1cm4gIWJhc2U6Omhh
cyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBiYXNlOjpzLmVycik7
IH0KICAgICBSRUxBWEVEX0NPTlNURVhQUiBFcnJvclR5cGUmJiBlcnJvcigpICYmIHsgcmV0dXJu
ICFiYXNlOjpoYXMgPyBiYXNlOjpzLmVyciA6IChFeHBlY3RlZERldGFpbDo6VGhyb3coKSwgYmFz
ZTo6cy5lcnIpOyB9CiAgICAgY29uc3RleHByIGNvbnN0IEVycm9yVHlwZSYmIGVycm9yKCkgY29u
c3QgJiYgeyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWls
OjpUaHJvdygpLCBiYXNlOjpzLmVycik7IH0KLSAgICBjb25zdGV4cHIgVW5leHBlY3RlZFR5cGU8
RXJyb3JUeXBlPiBnZXRVbmV4cGVjdGVkKCkgY29uc3QgeyByZXR1cm4gVW5leHBlY3RlZFR5cGU8
RXJyb3JUeXBlPihiYXNlOjpzLmVycik7IH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gY29uc3Rl
eHByIFZhbHVlVHlwZSB2YWx1ZU9yKFUmJiB1KSBjb25zdCAmIHsgcmV0dXJuIGJhc2U6OmhhcyA/
ICoqdGhpcyA6IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBWYWx1ZVR5cGUgdmFsdWVPcihVJiYgdSkgJiYgeyByZXR1
cm4gYmFzZTo6aGFzID8gV1RGTW92ZSgqKnRoaXMpIDogc3RhdGljX2Nhc3Q8VmFsdWVUeXBlPihz
dGQ6OmZvcndhcmQ8VT4odSkpOyB9CisgICAgY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlIGdldFVu
ZXhwZWN0ZWQoKSBjb25zdCB7IHJldHVybiBVbmV4cGVjdGVkVHlwZShiYXNlOjpzLmVycik7IH0K
KyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBjb25zdGV4cHIgVmFsdWVUeXBlIHZhbHVlT3IoVSYmIHUp
IGNvbnN0ICYgeyByZXR1cm4gYmFzZTo6aGFzID8gKip0aGlzIDogc3RhdGljX2Nhc3Q8VmFsdWVU
eXBlPihzdGQ6OmZvcndhcmQ8VT4odSkpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4gVmFsdWVU
eXBlIHZhbHVlT3IoVSYmIHUpICYmIHsgcmV0dXJuIGJhc2U6OmhhcyA/IFdURk1vdmUoKip0aGlz
KSA6IHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oc3RkOjpmb3J3YXJkPFU+KHUpKTsgfQogfTsKIAot
dGVtcGxhdGUgPGNsYXNzIEU+Cit0ZW1wbGF0ZTxjbGFzcyBFPgogY2xhc3MgRXhwZWN0ZWQ8dm9p
ZCwgRT4gOiBwcml2YXRlIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PHZvaWQsIEU+IHsKICAg
ICB0eXBlZGVmIEV4cGVjdGVkRGV0YWlsOjpCYXNlU2VsZWN0PHZvaWQsIEU+IGJhc2U7CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OlZhbHVlVHlwZSBWYWx1ZVR5cGU7CiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpFcnJvclR5cGUgRXJyb3JUeXBlOworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgYmFzZTo6VW5leHBlY3RlZFR5cGUgVW5leHBlY3RlZFR5cGU7CiAKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlwZT4gdHlwZTsKIAog
cHVibGljOgotICAgIC8vIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kIHsgdHlwZWRl
ZiBFeHBlY3RlZDxVLCBFcnJvclR5cGU+IHR5cGU7IH07CisgICAgdGVtcGxhdGU8Y2xhc3MgVT4g
c3RydWN0IHJlYmluZCB7CisgICAgICAgIHVzaW5nIHR5cGUgPSBFeHBlY3RlZDxVLCBFcnJvclR5
cGU+OworICAgIH07CiAKICAgICBjb25zdGV4cHIgRXhwZWN0ZWQoKSA6IGJhc2UoRXhwZWN0ZWRE
ZXRhaWw6OlZhbHVlVGFnKSB7IH0KICAgICBFeHBlY3RlZChjb25zdCBFeHBlY3RlZCYpID0gZGVm
YXVsdDsKICAgICBFeHBlY3RlZChFeHBlY3RlZCYmKSA9IGRlZmF1bHQ7CiAgICAgLy8gY29uc3Rl
eHByIGV4cGxpY2l0IEV4cGVjdGVkKGluX3BsYWNlX3QpOwotICAgIGNvbnN0ZXhwciBFeHBlY3Rl
ZChVbmV4cGVjdGVkVHlwZTxFPiBjb25zdCYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWlsOjpFcnJv
clRhZywgdS52YWx1ZSgpKSB7IH0KLSAgICBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBlY3RlZFR5
cGU8RT4mJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCBzdGQ6OmZvcndhcmQ8
VW5leHBlY3RlZFR5cGU8RT4+KHUpLnZhbHVlKCkpIHsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBF
cnI+IGNvbnN0ZXhwciBFeHBlY3RlZChVbmV4cGVjdGVkVHlwZTxFcnI+IGNvbnN0JiB1KSA6IGJh
c2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCB1LnZhbHVlKCkpIHsgfQorICAgIGNvbnN0ZXhw
ciBFeHBlY3RlZChVbmV4cGVjdGVkVHlwZSBjb25zdCYgdSkgOiBiYXNlKEV4cGVjdGVkRGV0YWls
OjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KKyAgICBjb25zdGV4cHIgRXhwZWN0ZWQoVW5leHBl
Y3RlZFR5cGUmJiB1KSA6IGJhc2UoRXhwZWN0ZWREZXRhaWw6OkVycm9yVGFnLCBzdGQ6OmZvcndh
cmQ8VW5leHBlY3RlZFR5cGU+KHUpLnZhbHVlKCkpIHsgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVy
cj4gY29uc3RleHByIEV4cGVjdGVkKFVuZXhwZWN0ZWQ8RXJyPiBjb25zdCYgdSkgOiBiYXNlKEV4
cGVjdGVkRGV0YWlsOjpFcnJvclRhZywgdS52YWx1ZSgpKSB7IH0KIAogICAgIH5FeHBlY3RlZCgp
ID0gZGVmYXVsdDsKIAogICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oY29uc3QgRXhwZWN0ZWQmIGUp
IHsgdHlwZShlKS5zd2FwKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CiAgICAgRXhwZWN0ZWQmIG9w
ZXJhdG9yPShFeHBlY3RlZCYmIGUpIHsgdHlwZShXVEZNb3ZlKGUpKS5zd2FwKCp0aGlzKTsgcmV0
dXJuICp0aGlzOyB9Ci0gICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShjb25zdCBVbmV4cGVjdGVkVHlw
ZTxFPiYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0gLy8gTm90IGlu
IHRoZSBjdXJyZW50IHBhcGVyLgotICAgIEV4cGVjdGVkJiBvcGVyYXRvcj0oVW5leHBlY3RlZFR5
cGU8RT4mJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJldHVybiAqdGhpczsg
fSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCisgICAgRXhwZWN0ZWQmIG9wZXJhdG9yPShj
b25zdCBVbmV4cGVjdGVkVHlwZSYgdSkgeyB0eXBlKHUpLnN3YXAoKnRoaXMpOyByZXR1cm4gKnRo
aXM7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgorICAgIEV4cGVjdGVkJiBvcGVyYXRv
cj0oVW5leHBlY3RlZFR5cGUmJiB1KSB7IHR5cGUoV1RGTW92ZSh1KSkuc3dhcCgqdGhpcyk7IHJl
dHVybiAqdGhpczsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCiAgICAgLy8gdm9pZCBl
bXBsYWNlKCk7CiAKICAgICB2b2lkIHN3YXAoRXhwZWN0ZWQmIG8pCkBAIC0zNzcsNzYgKzM5NSw0
MSBAQCBwdWJsaWM6CiAgICAgUkVMQVhFRF9DT05TVEVYUFIgRSYmIGVycm9yKCkgJiYgeyByZXR1
cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJvdygpLCBi
YXNlOjpzLmVycik7IH0KICAgICBjb25zdGV4cHIgY29uc3QgRSYmIGVycm9yKCkgY29uc3QgJiYg
eyByZXR1cm4gIWJhc2U6OmhhcyA/IGJhc2U6OnMuZXJyIDogKEV4cGVjdGVkRGV0YWlsOjpUaHJv
dygpLCBiYXNlOjpzLmVycik7IH0gLy8gTm90IGluIHRoZSBjdXJyZW50IHBhcGVyLgogICAgIC8v
IGNvbnN0ZXhwciBFJiBlcnJvcigpICY7Ci0gICAgY29uc3RleHByIFVuZXhwZWN0ZWRUeXBlPEU+
IGdldFVuZXhwZWN0ZWQoKSBjb25zdCB7IHJldHVybiBVbmV4cGVjdGVkVHlwZTxFPihiYXNlOjpz
LmVycik7IH0KKyAgICBjb25zdGV4cHIgVW5leHBlY3RlZFR5cGUgZ2V0VW5leHBlY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIFVuZXhwZWN0ZWRUeXBlKGJhc2U6OnMuZXJyKTsgfQogfTsKIAotdGVtcGxh
dGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhw
ZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBib29sKHgp
ID09IGJvb2woeSkgJiYgKHggPyB4LnZhbHVlKCkgPT0geS52YWx1ZSgpIDogeC5lcnJvcigpID09
IHkuZXJyb3IoKSk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBF
PiYgeSkgeyByZXR1cm4gISh4ID09IHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBF
eHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gKCFib29sKHgpICYmIGJvb2woeSkpID8gZmFsc2Ug
OiAoKGJvb2woeCkgJiYgIWJvb2woeSkpID8gdHJ1ZSA6ICgoYm9vbCh4KSAmJiBib29sKHkpKSA/
IHgudmFsdWUoKSA8IHkudmFsdWUoKSA6IHguZXJyb3IoKSA8IHkuZXJyb3IoKSkpOyB9Ci10ZW1w
bGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IEV4
cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09
IHkpICYmICEoeCA8IHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgcmV0dXJuICh4ID09IHkpIHx8ICh4IDwgeSk7IH0KLXRlbXBsYXRlIDxjbGFz
cyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEV4cGVjdGVkPFQs
IEU+JiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gKHggPT0geSkgfHwgKHgg
PiB5KTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIHkpIHsg
cmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4LmVycm9yKCkgPT0geS5l
cnJvcigpKTsgfSAvLyBOb3QgaW4gdGhlIGN1cnJlbnQgcGFwZXIuCi10ZW1wbGF0ZSA8Y2xhc3Mg
RT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEV4cGVjdGVkPHZvaWQsIEU+JiB4LCBj
b25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgeSkgeyByZXR1cm4gKCFib29sKHgpICYmIGJvb2woeSkp
ID8gZmFsc2UgOiAoKGJvb2woeCkgJiYgIWJvb2woeSkpID8gdHJ1ZSA6ICgoYm9vbCh4KSAmJiBi
b29sKHkpKSA/IGZhbHNlIDogeC5lcnJvcigpIDwgeS5lcnJvcigpKSk7IH0gLy8gTm90IGluIHRo
ZSBjdXJyZW50IHBhcGVyLgotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyBy
ZXR1cm4geCA9PSBFeHBlY3RlZDxULCBFPih5KTsgfQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgeCwgY29uc3QgRXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KLXRlbXBsYXRlIDxj
bGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVk
PFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ICE9IEV4cGVjdGVkPFQsIEU+KHkpOyB9
Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBUJiB4LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwg
RT4oeCkgIT0geTsgfQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4g
eCA8IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQmIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5
KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSA8IHk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4
LCBjb25zdCBUJiB5KSB7IHJldHVybiB4IDw9IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0
ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4
LCBjb25zdCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPD0g
eTsgfQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
Pihjb25zdCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA+IEV4cGVj
dGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IFQmIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVy
biBFeHBlY3RlZDxULCBFPih4KSA+IHk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBU
JiB5KSB7IHJldHVybiB4ID49IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBF
eHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPj0geTsgfQotCi10
ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHkpIHsgcmV0dXJu
IHggPT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB4LCBjb25z
dCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPT0geTsgfQot
dGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB5KSB7IHJldHVy
biB4ICE9IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgeCwgY29u
c3QgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpICE9IHk7IH0K
LXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29u
c3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB5KSB7IHJldHVy
biB4IDwgRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHgsIGNvbnN0
IEV4cGVjdGVkPFQsIEU+JiB5KSB7ICByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPCB5OyB9Ci10
ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHkpIHsgcmV0dXJu
IHggPD0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB4LCBjb25z
dCBFeHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgRT4oeCkgPD0geTsgfQot
dGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25z
dCBFeHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHkpIHsgcmV0dXJu
IHggPiBFeHBlY3RlZDxULCBFPih5KTsgfQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgeCwgY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID4geTsgfQotdGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB5KSB7IHJldHVybiB4
ID49IEV4cGVjdGVkPFQsIEU+KHkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbmV4cGVjdGVkVHlwZTxFPiYgeCwgY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID49IHk7IH0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEU+IHZvaWQgc3dhcChFeHBlY3RlZDxULCBF
PiYgeCwgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsgeC5zd2FwKHkpOyB9Ci0KLXRlbXBsYXRlIDxjbGFz
cyBULCBjbGFzcyBFID0gc3RkOjpudWxsb3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDxzdGQ6OmRl
Y2F5X3Q8VD4sIEU+IG1ha2VFeHBlY3RlZChUJiYgdikKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNv
bnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHgg
PyB4LnZhbHVlKCkgPT0geS52YWx1ZSgpIDogeC5lcnJvcigpID09IHkuZXJyb3IoKSk7IH0KK3Rl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiAhKHgg
PT0geSk7IH0KKwordGVtcGxhdGU8Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFeHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8dm9pZCwgRT4mIHkpIHsg
cmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRydWUgOiB4LmVycm9yKCkgPT0geS5l
cnJvcigpKTsgfQorCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4
ID09IEV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5
KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSA9PSB5OyB9Cit0ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB4
LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ICE9IEV4cGVjdGVkPFQsIEU+KHkpOyB9Cit0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHgs
IGNvbnN0IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPih4KSAhPSB5
OyB9CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0
dXJuIHggPT0gRXhwZWN0ZWQ8VCwgRT4oeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5leHBlY3RlZDxFPiYgeCwgY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpID09IHk7IH0KK3Rl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IFVuZXhwZWN0ZWQ8RT4mIHkpIHsgcmV0dXJuIHggIT0g
RXhwZWN0ZWQ8VCwgRT4oeSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgVW5leHBlY3RlZDxFPiYgeCwgY29uc3QgRXhwZWN0ZWQ8
VCwgRT4mIHkpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIEU+KHgpICE9IHk7IH0KKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gdm9pZCBzd2FwKEV4cGVjdGVkPFQsIEU+JiB4LCBFeHBl
Y3RlZDxULCBFPiYgeSkgeyB4LnN3YXAoeSk7IH0KKworLy8gTm90ZTogdGhpcyBpc24ndCBpbiB0
aGUgY3VycmVudCBwcm9wb3NhbCBiZWNhdXNlIGl0IHJlbGllcyBvbiBDKysxNyBkZWR1Y3Rpb24g
Z3VpZGVzIGluc3RlYWQuCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFID0gc3RkOjpudWxsb3B0
X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDxzdGQ6OmRlY2F5X3Q8VD4sIEU+IG1ha2VFeHBlY3RlZChU
JiYgdikKIHsKICAgICByZXR1cm4gRXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlw
ZSwgRT4oc3RkOjpmb3J3YXJkPFQ+KHYpKTsKIH0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgRXhwZWN0ZWQ8VCwgc3RkOjpkZWNheV90PEU+PiBtYWtlRXhwZWN0ZWRGcm9t
RXJyb3IoRSYmIGUpIHsgcmV0dXJuIEV4cGVjdGVkPFQsIHN0ZDo6ZGVjYXlfdDxFPj4obWFrZVVu
ZXhwZWN0ZWQoZSkpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSwgY2xhc3MgVT4gY29u
c3RleHByIEV4cGVjdGVkPFQsIEU+IG1ha2VFeHBlY3RlZEZyb21FcnJvcihVJiYgdSkgeyByZXR1
cm4gRXhwZWN0ZWQ8VCwgRT4obWFrZVVuZXhwZWN0ZWQoRSB7IHN0ZDo6Zm9yd2FyZDxVPih1KSB9
ICkpOyB9Ci0vLyB0ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBj
b25zdGV4cHIgRXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Rj46OnR5cGUsIEU+IG1h
a2VFeHBlY3RlZF9mcm9tX2NhbGwoRiBmKTsKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNv
bnN0ZXhwciBFeHBlY3RlZDxULCBzdGQ6OmRlY2F5X3Q8RT4+IG1ha2VFeHBlY3RlZEZyb21FcnJv
cihFJiYgZSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgc3RkOjpkZWNheV90PEU+PihtYWtlVW5leHBl
Y3RlZChlKSk7IH0KK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEUsIGNsYXNzIFU+IGNvbnN0ZXhw
ciBFeHBlY3RlZDxULCBFPiBtYWtlRXhwZWN0ZWRGcm9tRXJyb3IoVSYmIHUpIHsgcmV0dXJuIEV4
cGVjdGVkPFQsIEU+KG1ha2VVbmV4cGVjdGVkKEUgeyBzdGQ6OmZvcndhcmQ8VT4odSkgfSApKTsg
fQorLy8gdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBjb25zdGV4
cHIgRXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Rj46OnR5cGUsIEU+IG1ha2VFeHBl
Y3RlZF9mcm9tX2NhbGwoRiBmKTsKIAogaW5saW5lIEV4cGVjdGVkPHZvaWQsIHN0ZDo6bnVsbG9w
dF90PiBtYWtlRXhwZWN0ZWQoKSB7IHJldHVybiBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51bGxvcHRf
dD4oKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotbmFtZXNwYWNlIHN0ZCB7Ci0KLXRlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBFPiBzdHJ1Y3QgaGFzaDxXVEY6OkV4cGVjdGVkPFQsIEU+PiB7
Ci0gICAgdHlwZWRlZiBXVEY6OkV4cGVjdGVkPFQsIEU+IGFyZ3VtZW50X3R5cGU7Ci0gICAgdHlw
ZWRlZiBzdGQ6OnNpemVfdCByZXN1bHRfdHlwZTsKLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigp
KGFyZ3VtZW50X3R5cGUgY29uc3QmIGUpIGNvbnN0IHsgcmV0dXJuIGUgPyBoYXNoPHR5cGVuYW1l
IGFyZ3VtZW50X3R5cGU6OlZhbHVlVHlwZT4geyB9IChlLnZhbHVlKCkpIDogaGFzaDx0eXBlbmFt
ZSBhcmd1bWVudF90eXBlOjpFcnJvclR5cGU+IHsgfSAoZS5lcnJvcigpKTsgfQotfTsKLQotdGVt
cGxhdGUgPGNsYXNzIEU+IHN0cnVjdCBoYXNoPFdURjo6RXhwZWN0ZWQ8dm9pZCwgRT4+IHsKLSAg
ICB0eXBlZGVmIFdURjo6RXhwZWN0ZWQ8dm9pZCwgRT4gYXJndW1lbnRfdHlwZTsKLSAgICB0eXBl
ZGVmIHN0ZDo6c2l6ZV90IHJlc3VsdF90eXBlOwotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCko
YXJndW1lbnRfdHlwZSBjb25zdCYgZSkgY29uc3QgeyByZXR1cm4gZSA/IDAgOiBoYXNoPHR5cGVu
YW1lIGFyZ3VtZW50X3R5cGU6OkVycm9yVHlwZT4geyB9IChlLmVycm9yKCkpOyB9Ci19OwotCi19
Ci0KLXVzaW5nIFdURjo6VW5leHBlY3RlZFR5cGU7Cit1c2luZyBXVEY6OkluUGxhY2U7Cit1c2lu
ZyBXVEY6OlVuZXhwZWN0ZWQ7CiB1c2luZyBXVEY6Om1ha2VVbmV4cGVjdGVkOwogdXNpbmcgV1RG
OjpVbmV4cGVjdDsKIHVzaW5nIFdURjo6RXhwZWN0ZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDkxMWQwNi4uN2JkZmNhOCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTEwLTA0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXVEY6IFVwZGF0ZSBzdGQ6OmV4cGVjdGVkIHRvIG1hdGNoIGN1cnJlbnQgcHJvcG9zYWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzg4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwcm9wb3Nh
bCBpcyBsaWtlbHkgdG8gYmUgaW4gQysrMjAgYW5kIEkndmUgYmVlbiBhc2tlZCB0byBoZWxwIGNv
LWNoYW1waW9uCisgICAgICAgIGl0LiBJJ20gdGhlcmVmb3JlIHVwZGF0aW5nIG91ciBpbXBsZW1l
bnRhdGlvbiB0byBtb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIGN1cnJlbnQKKyAgICAgICAgcHJvcG9z
YWwsIGFuZCB0byBtYWtlIHN1cmUgaXQnbGwgd29yayBmb3IgdXMgaWYgc3RhbmRhcmRpemVkLgor
CisgICAgICAgICAtIFJlbmFtZSBVbmV4cGVjdGVkVHlwZSB0byBVbmV4cGVjdGVkIHRvIG1hdGNo
IHRoZSBwcm9wb3NhbC4KKyAgICAgICAgIC0gUmVtb3ZlIHJlbGF0aW9uYWwgb3BlcmF0b3JzLCBv
bmx5IGVxdWFsaXR5IC8gaW5lcXVhbGl0eSByZW1haW5zLgorICAgICAgICAgLSBGaXggbWlub3Ig
dHlwZSBzaWduYXR1cmVzLgorICAgICAgICAgLSBBZGQgVW5leHBlY3RlZFR5cGUgdHlwZWRlZi4K
KyAgICAgICAgIC0gVW5jb21tZW50IHJlYmluZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgIC0g
QWRkIGluLXBsYWNlIGNvbnN0cnVjdGlvbiB0YWcsIGFzIHdlbGwgYXMgZXhwbGljaXQgZXJyb3Ig
Y29uc3RydWN0aW9uIHRhZy4KKyAgICAgICAgIC0gQWRkIHRlbXBsYXRlIHVuZXhwZWN0ZWQgY29u
c3RydWN0b3IuCisgICAgICAgICAtIE5vdGUgdGhhdCBtYWtlX3VuZXhwZWN0ZWQgaXNuJ3QgaW4g
dGhlIHByb3Bvc2FsIGFueW1vcmUsIGJ1dCB3ZSBrZWVwIGl0IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2
ZSBDKysxNyBkZWR1Y3Rpb24gZ3VpZGVzLgorICAgICAgICAgLSBSZW1vdmUgaGFzaGluZywgd2hp
Y2ggaXNuJ3QgaW4gdGhlIHByb3Bvc2FsIGFueW1vcmUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHA6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMTAtMDQgIENhcmxvcyBBbGJl
cnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pIQnVpbGRd
W0dUS11bV0tFXSBDaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gaGFyZmJ1enogYW5kIGZyZWV0
eXBlNgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDcz
NjU0YzUuLjgxYTg5NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3Rl
ZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjgsMjYgKzI4LDMwIEBACiAjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCiAKICNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KIAogI2luY2x1ZGUgPHd0Zi9FeHBl
Y3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBs
YXRlIDxjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
Y29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMCwgdHlwZW5h
bWUgVDE+IHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBz
dGQ6OnBhaXI8VDAsIFQxPiYgcCkKK3sKKyAgICByZXR1cm4gb3MgPDwgJygnIDw8IHAuZmlyc3Qg
PDwgIiwgIiA8PCBwLnNlY29uZCA8PCAnKSc7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEU+IHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBVbmV4cGVjdGVkPEU+
JiB1KQogewogICAgIHJldHVybiBvcyA8PCB1LnZhbHVlKCk7CiB9CiAKLXRlbXBsYXRlIDxjbGFz
cyBULCBjbGFzcyBFPiBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
Y29uc3QgRXhwZWN0ZWQ8VCwgRT4mIGUpCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRXhwZWN0ZWQ8VCwg
RT4mIGUpCiB7CiAgICAgaWYgKGUuaGFzVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG9zIDw8IGUu
dmFsdWUoKTsKICAgICByZXR1cm4gb3MgPDwgZS5lcnJvcigpOwogfQogCi10ZW1wbGF0ZSA8Y2xh
c3MgRT4gc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEV4
cGVjdGVkPHZvaWQsIEU+JiBlKQordGVtcGxhdGU8Y2xhc3MgRT4gc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEV4cGVjdGVkPHZvaWQsIEU+JiBlKQogewog
ICAgIGlmIChlLmhhc1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBvcyA8PCAiIjsKQEAgLTYxLDE5
ICs2NSwxNSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBjb25zdGV4cHIgY29uc3QgY2hh
ciogb29wcyA9ICJvb3BzIjsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBmb29mID0gImZvb2YiOwog
Ci1URVNUKFdURl9FeHBlY3RlZCwgVW5leHBlY3RlZFR5cGUpCitURVNUKFdURl9FeHBlY3RlZCwg
VW5leHBlY3RlZCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gdSA9IFVuZXhwZWN0ZWRUeXBlPGlu
dD4oNDIpOworICAgICAgICBhdXRvIHUgPSBVbmV4cGVjdGVkPGludD4oNDIpOwogICAgICAgICBF
WFBFQ1RfRVEodS52YWx1ZSgpLCA0Mik7CiAgICAgICAgIGNvbnN0ZXhwciBhdXRvIGMgPSBtYWtl
VW5leHBlY3RlZCg0Mik7CiAgICAgICAgIEVYUEVDVF9FUShjLnZhbHVlKCksIDQyKTsKICAgICAg
ICAgRVhQRUNUX0VRKHUsIGMpOwogICAgICAgICBFWFBFQ1RfRkFMU0UodSAhPSBjKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKHUgPCBjKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHUgPiBjKTsKLSAg
ICAgICAgRVhQRUNUX0xFKHUsIGMpOwotICAgICAgICBFWFBFQ1RfR0UodSwgYyk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgYXV0byBjID0gbWFrZVVuZXhwZWN0ZWQob29wcyk7CkBAIC0yMjcsNyAr
MjI3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGV4cGVjdGVkKQogICAgIH0KIH0KIAotVEVTVChX
VEZfRXhwZWN0ZWQsIEV4cGVjdGVkX3ZvaWQpCitURVNUKFdURl9FeHBlY3RlZCwgdm9pZCkKIHsK
ICAgICB0eXBlZGVmIEV4cGVjdGVkPHZvaWQsIGNvbnN0IGNoYXIqPiBFOwogICAgIHR5cGVkZWYg
RXhwZWN0ZWQ8dm9pZCwgY29uc3Qgdm9pZCo+IEVWOwpAQCAtMzA4LDYgKzMwOCwxMCBAQCBURVNU
KFdURl9FeHBlY3RlZCwgRXhwZWN0ZWRfdm9pZCkKICAgICAgICAgRVhQRUNUX0VRKGUwLCAqZTUp
OwogICAgICAgICBkZWxldGUgZTU7CiAgICAgfQorICAgIHsKKyAgICAgICAgdHlwZWRlZiBFeHBl
Y3RlZDxzdGQ6OnBhaXI8aW50LCBpbnQ+LCBzdGQ6OnN0cmluZz4gRXQ7CisgICAgICAgIEVYUEVD
VF9FUShFdChXVEY6OkluUGxhY2UsIDEsIDIpLCBFdChXVEY6OkluUGxhY2UsIDEsIDIpKTsKKyAg
ICB9CiB9CiAKIFRFU1QoV1RGX0V4cGVjdGVkLCBjb21wYXJpc29uKQpAQCAtMzE4LDk5ICszMjIs
NDMgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGNvbXBhcmlzb24pCiAgICAgLy8gVHdvIEV4cGVjdGVk
LCBubyBlcnJvcnMuCiAgICAgRVhQRUNUX0VRKEV4KDQyKSwgRXgoNDIpKTsKICAgICBFWFBFQ1Rf
TkUoRXgoNDIpLCBFeCgxMDI0KSk7Ci0gICAgRVhQRUNUX0xUKEV4KDQyKSwgRXgoMTAyNCkpOwot
ICAgIEVYUEVDVF9HVChFeCgxMDI0KSwgRXgoNDIpKTsKLSAgICBFWFBFQ1RfTEUoRXgoNDIpLCBF
eCg0MikpOwotICAgIEVYUEVDVF9HRShFeCg0MiksIEV4KDQyKSk7Ci0gICAgRVhQRUNUX0xFKEV4
KDQyKSwgRXgoMTAyNCkpOwotICAgIEVYUEVDVF9HRShFeCgxMDI0KSwgRXgoNDIpKTsKIAogICAg
IEVYUEVDVF9GQUxTRShFeCg0MikgPT0gRXgoMTAyNCkpOwogICAgIEVYUEVDVF9GQUxTRShFeCg0
MikgIT0gRXgoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRXgoMTAyNCkgPCBFeCg0MikpOwotICAg
IEVYUEVDVF9GQUxTRShFeCg0MikgPiBFeCgxMDI0KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEV4KDEw
MjQpIDwgRXgoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRXgoNDIpID49IEV4KDEwMjQpKTsKIAog
ICAgIC8vIFR3byBFeHBlY3RlZCwgaGFsZiBlcnJvcnMuCiAgICAgRVhQRUNUX0ZBTFNFKEV4KDQy
KSA9PSBFeChtYWtlVW5leHBlY3RlZChvb3BzKSkpOwogICAgIEVYUEVDVF9ORShFeCg0MiksIEV4
KG1ha2VVbmV4cGVjdGVkKG9vcHMpKSk7Ci0gICAgRVhQRUNUX0xUKEV4KDQyKSwgRXgobWFrZVVu
ZXhwZWN0ZWQob29wcykpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRXgoNDIpID4gRXgobWFrZVVuZXhw
ZWN0ZWQob29wcykpKTsKLSAgICBFWFBFQ1RfTEUoRXgoNDIpLCBFeChtYWtlVW5leHBlY3RlZChv
b3BzKSkpOwotICAgIEVYUEVDVF9GQUxTRShFeCg0MikgPj0gRXgobWFrZVVuZXhwZWN0ZWQob29w
cykpKTsKIAogICAgIEVYUEVDVF9GQUxTRShFeChtYWtlVW5leHBlY3RlZChvb3BzKSkgPT0gRXgo
NDIpKTsKICAgICBFWFBFQ1RfTkUoRXgobWFrZVVuZXhwZWN0ZWQob29wcykpLCBFeCg0MikpOwot
ICAgIEVYUEVDVF9GQUxTRShFeChtYWtlVW5leHBlY3RlZChvb3BzKSkgPCBFeCg0MikpOwotICAg
IEVYUEVDVF9HVChFeChtYWtlVW5leHBlY3RlZChvb3BzKSksIEV4KDQyKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKEV4KG1ha2VVbmV4cGVjdGVkKG9vcHMpKSA8PSBFeCg0MikpOwotICAgIEVYUEVDVF9H
RShFeChtYWtlVW5leHBlY3RlZChvb3BzKSksIEV4KDQyKSk7CiAKICAgICAvLyBUd28gRXhwZWN0
ZWQsIGFsbCBlcnJvcnMuCiAgICAgRVhQRUNUX0VRKEVyKDQyKSwgRXIoNDIpKTsKICAgICBFWFBF
Q1RfTkUoRXIoNDIpLCBFcigxMDI0KSk7Ci0gICAgRVhQRUNUX0xUKEVyKDQyKSwgRXIoMTAyNCkp
OwotICAgIEVYUEVDVF9HVChFcigxMDI0KSwgRXIoNDIpKTsKLSAgICBFWFBFQ1RfTEUoRXIoNDIp
LCBFcig0MikpOwotICAgIEVYUEVDVF9HRShFcig0MiksIEVyKDQyKSk7Ci0gICAgRVhQRUNUX0xF
KEVyKDQyKSwgRXIoMTAyNCkpOwotICAgIEVYUEVDVF9HRShFcigxMDI0KSwgRXIoNDIpKTsKIAog
ICAgIEVYUEVDVF9GQUxTRShFcig0MikgPT0gRXIoMTAyNCkpOwogICAgIEVYUEVDVF9GQUxTRShF
cig0MikgIT0gRXIoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRXIoMTAyNCkgPCBFcig0MikpOwot
ICAgIEVYUEVDVF9GQUxTRShFcig0MikgPiBFcigxMDI0KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEVy
KDEwMjQpIDw9IEVyKDQyKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEVyKDQyKSA+PSBFcigxMDI0KSk7
CiAKICAgICAvLyBPbmUgRXhwZWN0ZWQsIG9uZSB2YWx1ZS4KICAgICBFWFBFQ1RfRVEoRXgoNDIp
LCA0Mik7CiAgICAgRVhQRUNUX05FKEV4KDQyKSwgMCk7Ci0gICAgRVhQRUNUX0xUKEV4KDQyKSwg
MTAyNCk7Ci0gICAgRVhQRUNUX0dUKEV4KDEwMjQpLCA0Mik7Ci0gICAgRVhQRUNUX0xFKEV4KDQy
KSwgNDIpOwotICAgIEVYUEVDVF9HRShFeCg0MiksIDQyKTsKLSAgICBFWFBFQ1RfTEUoRXgoNDIp
LCAxMDI0KTsKLSAgICBFWFBFQ1RfR0UoRXgoMTAyNCksIDQyKTsKIAogICAgIEVYUEVDVF9GQUxT
RShFeCg0MikgPT0gMCk7CiAgICAgRVhQRUNUX0ZBTFNFKEV4KDQyKSAhPSA0Mik7Ci0gICAgRVhQ
RUNUX0ZBTFNFKEV4KDEwMjQpIDwgNDIpOwotICAgIEVYUEVDVF9GQUxTRShFeCg0MikgPiAxMDI0
KTsKLSAgICBFWFBFQ1RfRkFMU0UoRXgoMTAyNCkgPCA0Mik7Ci0gICAgRVhQRUNUX0ZBTFNFKEV4
KDQyKSA+PSAxMDI0KTsKIAogICAgIEVYUEVDVF9FUSg0MiwgRXgoNDIpKTsKICAgICBFWFBFQ1Rf
TkUoNDIsIEV4KDEwMjQpKTsKLSAgICBFWFBFQ1RfTFQoNDIsIEV4KDEwMjQpKTsKLSAgICBFWFBF
Q1RfR1QoMTAyNCwgRXgoNDIpKTsKLSAgICBFWFBFQ1RfTEUoNDIsIEV4KDQyKSk7Ci0gICAgRVhQ
RUNUX0dFKDQyLCBFeCg0MikpOwotICAgIEVYUEVDVF9MRSg0MiwgRXgoMTAyNCkpOwotICAgIEVY
UEVDVF9HRSgxMDI0LCBFeCg0MikpOwogCiAgICAgRVhQRUNUX0ZBTFNFKDQyID09IEV4KDEwMjQp
KTsKICAgICBFWFBFQ1RfRkFMU0UoNDIgIT0gRXgoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoMTAy
NCA8IEV4KDQyKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKDQyID4gRXgoMTAyNCkpOwotICAgIEVYUEVD
VF9GQUxTRSgxMDI0IDw9IEV4KDQyKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKDQyID49IEV4KDEwMjQp
KTsKIAogICAgIC8vIE9uZSBFeHBlY3RlZCwgb25lIHVuZXhwZWN0ZWQuCiAgICAgRVhQRUNUX0ZB
TFNFKEV4KDQyKSA9PSBtYWtlVW5leHBlY3RlZChvb3BzKSk7CiAgICAgRVhQRUNUX05FKEV4KDQy
KSwgbWFrZVVuZXhwZWN0ZWQob29wcykpOwotICAgIEVYUEVDVF9MVChFeCg0MiksIG1ha2VVbmV4
cGVjdGVkKG9vcHMpKTsKLSAgICBFWFBFQ1RfRkFMU0UoRXgoNDIpID4gbWFrZVVuZXhwZWN0ZWQo
b29wcykpOwotICAgIEVYUEVDVF9MRShFeCg0MiksIG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoRXgoNDIpID49IG1ha2VVbmV4cGVjdGVkKG9vcHMpKTsKIAogICAgIEVY
UEVDVF9GQUxTRShtYWtlVW5leHBlY3RlZChvb3BzKSA9PSBFeCg0MikpOwogICAgIEVYUEVDVF9O
RShtYWtlVW5leHBlY3RlZChvb3BzKSwgRXgoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UobWFrZVVu
ZXhwZWN0ZWQob29wcykgPCBFeCg0MikpOwotICAgIEVYUEVDVF9HVChtYWtlVW5leHBlY3RlZChv
b3BzKSwgRXgoNDIpKTsKLSAgICBFWFBFQ1RfRkFMU0UobWFrZVVuZXhwZWN0ZWQob29wcykgPD0g
RXgoNDIpKTsKLSAgICBFWFBFQ1RfR0UobWFrZVVuZXhwZWN0ZWQob29wcyksIEV4KDQyKSk7CiB9
CiAKIHN0cnVjdCBOb25Ucml2aWFsRHRvciB7CkBAIC00NDQsMzIgKzM5Miw2IEBAIFRFU1QoV1RG
X0V4cGVjdGVkLCBkZXN0cnVjdG9ycykKICAgICBFWFBFQ1RfRVEoTm9uVHJpdmlhbER0b3I6OmNv
dW50LCAxMSk7CiB9CiAKLVRFU1QoV1RGX0V4cGVjdGVkLCBoYXNoKQotewotICAgIHR5cGVkZWYg
RXhwZWN0ZWQ8aW50LCBjb25zdCBjaGFyKj4gRTsKLSAgICBzdGQ6OnVub3JkZXJlZF9tYXA8RSwg
aW50PiBtOwotICAgIG0uaW5zZXJ0KHsgRSg0MiksIDQyIH0pOwotICAgIG0uaW5zZXJ0KHsgRSht
YWtlVW5leHBlY3RlZChvb3BzKSksIDUgfSk7Ci0gICAgbS5pbnNlcnQoeyBFKDEwMjQpLCAxMDI0
IH0pOwotICAgIG0uaW5zZXJ0KHsgRShtYWtlVW5leHBlY3RlZChmb29mKSksIDB4ZjAwZiB9KTsK
LSAgICBFWFBFQ1RfRVEobVtFKDQyKV0sIDQyKTsKLSAgICBFWFBFQ1RfRVEobVtFKDEwMjQpXSwg
MTAyNCk7Ci0gICAgRVhQRUNUX0VRKG1bRShtYWtlVW5leHBlY3RlZChvb3BzKSldLCA1KTsKLSAg
ICBFWFBFQ1RfRVEobVtFKG1ha2VVbmV4cGVjdGVkKGZvb2YpKV0sIDB4ZjAwZik7Ci19Ci0KLVRF
U1QoV1RGX0V4cGVjdGVkLCBoYXNoX3ZvaWQpCi17Ci0gICAgdHlwZWRlZiBFeHBlY3RlZDx2b2lk
LCBjb25zdCBjaGFyKj4gRTsKLSAgICBzdGQ6OnVub3JkZXJlZF9tYXA8RSwgaW50PiBtOwotICAg
IG0uaW5zZXJ0KHsgRSgpLCA0MiB9KTsKLSAgICBtLmluc2VydCh7IEUobWFrZVVuZXhwZWN0ZWQo
b29wcykpLCA1IH0pOwotICAgIG0uaW5zZXJ0KHsgRShtYWtlVW5leHBlY3RlZChmb29mKSksIDB4
ZjAwZiB9KTsKLSAgICBFWFBFQ1RfRVEobVtFKCldLCA0Mik7Ci0gICAgRVhQRUNUX0VRKG1bRSht
YWtlVW5leHBlY3RlZChvb3BzKSldLCA1KTsKLSAgICBFWFBFQ1RfRVEobVtFKG1ha2VVbmV4cGVj
dGVkKGZvb2YpKV0sIDB4ZjAwZik7Ci19Ci0KIFRFU1QoV1RGX0V4cGVjdGVkLCBSZWYpCiB7CiAg
ICAgewotLSAKMi45LjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>