<?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>158081</bug_id>
          
          <creation_ts>2016-05-25 12:39:59 -0700</creation_ts>
          <short_desc>Get rid of WTF/Functional.h</short_desc>
          <delta_ts>2016-05-25 15:55:55 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1196416</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-05-25 12:39:59 -0700</bug_when>
    <thetext>Get rid of WTF/Functional.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196419</commentid>
    <comment_count>1</comment_count>
      <attachid>279791</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-05-25 12:41:07 -0700</bug_when>
    <thetext>Created attachment 279791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196424</commentid>
    <comment_count>2</comment_count>
      <attachid>279793</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-05-25 12:55:45 -0700</bug_when>
    <thetext>Created attachment 279793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196431</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-25 13:04:40 -0700</bug_when>
    <thetext>Does not build on CMake ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196432</commentid>
    <comment_count>4</comment_count>
      <attachid>279798</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-05-25 13:15:10 -0700</bug_when>
    <thetext>Created attachment 279798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196437</commentid>
    <comment_count>5</comment_count>
      <attachid>279798</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-25 13:27:10 -0700</bug_when>
    <thetext>Comment on attachment 279798
Patch

r=me as long as EWS is happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196442</commentid>
    <comment_count>6</comment_count>
      <attachid>279801</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-05-25 13:37:10 -0700</bug_when>
    <thetext>Created attachment 279801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196530</commentid>
    <comment_count>7</comment_count>
      <attachid>279801</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-25 15:25:49 -0700</bug_when>
    <thetext>Comment on attachment 279801
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196541</commentid>
    <comment_count>8</comment_count>
      <attachid>279801</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-25 15:55:50 -0700</bug_when>
    <thetext>Comment on attachment 279801
Patch

Clearing flags on attachment: 279801

Committed r201406: &lt;http://trac.webkit.org/changeset/201406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196542</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-25 15:55:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279791</attachid>
            <date>2016-05-25 12:41:07 -0700</date>
            <delta_ts>2016-05-25 12:55:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158081-20160525124216.patch</filename>
            <type>text/plain</type>
            <size>46862</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmODQyODIwNWY4YjcwNzRiYmI4NGFj
Njg3YjkyZWRmMjQ0OTA5NjcuLmJkYmJmMGVhNjVhZTRiOWU3YmUyNjljNDBmYzk3ZjA3ZWJmMmIz
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdURi9GdW5jdGlvbmFsLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODA4MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bm8gbG9uZ2VyIHVzZWQsIGFuZCByZW1vdmluZyBpdCB3aWxsIGZyZWUgdXAgdGhlIG5hbWUgZm9y
IGEgbmV3IEZ1bmN0aW9uYWwuaCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6IFJlbW92
ZWQuCisgICAgICAgIChXVEY6OlJlZkFuZERlcmVmOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSZWZBbmREZXJlZjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0
b3JhZ2VUcmFpdHM6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VU
cmFpdHM6OnVud3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3RvcmFnZVRyYWl0
czxQYXNzUmVmUHRyPFQ+Pjo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3Rv
cmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJlZlB0cjxUPj46OndyYXApOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj46OndyYXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmV0YWluUHRyPFQ+Pjo6
dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25JbXBsQmFzZTo6fkZ1bmN0
aW9uSW1wbEJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGdW5jdGlvbkJhc2U6OmlzTnVs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkZ1bmN0aW9uQmFzZTo6RnVuY3Rpb25CYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25CYXNlOjppbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6YmluZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL21hYy9EZXByZWNhdGVk
U3ltYm9sc1VzZWRCeVNhZmFyaS5tbToKKwogMjAxNi0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhdXRvIGZvciBzb21lIG9mIG91ciBsYW1iZGEg
ZnVuY3Rpb24gcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjdiYzRkZTk3NjY1NWU5MDFlODM5NGI4ZmI4NjNlZDJhMzYwMTQ1ZC4uOGRkYmRh
M2Q2NzJlZjc0YWQyZTk2MTEzYjRjZGRmOWRkMDBmOWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODcsNyArMTg3LDYgQEAKIAkJQThBNDczQzMxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxs
b2MuY3BwICovOyB9OwogCQlBOEE0NzNDNDE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTIx
NTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLzsgfTsKIAkJQThBNDczQzgxNTFBODI1
QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi87IH07
Ci0JCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNzE1MUE4MjVBMDA0MTIz
RkYgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyog
R2V0UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi87IH07CiAJCUE4QTQ3M0QzMTUx
QTgyNUIwMDQxMjNGRiAvKiBIYXNoQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjMxNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hD
b3VudGVkU2V0LmggKi87IH07CiAJCUE4QTQ3M0Q0MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoRnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJCNDE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMzAx
LDEyICszMDAsMTIgQEAKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0
MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVT
UEkuaCAqLzsgfTsKIAkJQ0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdB
QjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovOyB9OwotCQlEQ0VFMjIwNTFDRUI5ODY5MDAwQzIzOTYg
LyogQmFja3dhcmRzR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDRUUyMjA0MUNFQjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICov
OyB9OwogCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZBMUNFQTc1Mzgw
MDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovOyB9OwogCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4
Y2VwdGlvbnMuaCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAq
LzsgfTsKIAkJRENFRTIyMDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcy5oICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKKwkJRENFRTIyMDUxQ0VCOTg2OTAwMEMyMzk2
IC8qIEJhY2t3YXJkc0dyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAq
LzsgfTsKIAkJREU1QTA5RkMxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1QTA5RkIxQkEz
Njk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBD
QzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIg
LyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUxNTU1NkY2MThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9OwpAQCAtNTE0LDcgKzUxMyw2IEBACiAJCUE4QTQ3
MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOEE0NzJCMzE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaENvdW50ZWRTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaENvdW50ZWRTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQjQxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4LDEyICs2MjYsMTIgQEAK
IAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja3dhcmRzR3JhcGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENG
QnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENGQnVuZGxlU1BJ
Lmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9j
a09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkYxQ0VB
NzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIyMDQx
Q0VCOTg2OTAwMEMyMzk2IC8qIEJhY2t3YXJkc0dyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhY2t3YXJkc0dyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFw
aGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
eXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsNyArODI0LDYgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCi0JCQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8q
IEZ1bmN0aW9uYWwuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rp
b25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQgLyogRnVu
Y3Rpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdl
dFB0ci5oICovLApAQCAtMTIyMSw3ICsxMjE4LDYgQEAKIAkJCQlBOEE0NzNCNjE1MUE4MjVCMDA0
MTIzRkYgLyogZml4ZWQtZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QTcxN0I2QjRG
RDAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzgxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0M5MTUx
QTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5
QzE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
NWNhOTQxMWI4ZTM2NTY4M2I5YmI1NTcxNTVmMjZhODg0YmE5MzAyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
VEZfRnVuY3Rpb25hbF9oCi0jZGVmaW5lIFdURl9GdW5jdGlvbmFsX2gKLQotI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotI2lmIE9TKERBUldJTikgJiYgQ09NUElMRVJfU1VQUE9S
VFMoQkxPQ0tTKQotI2luY2x1ZGUgPEJsb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL09iamNSdW50aW1l
RXh0cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIEZ1bmN0aW9uYWwuaCBw
cm92aWRlcyBhIHZlcnkgc2ltcGxlIHdheSB0byBiaW5kIGEgZnVuY3Rpb24gcG9pbnRlciBhbmQg
YXJndW1lbnRzIHRvZ2V0aGVyIGludG8gYSBmdW5jdGlvbiBvYmplY3QKLS8vIHRoYXQgY2FuIGJl
IHN0b3JlZCwgY29waWVkIGFuZCBpbnZva2VkLCBzaW1pbGFyIHRvIGhvdyBib29zdDo6YmluZCBh
bmQgc3RkOjpiaW5kIGluIEMrKzExLgotCi0vLyBIZWxwZXIgY2xhc3MgdGVtcGxhdGUgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB0eXBlIGhhcyByZWYgYW5kIGRlcmVmIG1lbWJlciBmdW5j
dGlvbnMKLS8vIHdpdGggdGhlIHJpZ2h0IHR5cGUgc2lnbmF0dXJlLgotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWNsYXNzIEhhc1JlZkFuZERlcmVmIHsKLSAgICB0eXBlZGVmIGNoYXIgWWVzVHlwZTsK
LSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgIH07Ci0K
LSAgICBzdHJ1Y3QgQmFzZU1peGluIHsKLSAgICAgICAgdm9pZCBkZXJlZigpOwotICAgICAgICB2
b2lkIHJlZigpOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQmFzZSA6IHB1YmxpYyBULCBwdWJsaWMg
QmFzZU1peGluIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIFU+IHN0cnVjdAotICAg
IFR5cGVDaGVja2VyIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGlj
IE5vVHlwZSByZWZDaGVjayhVKiwgVHlwZUNoZWNrZXI8dm9pZCAoQmFzZU1peGluOjoqKSgpLCAm
VTo6cmVmPiogPSAwKTsKLSAgICBzdGF0aWMgWWVzVHlwZSByZWZDaGVjayguLi4pOwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgTm9UeXBlIGRlcmVmQ2hlY2soVSosIFR5
cGVDaGVja2VyPHZvaWQgKEJhc2VNaXhpbjo6KikoKSwgJlU6OmRlcmVmPiogPSAwKTsKLSAgICBz
dGF0aWMgWWVzVHlwZSBkZXJlZkNoZWNrKC4uLik7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHNpemVvZihyZWZDaGVjayhzdGF0aWNfY2FzdDxCYXNlKj4oMCkpKSA9
PSBzaXplb2YoWWVzVHlwZSkgJiYgc2l6ZW9mKGRlcmVmQ2hlY2soc3RhdGljX2Nhc3Q8QmFzZSo+
KDApKSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQotLy8gQSBGdW5jdGlvbldyYXBwZXIgaXMg
YSBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGNhbiB3cmFwIGEgZnVuY3Rpb24gcG9pbnRlciBvciBhIG1l
bWJlciBmdW5jdGlvbiBwb2ludGVyIGFuZAotLy8gcHJvdmlkZSBhIHVuaWZpZWQgaW50ZXJmYWNl
IGZvciBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNsYXNzIEZ1
bmN0aW9uV3JhcHBlcjsKLQotLy8gQm91bmQgc3RhdGljIGZ1bmN0aW9uczoKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSICgqKSgpPiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihS
ICgqZnVuY3Rpb24pKCkpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7Ci0g
ICAgfQotCi0gICAgUiBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKSgpOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDE+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8
UiAoKikoUDEpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4
cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1
bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEgcDEp
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEs
IFAyKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBj
b25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSwgUDIpKQotICAgICAgICA6IG1fZnVu
Y3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBwMSwg
UDIgcDIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAyKTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1jbGFz
cyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMyk+IHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBh
cmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKCpmdW5j
dGlvbikoUDEsIFAyLCBQMykpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7
Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFAxIHAxLCBQMiBwMiwgUDMgcDMpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAzKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUiAoKm1fZnVuY3Rpb24pKFAxLCBQMiwgUDMpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQ+
Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQpPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBl
cihSICgqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEgcDEsIFAyIHAyLCBQ
MyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAz
LCBwNCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSwgUDIsIFAz
LCBQNCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci1jbGFzcyBGdW5jdGlv
bldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQsIFA1KT4gewotcHVibGljOgotICAgIHR5cGVk
ZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFy
YW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0
aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24p
Ci0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBwMSwgUDIgcDIsIFAzIHAzLCBQ
NCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAz
LCBwNCwgcDUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAy
LCBQMywgUDQsIFA1KTsKLX07Ci0KLS8vIEJvdW5kIG1lbWJlciBmdW5jdGlvbnM6Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEM+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoQzo6
KikoKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBj
b25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFzUmVmQW5kRGVyZWY8Qz46OnZh
bHVlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6OipmdW5jdGlvbikoKSkK
LSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9w
ZXJhdG9yKCkoQyogYykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+Km1fZnVuY3Rpb24pKCk7
Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4mIGMpCi0gICAgewot
ICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAg
IHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKCk7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMT4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBl
cjxSIChDOjoqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFuZERl
cmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoqZnVu
Y3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEpCi0gICAgewotICAgICAgICByZXR1cm4g
KGMtPiptX2Z1bmN0aW9uKShwMSk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdl
YWtQdHI8Qz4mIGMsIFAxIHAxKQotICAgIHsKLSAgICAgICAgQyogb2JqID0gYy5nZXQoKTsKLSAg
ICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwotICAgICAgICByZXR1cm4g
KG9iai0+Km1fZnVuY3Rpb24pKHAxKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1f
ZnVuY3Rpb24pKFAxKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQ
MSwgUDIpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6
dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQ
MSwgUDIpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQot
ICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICByZXR1
cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShj
b25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICBDKiBvYmog
PSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0g
ICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikocDEsIHAyKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMik7Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAz
PgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQMiwgUDMpPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBs
aWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkKLSAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9y
KCkoQyogYywgUDEgcDEsIFAyIHAyLCBQMyBwMykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+
Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShjb25z
dCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzKQotICAgIHsKLSAgICAgICAgQyog
b2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigp
OwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9mdW5jdGlvbikoUDEsIFAyLCBQMyk7Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoq
KShQMSwgUDIsIFAzLCBQNCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFu
ZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoq
ZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEsIFAyIHAyLCBQ
MyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwg
cDIsIHAzLCBwNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4m
IGMsIFAxIHAxLCBQMiBwMiwgUDMgcDMsIFA0IHA0KQotICAgIHsKLSAgICAgICAgQyogb2JqID0g
Yy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwotICAg
ICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMsIHA0KTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KTsKLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNT4KLWNsYXNzIEZ1bmN0aW9u
V3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCwgUDUpPiB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQ
YXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5j
dGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAg
ICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3Io
KShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAg
ICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIsIHAzLCBwNCwgcDUpOwotICAgIH0KLQot
ICAgIFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAz
LCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAg
ICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2Jq
LT4qbV9mdW5jdGlvbikocDEsIHAyLCBwMywgcDQsIHA1KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQNSk7Ci19OwotCi0jaWYgT1Mo
REFSV0lOKSAmJiBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCi10ZW1wbGF0ZTx0eXBlbmFtZSBS
PgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKF4pKCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFt
ZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKF5ibG9jayko
KSkKLSAgICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkoYmxvY2spKQotICAgIHsKLSAgICB9Ci0K
LSAgICBGdW5jdGlvbldyYXBwZXIoY29uc3QgRnVuY3Rpb25XcmFwcGVyJiBvdGhlcikKLSAgICAg
ICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkob3RoZXIubV9ibG9jaykpCi0gICAgewotICAgIH0KLQot
ICAgIH5GdW5jdGlvbldyYXBwZXIoKQotICAgIHsKLSAgICAgICAgQmxvY2tfcmVsZWFzZShtX2Js
b2NrKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYmxvY2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoXm1fYmxvY2spKCk7Ci19Owot
I2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgc2hvdWxkUmVmQW5kRGVyZWY+IHN0
cnVjdCBSZWZBbmREZXJlZiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQpIHsgfQotICAgIHN0YXRp
YyB2b2lkIGRlcmVmKFQpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFJl
ZkFuZERlcmVmPFQqLCB0cnVlPiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQqIHQpIHsgdC0+cmVm
KCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXJlZihUKiB0KSB7IHQtPmRlcmVmKCk7IH0KLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHMgewotICAgIHR5
cGVkZWYgVCBTdG9yYWdlVHlwZTsKLQotICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKGNvbnN0
IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0YXRpYyBjb25zdCBUJiB1bndyYXAo
Y29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+PiB7
Ci0gICAgdHlwZWRlZiBSZWZQdHI8VD4gU3RvcmFnZVR5cGU7Ci0KLSAgICBzdGF0aWMgU3RvcmFn
ZVR5cGUgd3JhcChQYXNzUmVmUHRyPFQ+IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0
YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5n
ZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRy
YWl0czxSZWZQdHI8VD4+IHsKLSAgICB0eXBlZGVmIFJlZlB0cjxUPiBTdG9yYWdlVHlwZTsKLQot
ICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUucmVsZWFzZSgpOyB9Ci0gICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
Y2xhc3MgUmV0YWluUHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1TdG9y
YWdlVHJhaXRzPFJldGFpblB0cjxUPj4gewotICAgIHR5cGVkZWYgUmV0YWluUHRyPFQ+IFN0b3Jh
Z2VUeXBlOwotCi0gICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoY29uc3QgUmV0YWluUHRyPFQ+
JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0aWMgdHlwZW5hbWUgUmV0YWluUHRy
PFQ+OjpQdHJUeXBlIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmdldCgpOyB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbkltcGxCYXNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uSW1wbEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5GdW5jdGlvbkltcGxCYXNlKCkgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNsYXNz
IEZ1bmN0aW9uSW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uSW1w
bDxSICgpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGxCYXNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IFIgb3BlcmF0b3IoKSgpID0gMDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlciwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw7Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUj4KLWNsYXNzIEJv
dW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlciwgUiAoKT4gOiBwdWJsaWMgRnVuY3Rpb25J
bXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgot
ICAgIGV4cGxpY2l0IEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlvbldy
YXBwZXIpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0
VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBl
cigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldy
YXBwZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVuYW1l
IFIsIHR5cGVuYW1lIFAxPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
LCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6
OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1bmN0aW9uSW1wbChGdW5jdGlv
bldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEpCi0gICAgICAgIDogbV9mdW5j
dGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEoUGFyYW1TdG9yYWdl
VHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgewotICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVu
Y3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZihtX3AxKTsKLSAgICB9
Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8
UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3Ax
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0
VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBl
cihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSkpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUg
UGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3RvcmFnZVR5cGUgbV9wMTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIFAyPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQMSwg
UDIpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1
bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFw
cGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIpCi0gICAgICAg
IDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEoUGFy
YW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBG
dW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAg
IH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5k
RGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJl
ZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6
UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9u
V3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0
aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRy
YWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgUDM+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAxLCBQ
MiwgUDMpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpS
ZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25X
cmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0
IFAzJiBwMykKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0g
ICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAg
LCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1fcDMo
UGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAgewotICAgICAgICBSZWZBbmRE
ZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZiht
X3AxKTsKLSAgICB9Ci0gICAgCi0gICAgfkJvdW5kRnVuY3Rpb25JbXBsKCkKLSAgICB7Ci0gICAg
ICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1l
dGVyPjo6ZGVyZWYobV9wMSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6dW53cmFwKG1fcDEpLCBQ
YXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndyYXAobV9wMiksIFBhcmFtU3RvcmFnZVRyYWl0czxQ
Mz46OnVud3JhcChtX3AzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBl
ciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46
OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6
U3RvcmFnZVR5cGUgbV9wMzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
ciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgUDQ+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAx
LCBQMiwgUDMsIFA0KT4gOiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgotICAgIEJvdW5kRnVuY3Rpb25JbXBsKEZ1
bmN0aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSwgY29uc3QgUDImIHAy
LCBjb25zdCBQMyYgcDMsIGNvbnN0IFA0JiBwNCkKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBl
cihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAo
cDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0g
ICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICB7Ci0g
ICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFy
YW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwo
KQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5
cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1
bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1T
dG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1
bndyYXAobV9wNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9m
dW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3Rv
cmFnZVR5cGUgbV9wMTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+OjpTdG9y
YWdlVHlwZSBtX3AyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OlN0b3Jh
Z2VUeXBlIG1fcDM7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6U3RvcmFn
ZVR5cGUgbV9wNDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlw
ZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
UDQsIHR5cGVuYW1lIFA1PgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
LCBSIChQMSwgUDIsIFAzLCBQNCwgUDUpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUg
RnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5j
dGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBj
b25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0LCBjb25zdCBQNSYgcDUpCi0g
ICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1f
cDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQYXJh
bVN0b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICAgICAgLCBtX3AzKFBhcmFtU3RvcmFn
ZVRyYWl0czxQMz46OndyYXAocDMpKQotICAgICAgICAsIG1fcDQoUGFyYW1TdG9yYWdlVHJhaXRz
PFA0Pjo6d3JhcChwNCkpCi0gICAgICAgICwgbV9wNShQYXJhbVN0b3JhZ2VUcmFpdHM8UDU+Ojp3
cmFwKHA1KSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6
OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+
Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0
aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVy
YXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0
b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVu
d3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0
b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OnVu
d3JhcChtX3A1KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBlciBtX2Z1
bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+OjpTdG9y
YWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OlN0b3Jh
Z2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6U3RvcmFn
ZVR5cGUgbV9wMzsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+OjpTdG9yYWdl
VHlwZSBtX3A0OwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OlN0b3JhZ2VU
eXBlIG1fcDU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDY+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5j
dGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYpPiA6IHB1YmxpYyBGdW5jdGlv
bkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6
Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwg
Y29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0LCBj
b25zdCBQNSYgcDUsIGNvbnN0IFA2JiBwNikKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihm
dW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3
cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIp
KQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAg
ICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICAgICAgLCBt
X3A1KFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OndyYXAocDUpKQotICAgICAgICAsIG1fcDYoUGFy
YW1TdG9yYWdlVHJhaXRzPFA2Pjo6d3JhcChwNikpCi0gICAgewotICAgICAgICBSZWZBbmREZXJl
ZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZihtX3Ax
KTsKLSAgICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVm
QW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+Ojpk
ZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53
cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQNT46OnVud3JhcChtX3A1KSwgUGFyYW1TdG9yYWdlVHJhaXRzPFA2Pjo6dW53
cmFwKG1fcDYpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb25XcmFwcGVyIG1fZnVu
Y3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OlN0b3Jh
Z2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6U3RvcmFn
ZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+OjpTdG9yYWdl
VHlwZSBtX3AzOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OlN0b3JhZ2VU
eXBlIG1fcDQ7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA1Pjo6U3RvcmFnZVR5
cGUgbV9wNTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDY+OjpTdG9yYWdlVHlw
ZSBtX3A2OwotfTsKLQotY2xhc3MgRnVuY3Rpb25CYXNlIHsKLXB1YmxpYzoKLSAgICBib29sIGlz
TnVsbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1faW1wbDsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBGdW5jdGlvbkJhc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNp
dCBGdW5jdGlvbkJhc2UoUGFzc1JlZlB0cjxGdW5jdGlvbkltcGxCYXNlPiBpbXBsKQotICAgICAg
ICA6IG1faW1wbChpbXBsKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGU+IEZ1bmN0aW9uSW1wbDxGdW5jdGlvblR5cGU+KiBpbXBsKCkgY29uc3QKLSAg
ICB7IAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25JbXBsPEZ1bmN0aW9uVHlw
ZT4qPihtX2ltcGwuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8RnVuY3Rp
b25JbXBsQmFzZT4gbV9pbXBsOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWU+Ci1jbGFzcyBGdW5j
dGlvbjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uPFIgKCk+IDogcHVi
bGljIEZ1bmN0aW9uQmFzZSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb24oKQotICAgIHsKLSAgICB9
Ci0KLSAgICBGdW5jdGlvbihQYXNzUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gaW1wbCkKLSAg
ICAgICAgOiBGdW5jdGlvbkJhc2UoaW1wbCkKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRv
cigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNOdWxsKCkpOwotCi0gICAgICAg
IHJldHVybiBpbXBsPFIgKCk+KCktPm9wZXJhdG9yKCkoKTsKLSAgICB9Ci0KLSNpZiBPUyhEQVJX
SU4pICYmIENPTVBJTEVSX1NVUFBPUlRTKEJMT0NLUykKLSAgICB0eXBlZGVmIHZvaWQgKF5CbG9j
a1R5cGUpKCk7Ci0gICAgb3BlcmF0b3IgQmxvY2tUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IC8vIERlY2xhcmUgYSBSZWZQdHIgaGVyZSBzbyB3ZSdsbCBiZSBzdXJlIHRoYXQgdGhlIHVuZGVy
bHlpbmcgRnVuY3Rpb25JbXBsIG9iamVjdCdzCi0gICAgICAgIC8vIGxpZmVjeWNsZSBpcyBtYW5h
Z2VkIGNvcnJlY3RseS4KLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gZnVuY3Rp
b25JbXBsID0gaW1wbDxSICgpPigpOwotICAgICAgICBCbG9ja1R5cGUgYmxvY2sgPSBeewotICAg
ICAgICAgICBmdW5jdGlvbkltcGwtPm9wZXJhdG9yKCkoKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgcmV0
dXJuIFtbYmxvY2sgY29weV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAvLwotICAgICAgICAvLyBX
ZSdyZSB1c2luZyBtYW51YWwgb2JqY19tc2dTZW5kIGNhbGxzIGhlcmUgYmVjYXVzZSB3ZSBkb24n
dCB3YW50IHRvIG1ha2UgdGhlIGVudGlyZQotICAgICAgICAvLyBmaWxlIE9iamVjdGl2ZS1DLiBJ
dCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGltcGxpY2l0bHkgY29udmVydCBhIEZ1bmN0aW9uIHRv
Ci0gICAgICAgIC8vIGEgYmxvY2sgZXZlbiBpbiBDKysgY29kZSwgc2luY2UgdGhhdCBhbGxvd3Mg
dXMgdG8gZG8gdGhpbmdzIGxpa2U6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgZGlzcGF0Y2hf
YXN5bmMocXVldWUsIGJpbmQoLi4uKSk7Ci0gICAgICAgIC8vCi0gICAgICAgIGlkIGNvcGllZEJs
b2NrID0gd3RmT2JqY01zZ1NlbmQ8aWQ+KChpZClibG9jaywgc2VsX3JlZ2lzdGVyTmFtZSgiY29w
eSIpKTsKLSAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxvY2sgPSB3dGZPYmpjTXNnU2VuZDxpZD4o
Y29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxlYXNlIikpOwotICAgICAgICBy
ZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKLSAgICB9Ci0jZW5kaWYKLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0
aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlw
ZSBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFw
cGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0UmVmKG5ldyBCb3VuZEZ1bmN0
aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwgdHlwZW5hbWUgRnVuY3Rpb25X
cmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+KGZ1bmN0aW9uKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBBMT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29u
c3QgQTEmIGExKQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rp
b25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEpPihGdW5jdGlvbldyYXBwZXI8RnVu
Y3Rpb25UeXBlPihmdW5jdGlvbiksIGExKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIpCi17Ci0gICAgcmV0dXJu
IEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRU
eXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1
bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1
bHRUeXBlIChBMSwgQTIpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiks
IGExLCBhMikpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBl
IGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKQotewot
ICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBl
Pjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9u
V3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25U
eXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMyk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5
cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMykpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBND4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpS
ZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBj
b25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0KQotewotICAgIHJldHVybiBG
dW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlw
ZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0
VHlwZSAoQTEsIEEyLCBBMywgQTQpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5j
dGlvbiksIGExLCBhMiwgYTMsIGE0KSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlv
blR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlv
blR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3Qg
QTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCBjb25zdCBB
NSYgYTUpCi17Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbklt
cGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChBMSwgQTIsIEEzLCBBNCwgQTUpPihGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBhMiwgYTMsIGE0LCBhNSkpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2
PgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3Vs
dFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0
IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIGNvbnN0IEE1JiBhNSwgY29uc3Qg
QTYmIGE2KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8
RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25J
bXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+KEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNikpKTsKLX0KLQotfQotCi11c2luZyBXVEY6OkZ1bmN0aW9uOwotdXNpbmcgV1RGOjpiaW5k
OwotCi0jZW5kaWYgLy8gV1RGX0Z1bmN0aW9uYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGIvU291cmNlL1dURi93dGYv
bWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmluZGV4IDM4YjJiZTM1Yjg1NTFk
NWIzMjMzOTlmZGU5MTU0ZTlkNWNiOTI0OTQuLmMyZDlkM2JlNDU0MjU5MWZjZDYwMWE0NWFhODMw
MjMxYjc5MjYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL21hYy9EZXByZWNhdGVkU3lt
Ym9sc1VzZWRCeVNhZmFyaS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRGVwcmVjYXRlZFN5
bWJvbHNVc2VkQnlTYWZhcmkubW0KQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCi0jaW5jbHVkZSAiRnVuY3Rpb25hbC5oIgogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNp
bmNsdWRlICJIYXNoU2V0LmgiCiAjaW5jbHVkZSAiTG9jay5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0M2ViZTNmOTNiNzUyZjczNWQ3OWM2
Y2YwOTA4ODc1MGQ3OTI0MzYuLjZkOTczMjEwZjY0MzYwNWMyYzEyNTVhZmM5NDE3MTU1N2ZlYjdl
YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAxNi0wNS0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0aW9uYWwuaAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnJldHVybkZvcnR5VHdvKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHlCeVR3
byk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdWx0aXBseUJ5T25lQW5kQUhh
bGYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHkpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3VidHJhY3QpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6QTo6QSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpB
OjpmKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkE6OmFkZEYpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpCOjp+Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpy
ZWYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6ZGVyZWYpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Zik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpCOjpnKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJl
cjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6fk51
bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpOdW1iZXI6OnZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6TnVtYmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11bHRpcGx5TnVtYmVyQnlUd28pOiBEZWxldGVk
LgorCiAyMDE2LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIGF1dG8gZm9yIHNvbWUgb2Ygb3VyIGxhbWJkYSBmdW5jdGlvbiBwYXJhbWV0ZXJzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQwNjc2YjYwOTI2YjJiNjRhMzU4MTJiMWQ3MGYyMTk0
NzVmMDcyOWQuLjUyMTFjMDM2MzBjN2Q4YTBhYmRjMTc4OTQ0OGMyOGJlMmFjMjVkNzkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNyArMjYwLDYgQEAKIAkJN0NDRTdGMzExQTQxMUI4
RTAwNDQ3QzRDIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5
QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJN0NDRTdGMzIx
QTQxMUI4RTAwNDQ3QzRDIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcu
Y3BwICovOyB9OwogCQk3Q0NFN0YzMzFBNDExQjhFMDA0NDdDNEMgLyogRGVxdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBNzU3RDMxNzhBRUE1
QjAwQjVEN0E0IC8qIERlcXVlLmNwcCAqLzsgfTsKLQkJN0NDRTdGMzQxQTQxMUI4RTAwNDQ3QzRD
IC8qIEZ1bmN0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3BwICovOyB9
OwogCQk3Q0NFN0YzNTFBNDExQjhFMDA0NDdDNEMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODMzNDE0ODU3Q0U0MDBFQTIw
MDMgLyogSGFzaE1hcC5jcHAgKi87IH07CiAJCTdDQ0U3RjM2MUE0MTFCOEUwMDQ0N0M0QyAvKiBI
YXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLzsgfTsKIAkJN0NDRTdG
MzcxQTQxMUI4RTAwNDQ3QzRDIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY2RkFGRDIxNUU1Nzc1
MjAwRjYxRDVCIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwpAQCAtNTQ3
LDcgKzU0Niw2IEBACiAJCTFBN0U4QjMzMTgxMjA4REUwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmln
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFnbWVu
dE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBN0U4QjM1MTgx
MjA5MzYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IEZyYWdtZW50TmF2aWdhdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFybHlLVk9DcmFzaC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVhcmx5S1ZPQ3Jhc2gubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQTlFNTU3MTQ5ODBBOTkwMDAwMUE4QSAv
KiBGdW5jdGlvbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1
bmN0aW9uYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFEMTlGNTFDN0NF
MjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ29kaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUJDM0RF
RDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBREJFRkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9yY2VSZXBhaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTEsNyArMTM0OSw2IEBACiAJCQkJRTQwMDE5MzAx
QUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5
RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovLAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1
RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCi0JCQkJMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1
bmN0aW9uYWwuY3BwICovLAogCQkJCTdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291
bnRlZFNldC5jcHAgKi8sCiAJCQkJMEJDRDgzMzQxNDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAu
Y3BwICovLAogCQkJCTI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLywK
QEAgLTE4MzksNyArMTgzNiw2IEBACiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZy
YWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY2MUE0MTFBRTYw
MDQ0N0M0QyAvKiBGcmFtZU1JTUVUeXBlSFRNTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VGNzFBNDExQUU2MDA0NDdDNEMgLyogRnJhbWVNSU1FVHlwZVBORy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk3Q0NFN0YzNDFBNDExQjhFMDA0NDdDNEMgLyogRnVuY3Rpb25hbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VGODFBNDExQUU2MDA0NDdDNEMgLyogR2VvbG9jYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTExQTQxMUE5QTAwNDQ3QzRDIC8qIEdldEJhY2tp
bmdTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQkZDQzQ1MUE5RkY0NTMwMEE3
QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggY2Y4YzNjMzljNzFkYTc4MGJlNmU2NDI2ODM4MWU2MzVjMmNkMTZh
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIxOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KLQotbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgaW50IHJldHVybkZvcnR5VHdvKCkKLXsKLSAg
ICByZXR1cm4gNDI7Ci19Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIEJhc2ljKQotewotICAgIEZ1
bmN0aW9uPGludCAoKT4gZW1wdHlGdW5jdGlvbjsKLSAgICBBU1NFUlRfVFJVRShlbXB0eUZ1bmN0
aW9uLmlzTnVsbCgpKTsKLQotICAgIEZ1bmN0aW9uPGludCAoKT4gcmV0dXJuRm9ydHlUd29GdW5j
dGlvbiA9IGJpbmQocmV0dXJuRm9ydHlUd28pOwotICAgIEFTU0VSVF9GQUxTRShyZXR1cm5Gb3J0
eVR3b0Z1bmN0aW9uLmlzTnVsbCgpKTsKLSAgICBBU1NFUlRfRVEoNDIsIHJldHVybkZvcnR5VHdv
RnVuY3Rpb24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHlCeVR3byhpbnQgbikKLXsKLSAg
ICByZXR1cm4gbiAqIDI7Ci19Ci0KLXN0YXRpYyBkb3VibGUgbXVsdGlwbHlCeU9uZUFuZEFIYWxm
KGRvdWJsZSBkKQotewotICAgIHJldHVybiBkICogMS41OwotfQotCi1URVNUKEZ1bmN0aW9uYWxU
ZXN0LCBVbmFyeUJpbmQpCi17Ci0gICAgRnVuY3Rpb248aW50ICgpPiBtdWx0aXBseUZvdXJCeVR3
b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseUJ5VHdvLCA0KTsKLSAgICBBU1NFUlRfRVEoOCwgbXVs
dGlwbHlGb3VyQnlUd29GdW5jdGlvbigpKTsKLQotICAgIEZ1bmN0aW9uPGRvdWJsZSAoKT4gbXVs
dGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rpb24gPSBiaW5kKG11bHRpcGx5QnlPbmVBbmRBSGFsZiwg
Myk7Ci0gICAgQVNTRVJUX0VRKDQuNSwgbXVsdGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rpb24oKSk7
Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHkoaW50IHgsIGludCB5KQotewotICAgIHJldHVybiB4
ICogeTsKLX0KLQotc3RhdGljIGludCBzdWJ0cmFjdChpbnQgeCwgaW50IHkpCi17Ci0gICAgcmV0
dXJuIHggLSB5OwotfQotCi1URVNUKEZ1bmN0aW9uYWxUZXN0LCBCaW5hcnlCaW5kKQotewotICAg
IEZ1bmN0aW9uPGludCAoKT4gbXVsdGlwbHlGb3VyQnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlw
bHksIDQsIDIpOwotICAgIEFTU0VSVF9FUSg4LCBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uKCkp
OwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBzdWJ0cmFjdFR3b0Zyb21Gb3VyRnVuY3Rpb24gPSBi
aW5kKHN1YnRyYWN0LCA0LCAyKTsKLSAgICBBU1NFUlRfRVEoMiwgc3VidHJhY3RUd29Gcm9tRm91
ckZ1bmN0aW9uKCkpOwotfQotCi1jbGFzcyBBIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBKGlu
dCBpKQotICAgICAgICA6IG1faShpKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgZigpIHsgcmV0
dXJuIG1faTsgfQotICAgIGludCBhZGRGKGludCBqKSB7IHJldHVybiBtX2kgKyBqOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgaW50IG1faTsKLX07Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIE1lbWJlckZ1
bmN0aW9uQmluZCkKLXsKLSAgICBBIGEoMTApOwotICAgIEZ1bmN0aW9uPGludCAoKT4gZnVuY3Rp
b24xID0gYmluZCgmQTo6ZiwgJmEpOwotICAgIEFTU0VSVF9FUSgxMCwgZnVuY3Rpb24xKCkpOwot
Ci0gICAgRnVuY3Rpb248aW50ICgpPiBmdW5jdGlvbjIgPSBiaW5kKCZBOjphZGRGLCAmYSwgMTUp
OwotICAgIEFTU0VSVF9FUSgyNSwgZnVuY3Rpb24yKCkpOwotfQotCi1jbGFzcyBCIHsKLXB1Ymxp
YzoKLSAgICBCKCkKLSAgICAgICAgOiBtX251bVJlZkNhbGxzKDApCi0gICAgICAgICwgbV9udW1E
ZXJlZkNhbGxzKDApCi0gICAgewotICAgIH0KLQotICAgIH5CKCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgdm9pZCByZWYoKQotICAgIHsKLSAgICAgICAgbV9udW1SZWZDYWxscysrOwotICAgIH0KLQot
ICAgIHZvaWQgZGVyZWYoKQotICAgIHsKLSAgICAgICAgbV9udW1EZXJlZkNhbGxzKys7Ci0gICAg
fQotCi0gICAgdm9pZCBmKCkgeyBBU1NFUlRfR1QobV9udW1SZWZDYWxscywgMCk7IH0KLSAgICB2
b2lkIGcoaW50KSB7IEFTU0VSVF9HVChtX251bVJlZkNhbGxzLCAwKTsgfQotCi0gICAgaW50IG1f
bnVtUmVmQ2FsbHM7Ci0gICAgaW50IG1fbnVtRGVyZWZDYWxsczsKLX07Ci0KLVRFU1QoRnVuY3Rp
b25hbFRlc3QsIE1lbWJlckZ1bmN0aW9uQmluZFJlZkRlcmVmKQotewotICAgIEIgYjsKLQotICAg
IHsKLSAgICAgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24xID0gYmluZCgmQjo6ZiwgJmIp
OwotICAgICAgICBmdW5jdGlvbjEoKTsKLQotICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5j
dGlvbjIgPSBiaW5kKCZCOjpnLCAmYiwgMTApOwotICAgICAgICBmdW5jdGlvbjIoKTsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfVFJVRShiLm1fbnVtUmVmQ2FsbHMgPT0gYi5tX251bURlcmVmQ2FsbHMp
OwotICAgIEFTU0VSVF9HVChiLm1fbnVtUmVmQ2FsbHMsIDApOwotCi19Ci0KLWNsYXNzIE51bWJl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPE51bWJlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE51bWJlcj4gY3JlYXRlKGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTnVtYmVyKHZhbHVlKSk7Ci0gICAgfQotCi0gICAgfk51bWJlcigpCi0gICAg
ewotICAgICAgICBtX3ZhbHVlID0gMDsKLSAgICB9Ci0KLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTnVtYmVyKGludCB2
YWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQg
bV92YWx1ZTsKLX07Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHlOdW1iZXJCeVR3byhOdW1iZXIqIG51
bWJlcikKLXsKLSAgICByZXR1cm4gbnVtYmVyLT52YWx1ZSgpICogMjsKLX0KLQotVEVTVChGdW5j
dGlvbmFsVGVzdCwgUmVmQ291bnRlZFN0b3JhZ2UpCi17Ci0gICAgUmVmUHRyPE51bWJlcj4gZml2
ZSA9IE51bWJlcjo6Y3JlYXRlKDUpOwotICAgIEZ1bmN0aW9uPGludCAoKT4gbXVsdGlwbHlGaXZl
QnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHlOdW1iZXJCeVR3bywgZml2ZSk7Ci0gICAgQVNT
RVJUX0VRKDEwLCBtdWx0aXBseUZpdmVCeVR3b0Z1bmN0aW9uKCkpOwotCi0gICAgRnVuY3Rpb248
aW50ICgpPiBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseU51bWJlckJ5
VHdvLCBOdW1iZXI6OmNyZWF0ZSg0KSk7Ci0gICAgQVNTRVJUX0VRKDgsIG11bHRpcGx5Rm91ckJ5
VHdvRnVuY3Rpb24oKSk7Ci0KLSAgICBSZWZQdHI8TnVtYmVyPiBzaXggPSBOdW1iZXI6OmNyZWF0
ZSg2KTsKLSAgICBGdW5jdGlvbjxpbnQgKCk+IG11bHRpcGx5U2l4QnlUd29GdW5jdGlvbiA9IGJp
bmQobXVsdGlwbHlOdW1iZXJCeVR3bywgc2l4LnJlbGVhc2UoKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KHNpeCk7Ci0gICAgQVNTRVJUX0VRKDEyLCBtdWx0aXBseVNpeEJ5VHdvRnVuY3Rpb24oKSk7Ci19
Ci0KLW5hbWVzcGFjZSBSZWZBbmREZXJlZlRlc3RzIHsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVmQ291bnRlZCB7Ci0gICAgICAgIHZvaWQgcmVmKCk7Ci0gICAgICAg
IHZvaWQgZGVyZWYoKTsKLSAgICB9OwotICAgIHN0cnVjdCBDb25uZWN0aW9uIDogUmVmQ291bnRl
ZDxDb25uZWN0aW9uPiB7IH07Ci0gICAgQ09NUElMRV9BU1NFUlQoV1RGOjpIYXNSZWZBbmREZXJl
ZjxDb25uZWN0aW9uPjo6dmFsdWUsIGNsYXNzX2hhc19yZWZfYW5kX2RlcmVmKTsKLSAgICAKLSAg
ICBzdHJ1Y3QgTm9SZWZPckRlcmVmIHsgfTsKLSAgICBDT01QSUxFX0FTU0VSVCghV1RGOjpIYXNS
ZWZBbmREZXJlZjxOb1JlZk9yRGVyZWY+Ojp2YWx1ZSwgY2xhc3NfaGFzX25vX3JlZl9vcl9kZXJl
Zik7Ci0gICAgCi0gICAgc3RydWN0IFJlZk9ubHkgeyB2b2lkIHJlZigpOyB9OwotICAgIENPTVBJ
TEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPFJlZk9ubHk+Ojp2YWx1ZSwgY2xhc3NfaGFz
X3JlZl9vbmx5KTsKLSAgICAKLSAgICBzdHJ1Y3QgRGVyZWZPbmx5IHsgdm9pZCBkZXJlZigpOyB9
OwotICAgIENPTVBJTEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPERlcmVmT25seT46OnZh
bHVlLCBjbGFzc19oYXNfZGVyZWZfb25seSk7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279793</attachid>
            <date>2016-05-25 12:55:45 -0700</date>
            <delta_ts>2016-05-25 13:15:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158081-20160525125653.patch</filename>
            <type>text/plain</type>
            <size>47510</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmODQyODIwNWY4YjcwNzRiYmI4NGFj
Njg3YjkyZWRmMjQ0OTA5NjcuLmJkYmJmMGVhNjVhZTRiOWU3YmUyNjljNDBmYzk3ZjA3ZWJmMmIz
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdURi9GdW5jdGlvbmFsLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODA4MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bm8gbG9uZ2VyIHVzZWQsIGFuZCByZW1vdmluZyBpdCB3aWxsIGZyZWUgdXAgdGhlIG5hbWUgZm9y
IGEgbmV3IEZ1bmN0aW9uYWwuaCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6IFJlbW92
ZWQuCisgICAgICAgIChXVEY6OlJlZkFuZERlcmVmOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSZWZBbmREZXJlZjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0
b3JhZ2VUcmFpdHM6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VU
cmFpdHM6OnVud3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3RvcmFnZVRyYWl0
czxQYXNzUmVmUHRyPFQ+Pjo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3Rv
cmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJlZlB0cjxUPj46OndyYXApOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj46OndyYXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmV0YWluUHRyPFQ+Pjo6
dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25JbXBsQmFzZTo6fkZ1bmN0
aW9uSW1wbEJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGdW5jdGlvbkJhc2U6OmlzTnVs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkZ1bmN0aW9uQmFzZTo6RnVuY3Rpb25CYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25CYXNlOjppbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6YmluZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL21hYy9EZXByZWNhdGVk
U3ltYm9sc1VzZWRCeVNhZmFyaS5tbToKKwogMjAxNi0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhdXRvIGZvciBzb21lIG9mIG91ciBsYW1iZGEg
ZnVuY3Rpb24gcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjdiYzRkZTk3NjY1NWU5MDFlODM5NGI4ZmI4NjNlZDJhMzYwMTQ1ZC4uOGRkYmRh
M2Q2NzJlZjc0YWQyZTk2MTEzYjRjZGRmOWRkMDBmOWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODcsNyArMTg3LDYgQEAKIAkJQThBNDczQzMxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxs
b2MuY3BwICovOyB9OwogCQlBOEE0NzNDNDE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTIx
NTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLzsgfTsKIAkJQThBNDczQzgxNTFBODI1
QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi87IH07
Ci0JCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNzE1MUE4MjVBMDA0MTIz
RkYgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyog
R2V0UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi87IH07CiAJCUE4QTQ3M0QzMTUx
QTgyNUIwMDQxMjNGRiAvKiBIYXNoQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjMxNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hD
b3VudGVkU2V0LmggKi87IH07CiAJCUE4QTQ3M0Q0MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoRnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJCNDE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMzAx
LDEyICszMDAsMTIgQEAKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0
MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVT
UEkuaCAqLzsgfTsKIAkJQ0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdB
QjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovOyB9OwotCQlEQ0VFMjIwNTFDRUI5ODY5MDAwQzIzOTYg
LyogQmFja3dhcmRzR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDRUUyMjA0MUNFQjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICov
OyB9OwogCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZBMUNFQTc1Mzgw
MDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovOyB9OwogCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4
Y2VwdGlvbnMuaCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAq
LzsgfTsKIAkJRENFRTIyMDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcy5oICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKKwkJRENFRTIyMDUxQ0VCOTg2OTAwMEMyMzk2
IC8qIEJhY2t3YXJkc0dyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAq
LzsgfTsKIAkJREU1QTA5RkMxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1QTA5RkIxQkEz
Njk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBD
QzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIg
LyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUxNTU1NkY2MThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9OwpAQCAtNTE0LDcgKzUxMyw2IEBACiAJCUE4QTQ3
MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOEE0NzJCMzE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaENvdW50ZWRTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaENvdW50ZWRTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQjQxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4LDEyICs2MjYsMTIgQEAK
IAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja3dhcmRzR3JhcGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENG
QnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENGQnVuZGxlU1BJ
Lmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9j
a09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkYxQ0VB
NzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIyMDQx
Q0VCOTg2OTAwMEMyMzk2IC8qIEJhY2t3YXJkc0dyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhY2t3YXJkc0dyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFw
aGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
eXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsNyArODI0LDYgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCi0JCQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8q
IEZ1bmN0aW9uYWwuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rp
b25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQgLyogRnVu
Y3Rpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdl
dFB0ci5oICovLApAQCAtMTIyMSw3ICsxMjE4LDYgQEAKIAkJCQlBOEE0NzNCNjE1MUE4MjVCMDA0
MTIzRkYgLyogZml4ZWQtZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QTcxN0I2QjRG
RDAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzgxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0M5MTUx
QTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5
QzE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
NWNhOTQxMWI4ZTM2NTY4M2I5YmI1NTcxNTVmMjZhODg0YmE5MzAyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
VEZfRnVuY3Rpb25hbF9oCi0jZGVmaW5lIFdURl9GdW5jdGlvbmFsX2gKLQotI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotI2lmIE9TKERBUldJTikgJiYgQ09NUElMRVJfU1VQUE9S
VFMoQkxPQ0tTKQotI2luY2x1ZGUgPEJsb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL09iamNSdW50aW1l
RXh0cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIEZ1bmN0aW9uYWwuaCBw
cm92aWRlcyBhIHZlcnkgc2ltcGxlIHdheSB0byBiaW5kIGEgZnVuY3Rpb24gcG9pbnRlciBhbmQg
YXJndW1lbnRzIHRvZ2V0aGVyIGludG8gYSBmdW5jdGlvbiBvYmplY3QKLS8vIHRoYXQgY2FuIGJl
IHN0b3JlZCwgY29waWVkIGFuZCBpbnZva2VkLCBzaW1pbGFyIHRvIGhvdyBib29zdDo6YmluZCBh
bmQgc3RkOjpiaW5kIGluIEMrKzExLgotCi0vLyBIZWxwZXIgY2xhc3MgdGVtcGxhdGUgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB0eXBlIGhhcyByZWYgYW5kIGRlcmVmIG1lbWJlciBmdW5j
dGlvbnMKLS8vIHdpdGggdGhlIHJpZ2h0IHR5cGUgc2lnbmF0dXJlLgotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWNsYXNzIEhhc1JlZkFuZERlcmVmIHsKLSAgICB0eXBlZGVmIGNoYXIgWWVzVHlwZTsK
LSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgIH07Ci0K
LSAgICBzdHJ1Y3QgQmFzZU1peGluIHsKLSAgICAgICAgdm9pZCBkZXJlZigpOwotICAgICAgICB2
b2lkIHJlZigpOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQmFzZSA6IHB1YmxpYyBULCBwdWJsaWMg
QmFzZU1peGluIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIFU+IHN0cnVjdAotICAg
IFR5cGVDaGVja2VyIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGlj
IE5vVHlwZSByZWZDaGVjayhVKiwgVHlwZUNoZWNrZXI8dm9pZCAoQmFzZU1peGluOjoqKSgpLCAm
VTo6cmVmPiogPSAwKTsKLSAgICBzdGF0aWMgWWVzVHlwZSByZWZDaGVjayguLi4pOwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgTm9UeXBlIGRlcmVmQ2hlY2soVSosIFR5
cGVDaGVja2VyPHZvaWQgKEJhc2VNaXhpbjo6KikoKSwgJlU6OmRlcmVmPiogPSAwKTsKLSAgICBz
dGF0aWMgWWVzVHlwZSBkZXJlZkNoZWNrKC4uLik7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IHNpemVvZihyZWZDaGVjayhzdGF0aWNfY2FzdDxCYXNlKj4oMCkpKSA9
PSBzaXplb2YoWWVzVHlwZSkgJiYgc2l6ZW9mKGRlcmVmQ2hlY2soc3RhdGljX2Nhc3Q8QmFzZSo+
KDApKSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQotLy8gQSBGdW5jdGlvbldyYXBwZXIgaXMg
YSBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGNhbiB3cmFwIGEgZnVuY3Rpb24gcG9pbnRlciBvciBhIG1l
bWJlciBmdW5jdGlvbiBwb2ludGVyIGFuZAotLy8gcHJvdmlkZSBhIHVuaWZpZWQgaW50ZXJmYWNl
IGZvciBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNsYXNzIEZ1
bmN0aW9uV3JhcHBlcjsKLQotLy8gQm91bmQgc3RhdGljIGZ1bmN0aW9uczoKLQotdGVtcGxhdGU8
dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSICgqKSgpPiB7Ci1wdWJsaWM6Ci0g
ICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihS
ICgqZnVuY3Rpb24pKCkpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7Ci0g
ICAgfQotCi0gICAgUiBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKSgpOwotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDE+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8
UiAoKikoUDEpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4
cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1
bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEgcDEp
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEs
IFAyKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBj
b25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNp
dCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSwgUDIpKQotICAgICAgICA6IG1fZnVu
Y3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBwMSwg
UDIgcDIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAyKTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1jbGFz
cyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMyk+IHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBh
cmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKCpmdW5j
dGlvbikoUDEsIFAyLCBQMykpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7
Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFAxIHAxLCBQMiBwMiwgUDMgcDMpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAzKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUiAoKm1fZnVuY3Rpb24pKFAxLCBQMiwgUDMpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQ+
Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQpPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBl
cihSICgqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEgcDEsIFAyIHAyLCBQ
MyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAz
LCBwNCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSwgUDIsIFAz
LCBQNCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci1jbGFzcyBGdW5jdGlv
bldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQsIFA1KT4gewotcHVibGljOgotICAgIHR5cGVk
ZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFy
YW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0
aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24p
Ci0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBwMSwgUDIgcDIsIFAzIHAzLCBQ
NCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAz
LCBwNCwgcDUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAy
LCBQMywgUDQsIFA1KTsKLX07Ci0KLS8vIEJvdW5kIG1lbWJlciBmdW5jdGlvbnM6Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEM+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoQzo6
KikoKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBj
b25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFzUmVmQW5kRGVyZWY8Qz46OnZh
bHVlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6OipmdW5jdGlvbikoKSkK
LSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9w
ZXJhdG9yKCkoQyogYykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+Km1fZnVuY3Rpb24pKCk7
Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4mIGMpCi0gICAgewot
ICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAg
IHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKCk7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMT4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBl
cjxSIChDOjoqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFuZERl
cmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoqZnVu
Y3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEpCi0gICAgewotICAgICAgICByZXR1cm4g
KGMtPiptX2Z1bmN0aW9uKShwMSk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdl
YWtQdHI8Qz4mIGMsIFAxIHAxKQotICAgIHsKLSAgICAgICAgQyogb2JqID0gYy5nZXQoKTsKLSAg
ICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwotICAgICAgICByZXR1cm4g
KG9iai0+Km1fZnVuY3Rpb24pKHAxKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1f
ZnVuY3Rpb24pKFAxKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5
cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQ
MSwgUDIpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6
dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQ
MSwgUDIpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQot
ICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICByZXR1
cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShj
b25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICBDKiBvYmog
PSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0g
ICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikocDEsIHAyKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMik7Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAz
PgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQMiwgUDMpPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBs
aWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkKLSAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9y
KCkoQyogYywgUDEgcDEsIFAyIHAyLCBQMyBwMykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+
Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShjb25z
dCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzKQotICAgIHsKLSAgICAgICAgQyog
b2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigp
OwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9mdW5jdGlvbikoUDEsIFAyLCBQMyk7Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoq
KShQMSwgUDIsIFAzLCBQNCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFu
ZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoq
ZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEsIFAyIHAyLCBQ
MyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwg
cDIsIHAzLCBwNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4m
IGMsIFAxIHAxLCBQMiBwMiwgUDMgcDMsIFA0IHA0KQotICAgIHsKLSAgICAgICAgQyogb2JqID0g
Yy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwotICAg
ICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMsIHA0KTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KTsKLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNT4KLWNsYXNzIEZ1bmN0aW9u
V3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCwgUDUpPiB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQ
YXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5j
dGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAg
ICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3Io
KShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAg
ICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIsIHAzLCBwNCwgcDUpOwotICAgIH0KLQot
ICAgIFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAz
LCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAg
ICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2Jq
LT4qbV9mdW5jdGlvbikocDEsIHAyLCBwMywgcDQsIHA1KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQNSk7Ci19OwotCi0jaWYgT1Mo
REFSV0lOKSAmJiBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCi10ZW1wbGF0ZTx0eXBlbmFtZSBS
PgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKF4pKCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFt
ZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKF5ibG9jayko
KSkKLSAgICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkoYmxvY2spKQotICAgIHsKLSAgICB9Ci0K
LSAgICBGdW5jdGlvbldyYXBwZXIoY29uc3QgRnVuY3Rpb25XcmFwcGVyJiBvdGhlcikKLSAgICAg
ICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkob3RoZXIubV9ibG9jaykpCi0gICAgewotICAgIH0KLQot
ICAgIH5GdW5jdGlvbldyYXBwZXIoKQotICAgIHsKLSAgICAgICAgQmxvY2tfcmVsZWFzZShtX2Js
b2NrKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYmxvY2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoXm1fYmxvY2spKCk7Ci19Owot
I2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgc2hvdWxkUmVmQW5kRGVyZWY+IHN0
cnVjdCBSZWZBbmREZXJlZiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQpIHsgfQotICAgIHN0YXRp
YyB2b2lkIGRlcmVmKFQpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFJl
ZkFuZERlcmVmPFQqLCB0cnVlPiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQqIHQpIHsgdC0+cmVm
KCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXJlZihUKiB0KSB7IHQtPmRlcmVmKCk7IH0KLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHMgewotICAgIHR5
cGVkZWYgVCBTdG9yYWdlVHlwZTsKLQotICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKGNvbnN0
IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0YXRpYyBjb25zdCBUJiB1bndyYXAo
Y29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+PiB7
Ci0gICAgdHlwZWRlZiBSZWZQdHI8VD4gU3RvcmFnZVR5cGU7Ci0KLSAgICBzdGF0aWMgU3RvcmFn
ZVR5cGUgd3JhcChQYXNzUmVmUHRyPFQ+IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0
YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5n
ZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRy
YWl0czxSZWZQdHI8VD4+IHsKLSAgICB0eXBlZGVmIFJlZlB0cjxUPiBTdG9yYWdlVHlwZTsKLQot
ICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUucmVsZWFzZSgpOyB9Ci0gICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4g
Y2xhc3MgUmV0YWluUHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1TdG9y
YWdlVHJhaXRzPFJldGFpblB0cjxUPj4gewotICAgIHR5cGVkZWYgUmV0YWluUHRyPFQ+IFN0b3Jh
Z2VUeXBlOwotCi0gICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoY29uc3QgUmV0YWluUHRyPFQ+
JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0aWMgdHlwZW5hbWUgUmV0YWluUHRy
PFQ+OjpQdHJUeXBlIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmdldCgpOyB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbkltcGxCYXNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uSW1wbEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5GdW5jdGlvbkltcGxCYXNlKCkgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNsYXNz
IEZ1bmN0aW9uSW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uSW1w
bDxSICgpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGxCYXNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IFIgb3BlcmF0b3IoKSgpID0gMDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlciwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw7Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUj4KLWNsYXNzIEJv
dW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlciwgUiAoKT4gOiBwdWJsaWMgRnVuY3Rpb25J
bXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgot
ICAgIGV4cGxpY2l0IEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlvbldy
YXBwZXIpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0
VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBl
cigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldy
YXBwZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVuYW1l
IFIsIHR5cGVuYW1lIFAxPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
LCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6
OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1bmN0aW9uSW1wbChGdW5jdGlv
bldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEpCi0gICAgICAgIDogbV9mdW5j
dGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEoUGFyYW1TdG9yYWdl
VHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgewotICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVu
Y3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZihtX3AxKTsKLSAgICB9
Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8
UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3Ax
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0
VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBl
cihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSkpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUg
UGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3RvcmFnZVR5cGUgbV9wMTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIFAyPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQMSwg
UDIpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1
bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFw
cGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIpCi0gICAgICAg
IDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEoUGFy
YW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBG
dW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAg
IH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5k
RGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJl
ZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6
UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9u
V3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0
aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRy
YWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgUDM+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAxLCBQ
MiwgUDMpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpS
ZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25X
cmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0
IFAzJiBwMykKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0g
ICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAg
LCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1fcDMo
UGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAgewotICAgICAgICBSZWZBbmRE
ZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZiht
X3AxKTsKLSAgICB9Ci0gICAgCi0gICAgfkJvdW5kRnVuY3Rpb25JbXBsKCkKLSAgICB7Ci0gICAg
ICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1l
dGVyPjo6ZGVyZWYobV9wMSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6dW53cmFwKG1fcDEpLCBQ
YXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndyYXAobV9wMiksIFBhcmFtU3RvcmFnZVRyYWl0czxQ
Mz46OnVud3JhcChtX3AzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBl
ciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46
OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6
U3RvcmFnZVR5cGUgbV9wMzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
ciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlw
ZW5hbWUgUDQ+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAx
LCBQMiwgUDMsIFA0KT4gOiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgotICAgIEJvdW5kRnVuY3Rpb25JbXBsKEZ1
bmN0aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSwgY29uc3QgUDImIHAy
LCBjb25zdCBQMyYgcDMsIGNvbnN0IFA0JiBwNCkKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBl
cihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAo
cDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0g
ICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICB7Ci0g
ICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFy
YW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwo
KQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5
cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1
bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1T
dG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1
bndyYXAobV9wNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9m
dW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3Rv
cmFnZVR5cGUgbV9wMTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+OjpTdG9y
YWdlVHlwZSBtX3AyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OlN0b3Jh
Z2VUeXBlIG1fcDM7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6U3RvcmFn
ZVR5cGUgbV9wNDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlw
ZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
UDQsIHR5cGVuYW1lIFA1PgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
LCBSIChQMSwgUDIsIFAzLCBQNCwgUDUpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUg
RnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5j
dGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBj
b25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0LCBjb25zdCBQNSYgcDUpCi0g
ICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1f
cDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQYXJh
bVN0b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICAgICAgLCBtX3AzKFBhcmFtU3RvcmFn
ZVRyYWl0czxQMz46OndyYXAocDMpKQotICAgICAgICAsIG1fcDQoUGFyYW1TdG9yYWdlVHJhaXRz
PFA0Pjo6d3JhcChwNCkpCi0gICAgICAgICwgbV9wNShQYXJhbVN0b3JhZ2VUcmFpdHM8UDU+Ojp3
cmFwKHA1KSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6
OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+
Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0
aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVy
YXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0
b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVu
d3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0
b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OnVu
d3JhcChtX3A1KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBlciBtX2Z1
bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+OjpTdG9y
YWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OlN0b3Jh
Z2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6U3RvcmFn
ZVR5cGUgbV9wMzsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+OjpTdG9yYWdl
VHlwZSBtX3A0OwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OlN0b3JhZ2VU
eXBlIG1fcDU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0
LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDY+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5j
dGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYpPiA6IHB1YmxpYyBGdW5jdGlv
bkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6
Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwg
Y29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0LCBj
b25zdCBQNSYgcDUsIGNvbnN0IFA2JiBwNikKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihm
dW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3
cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIp
KQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAg
ICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICAgICAgLCBt
X3A1KFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OndyYXAocDUpKQotICAgICAgICAsIG1fcDYoUGFy
YW1TdG9yYWdlVHJhaXRzPFA2Pjo6d3JhcChwNikpCi0gICAgewotICAgICAgICBSZWZBbmREZXJl
ZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZihtX3Ax
KTsKLSAgICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVm
QW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+Ojpk
ZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53
cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQNT46OnVud3JhcChtX3A1KSwgUGFyYW1TdG9yYWdlVHJhaXRzPFA2Pjo6dW53
cmFwKG1fcDYpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb25XcmFwcGVyIG1fZnVu
Y3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OlN0b3Jh
Z2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6U3RvcmFn
ZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+OjpTdG9yYWdl
VHlwZSBtX3AzOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OlN0b3JhZ2VU
eXBlIG1fcDQ7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA1Pjo6U3RvcmFnZVR5
cGUgbV9wNTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDY+OjpTdG9yYWdlVHlw
ZSBtX3A2OwotfTsKLQotY2xhc3MgRnVuY3Rpb25CYXNlIHsKLXB1YmxpYzoKLSAgICBib29sIGlz
TnVsbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1faW1wbDsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBGdW5jdGlvbkJhc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNp
dCBGdW5jdGlvbkJhc2UoUGFzc1JlZlB0cjxGdW5jdGlvbkltcGxCYXNlPiBpbXBsKQotICAgICAg
ICA6IG1faW1wbChpbXBsKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGU+IEZ1bmN0aW9uSW1wbDxGdW5jdGlvblR5cGU+KiBpbXBsKCkgY29uc3QKLSAg
ICB7IAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25JbXBsPEZ1bmN0aW9uVHlw
ZT4qPihtX2ltcGwuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8RnVuY3Rp
b25JbXBsQmFzZT4gbV9pbXBsOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWU+Ci1jbGFzcyBGdW5j
dGlvbjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uPFIgKCk+IDogcHVi
bGljIEZ1bmN0aW9uQmFzZSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb24oKQotICAgIHsKLSAgICB9
Ci0KLSAgICBGdW5jdGlvbihQYXNzUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gaW1wbCkKLSAg
ICAgICAgOiBGdW5jdGlvbkJhc2UoaW1wbCkKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRv
cigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNOdWxsKCkpOwotCi0gICAgICAg
IHJldHVybiBpbXBsPFIgKCk+KCktPm9wZXJhdG9yKCkoKTsKLSAgICB9Ci0KLSNpZiBPUyhEQVJX
SU4pICYmIENPTVBJTEVSX1NVUFBPUlRTKEJMT0NLUykKLSAgICB0eXBlZGVmIHZvaWQgKF5CbG9j
a1R5cGUpKCk7Ci0gICAgb3BlcmF0b3IgQmxvY2tUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IC8vIERlY2xhcmUgYSBSZWZQdHIgaGVyZSBzbyB3ZSdsbCBiZSBzdXJlIHRoYXQgdGhlIHVuZGVy
bHlpbmcgRnVuY3Rpb25JbXBsIG9iamVjdCdzCi0gICAgICAgIC8vIGxpZmVjeWNsZSBpcyBtYW5h
Z2VkIGNvcnJlY3RseS4KLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gZnVuY3Rp
b25JbXBsID0gaW1wbDxSICgpPigpOwotICAgICAgICBCbG9ja1R5cGUgYmxvY2sgPSBeewotICAg
ICAgICAgICBmdW5jdGlvbkltcGwtPm9wZXJhdG9yKCkoKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgcmV0
dXJuIFtbYmxvY2sgY29weV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAvLwotICAgICAgICAvLyBX
ZSdyZSB1c2luZyBtYW51YWwgb2JqY19tc2dTZW5kIGNhbGxzIGhlcmUgYmVjYXVzZSB3ZSBkb24n
dCB3YW50IHRvIG1ha2UgdGhlIGVudGlyZQotICAgICAgICAvLyBmaWxlIE9iamVjdGl2ZS1DLiBJ
dCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGltcGxpY2l0bHkgY29udmVydCBhIEZ1bmN0aW9uIHRv
Ci0gICAgICAgIC8vIGEgYmxvY2sgZXZlbiBpbiBDKysgY29kZSwgc2luY2UgdGhhdCBhbGxvd3Mg
dXMgdG8gZG8gdGhpbmdzIGxpa2U6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgZGlzcGF0Y2hf
YXN5bmMocXVldWUsIGJpbmQoLi4uKSk7Ci0gICAgICAgIC8vCi0gICAgICAgIGlkIGNvcGllZEJs
b2NrID0gd3RmT2JqY01zZ1NlbmQ8aWQ+KChpZClibG9jaywgc2VsX3JlZ2lzdGVyTmFtZSgiY29w
eSIpKTsKLSAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxvY2sgPSB3dGZPYmpjTXNnU2VuZDxpZD4o
Y29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxlYXNlIikpOwotICAgICAgICBy
ZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKLSAgICB9Ci0jZW5kaWYKLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0
aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlw
ZSBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFw
cGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0UmVmKG5ldyBCb3VuZEZ1bmN0
aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwgdHlwZW5hbWUgRnVuY3Rpb25X
cmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+KGZ1bmN0aW9uKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSBBMT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29u
c3QgQTEmIGExKQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rp
b25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEpPihGdW5jdGlvbldyYXBwZXI8RnVu
Y3Rpb25UeXBlPihmdW5jdGlvbiksIGExKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIpCi17Ci0gICAgcmV0dXJu
IEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRU
eXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1
bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1
bHRUeXBlIChBMSwgQTIpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiks
IGExLCBhMikpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBl
IGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKQotewot
ICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBl
Pjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9u
V3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25U
eXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMyk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5
cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMykpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBND4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpS
ZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBj
b25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0KQotewotICAgIHJldHVybiBG
dW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlw
ZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0
VHlwZSAoQTEsIEEyLCBBMywgQTQpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5j
dGlvbiksIGExLCBhMiwgYTMsIGE0KSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlv
blR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlv
blR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3Qg
QTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCBjb25zdCBB
NSYgYTUpCi17Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbklt
cGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChBMSwgQTIsIEEzLCBBNCwgQTUpPihGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBhMiwgYTMsIGE0LCBhNSkpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2
PgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3Vs
dFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0
IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIGNvbnN0IEE1JiBhNSwgY29uc3Qg
QTYmIGE2KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8
RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25J
bXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+KEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNikpKTsKLX0KLQotfQotCi11c2luZyBXVEY6OkZ1bmN0aW9uOwotdXNpbmcgV1RGOjpiaW5k
OwotCi0jZW5kaWYgLy8gV1RGX0Z1bmN0aW9uYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGIvU291cmNlL1dURi93dGYv
bWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmluZGV4IDM4YjJiZTM1Yjg1NTFk
NWIzMjMzOTlmZGU5MTU0ZTlkNWNiOTI0OTQuLmMyZDlkM2JlNDU0MjU5MWZjZDYwMWE0NWFhODMw
MjMxYjc5MjYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL21hYy9EZXByZWNhdGVkU3lt
Ym9sc1VzZWRCeVNhZmFyaS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRGVwcmVjYXRlZFN5
bWJvbHNVc2VkQnlTYWZhcmkubW0KQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogCi0jaW5jbHVkZSAiRnVuY3Rpb25hbC5oIgogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNp
bmNsdWRlICJIYXNoU2V0LmgiCiAjaW5jbHVkZSAiTG9jay5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0M2ViZTNmOTNiNzUyZjczNWQ3OWM2
Y2YwOTA4ODc1MGQ3OTI0MzYuLjZkOTczMjEwZjY0MzYwNWMyYzEyNTVhZmM5NDE3MTU1N2ZlYjdl
YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAxNi0wNS0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0aW9uYWwuaAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDgxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnJldHVybkZvcnR5VHdvKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHlCeVR3
byk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdWx0aXBseUJ5T25lQW5kQUhh
bGYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHkpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3VidHJhY3QpOiBEZWxldGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6QTo6QSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpB
OjpmKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkE6OmFkZEYpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpCOjp+Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpy
ZWYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6ZGVyZWYpOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Zik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpCOjpnKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJl
cjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6fk51
bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpOdW1iZXI6OnZhbHVlKTog
RGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6TnVtYmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11bHRpcGx5TnVtYmVyQnlUd28pOiBEZWxldGVk
LgorCiAyMDE2LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIGF1dG8gZm9yIHNvbWUgb2Ygb3VyIGxhbWJkYSBmdW5jdGlvbiBwYXJhbWV0ZXJzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA3ZTkzZGExODc3YjkyNTBiODg5MjdkOTY2
NDRhNjZmMmIwYWNiODc4Li43MGIyMjU1YmRmMThkM2FjM2ZjNzdlMWFkNTk2MWQ0NjMwMWRmMTMw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTQ3LDcgKzQ3LDYgQEAgc2V0KFRl
c3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRp
b24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAKLSAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0hhc2hNYXAuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0hhc2hTZXQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQwNjc2YjYwOTI2
YjJiNjRhMzU4MTJiMWQ3MGYyMTk0NzVmMDcyOWQuLjUyMTFjMDM2MzBjN2Q4YTBhYmRjMTc4OTQ0
OGMyOGJlMmFjMjVkNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNyArMjYwLDYg
QEAKIAkJN0NDRTdGMzExQTQxMUI4RTAwNDQ3QzRDIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cCAqLzsgfTsKIAkJN0NDRTdGMzIxQTQxMUI4RTAwNDQ3QzRDIC8qIENTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZBMkM3MkUxNUUyRTcz
QzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovOyB9OwogCQk3Q0NFN0YzMzFBNDExQjhFMDA0NDdD
NEMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRBNzU3RDMxNzhBRUE1QjAwQjVEN0E0IC8qIERlcXVlLmNwcCAqLzsgfTsKLQkJN0ND
RTdGMzQxQTQxMUI4RTAwNDQ3QzRDIC8qIEZ1bmN0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8q
IEZ1bmN0aW9uYWwuY3BwICovOyB9OwogCQk3Q0NFN0YzNTFBNDExQjhFMDA0NDdDNEMgLyogSGFz
aE1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QkNEODMzNDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi87IH07CiAJCTdDQ0U3RjM2
MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0
LmNwcCAqLzsgfTsKIAkJN0NDRTdGMzcxQTQxMUI4RTAwNDQ3QzRDIC8qIEludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjY2RkFGRDIxNUU1Nzc1MjAwRjYxRDVCIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uY3BwICovOyB9OwpAQCAtNTQ3LDcgKzU0Niw2IEBACiAJCTFBN0U4QjMzMTgxMjA4REUwMEFF
Qjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGcmFnbWVudE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBN0U4QjM1MTgxMjA5MzYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZyYWdtZW50TmF2aWdhdGlvbi5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQg
LyogRWFybHlLVk9DcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEVhcmx5S1ZPQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQTlF
NTU3MTQ5ODBBOTkwMDAwMUE4QSAvKiBGdW5jdGlvbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29kaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQUJDM0RFRDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBREJFRkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBG
b3JjZVJlcGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9y
Y2VSZXBhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTEsNyArMTM0
OSw2IEBACiAJCQkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAq
LywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovLAogCQkJ
CUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCi0JCQkJMUFBOUU1NTcx
NDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3BwICovLAogCQkJCTdBMzhEN0U1MUM3NTJE
NUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi8sCiAJCQkJMEJDRDgzMzQxNDg1N0NF
NDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICovLAogCQkJCTI2QjJERkY4MTVCREU1OTkwMDRGNjkx
RCAvKiBIYXNoU2V0LmNwcCAqLywKQEAgLTE4MzksNyArMTgzNiw2IEBACiAJCQkJN0NDRTdFQzAx
QTQxMUE3RTAwNDQ3QzRDIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUY2MUE0MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1JTUVUeXBlSFRNTC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNzFBNDExQUU2MDA0NDdDNEMgLyogRnJhbWVNSU1FVHlw
ZVBORy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0YzNDFBNDExQjhFMDA0NDdDNEMgLyog
RnVuY3Rpb25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGODFBNDExQUU2MDA0NDdD
NEMgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTExQTQxMUE5
QTAwNDQ3QzRDIC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQkZDQzQ1MUE5RkY0NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRnVuY3Rpb25hbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlv
bmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4YzNjMzljNzFkYTc4MGJl
NmU2NDI2ODM4MWU2MzVjMmNkMTZhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uYWwuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgaW50IHJl
dHVybkZvcnR5VHdvKCkKLXsKLSAgICByZXR1cm4gNDI7Ci19Ci0KLVRFU1QoRnVuY3Rpb25hbFRl
c3QsIEJhc2ljKQotewotICAgIEZ1bmN0aW9uPGludCAoKT4gZW1wdHlGdW5jdGlvbjsKLSAgICBB
U1NFUlRfVFJVRShlbXB0eUZ1bmN0aW9uLmlzTnVsbCgpKTsKLQotICAgIEZ1bmN0aW9uPGludCAo
KT4gcmV0dXJuRm9ydHlUd29GdW5jdGlvbiA9IGJpbmQocmV0dXJuRm9ydHlUd28pOwotICAgIEFT
U0VSVF9GQUxTRShyZXR1cm5Gb3J0eVR3b0Z1bmN0aW9uLmlzTnVsbCgpKTsKLSAgICBBU1NFUlRf
RVEoNDIsIHJldHVybkZvcnR5VHdvRnVuY3Rpb24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlw
bHlCeVR3byhpbnQgbikKLXsKLSAgICByZXR1cm4gbiAqIDI7Ci19Ci0KLXN0YXRpYyBkb3VibGUg
bXVsdGlwbHlCeU9uZUFuZEFIYWxmKGRvdWJsZSBkKQotewotICAgIHJldHVybiBkICogMS41Owot
fQotCi1URVNUKEZ1bmN0aW9uYWxUZXN0LCBVbmFyeUJpbmQpCi17Ci0gICAgRnVuY3Rpb248aW50
ICgpPiBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseUJ5VHdvLCA0KTsK
LSAgICBBU1NFUlRfRVEoOCwgbXVsdGlwbHlGb3VyQnlUd29GdW5jdGlvbigpKTsKLQotICAgIEZ1
bmN0aW9uPGRvdWJsZSAoKT4gbXVsdGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rpb24gPSBiaW5kKG11
bHRpcGx5QnlPbmVBbmRBSGFsZiwgMyk7Ci0gICAgQVNTRVJUX0VRKDQuNSwgbXVsdGlwbHlCeU9u
ZUFuZEFIYWxmRnVuY3Rpb24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHkoaW50IHgsIGlu
dCB5KQotewotICAgIHJldHVybiB4ICogeTsKLX0KLQotc3RhdGljIGludCBzdWJ0cmFjdChpbnQg
eCwgaW50IHkpCi17Ci0gICAgcmV0dXJuIHggLSB5OwotfQotCi1URVNUKEZ1bmN0aW9uYWxUZXN0
LCBCaW5hcnlCaW5kKQotewotICAgIEZ1bmN0aW9uPGludCAoKT4gbXVsdGlwbHlGb3VyQnlUd29G
dW5jdGlvbiA9IGJpbmQobXVsdGlwbHksIDQsIDIpOwotICAgIEFTU0VSVF9FUSg4LCBtdWx0aXBs
eUZvdXJCeVR3b0Z1bmN0aW9uKCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBzdWJ0cmFjdFR3
b0Zyb21Gb3VyRnVuY3Rpb24gPSBiaW5kKHN1YnRyYWN0LCA0LCAyKTsKLSAgICBBU1NFUlRfRVEo
Miwgc3VidHJhY3RUd29Gcm9tRm91ckZ1bmN0aW9uKCkpOwotfQotCi1jbGFzcyBBIHsKLXB1Ymxp
YzoKLSAgICBleHBsaWNpdCBBKGludCBpKQotICAgICAgICA6IG1faShpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBpbnQgZigpIHsgcmV0dXJuIG1faTsgfQotICAgIGludCBhZGRGKGludCBqKSB7IHJl
dHVybiBtX2kgKyBqOyB9Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1faTsKLX07Ci0KLVRFU1QoRnVu
Y3Rpb25hbFRlc3QsIE1lbWJlckZ1bmN0aW9uQmluZCkKLXsKLSAgICBBIGEoMTApOwotICAgIEZ1
bmN0aW9uPGludCAoKT4gZnVuY3Rpb24xID0gYmluZCgmQTo6ZiwgJmEpOwotICAgIEFTU0VSVF9F
USgxMCwgZnVuY3Rpb24xKCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBmdW5jdGlvbjIgPSBi
aW5kKCZBOjphZGRGLCAmYSwgMTUpOwotICAgIEFTU0VSVF9FUSgyNSwgZnVuY3Rpb24yKCkpOwot
fQotCi1jbGFzcyBCIHsKLXB1YmxpYzoKLSAgICBCKCkKLSAgICAgICAgOiBtX251bVJlZkNhbGxz
KDApCi0gICAgICAgICwgbV9udW1EZXJlZkNhbGxzKDApCi0gICAgewotICAgIH0KLQotICAgIH5C
KCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCByZWYoKQotICAgIHsKLSAgICAgICAgbV9udW1S
ZWZDYWxscysrOwotICAgIH0KLQotICAgIHZvaWQgZGVyZWYoKQotICAgIHsKLSAgICAgICAgbV9u
dW1EZXJlZkNhbGxzKys7Ci0gICAgfQotCi0gICAgdm9pZCBmKCkgeyBBU1NFUlRfR1QobV9udW1S
ZWZDYWxscywgMCk7IH0KLSAgICB2b2lkIGcoaW50KSB7IEFTU0VSVF9HVChtX251bVJlZkNhbGxz
LCAwKTsgfQotCi0gICAgaW50IG1fbnVtUmVmQ2FsbHM7Ci0gICAgaW50IG1fbnVtRGVyZWZDYWxs
czsKLX07Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIE1lbWJlckZ1bmN0aW9uQmluZFJlZkRlcmVm
KQotewotICAgIEIgYjsKLQotICAgIHsKLSAgICAgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24xID0gYmluZCgmQjo6ZiwgJmIpOwotICAgICAgICBmdW5jdGlvbjEoKTsKLQotICAgICAgICBG
dW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjIgPSBiaW5kKCZCOjpnLCAmYiwgMTApOwotICAgICAg
ICBmdW5jdGlvbjIoKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfVFJVRShiLm1fbnVtUmVmQ2FsbHMg
PT0gYi5tX251bURlcmVmQ2FsbHMpOwotICAgIEFTU0VSVF9HVChiLm1fbnVtUmVmQ2FsbHMsIDAp
OwotCi19Ci0KLWNsYXNzIE51bWJlciA6IHB1YmxpYyBSZWZDb3VudGVkPE51bWJlcj4gewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE51bWJlcj4gY3JlYXRlKGludCB2YWx1ZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTnVtYmVyKHZhbHVlKSk7Ci0gICAgfQot
Ci0gICAgfk51bWJlcigpCi0gICAgewotICAgICAgICBtX3ZhbHVlID0gMDsKLSAgICB9Ci0KLSAg
ICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgTnVtYmVyKGludCB2YWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQotICAg
IHsKLSAgICB9Ci0KLSAgICBpbnQgbV92YWx1ZTsKLX07Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHlO
dW1iZXJCeVR3byhOdW1iZXIqIG51bWJlcikKLXsKLSAgICByZXR1cm4gbnVtYmVyLT52YWx1ZSgp
ICogMjsKLX0KLQotVEVTVChGdW5jdGlvbmFsVGVzdCwgUmVmQ291bnRlZFN0b3JhZ2UpCi17Ci0g
ICAgUmVmUHRyPE51bWJlcj4gZml2ZSA9IE51bWJlcjo6Y3JlYXRlKDUpOwotICAgIEZ1bmN0aW9u
PGludCAoKT4gbXVsdGlwbHlGaXZlQnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHlOdW1iZXJC
eVR3bywgZml2ZSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBtdWx0aXBseUZpdmVCeVR3b0Z1bmN0aW9u
KCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uID0g
YmluZChtdWx0aXBseU51bWJlckJ5VHdvLCBOdW1iZXI6OmNyZWF0ZSg0KSk7Ci0gICAgQVNTRVJU
X0VRKDgsIG11bHRpcGx5Rm91ckJ5VHdvRnVuY3Rpb24oKSk7Ci0KLSAgICBSZWZQdHI8TnVtYmVy
PiBzaXggPSBOdW1iZXI6OmNyZWF0ZSg2KTsKLSAgICBGdW5jdGlvbjxpbnQgKCk+IG11bHRpcGx5
U2l4QnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHlOdW1iZXJCeVR3bywgc2l4LnJlbGVhc2Uo
KSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHNpeCk7Ci0gICAgQVNTRVJUX0VRKDEyLCBtdWx0aXBseVNp
eEJ5VHdvRnVuY3Rpb24oKSk7Ci19Ci0KLW5hbWVzcGFjZSBSZWZBbmREZXJlZlRlc3RzIHsKLSAg
ICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVmQ291bnRlZCB7Ci0gICAgICAg
IHZvaWQgcmVmKCk7Ci0gICAgICAgIHZvaWQgZGVyZWYoKTsKLSAgICB9OwotICAgIHN0cnVjdCBD
b25uZWN0aW9uIDogUmVmQ291bnRlZDxDb25uZWN0aW9uPiB7IH07Ci0gICAgQ09NUElMRV9BU1NF
UlQoV1RGOjpIYXNSZWZBbmREZXJlZjxDb25uZWN0aW9uPjo6dmFsdWUsIGNsYXNzX2hhc19yZWZf
YW5kX2RlcmVmKTsKLSAgICAKLSAgICBzdHJ1Y3QgTm9SZWZPckRlcmVmIHsgfTsKLSAgICBDT01Q
SUxFX0FTU0VSVCghV1RGOjpIYXNSZWZBbmREZXJlZjxOb1JlZk9yRGVyZWY+Ojp2YWx1ZSwgY2xh
c3NfaGFzX25vX3JlZl9vcl9kZXJlZik7Ci0gICAgCi0gICAgc3RydWN0IFJlZk9ubHkgeyB2b2lk
IHJlZigpOyB9OwotICAgIENPTVBJTEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPFJlZk9u
bHk+Ojp2YWx1ZSwgY2xhc3NfaGFzX3JlZl9vbmx5KTsKLSAgICAKLSAgICBzdHJ1Y3QgRGVyZWZP
bmx5IHsgdm9pZCBkZXJlZigpOyB9OwotICAgIENPTVBJTEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFu
ZERlcmVmPERlcmVmT25seT46OnZhbHVlLCBjbGFzc19oYXNfZGVyZWZfb25seSk7Ci0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279798</attachid>
            <date>2016-05-25 13:15:10 -0700</date>
            <delta_ts>2016-05-25 13:37:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158081-20160525131618.patch</filename>
            <type>text/plain</type>
            <size>47927</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmODQyODIwNWY4YjcwNzRiYmI4NGFj
Njg3YjkyZWRmMjQ0OTA5NjcuLmJkYmJmMGVhNjVhZTRiOWU3YmUyNjljNDBmYzk3ZjA3ZWJmMmIz
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdURi9GdW5jdGlvbmFsLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODA4MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bm8gbG9uZ2VyIHVzZWQsIGFuZCByZW1vdmluZyBpdCB3aWxsIGZyZWUgdXAgdGhlIG5hbWUgZm9y
IGEgbmV3IEZ1bmN0aW9uYWwuaCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6IFJlbW92
ZWQuCisgICAgICAgIChXVEY6OlJlZkFuZERlcmVmOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSZWZBbmREZXJlZjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0
b3JhZ2VUcmFpdHM6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VU
cmFpdHM6OnVud3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3RvcmFnZVRyYWl0
czxQYXNzUmVmUHRyPFQ+Pjo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3Rv
cmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJlZlB0cjxUPj46OndyYXApOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj46OndyYXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmV0YWluUHRyPFQ+Pjo6
dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25JbXBsQmFzZTo6fkZ1bmN0
aW9uSW1wbEJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGdW5jdGlvbkJhc2U6OmlzTnVs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkZ1bmN0aW9uQmFzZTo6RnVuY3Rpb25CYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25CYXNlOjppbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6YmluZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL21hYy9EZXByZWNhdGVk
U3ltYm9sc1VzZWRCeVNhZmFyaS5tbToKKwogMjAxNi0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhdXRvIGZvciBzb21lIG9mIG91ciBsYW1iZGEg
ZnVuY3Rpb24gcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjdiYzRkZTk3NjY1NWU5MDFlODM5NGI4ZmI4NjNlZDJhMzYwMTQ1ZC4uOGRkYmRh
M2Q2NzJlZjc0YWQyZTk2MTEzYjRjZGRmOWRkMDBmOWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODcsNyArMTg3LDYgQEAKIAkJQThBNDczQzMxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxs
b2MuY3BwICovOyB9OwogCQlBOEE0NzNDNDE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTIx
NTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLzsgfTsKIAkJQThBNDczQzgxNTFBODI1
QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi87IH07
Ci0JCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNzE1MUE4MjVBMDA0MTIz
RkYgLyogRnVuY3Rpb25hbC5oICovOyB9OwogCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyog
R2V0UHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi87IH07CiAJCUE4QTQ3M0QzMTUx
QTgyNUIwMDQxMjNGRiAvKiBIYXNoQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjMxNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hD
b3VudGVkU2V0LmggKi87IH07CiAJCUE4QTQ3M0Q0MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoRnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEE0NzJCNDE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMzAx
LDEyICszMDAsMTIgQEAKIAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0
MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVT
UEkuaCAqLzsgfTsKIAkJQ0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdB
QjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovOyB9OwotCQlEQ0VFMjIwNTFDRUI5ODY5MDAwQzIzOTYg
LyogQmFja3dhcmRzR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDRUUyMjA0MUNFQjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICov
OyB9OwogCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZBMUNFQTc1Mzgw
MDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovOyB9OwogCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4
Y2VwdGlvbnMuaCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAq
LzsgfTsKIAkJRENFRTIyMDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcy5oICovOyB9OwogCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKKwkJRENFRTIyMDUxQ0VCOTg2OTAwMEMyMzk2
IC8qIEJhY2t3YXJkc0dyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAq
LzsgfTsKIAkJREU1QTA5RkMxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1QTA5RkIxQkEz
Njk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBD
QzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIg
LyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUxNTU1NkY2MThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9OwpAQCAtNTE0LDcgKzUxMyw2IEBACiAJCUE4QTQ3
MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOEE0NzJCMzE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaENvdW50ZWRTZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaENvdW50ZWRTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQjQxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4LDEyICs2MjYsMTIgQEAK
IAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlEQ0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja3dhcmRzR3JhcGguaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENG
QnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENGQnVuZGxlU1BJ
Lmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9j
a09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkYxQ0VB
NzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIyMDQx
Q0VCOTg2OTAwMEMyMzk2IC8qIEJhY2t3YXJkc0dyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJhY2t3YXJkc0dyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFw
aGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
eXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsNyArODI0LDYgQEAKIAkJCQkwRjlEMzM1
QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUx
N0I2QjRGNzAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEw
MDQxMjNGRiAvKiBGb3J3YXJkLmggKi8sCi0JCQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8q
IEZ1bmN0aW9uYWwuaCAqLywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rp
b25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQgLyogRnVu
Y3Rpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdl
dFB0ci5oICovLApAQCAtMTIyMSw3ICsxMjE4LDYgQEAKIAkJCQlBOEE0NzNCNjE1MUE4MjVCMDA0
MTIzRkYgLyogZml4ZWQtZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QTcxN0I2QjRG
RDAwQTdBRTNGIC8qIEZsaXBCeXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzgxNTFB
ODI1QjAwNDEyM0ZGIC8qIEZvcndhcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0M5MTUx
QTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5
QzE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODRBRjFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBhZjkxMzk1MjdkNGE3MGZmNmFjMDJm
NTY2ZDZlY2NjZWYwZjUzYTUxLi5jODM5YTI2NjgxYmY3NzYyYzkyNDU4NWQwM2IxZmVkZWNmZjVh
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMzAsNyArMzAsNiBAQCBzZXQoV1RGX0hFQURF
UlMKICAgICBGbGlwQnl0ZXMuaAogICAgIEZvcndhcmQuaAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hl
ci5oCi0gICAgRnVuY3Rpb25hbC5oCiAgICAgR2V0UHRyLmgKICAgICBHcmFwaE5vZGVXb3JrbGlz
dC5oCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RnVuY3Rpb25hbC5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NWNhOTQxMWI4ZTM2NTY4M2I5YmI1NTcxNTVmMjZhODg0YmE5MzAy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXVEZfRnVuY3Rpb25hbF9oCi0jZGVmaW5lIFdURl9GdW5jdGlvbmFs
X2gKLQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotI2lmIE9TKERBUldJTikg
JiYgQ09NUElMRVJfU1VQUE9SVFMoQkxPQ0tTKQotI2luY2x1ZGUgPEJsb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LS8vIEZ1bmN0aW9uYWwuaCBwcm92aWRlcyBhIHZlcnkgc2ltcGxlIHdheSB0byBiaW5kIGEgZnVu
Y3Rpb24gcG9pbnRlciBhbmQgYXJndW1lbnRzIHRvZ2V0aGVyIGludG8gYSBmdW5jdGlvbiBvYmpl
Y3QKLS8vIHRoYXQgY2FuIGJlIHN0b3JlZCwgY29waWVkIGFuZCBpbnZva2VkLCBzaW1pbGFyIHRv
IGhvdyBib29zdDo6YmluZCBhbmQgc3RkOjpiaW5kIGluIEMrKzExLgotCi0vLyBIZWxwZXIgY2xh
c3MgdGVtcGxhdGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB0eXBlIGhhcyByZWYgYW5k
IGRlcmVmIG1lbWJlciBmdW5jdGlvbnMKLS8vIHdpdGggdGhlIHJpZ2h0IHR5cGUgc2lnbmF0dXJl
LgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEhhc1JlZkFuZERlcmVmIHsKLSAgICB0eXBl
ZGVmIGNoYXIgWWVzVHlwZTsKLSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRk
aW5nWzhdOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQmFzZU1peGluIHsKLSAgICAgICAgdm9pZCBk
ZXJlZigpOwotICAgICAgICB2b2lkIHJlZigpOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQmFzZSA6
IHB1YmxpYyBULCBwdWJsaWMgQmFzZU1peGluIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFUsIFU+IHN0cnVjdAotICAgIFR5cGVDaGVja2VyIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+Ci0gICAgc3RhdGljIE5vVHlwZSByZWZDaGVjayhVKiwgVHlwZUNoZWNrZXI8dm9pZCAo
QmFzZU1peGluOjoqKSgpLCAmVTo6cmVmPiogPSAwKTsKLSAgICBzdGF0aWMgWWVzVHlwZSByZWZD
aGVjayguLi4pOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgTm9UeXBl
IGRlcmVmQ2hlY2soVSosIFR5cGVDaGVja2VyPHZvaWQgKEJhc2VNaXhpbjo6KikoKSwgJlU6OmRl
cmVmPiogPSAwKTsKLSAgICBzdGF0aWMgWWVzVHlwZSBkZXJlZkNoZWNrKC4uLik7Ci0KLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihyZWZDaGVjayhzdGF0aWNf
Y2FzdDxCYXNlKj4oMCkpKSA9PSBzaXplb2YoWWVzVHlwZSkgJiYgc2l6ZW9mKGRlcmVmQ2hlY2so
c3RhdGljX2Nhc3Q8QmFzZSo+KDApKSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQotLy8gQSBG
dW5jdGlvbldyYXBwZXIgaXMgYSBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGNhbiB3cmFwIGEgZnVuY3Rp
b24gcG9pbnRlciBvciBhIG1lbWJlciBmdW5jdGlvbiBwb2ludGVyIGFuZAotLy8gcHJvdmlkZSBh
IHVuaWZpZWQgaW50ZXJmYWNlIGZvciBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uCi10ZW1wbGF0ZTx0
eXBlbmFtZT4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjsKLQotLy8gQm91bmQgc3RhdGljIGZ1bmN0
aW9uczoKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSICgq
KSgpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNv
bnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0
IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKCkpCi0gICAgICAgIDogbV9mdW5jdGlvbihm
dW5jdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2Z1bmN0aW9uKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1
bmN0aW9uKSgpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDE+Ci1jbGFz
cyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJl
c3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIg
PSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAx
KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBS
IG9wZXJhdG9yKCkoUDEgcDEpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSk7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSk7Ci19OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBGdW5jdGlv
bldyYXBwZXI8UiAoKikoUDEsIFAyKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRU
eXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFs
c2U7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSwgUDIp
KQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIg
b3BlcmF0b3IoKShQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlv
bihwMSwgcDIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAy
KTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwg
dHlwZW5hbWUgUDM+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMyk+IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rp
b25XcmFwcGVyKFIgKCpmdW5jdGlvbikoUDEsIFAyLCBQMykpCi0gICAgICAgIDogbV9mdW5jdGlv
bihmdW5jdGlvbikKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFAxIHAxLCBQMiBw
MiwgUDMgcDMpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAzKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoKm1fZnVuY3Rpb24pKFAxLCBQMiwgUDMpOwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgUDQ+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQ
MywgUDQpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxp
Y2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9y
KCkoUDEgcDEsIFAyIHAyLCBQMyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9m
dW5jdGlvbihwMSwgcDIsIHAzLCBwNCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1
bmN0aW9uKShQMSwgUDIsIFAzLCBQNCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUg
UDU+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQsIFA1KT4gewot
cHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBjb25zdCBib29s
IHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlv
bldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAgICA6IG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBw
MSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9m
dW5jdGlvbihwMSwgcDIsIHAzLCBwNCwgcDUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSICgq
bV9mdW5jdGlvbikoUDEsIFAyLCBQMywgUDQsIFA1KTsKLX07Ci0KLS8vIEJvdW5kIG1lbWJlciBm
dW5jdGlvbnM6Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEM+Ci1jbGFzcyBGdW5j
dGlvbldyYXBwZXI8UiAoQzo6KikoKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRU
eXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFz
UmVmQW5kRGVyZWY8Qz46OnZhbHVlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIg
KEM6OipmdW5jdGlvbikoKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsK
LSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYykKLSAgICB7Ci0gICAgICAgIHJldHVybiAo
Yy0+Km1fZnVuY3Rpb24pKCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQ
dHI8Qz4mIGMpCi0gICAgewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAgICBpZiAo
IW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9m
dW5jdGlvbikoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKCk7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMT4KLWNs
YXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFt
ZXRlciA9IEhhc1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9u
V3JhcHBlcihSIChDOjoqZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0
aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEpCi0gICAg
ewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSk7Ci0gICAgfQotCi0gICAgUiBv
cGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4mIGMsIFAxIHAxKQotICAgIHsKLSAgICAgICAgQyog
b2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigp
OwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLWNsYXNzIEZ1bmN0aW9u
V3JhcHBlcjxSIChDOjoqKShQMSwgUDIpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3Vs
dFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBI
YXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIo
UiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24p
Ci0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIpCi0g
ICAgewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIpOwotICAgIH0KLQot
ICAgIFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIpCi0gICAg
ewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAg
ICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikocDEsIHAy
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMik7Ci19
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIFAzPgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQ
MiwgUDMpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6
dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQ
MSwgUDIsIFAzKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9
Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEsIFAyIHAyLCBQMyBwMykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAoYy0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0KLQotICAg
IFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzKQot
ICAgIHsKLSAgICAgICAgQyogb2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAg
ICAgICAgICByZXR1cm4gUigpOwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAx
LCBwMiwgcDMpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9mdW5jdGlvbikoUDEs
IFAyLCBQMyk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEZ1bmN0
aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCk+IHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBh
cmFtZXRlciA9IEhhc1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0
aW9uV3JhcHBlcihSIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBt
X2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyog
YywgUDEgcDEsIFAyIHAyLCBQMyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gKGMt
PiptX2Z1bmN0aW9uKShwMSwgcDIsIHAzLCBwNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigp
KGNvbnN0IFdlYWtQdHI8Qz4mIGMsIFAxIHAxLCBQMiBwMiwgUDMgcDMsIFA0IHA0KQotICAgIHsK
LSAgICAgICAgQyogb2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAg
ICByZXR1cm4gUigpOwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwg
cDMsIHA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQ
MiwgUDMsIFA0KTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQ
NT4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCwgUDUpPiB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJv
b2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0K
LSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAz
LCBQNCwgUDUpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0K
LQotICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUg
cDUpCi0gICAgewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIsIHAzLCBw
NCwgcDUpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQ
MSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICBDKiBvYmog
PSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0g
ICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikocDEsIHAyLCBwMywgcDQsIHA1KTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQ
NSk7Ci19OwotCi0jaWYgT1MoREFSV0lOKSAmJiBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCi10
ZW1wbGF0ZTx0eXBlbmFtZSBSPgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKF4pKCk+IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBz
aG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25X
cmFwcGVyKFIgKF5ibG9jaykoKSkKLSAgICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkoYmxvY2sp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBGdW5jdGlvbldyYXBwZXIoY29uc3QgRnVuY3Rpb25XcmFw
cGVyJiBvdGhlcikKLSAgICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkob3RoZXIubV9ibG9jaykp
Ci0gICAgewotICAgIH0KLQotICAgIH5GdW5jdGlvbldyYXBwZXIoKQotICAgIHsKLSAgICAgICAg
QmxvY2tfcmVsZWFzZShtX2Jsb2NrKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAo
Xm1fYmxvY2spKCk7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgc2hv
dWxkUmVmQW5kRGVyZWY+IHN0cnVjdCBSZWZBbmREZXJlZiB7Ci0gICAgc3RhdGljIHZvaWQgcmVm
KFQpIHsgfQotICAgIHN0YXRpYyB2b2lkIGRlcmVmKFQpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFJlZkFuZERlcmVmPFQqLCB0cnVlPiB7Ci0gICAgc3RhdGljIHZvaWQg
cmVmKFQqIHQpIHsgdC0+cmVmKCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXJlZihUKiB0KSB7IHQt
PmRlcmVmKCk7IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3Jh
Z2VUcmFpdHMgewotICAgIHR5cGVkZWYgVCBTdG9yYWdlVHlwZTsKLQotICAgIHN0YXRpYyBTdG9y
YWdlVHlwZSB3cmFwKGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0YXRp
YyBjb25zdCBUJiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1
ZTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0
czxQYXNzUmVmUHRyPFQ+PiB7Ci0gICAgdHlwZWRlZiBSZWZQdHI8VD4gU3RvcmFnZVR5cGU7Ci0K
LSAgICBzdGF0aWMgU3RvcmFnZVR5cGUgd3JhcChQYXNzUmVmUHRyPFQ+IHZhbHVlKSB7IHJldHVy
biB2YWx1ZTsgfQotICAgIHN0YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVl
KSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFBhcmFtU3RvcmFnZVRyYWl0czxSZWZQdHI8VD4+IHsKLSAgICB0eXBlZGVmIFJlZlB0cjxU
PiBTdG9yYWdlVHlwZTsKLQotICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUucmVsZWFzZSgpOyB9Ci0gICAgc3RhdGljIFQqIHVud3JhcChj
b25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUGFyYW1TdG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj4gewotICAgIHR5cGVkZWYg
UmV0YWluUHRyPFQ+IFN0b3JhZ2VUeXBlOwotCi0gICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAo
Y29uc3QgUmV0YWluUHRyPFQ+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0aWMg
dHlwZW5hbWUgUmV0YWluUHRyPFQ+OjpQdHJUeXBlIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbkltcGxC
YXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uSW1wbEJhc2U+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5GdW5jdGlvbkltcGxCYXNlKCkgeyB9Ci19OwotCi10ZW1wbGF0
ZTx0eXBlbmFtZT4KLWNsYXNzIEZ1bmN0aW9uSW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4K
LWNsYXNzIEZ1bmN0aW9uSW1wbDxSICgpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGxCYXNlIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIFIgb3BlcmF0b3IoKSgpID0gMDsKLX07Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotY2xhc3MgQm91
bmRGdW5jdGlvbkltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlw
ZW5hbWUgUj4KLWNsYXNzIEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlciwgUiAoKT4g
OiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlw
ZSAoKT4gewotcHVibGljOgotICAgIGV4cGxpY2l0IEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9u
V3JhcHBlciBmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVu
Y3Rpb25XcmFwcGVyKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0
aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Z1bmN0aW9uV3JhcHBlcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldy
YXBwZXIgbV9mdW5jdGlvbldyYXBwZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxPgotY2xhc3MgQm91bmRGdW5jdGlvbklt
cGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFt
ZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1
bmN0aW9uSW1wbChGdW5jdGlvbldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEp
Ci0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAs
IG1fcDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgewotICAgICAgICBS
ZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46
OnJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAg
ICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJh
bWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0
aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSkp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldyYXBw
ZXI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3RvcmFnZVR5cGUgbV9w
MTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwg
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rp
b25XcmFwcGVyLCBSIChQMSwgUDIpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVu
Y3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlv
bkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25z
dCBQMiYgcDIpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQot
ICAgICAgICAsIG1fcDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAg
ICwgbV9wMihQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICB7Ci0gICAgICAg
IFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVy
Pjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAg
IHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmly
c3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1l
IEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAo
bV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBl
bmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVu
YW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci19OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlv
bldyYXBwZXIsIFIgKFAxLCBQMiwgUDMpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUg
RnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5j
dGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBj
b25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMykKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihm
dW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3
cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIp
KQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAg
ewotICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJz
dFBhcmFtZXRlcj46OnJlZihtX3AxKTsKLSAgICB9Ci0gICAgCi0gICAgfkJvdW5kRnVuY3Rpb25J
bXBsKCkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNo
b3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6ZGVyZWYobV9wMSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9yYWdlVHJhaXRzPFAx
Pjo6dW53cmFwKG1fcDEpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndyYXAobV9wMiksIFBh
cmFtU3RvcmFnZVRyYWl0czxQMz46OnVud3JhcChtX3AzKSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEZ1bmN0aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJh
bVN0b3JhZ2VUcmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFt
U3RvcmFnZVRyYWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1T
dG9yYWdlVHJhaXRzPFAzPjo6U3RvcmFnZVR5cGUgbV9wMzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAy
LCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQ+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5j
dGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0KT4gOiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5
cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgotICAgIEJv
dW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAx
JiBwMSwgY29uc3QgUDImIHAyLCBjb25zdCBQMyYgcDMsIGNvbnN0IFA0JiBwNCkKLSAgICAgICAg
OiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJh
bVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFn
ZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRz
PFAzPjo6d3JhcChwMykpCi0gICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3
cmFwKHA0KSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6
OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+
Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0
aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVy
YXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0
b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVu
d3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0
b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBG
dW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9y
YWdlVHJhaXRzPFAxPjo6U3RvcmFnZVR5cGUgbV9wMTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDI+OjpTdG9yYWdlVHlwZSBtX3AyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMz46OlN0b3JhZ2VUeXBlIG1fcDM7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdl
VHJhaXRzPFA0Pjo6U3RvcmFnZVR5cGUgbV9wNDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1PgotY2xhc3MgQm91bmRGdW5jdGlvbklt
cGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQMSwgUDIsIFAzLCBQNCwgUDUpPiA6IHB1YmxpYyBGdW5j
dGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJs
aWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBl
ciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0
LCBjb25zdCBQNSYgcDUpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFw
cGVyKQotICAgICAgICAsIG1fcDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0g
ICAgICAgICwgbV9wMihQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICAgICAg
LCBtX3AzKFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OndyYXAocDMpKQotICAgICAgICAsIG1fcDQo
UGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6d3JhcChwNCkpCi0gICAgICAgICwgbV9wNShQYXJhbVN0
b3JhZ2VUcmFpdHM8UDU+Ojp3cmFwKHA1KSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAx
LCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwot
ICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVm
QW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+Ojpk
ZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53
cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQNT46OnVud3JhcChtX3A1KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1
bmN0aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdl
VHJhaXRzPFAzPjo6U3RvcmFnZVR5cGUgbV9wMzsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDQ+OjpTdG9yYWdlVHlwZSBtX3A0OwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRy
YWl0czxQNT46OlN0b3JhZ2VUeXBlIG1fcDU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDY+Ci1jbGFzcyBCb3Vu
ZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYp
PiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRU
eXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVy
IGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBw
MywgY29uc3QgUDQmIHA0LCBjb25zdCBQNSYgcDUsIGNvbnN0IFA2JiBwNikKLSAgICAgICAgOiBt
X2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0
b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRy
YWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAz
Pjo6d3JhcChwMykpCi0gICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFw
KHA0KSkKLSAgICAgICAgLCBtX3A1KFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OndyYXAocDUpKQot
ICAgICAgICAsIG1fcDYoUGFyYW1TdG9yYWdlVHJhaXRzPFA2Pjo6d3JhcChwNikpCi0gICAgewot
ICAgICAgICBSZWZBbmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBh
cmFtZXRlcj46OnJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQot
ICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVu
YW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndy
YXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9y
YWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndy
YXAobV9wNCksIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OnVud3JhcChtX3A1KSwgUGFyYW1TdG9y
YWdlVHJhaXRzPFA2Pjo6dW53cmFwKG1fcDYpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVu
Y3Rpb25XcmFwcGVyIG1fZnVuY3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMT46OlN0b3JhZ2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdl
VHJhaXRzPFAyPjo6U3RvcmFnZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VU
cmFpdHM8UDM+OjpTdG9yYWdlVHlwZSBtX3AzOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRy
YWl0czxQND46OlN0b3JhZ2VUeXBlIG1fcDQ7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJh
aXRzPFA1Pjo6U3RvcmFnZVR5cGUgbV9wNTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFp
dHM8UDY+OjpTdG9yYWdlVHlwZSBtX3A2OwotfTsKLQotY2xhc3MgRnVuY3Rpb25CYXNlIHsKLXB1
YmxpYzoKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1f
aW1wbDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBGdW5jdGlvbkJhc2UoKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbkJhc2UoUGFzc1JlZlB0cjxGdW5jdGlvbkltcGxC
YXNlPiBpbXBsKQotICAgICAgICA6IG1faW1wbChpbXBsKQotICAgIHsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+IEZ1bmN0aW9uSW1wbDxGdW5jdGlvblR5cGU+
KiBpbXBsKCkgY29uc3QKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25JbXBsPEZ1bmN0aW9uVHlwZT4qPihtX2ltcGwuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBSZWZQdHI8RnVuY3Rpb25JbXBsQmFzZT4gbV9pbXBsOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWU+Ci1jbGFzcyBGdW5jdGlvbjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1
bmN0aW9uPFIgKCk+IDogcHVibGljIEZ1bmN0aW9uQmFzZSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rp
b24oKQotICAgIHsKLSAgICB9Ci0KLSAgICBGdW5jdGlvbihQYXNzUmVmUHRyPEZ1bmN0aW9uSW1w
bDxSICgpPj4gaW1wbCkKLSAgICAgICAgOiBGdW5jdGlvbkJhc2UoaW1wbCkKLSAgICB7Ci0gICAg
fQotCi0gICAgUiBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNO
dWxsKCkpOwotCi0gICAgICAgIHJldHVybiBpbXBsPFIgKCk+KCktPm9wZXJhdG9yKCkoKTsKLSAg
ICB9Ci0KLSNpZiBPUyhEQVJXSU4pICYmIENPTVBJTEVSX1NVUFBPUlRTKEJMT0NLUykKLSAgICB0
eXBlZGVmIHZvaWQgKF5CbG9ja1R5cGUpKCk7Ci0gICAgb3BlcmF0b3IgQmxvY2tUeXBlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIC8vIERlY2xhcmUgYSBSZWZQdHIgaGVyZSBzbyB3ZSdsbCBiZSBz
dXJlIHRoYXQgdGhlIHVuZGVybHlpbmcgRnVuY3Rpb25JbXBsIG9iamVjdCdzCi0gICAgICAgIC8v
IGxpZmVjeWNsZSBpcyBtYW5hZ2VkIGNvcnJlY3RseS4KLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9u
SW1wbDxSICgpPj4gZnVuY3Rpb25JbXBsID0gaW1wbDxSICgpPigpOwotICAgICAgICBCbG9ja1R5
cGUgYmxvY2sgPSBeewotICAgICAgICAgICBmdW5jdGlvbkltcGwtPm9wZXJhdG9yKCkoKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICAgIC8v
Ci0gICAgICAgIC8vICAgcmV0dXJuIFtbYmxvY2sgY29weV0gYXV0b3JlbGVhc2VdOwotICAgICAg
ICAvLwotICAgICAgICAvLyBXZSdyZSB1c2luZyBtYW51YWwgb2JqY19tc2dTZW5kIGNhbGxzIGhl
cmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIG1ha2UgdGhlIGVudGlyZQotICAgICAgICAvLyBm
aWxlIE9iamVjdGl2ZS1DLiBJdCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGltcGxpY2l0bHkgY29u
dmVydCBhIEZ1bmN0aW9uIHRvCi0gICAgICAgIC8vIGEgYmxvY2sgZXZlbiBpbiBDKysgY29kZSwg
c2luY2UgdGhhdCBhbGxvd3MgdXMgdG8gZG8gdGhpbmdzIGxpa2U6Ci0gICAgICAgIC8vCi0gICAg
ICAgIC8vICAgZGlzcGF0Y2hfYXN5bmMocXVldWUsIGJpbmQoLi4uKSk7Ci0gICAgICAgIC8vCi0g
ICAgICAgIGlkIGNvcGllZEJsb2NrID0gd3RmT2JqY01zZ1NlbmQ8aWQ+KChpZClibG9jaywgc2Vs
X3JlZ2lzdGVyTmFtZSgiY29weSIpKTsKLSAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxvY2sgPSB3
dGZPYmpjTXNnU2VuZDxpZD4oY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxl
YXNlIikpOwotICAgICAgICByZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKLSAg
ICB9Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KLUZ1bmN0
aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgp
PiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gRnVuY3Rpb248dHlw
ZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0
UmVmKG5ldyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwg
dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSkpKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExKQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBl
bmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRS
ZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0
eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEpPihG
dW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExKSkpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLUZ1
bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBl
ICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYg
YTIpCi17Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8
RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChBMSwgQTIpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rp
b25UeXBlPihmdW5jdGlvbiksIGExLCBhMikpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotRnVuY3Rp
b248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+
IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwg
Y29uc3QgQTMmIGEzKQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVu
Y3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMyk+KEZ1bmN0aW9u
V3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMykpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5
cGVuYW1lIEEzLCB0eXBlbmFtZSBBND4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlv
biwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0
KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rp
b25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVu
Y3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQpPihGdW5jdGlvbldyYXBwZXI8
RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBhMiwgYTMsIGE0KSkpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5h
bWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0
aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlw
ZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29u
c3QgQTQmIGE0LCBjb25zdCBBNSYgYTUpCi17Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1l
IEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihu
ZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVu
YW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChBMSwgQTIsIEEz
LCBBNCwgQTUpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBh
MiwgYTMsIGE0LCBhNSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0
eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5h
bWUgQTUsIHR5cGVuYW1lIEE2PgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1
bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBj
b25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIGNv
bnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFt
ZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYo
bmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBl
bmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBB
MywgQTQsIEE1LCBBNik+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwg
YTEsIGEyLCBhMywgYTQsIGE1LCBhNikpKTsKLX0KLQotfQotCi11c2luZyBXVEY6OkZ1bmN0aW9u
OwotdXNpbmcgV1RGOjpiaW5kOwotCi0jZW5kaWYgLy8gV1RGX0Z1bmN0aW9uYWxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1t
IGIvU291cmNlL1dURi93dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmlu
ZGV4IDM4YjJiZTM1Yjg1NTFkNWIzMjMzOTlmZGU5MTU0ZTlkNWNiOTI0OTQuLmMyZDlkM2JlNDU0
MjU5MWZjZDYwMWE0NWFhODMwMjMxYjc5MjYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L21hYy9EZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9tYWMvRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0KQEAgLTI1LDcgKzI1LDYgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiRnVuY3Rpb25hbC5oIgogI2luY2x1
ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJIYXNoU2V0LmgiCiAjaW5jbHVkZSAiTG9jay5oIgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI0M2Vi
ZTNmOTNiNzUyZjczNWQ3OWM2Y2YwOTA4ODc1MGQ3OTI0MzYuLjZkOTczMjEwZjY0MzYwNWMyYzEy
NTVhZmM5NDE3MTU1N2ZlYjdlYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNi0wNS0yNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0
aW9uYWwuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVybkZvcnR5VHdvKTogRGVsZXRlZC4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6bXVsdGlwbHlCeVR3byk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpt
dWx0aXBseUJ5T25lQW5kQUhhbGYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
bXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3VidHJhY3QpOiBE
ZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6QTo6QSk6IERlbGV0ZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpBOjpmKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkE6OmFkZEYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Qik6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjp+Qik6IERlbGV0ZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpCOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Qjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6Zik6IERlbGV0
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpnKTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Ok51bWJlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Ok51bWJlcjo6fk51bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpOdW1iZXI6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJl
cjo6TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11bHRpcGx5TnVt
YmVyQnlUd28pOiBEZWxldGVkLgorCiAyMDE2LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIGF1dG8gZm9yIHNvbWUgb2Ygb3VyIGxhbWJkYSBmdW5j
dGlvbiBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA3ZTkzZGEx
ODc3YjkyNTBiODg5MjdkOTY2NDRhNjZmMmIwYWNiODc4Li43MGIyMjU1YmRmMThkM2FjM2ZjNzdl
MWFkNTk2MWQ0NjMwMWRmMTMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTQ3
LDcgKzQ3LDYgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1
ZS5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0hhc2hNYXAuY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0hhc2hTZXQuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDQwNjc2YjYwOTI2YjJiNjRhMzU4MTJiMWQ3MGYyMTk0NzVmMDcyOWQuLjUyMTFjMDM2
MzBjN2Q4YTBhYmRjMTc4OTQ0OGMyOGJlMmFjMjVkNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yNjAsNyArMjYwLDYgQEAKIAkJN0NDRTdGMzExQTQxMUI4RTAwNDQ3QzRDIC8qIENoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJN0NDRTdGMzIxQTQxMUI4RTAwNDQ3QzRDIC8q
IENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovOyB9OwogCQk3Q0NF
N0YzMzFBNDExQjhFMDA0NDdDNEMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBNzU3RDMxNzhBRUE1QjAwQjVEN0E0IC8qIERlcXVl
LmNwcCAqLzsgfTsKLQkJN0NDRTdGMzQxQTQxMUI4RTAwNDQ3QzRDIC8qIEZ1bmN0aW9uYWwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBOUU1NTcx
NDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3BwICovOyB9OwogCQk3Q0NFN0YzNTFBNDEx
QjhFMDA0NDdDNEMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkNEODMzNDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAg
Ki87IH07CiAJCTdDQ0U3RjM2MUE0MTFCOEUwMDQ0N0M0QyAvKiBIYXNoU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QjJERkY4MTVCREU1OTkw
MDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLzsgfTsKIAkJN0NDRTdGMzcxQTQxMUI4RTAwNDQ3QzRD
IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY2RkFGRDIxNUU1Nzc1MjAwRjYxRDVCIC8qIEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwpAQCAtNTQ3LDcgKzU0Niw2IEBACiAJCTFB
N0U4QjMzMTgxMjA4REUwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFnbWVudE5hdmlnYXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBN0U4QjM1MTgxMjA5MzYwMEFFQjc0QSAvKiBG
cmFnbWVudE5hdmlnYXRpb24uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEZyYWdt
ZW50TmF2aWdhdGlvbi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTlGQjZD
QzFDQTM0QkU1MDA5NjYxMjQgLyogRWFybHlLVk9DcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVhcmx5S1ZPQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBQTlFNTU3MTQ5ODBBOTkwMDAwMUE4QSAvKiBGdW5jdGlvbmFsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uYWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFEMTlGNTFDN0NFMjAzMDA4MzFFNDcgLyogQ29k
aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29kaW5nLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUJDM0RFRDE4OTlCRTZEMDA0RjA2MjYg
LyogTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBREJFRkFEMTMw
QzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9yY2VSZXBhaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzNTEsNyArMTM0OSw2IEBACiAJCQkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8q
IEJsb29tRmlsdGVyLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0
ZU1hdGguY3BwICovLAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAg
Ki8sCi0JCQkJMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3BwICovLAog
CQkJCTdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNldC5jcHAgKi8sCiAJ
CQkJMEJDRDgzMzQxNDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICovLAogCQkJCTI2QjJE
RkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLywKQEAgLTE4MzksNyArMTgzNiw2
IEBACiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRDIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY2MUE0MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1J
TUVUeXBlSFRNTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNzFBNDExQUU2MDA0NDdD
NEMgLyogRnJhbWVNSU1FVHlwZVBORy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Q0NFN0YzNDFB
NDExQjhFMDA0NDdDNEMgLyogRnVuY3Rpb25hbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VGODFBNDExQUU2MDA0NDdDNEMgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFRTExQTQxMUE5QTAwNDQ3QzRDIC8qIEdldEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUNEQkZDQzQ1MUE5RkY0NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVu
Wm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2Y4YzNjMzljNzFkYTc4MGJlNmU2NDI2ODM4MWU2MzVjMmNkMTZhMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GdW5jdGlvbmFsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewotCi1zdGF0aWMgaW50IHJldHVybkZvcnR5VHdvKCkKLXsKLSAgICByZXR1cm4gNDI7Ci19Ci0K
LVRFU1QoRnVuY3Rpb25hbFRlc3QsIEJhc2ljKQotewotICAgIEZ1bmN0aW9uPGludCAoKT4gZW1w
dHlGdW5jdGlvbjsKLSAgICBBU1NFUlRfVFJVRShlbXB0eUZ1bmN0aW9uLmlzTnVsbCgpKTsKLQot
ICAgIEZ1bmN0aW9uPGludCAoKT4gcmV0dXJuRm9ydHlUd29GdW5jdGlvbiA9IGJpbmQocmV0dXJu
Rm9ydHlUd28pOwotICAgIEFTU0VSVF9GQUxTRShyZXR1cm5Gb3J0eVR3b0Z1bmN0aW9uLmlzTnVs
bCgpKTsKLSAgICBBU1NFUlRfRVEoNDIsIHJldHVybkZvcnR5VHdvRnVuY3Rpb24oKSk7Ci19Ci0K
LXN0YXRpYyBpbnQgbXVsdGlwbHlCeVR3byhpbnQgbikKLXsKLSAgICByZXR1cm4gbiAqIDI7Ci19
Ci0KLXN0YXRpYyBkb3VibGUgbXVsdGlwbHlCeU9uZUFuZEFIYWxmKGRvdWJsZSBkKQotewotICAg
IHJldHVybiBkICogMS41OwotfQotCi1URVNUKEZ1bmN0aW9uYWxUZXN0LCBVbmFyeUJpbmQpCi17
Ci0gICAgRnVuY3Rpb248aW50ICgpPiBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uID0gYmluZCht
dWx0aXBseUJ5VHdvLCA0KTsKLSAgICBBU1NFUlRfRVEoOCwgbXVsdGlwbHlGb3VyQnlUd29GdW5j
dGlvbigpKTsKLQotICAgIEZ1bmN0aW9uPGRvdWJsZSAoKT4gbXVsdGlwbHlCeU9uZUFuZEFIYWxm
RnVuY3Rpb24gPSBiaW5kKG11bHRpcGx5QnlPbmVBbmRBSGFsZiwgMyk7Ci0gICAgQVNTRVJUX0VR
KDQuNSwgbXVsdGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rpb24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQg
bXVsdGlwbHkoaW50IHgsIGludCB5KQotewotICAgIHJldHVybiB4ICogeTsKLX0KLQotc3RhdGlj
IGludCBzdWJ0cmFjdChpbnQgeCwgaW50IHkpCi17Ci0gICAgcmV0dXJuIHggLSB5OwotfQotCi1U
RVNUKEZ1bmN0aW9uYWxUZXN0LCBCaW5hcnlCaW5kKQotewotICAgIEZ1bmN0aW9uPGludCAoKT4g
bXVsdGlwbHlGb3VyQnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHksIDQsIDIpOwotICAgIEFT
U0VSVF9FUSg4LCBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uKCkpOwotCi0gICAgRnVuY3Rpb248
aW50ICgpPiBzdWJ0cmFjdFR3b0Zyb21Gb3VyRnVuY3Rpb24gPSBiaW5kKHN1YnRyYWN0LCA0LCAy
KTsKLSAgICBBU1NFUlRfRVEoMiwgc3VidHJhY3RUd29Gcm9tRm91ckZ1bmN0aW9uKCkpOwotfQot
Ci1jbGFzcyBBIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBKGludCBpKQotICAgICAgICA6IG1f
aShpKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgZigpIHsgcmV0dXJuIG1faTsgfQotICAgIGlu
dCBhZGRGKGludCBqKSB7IHJldHVybiBtX2kgKyBqOyB9Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1f
aTsKLX07Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIE1lbWJlckZ1bmN0aW9uQmluZCkKLXsKLSAg
ICBBIGEoMTApOwotICAgIEZ1bmN0aW9uPGludCAoKT4gZnVuY3Rpb24xID0gYmluZCgmQTo6Ziwg
JmEpOwotICAgIEFTU0VSVF9FUSgxMCwgZnVuY3Rpb24xKCkpOwotCi0gICAgRnVuY3Rpb248aW50
ICgpPiBmdW5jdGlvbjIgPSBiaW5kKCZBOjphZGRGLCAmYSwgMTUpOwotICAgIEFTU0VSVF9FUSgy
NSwgZnVuY3Rpb24yKCkpOwotfQotCi1jbGFzcyBCIHsKLXB1YmxpYzoKLSAgICBCKCkKLSAgICAg
ICAgOiBtX251bVJlZkNhbGxzKDApCi0gICAgICAgICwgbV9udW1EZXJlZkNhbGxzKDApCi0gICAg
ewotICAgIH0KLQotICAgIH5CKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCByZWYoKQotICAg
IHsKLSAgICAgICAgbV9udW1SZWZDYWxscysrOwotICAgIH0KLQotICAgIHZvaWQgZGVyZWYoKQot
ICAgIHsKLSAgICAgICAgbV9udW1EZXJlZkNhbGxzKys7Ci0gICAgfQotCi0gICAgdm9pZCBmKCkg
eyBBU1NFUlRfR1QobV9udW1SZWZDYWxscywgMCk7IH0KLSAgICB2b2lkIGcoaW50KSB7IEFTU0VS
VF9HVChtX251bVJlZkNhbGxzLCAwKTsgfQotCi0gICAgaW50IG1fbnVtUmVmQ2FsbHM7Ci0gICAg
aW50IG1fbnVtRGVyZWZDYWxsczsKLX07Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIE1lbWJlckZ1
bmN0aW9uQmluZFJlZkRlcmVmKQotewotICAgIEIgYjsKLQotICAgIHsKLSAgICAgICAgRnVuY3Rp
b248dm9pZCAoKT4gZnVuY3Rpb24xID0gYmluZCgmQjo6ZiwgJmIpOwotICAgICAgICBmdW5jdGlv
bjEoKTsKLQotICAgICAgICBGdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbjIgPSBiaW5kKCZCOjpn
LCAmYiwgMTApOwotICAgICAgICBmdW5jdGlvbjIoKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfVFJV
RShiLm1fbnVtUmVmQ2FsbHMgPT0gYi5tX251bURlcmVmQ2FsbHMpOwotICAgIEFTU0VSVF9HVChi
Lm1fbnVtUmVmQ2FsbHMsIDApOwotCi19Ci0KLWNsYXNzIE51bWJlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE51bWJlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE51bWJlcj4gY3Jl
YXRlKGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTnVtYmVy
KHZhbHVlKSk7Ci0gICAgfQotCi0gICAgfk51bWJlcigpCi0gICAgewotICAgICAgICBtX3ZhbHVl
ID0gMDsKLSAgICB9Ci0KLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTnVtYmVyKGludCB2YWx1ZSkKLSAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgbV92YWx1ZTsKLX07Ci0KLXN0
YXRpYyBpbnQgbXVsdGlwbHlOdW1iZXJCeVR3byhOdW1iZXIqIG51bWJlcikKLXsKLSAgICByZXR1
cm4gbnVtYmVyLT52YWx1ZSgpICogMjsKLX0KLQotVEVTVChGdW5jdGlvbmFsVGVzdCwgUmVmQ291
bnRlZFN0b3JhZ2UpCi17Ci0gICAgUmVmUHRyPE51bWJlcj4gZml2ZSA9IE51bWJlcjo6Y3JlYXRl
KDUpOwotICAgIEZ1bmN0aW9uPGludCAoKT4gbXVsdGlwbHlGaXZlQnlUd29GdW5jdGlvbiA9IGJp
bmQobXVsdGlwbHlOdW1iZXJCeVR3bywgZml2ZSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBtdWx0aXBs
eUZpdmVCeVR3b0Z1bmN0aW9uKCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBtdWx0aXBseUZv
dXJCeVR3b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseU51bWJlckJ5VHdvLCBOdW1iZXI6OmNyZWF0
ZSg0KSk7Ci0gICAgQVNTRVJUX0VRKDgsIG11bHRpcGx5Rm91ckJ5VHdvRnVuY3Rpb24oKSk7Ci0K
LSAgICBSZWZQdHI8TnVtYmVyPiBzaXggPSBOdW1iZXI6OmNyZWF0ZSg2KTsKLSAgICBGdW5jdGlv
bjxpbnQgKCk+IG11bHRpcGx5U2l4QnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHlOdW1iZXJC
eVR3bywgc2l4LnJlbGVhc2UoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKHNpeCk7Ci0gICAgQVNTRVJU
X0VRKDEyLCBtdWx0aXBseVNpeEJ5VHdvRnVuY3Rpb24oKSk7Ci19Ci0KLW5hbWVzcGFjZSBSZWZB
bmREZXJlZlRlc3RzIHsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVm
Q291bnRlZCB7Ci0gICAgICAgIHZvaWQgcmVmKCk7Ci0gICAgICAgIHZvaWQgZGVyZWYoKTsKLSAg
ICB9OwotICAgIHN0cnVjdCBDb25uZWN0aW9uIDogUmVmQ291bnRlZDxDb25uZWN0aW9uPiB7IH07
Ci0gICAgQ09NUElMRV9BU1NFUlQoV1RGOjpIYXNSZWZBbmREZXJlZjxDb25uZWN0aW9uPjo6dmFs
dWUsIGNsYXNzX2hhc19yZWZfYW5kX2RlcmVmKTsKLSAgICAKLSAgICBzdHJ1Y3QgTm9SZWZPckRl
cmVmIHsgfTsKLSAgICBDT01QSUxFX0FTU0VSVCghV1RGOjpIYXNSZWZBbmREZXJlZjxOb1JlZk9y
RGVyZWY+Ojp2YWx1ZSwgY2xhc3NfaGFzX25vX3JlZl9vcl9kZXJlZik7Ci0gICAgCi0gICAgc3Ry
dWN0IFJlZk9ubHkgeyB2b2lkIHJlZigpOyB9OwotICAgIENPTVBJTEVfQVNTRVJUKCFXVEY6Okhh
c1JlZkFuZERlcmVmPFJlZk9ubHk+Ojp2YWx1ZSwgY2xhc3NfaGFzX3JlZl9vbmx5KTsKLSAgICAK
LSAgICBzdHJ1Y3QgRGVyZWZPbmx5IHsgdm9pZCBkZXJlZigpOyB9OwotICAgIENPTVBJTEVfQVNT
RVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPERlcmVmT25seT46OnZhbHVlLCBjbGFzc19oYXNfZGVy
ZWZfb25seSk7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279801</attachid>
            <date>2016-05-25 13:37:10 -0700</date>
            <delta_ts>2016-05-25 15:55:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158081-20160525133818.patch</filename>
            <type>text/plain</type>
            <size>49148</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmODQyODIwNWY4YjcwNzRiYmI4NGFj
Njg3YjkyZWRmMjQ0OTA5NjcuLmJkYmJmMGVhNjVhZTRiOWU3YmUyNjljNDBmYzk3ZjA3ZWJmMmIz
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDUtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdURi9GdW5jdGlvbmFsLmgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODA4MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bm8gbG9uZ2VyIHVzZWQsIGFuZCByZW1vdmluZyBpdCB3aWxsIGZyZWUgdXAgdGhlIG5hbWUgZm9y
IGEgbmV3IEZ1bmN0aW9uYWwuaCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbmFsLmg6IFJlbW92
ZWQuCisgICAgICAgIChXVEY6OlJlZkFuZERlcmVmOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSZWZBbmREZXJlZjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0
b3JhZ2VUcmFpdHM6OndyYXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VU
cmFpdHM6OnVud3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3RvcmFnZVRyYWl0
czxQYXNzUmVmUHRyPFQ+Pjo6d3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBhcmFtU3Rv
cmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJlZlB0cjxUPj46OndyYXApOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmVmUHRyPFQ+Pjo6dW53cmFwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6UGFyYW1TdG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj46OndyYXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpQYXJhbVN0b3JhZ2VUcmFpdHM8UmV0YWluUHRyPFQ+Pjo6
dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25JbXBsQmFzZTo6fkZ1bmN0
aW9uSW1wbEJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGdW5jdGlvbkJhc2U6OmlzTnVs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkZ1bmN0aW9uQmFzZTo6RnVuY3Rpb25CYXNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6RnVuY3Rpb25CYXNlOjppbXBsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6YmluZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL21hYy9EZXByZWNhdGVk
U3ltYm9sc1VzZWRCeVNhZmFyaS5tbToKKwogMjAxNi0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhdXRvIGZvciBzb21lIG9mIG91ciBsYW1iZGEg
ZnVuY3Rpb24gcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxZTk5NGVlNGNmOWQ2NGUxNmE1ZjY4
MzA4ZTQ5NjMxMGRiNzQ1ZjcuLjk2YWY1NmJhOWM1ZTk0NjhlZDgxNjU2NjNiOTA3ZTUyMThiODcy
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNS0yNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0
aW9uYWwuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU4MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorCiAyMDE2LTA1LTI0
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
SW4gYWNjZWxlcmF0ZWQgZHJhd2luZyBtb2RlLCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KCkg
c2hvdWxkIGNvcHkgdGhlIGJ5dGVzIGRpcmVjdGx5IHRvIHRoZSBJT1N1cmZhY2UgYmFja2luZyBz
dG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjdiYzRk
ZTk3NjY1NWU5MDFlODM5NGI4ZmI4NjNlZDJhMzYwMTQ1ZC4uOGRkYmRhM2Q2NzJlZjc0YWQyZTk2
MTEzYjRjZGRmOWRkMDBmOWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xODcsNyArMTg3LDYgQEAKIAkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8q
IEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwICovOyB9Owog
CQlBOEE0NzNDNDE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZG
IC8qIEZhc3RNYWxsb2MuaCAqLzsgfTsKIAkJQThBNDczQzgxNTFBODI1QjAwNDEyM0ZGIC8qIEZv
cndhcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi87IH07Ci0JCUE4QTQ3M0M5MTUx
QTgyNUIwMDQxMjNGRiAvKiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBNzE1MUE4MjVBMDA0MTIzRkYgLyogRnVuY3Rpb25h
bC5oICovOyB9OwogCQlBOEE0NzNDQTE1MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJBODE1MUE4MjVB
MDA0MTIzRkYgLyogR2V0UHRyLmggKi87IH07CiAJCUE4QTQ3M0QzMTUxQTgyNUIwMDQxMjNGRiAv
KiBIYXNoQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThBNDcyQjMxNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hDb3VudGVkU2V0LmggKi87
IH07CiAJCUE4QTQ3M0Q0MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoRnVuY3Rpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJCNDE1MUE4MjVB
MDA0MTIzRkYgLyogSGFzaEZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMzAxLDEyICszMDAsMTIgQEAK
IAkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMw
IC8qIE1lZGlhVGltZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNN
YXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLzsgfTsKIAkJ
Q0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQ
Q1NQSS5oICovOyB9OwotCQlEQ0VFMjIwNTFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3Jh
cGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUy
MjA0MUNFQjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICovOyB9OwogCQlEQ0VFMjFG
QjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZBMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1
bmRsZVNQSS5oICovOyB9OwogCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLzsg
fTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRDFD
RUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLzsgfTsKIAkJRENFRTIy
MDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENFRTIxRkUxQ0VB
NzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oICovOyB9Owog
CQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
c01hYy5tbSAqLzsgfTsKKwkJRENFRTIyMDUxQ0VCOTg2OTAwMEMyMzk2IC8qIEJhY2t3YXJkc0dy
YXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VF
MjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAqLzsgfTsKIAkJREU1QTA5
RkMxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8q
IENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhp
Y1V0aWxpdGllcy5jcHAgKi87IH07CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxp
dGllcy5oICovOyB9OwpAQCAtNTE0LDcgKzUxMyw2IEBACiAJCUE4QTQ3MkExMTUxQTgyNUEwMDQx
MjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZhc3RNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJB
MjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGYXN0TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3YXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdldFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEE0NzJCMzE1MUE4MjVBMDA0MTIzRkYgLyogSGFzaENvdW50ZWRTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaENvdW50ZWRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBNDcyQjQxNTFBODI1QTAwNDEyM0ZGIC8qIEhhc2hGdW5jdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaEZ1bmN0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4LDEyICs2MjYsMTIgQEAKIAkJQ0Q1NDk3QUIxNTg1
N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NjUxNkQx
OURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTlNNYXBUYWJsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTczRTAyNDE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhQQ1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
Q0VFMjIwNDFDRUI5ODY5MDAwQzIzOTYgLyogQmFja3dhcmRzR3JhcGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja3dhcmRzR3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRENFRTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENGQnVuZGxlU1BJLmg7IHBhdGggPSBjZi9D
RkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQ0VFMjFGQzFDRUE3
NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25z
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tPYmpDRXhj
ZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkUxQ0VBNzU1
MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8q
IFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIyMDQxQ0VCOTg2OTAwMEMyMzk2
IC8qIEJhY2t3YXJkc0dyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
Y2t3YXJkc0dyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUEwOUZCMUJB
MzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4
MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04MjYsNyArODI0LDYgQEAKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJMEYyQjY2QTUxN0I2QjRGNzAwQTdBRTNG
IC8qIEZsaXBCeXRlcy5oICovLAogCQkJCUE4QTQ3MkE2MTUxQTgyNUEwMDQxMjNGRiAvKiBGb3J3
YXJkLmggKi8sCi0JCQkJQThBNDcyQTcxNTFBODI1QTAwNDEyM0ZGIC8qIEZ1bmN0aW9uYWwuaCAq
LywKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNw
cCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVy
LmggKi8sCiAJCQkJQThBNDcyQTgxNTFBODI1QTAwNDEyM0ZGIC8qIEdldFB0ci5oICovLApAQCAt
MTIyMSw3ICsxMjE4LDYgQEAKIAkJCQlBOEE0NzNCNjE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQt
ZHRvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QTcxN0I2QjRGRDAwQTdBRTNGIC8qIEZs
aXBCeXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczQzgxNTFBODI1QjAwNDEyM0ZGIC8q
IEZvcndhcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3M0M5MTUxQTgyNUIwMDQxMjNGRiAv
KiBGdW5jdGlvbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEI5QzE3MzE4NkNFMDAxNDFE
QTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNDQTE1
MUE4MjVCMDA0MTIzRkYgLyogR2V0UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODRBRjFC
RDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAppbmRleCBhZjkxMzk1MjdkNGE3MGZmNmFjMDJmNTY2ZDZlY2NjZWYwZjUz
YTUxLi5jODM5YTI2NjgxYmY3NzYyYzkyNDU4NWQwM2IxZmVkZWNmZjVhY2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtMzAsNyArMzAsNiBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBGbGlwQnl0
ZXMuaAogICAgIEZvcndhcmQuaAogICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5oCi0gICAgRnVuY3Rp
b25hbC5oCiAgICAgR2V0UHRyLmgKICAgICBHcmFwaE5vZGVXb3JrbGlzdC5oCiAgICAgR3JlZ29y
aWFuRGF0ZVRpbWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oIGIv
U291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NWNhOTQxMWI4ZTM2NTY4M2I5YmI1NTcxNTVmMjZhODg0YmE5MzAyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9u
YWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXVEZfRnVuY3Rpb25hbF9oCi0jZGVmaW5lIFdURl9GdW5jdGlvbmFsX2gKLQotI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0j
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLQotI2lmIE9TKERBUldJTikgJiYgQ09NUElMRVJfU1VQ
UE9SVFMoQkxPQ0tTKQotI2luY2x1ZGUgPEJsb2NrLmg+Ci0jaW5jbHVkZSA8d3RmL09iamNSdW50
aW1lRXh0cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIEZ1bmN0aW9uYWwu
aCBwcm92aWRlcyBhIHZlcnkgc2ltcGxlIHdheSB0byBiaW5kIGEgZnVuY3Rpb24gcG9pbnRlciBh
bmQgYXJndW1lbnRzIHRvZ2V0aGVyIGludG8gYSBmdW5jdGlvbiBvYmplY3QKLS8vIHRoYXQgY2Fu
IGJlIHN0b3JlZCwgY29waWVkIGFuZCBpbnZva2VkLCBzaW1pbGFyIHRvIGhvdyBib29zdDo6Ymlu
ZCBhbmQgc3RkOjpiaW5kIGluIEMrKzExLgotCi0vLyBIZWxwZXIgY2xhc3MgdGVtcGxhdGUgdG8g
ZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiB0eXBlIGhhcyByZWYgYW5kIGRlcmVmIG1lbWJlciBm
dW5jdGlvbnMKLS8vIHdpdGggdGhlIHJpZ2h0IHR5cGUgc2lnbmF0dXJlLgotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNsYXNzIEhhc1JlZkFuZERlcmVmIHsKLSAgICB0eXBlZGVmIGNoYXIgWWVzVHlw
ZTsKLSAgICBzdHJ1Y3QgTm9UeXBlIHsKLSAgICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgIH07
Ci0KLSAgICBzdHJ1Y3QgQmFzZU1peGluIHsKLSAgICAgICAgdm9pZCBkZXJlZigpOwotICAgICAg
ICB2b2lkIHJlZigpOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQmFzZSA6IHB1YmxpYyBULCBwdWJs
aWMgQmFzZU1peGluIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIFU+IHN0cnVjdAot
ICAgIFR5cGVDaGVja2VyIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3Rh
dGljIE5vVHlwZSByZWZDaGVjayhVKiwgVHlwZUNoZWNrZXI8dm9pZCAoQmFzZU1peGluOjoqKSgp
LCAmVTo6cmVmPiogPSAwKTsKLSAgICBzdGF0aWMgWWVzVHlwZSByZWZDaGVjayguLi4pOwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgTm9UeXBlIGRlcmVmQ2hlY2soVSos
IFR5cGVDaGVja2VyPHZvaWQgKEJhc2VNaXhpbjo6KikoKSwgJlU6OmRlcmVmPiogPSAwKTsKLSAg
ICBzdGF0aWMgWWVzVHlwZSBkZXJlZkNoZWNrKC4uLik7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihyZWZDaGVjayhzdGF0aWNfY2FzdDxCYXNlKj4oMCkp
KSA9PSBzaXplb2YoWWVzVHlwZSkgJiYgc2l6ZW9mKGRlcmVmQ2hlY2soc3RhdGljX2Nhc3Q8QmFz
ZSo+KDApKSkgPT0gc2l6ZW9mKFllc1R5cGUpOwotfTsKLQotLy8gQSBGdW5jdGlvbldyYXBwZXIg
aXMgYSBjbGFzcyB0ZW1wbGF0ZSB0aGF0IGNhbiB3cmFwIGEgZnVuY3Rpb24gcG9pbnRlciBvciBh
IG1lbWJlciBmdW5jdGlvbiBwb2ludGVyIGFuZAotLy8gcHJvdmlkZSBhIHVuaWZpZWQgaW50ZXJm
YWNlIGZvciBjYWxsaW5nIHRoYXQgZnVuY3Rpb24uCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNsYXNz
IEZ1bmN0aW9uV3JhcHBlcjsKLQotLy8gQm91bmQgc3RhdGljIGZ1bmN0aW9uczoKLQotdGVtcGxh
dGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSICgqKSgpPiB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxk
UmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBl
cihSICgqZnVuY3Rpb24pKCkpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICB7
Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1
bmN0aW9uKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKSgpOwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDE+Ci1jbGFzcyBGdW5jdGlvbldyYXBw
ZXI8UiAoKikoUDEpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAg
IGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBt
X2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEg
cDEpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSk7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDI+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKiko
UDEsIFAyKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRp
YyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBs
aWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSwgUDIpKQotICAgICAgICA6IG1f
ZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBw
MSwgUDIgcDIpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEsIFAyKTsKLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDM+Ci1j
bGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMyk+IHsKLXB1YmxpYzoKLSAgICB0
eXBlZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJz
dFBhcmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKCpm
dW5jdGlvbikoUDEsIFAyLCBQMykpCi0gICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKLSAg
ICB7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFAxIHAxLCBQMiBwMiwgUDMgcDMpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIsIHAzKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgUiAoKm1fZnVuY3Rpb24pKFAxLCBQMiwgUDMpOwotfTsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
UDQ+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQpPiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hv
dWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3Jh
cHBlcihSICgqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9u
KGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoUDEgcDEsIFAyIHAy
LCBQMyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIs
IHAzLCBwNCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFIgKCptX2Z1bmN0aW9uKShQMSwgUDIs
IFAzLCBQNCk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDU+Ci1jbGFzcyBGdW5j
dGlvbldyYXBwZXI8UiAoKikoUDEsIFAyLCBQMywgUDQsIFA1KT4gewotcHVibGljOgotICAgIHR5
cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0
UGFyYW1ldGVyID0gZmFsc2U7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1
bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rp
b24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShQMSBwMSwgUDIgcDIsIFAzIHAz
LCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihwMSwgcDIs
IHAzLCBwNCwgcDUpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSICgqbV9mdW5jdGlvbikoUDEs
IFAyLCBQMywgUDQsIFA1KTsKLX07Ci0KLS8vIEJvdW5kIG1lbWJlciBmdW5jdGlvbnM6Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEM+Ci1jbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAo
Qzo6KikoKT4gewotcHVibGljOgotICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwotICAgIHN0YXRp
YyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFzUmVmQW5kRGVyZWY8Qz46
OnZhbHVlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6OipmdW5jdGlvbiko
KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBS
IG9wZXJhdG9yKCkoQyogYykKLSAgICB7Ci0gICAgICAgIHJldHVybiAoYy0+Km1fZnVuY3Rpb24p
KCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8Qz4mIGMpCi0gICAg
ewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAg
ICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikoKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKCk7Ci19OwotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMT4KLWNsYXNzIEZ1bmN0aW9uV3Jh
cHBlcjxSIChDOjoqKShQMSk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsK
LSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1JlZkFu
ZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChDOjoq
ZnVuY3Rpb24pKFAxKSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEpCi0gICAgewotICAgICAgICByZXR1
cm4gKGMtPiptX2Z1bmN0aW9uKShwMSk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0
IFdlYWtQdHI8Qz4mIGMsIFAxIHAxKQotICAgIHsKLSAgICAgICAgQyogb2JqID0gYy5nZXQoKTsK
LSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwotICAgICAgICByZXR1
cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6
Km1fZnVuY3Rpb24pKFAxKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMs
IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMj4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoq
KShQMSwgUDIpPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxD
Pjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9u
KShQMSwgUDIpKQotICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0K
LQotICAgIFIgb3BlcmF0b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3Io
KShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIpCi0gICAgewotICAgICAgICBDKiBv
YmogPSBjLmdldCgpOwotICAgICAgICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7
Ci0gICAgICAgIHJldHVybiAob2JqLT4qbV9mdW5jdGlvbikocDEsIHAyKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMik7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1l
IFAzPgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQMiwgUDMpPiB7Ci1wdWJs
aWM6Ci0gICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hv
dWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBl
eHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkKLSAg
ICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJh
dG9yKCkoQyogYywgUDEgcDEsIFAyIHAyLCBQMyBwMykKLSAgICB7Ci0gICAgICAgIHJldHVybiAo
Yy0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShj
b25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzKQotICAgIHsKLSAgICAgICAg
Qyogb2JqID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4g
UigpOwotICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBSIChDOjoqbV9mdW5jdGlvbikoUDEsIFAyLCBQMyk7Ci19Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQND4KLWNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChD
OjoqKShQMSwgUDIsIFAzLCBQNCk+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFIgUmVzdWx0VHlw
ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhhc1Jl
ZkFuZERlcmVmPEM+Ojp2YWx1ZTsKLQotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSIChD
OjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKLSAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0
aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoQyogYywgUDEgcDEsIFAyIHAy
LCBQMyBwMywgUDQgcDQpCi0gICAgewotICAgICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShw
MSwgcDIsIHAzLCBwNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKGNvbnN0IFdlYWtQdHI8
Qz4mIGMsIFAxIHAxLCBQMiBwMiwgUDMgcDMsIFA0IHA0KQotICAgIHsKLSAgICAgICAgQyogb2Jq
ID0gYy5nZXQoKTsKLSAgICAgICAgaWYgKCFvYmopCi0gICAgICAgICAgICByZXR1cm4gUigpOwot
ICAgICAgICByZXR1cm4gKG9iai0+Km1fZnVuY3Rpb24pKHAxLCBwMiwgcDMsIHA0KTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KTsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFAxLCB0eXBlbmFt
ZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNT4KLWNsYXNzIEZ1bmN0
aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCwgUDUpPiB7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBSIFJlc3VsdFR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmly
c3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7Ci0KLSAgICBleHBsaWNpdCBG
dW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQotICAg
ICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCi0gICAgewotICAgIH0KLQotICAgIFIgb3BlcmF0
b3IoKShDKiBjLCBQMSBwMSwgUDIgcDIsIFAzIHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAg
ICAgICByZXR1cm4gKGMtPiptX2Z1bmN0aW9uKShwMSwgcDIsIHAzLCBwNCwgcDUpOwotICAgIH0K
LQotICAgIFIgb3BlcmF0b3IoKShjb25zdCBXZWFrUHRyPEM+JiBjLCBQMSBwMSwgUDIgcDIsIFAz
IHAzLCBQNCBwNCwgUDUgcDUpCi0gICAgewotICAgICAgICBDKiBvYmogPSBjLmdldCgpOwotICAg
ICAgICBpZiAoIW9iaikKLSAgICAgICAgICAgIHJldHVybiBSKCk7Ci0gICAgICAgIHJldHVybiAo
b2JqLT4qbV9mdW5jdGlvbikocDEsIHAyLCBwMywgcDQsIHA1KTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgUiAoQzo6Km1fZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0LCBQNSk7Ci19OwotCi0jaWYg
T1MoREFSV0lOKSAmJiBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBSPgotY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKF4pKCk+IHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFIgUmVzdWx0VHlwZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBh
cmFtZXRlciA9IGZhbHNlOwotCi0gICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKF5ibG9j
aykoKSkKLSAgICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkoYmxvY2spKQotICAgIHsKLSAgICB9
Ci0KLSAgICBGdW5jdGlvbldyYXBwZXIoY29uc3QgRnVuY3Rpb25XcmFwcGVyJiBvdGhlcikKLSAg
ICAgICAgOiBtX2Jsb2NrKEJsb2NrX2NvcHkob3RoZXIubV9ibG9jaykpCi0gICAgewotICAgIH0K
LQotICAgIH5GdW5jdGlvbldyYXBwZXIoKQotICAgIHsKLSAgICAgICAgQmxvY2tfcmVsZWFzZSht
X2Jsb2NrKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fYmxvY2soKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUiAoXm1fYmxvY2spKCk7Ci19
OwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgc2hvdWxkUmVmQW5kRGVyZWY+
IHN0cnVjdCBSZWZBbmREZXJlZiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQpIHsgfQotICAgIHN0
YXRpYyB2b2lkIGRlcmVmKFQpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFJlZkFuZERlcmVmPFQqLCB0cnVlPiB7Ci0gICAgc3RhdGljIHZvaWQgcmVmKFQqIHQpIHsgdC0+
cmVmKCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZXJlZihUKiB0KSB7IHQtPmRlcmVmKCk7IH0KLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHMgewotICAg
IHR5cGVkZWYgVCBTdG9yYWdlVHlwZTsKLQotICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKGNv
bnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAgIHN0YXRpYyBjb25zdCBUJiB1bndy
YXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0czxQYXNzUmVmUHRyPFQ+
PiB7Ci0gICAgdHlwZWRlZiBSZWZQdHI8VD4gU3RvcmFnZVR5cGU7Ci0KLSAgICBzdGF0aWMgU3Rv
cmFnZVR5cGUgd3JhcChQYXNzUmVmUHRyPFQ+IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQotICAg
IHN0YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1
ZS5nZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFn
ZVRyYWl0czxSZWZQdHI8VD4+IHsKLSAgICB0eXBlZGVmIFJlZlB0cjxUPiBTdG9yYWdlVHlwZTsK
LQotICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUucmVsZWFzZSgpOyB9Ci0gICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlw
ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgUmV0YWluUHRyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1T
dG9yYWdlVHJhaXRzPFJldGFpblB0cjxUPj4gewotICAgIHR5cGVkZWYgUmV0YWluUHRyPFQ+IFN0
b3JhZ2VUeXBlOwotCi0gICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoY29uc3QgUmV0YWluUHRy
PFQ+JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0aWMgdHlwZW5hbWUgUmV0YWlu
UHRyPFQ+OjpQdHJUeXBlIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlLmdldCgpOyB9Ci19OwotCi1jbGFzcyBGdW5jdGlvbkltcGxCYXNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEZ1bmN0aW9uSW1wbEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5GdW5jdGlvbkltcGxCYXNlKCkgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZT4KLWNs
YXNzIEZ1bmN0aW9uSW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9u
SW1wbDxSICgpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGxCYXNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIFIgb3BlcmF0b3IoKSgpID0gMDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9u
V3JhcHBlciwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw7
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUj4KLWNsYXNz
IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlciwgUiAoKT4gOiBwdWJsaWMgRnVuY3Rp
b25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGlj
OgotICAgIGV4cGxpY2l0IEJvdW5kRnVuY3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlv
bldyYXBwZXIpCi0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVz
dWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3Jh
cHBlcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlv
bldyYXBwZXI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5cGVu
YW1lIFIsIHR5cGVuYW1lIFAxPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFw
cGVyLCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI6OlJlc3VsdFR5cGUgKCk+IHsKLXB1YmxpYzoKLSAgICBCb3VuZEZ1bmN0aW9uSW1wbChGdW5j
dGlvbldyYXBwZXIgZnVuY3Rpb25XcmFwcGVyLCBjb25zdCBQMSYgcDEpCi0gICAgICAgIDogbV9m
dW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEoUGFyYW1TdG9y
YWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgewotICAgICAgICBSZWZBbmREZXJlZjxQMSwg
RnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZihtX3AxKTsKLSAg
ICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVy
ZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZiht
X3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVz
dWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3Jh
cHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSkpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIgbV9mdW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5h
bWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6U3RvcmFnZVR5cGUgbV9wMTsKLX07Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5
cGVuYW1lIFAyPgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVyLCBSIChQ
MSwgUDIpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpS
ZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25X
cmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIpCi0gICAg
ICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAsIG1fcDEo
UGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQYXJhbVN0
b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAx
LCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwot
ICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVm
QW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+Ojpk
ZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0
aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3Rv
cmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1
bmN0aW9uV3JhcHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3Jh
Z2VUcmFpdHM8UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFn
ZVRyYWl0czxQMj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvbldyYXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgUDM+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIgKFAx
LCBQMiwgUDMpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVy
OjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rp
b25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNv
bnN0IFAzJiBwMykKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIp
Ci0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp3cmFwKHAxKSkKLSAgICAg
ICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAocDIpKQotICAgICAgICAsIG1f
cDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0gICAgewotICAgICAgICBSZWZB
bmREZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJl
ZihtX3AxKTsKLSAgICB9Ci0gICAgCi0gICAgfkJvdW5kRnVuY3Rpb25JbXBsKCkKLSAgICB7Ci0g
ICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0UGFy
YW1ldGVyPjo6ZGVyZWYobV9wMSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6dW53cmFwKG1fcDEp
LCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndyYXAobV9wMiksIFBhcmFtU3RvcmFnZVRyYWl0
czxQMz46OnVud3JhcChtX3AzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3Jh
cHBlciBtX2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8
UDE+OjpTdG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQ
Mj46OlN0b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAz
Pjo6U3RvcmFnZVR5cGUgbV9wMzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlciwgdHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgUDQ+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXIsIFIg
KFAxLCBQMiwgUDMsIFA0KT4gOiBwdWJsaWMgRnVuY3Rpb25JbXBsPHR5cGVuYW1lIEZ1bmN0aW9u
V3JhcHBlcjo6UmVzdWx0VHlwZSAoKT4gewotcHVibGljOgotICAgIEJvdW5kRnVuY3Rpb25JbXBs
KEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSwgY29uc3QgUDIm
IHAyLCBjb25zdCBQMyYgcDMsIGNvbnN0IFA0JiBwNCkKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3Jh
cHBlcihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8
UDE+Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46Ondy
YXAocDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykp
Ci0gICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICB7
Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBwZXI6OnNob3VsZFJlZkZpcnN0
UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAgICB+Qm91bmRGdW5jdGlvbklt
cGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hv
dWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFy
YW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+
Ojp1bndyYXAobV9wNCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbldyYXBwZXIg
bV9mdW5jdGlvbldyYXBwZXI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6
U3RvcmFnZVR5cGUgbV9wMTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+OjpT
dG9yYWdlVHlwZSBtX3AyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OlN0
b3JhZ2VUeXBlIG1fcDM7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6U3Rv
cmFnZVR5cGUgbV9wNDsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlciwg
dHlwZW5hbWUgUiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIFA1PgotY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFw
cGVyLCBSIChQMSwgUDIsIFAzLCBQNCwgUDUpPiA6IHB1YmxpYyBGdW5jdGlvbkltcGw8dHlwZW5h
bWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJsaWM6Ci0gICAgQm91bmRG
dW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBlciwgY29uc3QgUDEmIHAx
LCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0LCBjb25zdCBQNSYgcDUp
Ci0gICAgICAgIDogbV9mdW5jdGlvbldyYXBwZXIoZnVuY3Rpb25XcmFwcGVyKQotICAgICAgICAs
IG1fcDEoUGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6d3JhcChwMSkpCi0gICAgICAgICwgbV9wMihQ
YXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp3cmFwKHAyKSkKLSAgICAgICAgLCBtX3AzKFBhcmFtU3Rv
cmFnZVRyYWl0czxQMz46OndyYXAocDMpKQotICAgICAgICAsIG1fcDQoUGFyYW1TdG9yYWdlVHJh
aXRzPFA0Pjo6d3JhcChwNCkpCi0gICAgICAgICwgbV9wNShQYXJhbVN0b3JhZ2VUcmFpdHM8UDU+
Ojp3cmFwKHA1KSkKLSAgICB7Ci0gICAgICAgIFJlZkFuZERlcmVmPFAxLCBGdW5jdGlvbldyYXBw
ZXI6OnNob3VsZFJlZkZpcnN0UGFyYW1ldGVyPjo6cmVmKG1fcDEpOwotICAgIH0KLSAgICAKLSAg
ICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1
bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBv
cGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcihQYXJh
bVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46
OnVud3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6dW53cmFwKG1fcDMpLCBQYXJh
bVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46
OnVud3JhcChtX3A1KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZ1bmN0aW9uV3JhcHBlciBt
X2Z1bmN0aW9uV3JhcHBlcjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+OjpT
dG9yYWdlVHlwZSBtX3AxOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OlN0
b3JhZ2VUeXBlIG1fcDI7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6U3Rv
cmFnZVR5cGUgbV9wMzsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+OjpTdG9y
YWdlVHlwZSBtX3A0OwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OlN0b3Jh
Z2VUeXBlIG1fcDU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXIsIHR5
cGVuYW1lIFIsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IFA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDY+Ci1jbGFzcyBCb3VuZEZ1bmN0aW9uSW1wbDxG
dW5jdGlvbldyYXBwZXIsIFIgKFAxLCBQMiwgUDMsIFA0LCBQNSwgUDYpPiA6IHB1YmxpYyBGdW5j
dGlvbkltcGw8dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyOjpSZXN1bHRUeXBlICgpPiB7Ci1wdWJs
aWM6Ci0gICAgQm91bmRGdW5jdGlvbkltcGwoRnVuY3Rpb25XcmFwcGVyIGZ1bmN0aW9uV3JhcHBl
ciwgY29uc3QgUDEmIHAxLCBjb25zdCBQMiYgcDIsIGNvbnN0IFAzJiBwMywgY29uc3QgUDQmIHA0
LCBjb25zdCBQNSYgcDUsIGNvbnN0IFA2JiBwNikKLSAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBl
cihmdW5jdGlvbldyYXBwZXIpCi0gICAgICAgICwgbV9wMShQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+
Ojp3cmFwKHAxKSkKLSAgICAgICAgLCBtX3AyKFBhcmFtU3RvcmFnZVRyYWl0czxQMj46OndyYXAo
cDIpKQotICAgICAgICAsIG1fcDMoUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6d3JhcChwMykpCi0g
ICAgICAgICwgbV9wNChQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp3cmFwKHA0KSkKLSAgICAgICAg
LCBtX3A1KFBhcmFtU3RvcmFnZVRyYWl0czxQNT46OndyYXAocDUpKQotICAgICAgICAsIG1fcDYo
UGFyYW1TdG9yYWdlVHJhaXRzPFA2Pjo6d3JhcChwNikpCi0gICAgewotICAgICAgICBSZWZBbmRE
ZXJlZjxQMSwgRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRSZWZGaXJzdFBhcmFtZXRlcj46OnJlZiht
X3AxKTsKLSAgICB9Ci0KLSAgICB+Qm91bmRGdW5jdGlvbkltcGwoKQotICAgIHsKLSAgICAgICAg
UmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBlcjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+
OjpkZXJlZihtX3AxKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Z1
bmN0aW9uV3JhcHBlcihQYXJhbVN0b3JhZ2VUcmFpdHM8UDE+Ojp1bndyYXAobV9wMSksIFBhcmFt
U3RvcmFnZVRyYWl0czxQMj46OnVud3JhcChtX3AyKSwgUGFyYW1TdG9yYWdlVHJhaXRzPFAzPjo6
dW53cmFwKG1fcDMpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDQ+Ojp1bndyYXAobV9wNCksIFBhcmFt
U3RvcmFnZVRyYWl0czxQNT46OnVud3JhcChtX3A1KSwgUGFyYW1TdG9yYWdlVHJhaXRzPFA2Pjo6
dW53cmFwKG1fcDYpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb25XcmFwcGVyIG1f
ZnVuY3Rpb25XcmFwcGVyOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OlN0
b3JhZ2VUeXBlIG1fcDE7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFAyPjo6U3Rv
cmFnZVR5cGUgbV9wMjsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+OjpTdG9y
YWdlVHlwZSBtX3AzOwotICAgIHR5cGVuYW1lIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OlN0b3Jh
Z2VUeXBlIG1fcDQ7Ci0gICAgdHlwZW5hbWUgUGFyYW1TdG9yYWdlVHJhaXRzPFA1Pjo6U3RvcmFn
ZVR5cGUgbV9wNTsKLSAgICB0eXBlbmFtZSBQYXJhbVN0b3JhZ2VUcmFpdHM8UDY+OjpTdG9yYWdl
VHlwZSBtX3A2OwotfTsKLQotY2xhc3MgRnVuY3Rpb25CYXNlIHsKLXB1YmxpYzoKLSAgICBib29s
IGlzTnVsbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIW1faW1wbDsKLSAgICB9Ci0K
LXByb3RlY3RlZDoKLSAgICBGdW5jdGlvbkJhc2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBs
aWNpdCBGdW5jdGlvbkJhc2UoUGFzc1JlZlB0cjxGdW5jdGlvbkltcGxCYXNlPiBpbXBsKQotICAg
ICAgICA6IG1faW1wbChpbXBsKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdGlvblR5cGU+IEZ1bmN0aW9uSW1wbDxGdW5jdGlvblR5cGU+KiBpbXBsKCkgY29uc3QK
LSAgICB7IAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25JbXBsPEZ1bmN0aW9u
VHlwZT4qPihtX2ltcGwuZ2V0KCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8RnVu
Y3Rpb25JbXBsQmFzZT4gbV9pbXBsOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWU+Ci1jbGFzcyBG
dW5jdGlvbjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLWNsYXNzIEZ1bmN0aW9uPFIgKCk+IDog
cHVibGljIEZ1bmN0aW9uQmFzZSB7Ci1wdWJsaWM6Ci0gICAgRnVuY3Rpb24oKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBGdW5jdGlvbihQYXNzUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gaW1wbCkK
LSAgICAgICAgOiBGdW5jdGlvbkJhc2UoaW1wbCkKLSAgICB7Ci0gICAgfQotCi0gICAgUiBvcGVy
YXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNOdWxsKCkpOwotCi0gICAg
ICAgIHJldHVybiBpbXBsPFIgKCk+KCktPm9wZXJhdG9yKCkoKTsKLSAgICB9Ci0KLSNpZiBPUyhE
QVJXSU4pICYmIENPTVBJTEVSX1NVUFBPUlRTKEJMT0NLUykKLSAgICB0eXBlZGVmIHZvaWQgKF5C
bG9ja1R5cGUpKCk7Ci0gICAgb3BlcmF0b3IgQmxvY2tUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIC8vIERlY2xhcmUgYSBSZWZQdHIgaGVyZSBzbyB3ZSdsbCBiZSBzdXJlIHRoYXQgdGhlIHVu
ZGVybHlpbmcgRnVuY3Rpb25JbXBsIG9iamVjdCdzCi0gICAgICAgIC8vIGxpZmVjeWNsZSBpcyBt
YW5hZ2VkIGNvcnJlY3RseS4KLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPj4gZnVu
Y3Rpb25JbXBsID0gaW1wbDxSICgpPigpOwotICAgICAgICBCbG9ja1R5cGUgYmxvY2sgPSBeewot
ICAgICAgICAgICBmdW5jdGlvbkltcGwtPm9wZXJhdG9yKCkoKTsKLSAgICAgICAgfTsKLQotICAg
ICAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAg
cmV0dXJuIFtbYmxvY2sgY29weV0gYXV0b3JlbGVhc2VdOwotICAgICAgICAvLwotICAgICAgICAv
LyBXZSdyZSB1c2luZyBtYW51YWwgb2JqY19tc2dTZW5kIGNhbGxzIGhlcmUgYmVjYXVzZSB3ZSBk
b24ndCB3YW50IHRvIG1ha2UgdGhlIGVudGlyZQotICAgICAgICAvLyBmaWxlIE9iamVjdGl2ZS1D
LiBJdCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGltcGxpY2l0bHkgY29udmVydCBhIEZ1bmN0aW9u
IHRvCi0gICAgICAgIC8vIGEgYmxvY2sgZXZlbiBpbiBDKysgY29kZSwgc2luY2UgdGhhdCBhbGxv
d3MgdXMgdG8gZG8gdGhpbmdzIGxpa2U6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vICAgZGlzcGF0
Y2hfYXN5bmMocXVldWUsIGJpbmQoLi4uKSk7Ci0gICAgICAgIC8vCi0gICAgICAgIGlkIGNvcGll
ZEJsb2NrID0gd3RmT2JqY01zZ1NlbmQ8aWQ+KChpZClibG9jaywgc2VsX3JlZ2lzdGVyTmFtZSgi
Y29weSIpKTsKLSAgICAgICAgaWQgYXV0b3JlbGVhc2VkQmxvY2sgPSB3dGZPYmpjTXNnU2VuZDxp
ZD4oY29waWVkQmxvY2ssIHNlbF9yZWdpc3Rlck5hbWUoImF1dG9yZWxlYXNlIikpOwotICAgICAg
ICByZXR1cm4gKEJsb2NrVHlwZSlhdXRvcmVsZWFzZWRCbG9jazsKLSAgICB9Ci0jZW5kaWYKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1
bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbikKLXsKLSAgICByZXR1cm4gRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25X
cmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KGFkb3B0UmVmKG5ldyBCb3VuZEZ1
bmN0aW9uSW1wbDxGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPiwgdHlwZW5hbWUgRnVuY3Rp
b25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+KEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+KGZ1bmN0aW9uKSkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlLCB0eXBlbmFtZSBBMT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwg
Y29uc3QgQTEmIGExKQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVu
Y3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlv
bldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEpPihGdW5jdGlvbldyYXBwZXI8
RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExKSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLUZ1bmN0aW9uPHR5cGVuYW1l
IEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIpCi17Ci0gICAgcmV0
dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1
bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlvbkltcGw8RnVuY3Rpb25XcmFwcGVy
PEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+OjpS
ZXN1bHRUeXBlIChBMSwgQTIpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlv
biksIGExLCBhMikpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotRnVuY3Rpb248dHlwZW5hbWUgRnVu
Y3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJlc3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25U
eXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzKQot
ewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25U
eXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0
aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rp
b25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMyk+KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlv
blR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMykpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBl
bmFtZSBBND4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+
OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29uc3QgQTEmIGEx
LCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0KQotewotICAgIHJldHVy
biBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0
VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rpb25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxG
dW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVz
dWx0VHlwZSAoQTEsIEEyLCBBMywgQTQpPihGdW5jdGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihm
dW5jdGlvbiksIGExLCBhMiwgYTMsIGE0KSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1l
IEE0LCB0eXBlbmFtZSBBNT4KLUZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjxGdW5j
dGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPiBiaW5kKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgY29u
c3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCBjb25z
dCBBNSYgYTUpCi17Ci0gICAgcmV0dXJuIEZ1bmN0aW9uPHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBl
cjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlICgpPihhZG9wdFJlZihuZXcgQm91bmRGdW5jdGlv
bkltcGw8RnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT4sIHR5cGVuYW1lIEZ1bmN0aW9uV3Jh
cHBlcjxGdW5jdGlvblR5cGU+OjpSZXN1bHRUeXBlIChBMSwgQTIsIEEzLCBBNCwgQTUpPihGdW5j
dGlvbldyYXBwZXI8RnVuY3Rpb25UeXBlPihmdW5jdGlvbiksIGExLCBhMiwgYTMsIGE0LCBhNSkp
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1l
IEE2PgotRnVuY3Rpb248dHlwZW5hbWUgRnVuY3Rpb25XcmFwcGVyPEZ1bmN0aW9uVHlwZT46OlJl
c3VsdFR5cGUgKCk+IGJpbmQoRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBjb25zdCBBMSYgYTEsIGNv
bnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIGNvbnN0IEE1JiBhNSwgY29u
c3QgQTYmIGE2KQotewotICAgIHJldHVybiBGdW5jdGlvbjx0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoKT4oYWRvcHRSZWYobmV3IEJvdW5kRnVuY3Rp
b25JbXBsPEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+LCB0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI8RnVuY3Rpb25UeXBlPjo6UmVzdWx0VHlwZSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+
KEZ1bmN0aW9uV3JhcHBlcjxGdW5jdGlvblR5cGU+KGZ1bmN0aW9uKSwgYTEsIGEyLCBhMywgYTQs
IGE1LCBhNikpKTsKLX0KLQotfQotCi11c2luZyBXVEY6OkZ1bmN0aW9uOwotdXNpbmcgV1RGOjpi
aW5kOwotCi0jZW5kaWYgLy8gV1RGX0Z1bmN0aW9uYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tIGIvU291cmNlL1dURi93
dGYvbWFjL0RlcHJlY2F0ZWRTeW1ib2xzVXNlZEJ5U2FmYXJpLm1tCmluZGV4IDM4YjJiZTM1Yjg1
NTFkNWIzMjMzOTlmZGU5MTU0ZTlkNWNiOTI0OTQuLmMyZDlkM2JlNDU0MjU5MWZjZDYwMWE0NWFh
ODMwMjMxYjc5MjYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL21hYy9EZXByZWNhdGVk
U3ltYm9sc1VzZWRCeVNhZmFyaS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvRGVwcmVjYXRl
ZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0KQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCi0jaW5jbHVkZSAiRnVuY3Rpb25hbC5oIgogI2luY2x1ZGUgIkhhc2hNYXAuaCIK
ICNpbmNsdWRlICJIYXNoU2V0LmgiCiAjaW5jbHVkZSAiTG9jay5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5k
ZXggM2IzOTJkYWI0YmQwYjY4OWJkYmNkY2FhMTcyMjAxMDBkMjRiNTYzZi4uZjJiNjc3NmI5NTQy
ZTY5MWQ4MjM4MTk2Yzc3MWJiNzc4NmE3NWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC00MSw3ICs0
MSw2IEBACiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGI0M2ViZTNmOTNiNzUyZjczNWQ3OWM2Y2YwOTA4ODc1MGQ3OTI0
MzYuLjZkOTczMjEwZjY0MzYwNWMyYzEyNTVhZmM5NDE3MTU1N2ZlYjdlYjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxNi0wNS0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0aW9uYWwuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GdW5jdGlvbmFsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJldHVy
bkZvcnR5VHdvKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBEZWxl
dGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHlCeVR3byk6IERlbGV0ZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjptdWx0aXBseUJ5T25lQW5kQUhhbGYpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXVsdGlwbHkpOiBEZWxldGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6c3VidHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
QTo6QSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpBOjpmKTogRGVsZXRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkE6OmFkZEYpOiBEZWxldGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Qjo6Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjp+
Qik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpyZWYpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qjo6ZGVyZWYpOiBEZWxldGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Qjo6Zik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpn
KTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6Y3JlYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6fk51bWJlcik6IERlbGV0ZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpOdW1iZXI6OnZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok51bWJlcjo6TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6Om11bHRpcGx5TnVtYmVyQnlUd28pOiBEZWxldGVkLgorCiAyMDE2LTA1LTI0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGF1dG8gZm9y
IHNvbWUgb2Ygb3VyIGxhbWJkYSBmdW5jdGlvbiBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA3ZTkzZGExODc3YjkyNTBiODg5MjdkOTY2NDRhNjZmMmIwYWNiODc4
Li43MGIyMjU1YmRmMThkM2FjM2ZjNzdlMWFkNTk2MWQ0NjMwMWRmMTMwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQKQEAgLTQ3LDcgKzQ3LDYgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvRnVuY3Rpb25hbC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvSGFzaENvdW50ZWRTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L0hhc2hNYXAuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0hhc2hTZXQu
Y3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQwNjc2YjYwOTI2YjJiNjRhMzU4MTJiMWQ3
MGYyMTk0NzVmMDcyOWQuLjUyMTFjMDM2MzBjN2Q4YTBhYmRjMTc4OTQ0OGMyOGJlMmFjMjVkNzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNyArMjYwLDYgQEAKIAkJN0NDRTdGMzEx
QTQxMUI4RTAwNDQ3QzRDIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0E5NjZEQTE0MEVDQ0M4
MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLzsgfTsKIAkJN0ND
RTdGMzIxQTQxMUI4RTAwNDQ3QzRDIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENT
dHJpbmcuY3BwICovOyB9OwogCQk3Q0NFN0YzMzFBNDExQjhFMDA0NDdDNEMgLyogRGVxdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBNzU3RDMx
NzhBRUE1QjAwQjVEN0E0IC8qIERlcXVlLmNwcCAqLzsgfTsKLQkJN0NDRTdGMzQxQTQxMUI4RTAw
NDQ3QzRDIC8qIEZ1bmN0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9uYWwuY3Bw
ICovOyB9OwogCQk3Q0NFN0YzNTFBNDExQjhFMDA0NDdDNEMgLyogSGFzaE1hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODMzNDE0ODU3Q0U0
MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi87IH07CiAJCTdDQ0U3RjM2MUE0MTFCOEUwMDQ0N0M0
QyAvKiBIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLzsgfTsKIAkJ
N0NDRTdGMzcxQTQxMUI4RTAwNDQ3QzRDIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY2RkFGRDIx
NUU1Nzc1MjAwRjYxRDVCIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwpA
QCAtNTQ3LDcgKzU0Niw2IEBACiAJCTFBN0U4QjMzMTgxMjA4REUwMEFFQjc0QSAvKiBGcmFnbWVu
dE5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
cmFnbWVudE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBN0U4
QjM1MTgxMjA5MzYwMEFFQjc0QSAvKiBGcmFnbWVudE5hdmlnYXRpb24uaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IEZyYWdtZW50TmF2aWdhdGlvbi5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFybHlLVk9DcmFz
aC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVhcmx5S1ZPQ3Jh
c2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBQTlFNTU3MTQ5ODBBOTkwMDAw
MUE4QSAvKiBGdW5jdGlvbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZ1bmN0aW9uYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFEMTlG
NTFDN0NFMjAzMDA4MzFFNDcgLyogQ29kaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29kaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUJDM0RFRDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBREJFRkFEMTMwQzY4OUMwMEQ2MUQxOSAvKiBGb3JjZVJlcGFpbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9yY2VSZXBhaW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTEsNyArMTM0OSw2IEBACiAJCQkJRTQw
MDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAqLywKIAkJCQk3QUEwMjFC
QTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovLAogCQkJCUU0QTc1N0QzMTc4QUVB
NUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCi0JCQkJMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThB
IC8qIEZ1bmN0aW9uYWwuY3BwICovLAogCQkJCTdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBI
YXNoQ291bnRlZFNldC5jcHAgKi8sCiAJCQkJMEJDRDgzMzQxNDg1N0NFNDAwRUEyMDAzIC8qIEhh
c2hNYXAuY3BwICovLAogCQkJCTI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNw
cCAqLywKQEAgLTE4MzksNyArMTgzNiw2IEBACiAJCQkJN0NDRTdFQzAxQTQxMUE3RTAwNDQ3QzRD
IC8qIEZyYWdtZW50TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY2MUE0
MTFBRTYwMDQ0N0M0QyAvKiBGcmFtZU1JTUVUeXBlSFRNTC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VGNzFBNDExQUU2MDA0NDdDNEMgLyogRnJhbWVNSU1FVHlwZVBORy5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk3Q0NFN0YzNDFBNDExQjhFMDA0NDdDNEMgLyogRnVuY3Rpb25hbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGODFBNDExQUU2MDA0NDdDNEMgLyogR2VvbG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTExQTQxMUE5QTAwNDQ3QzRDIC8qIEdl
dEJhY2tpbmdTY2FsZUZhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQkZDQzQ1MUE5RkY0
NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb25hbC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y4YzNjMzljNzFkYTc4MGJlNmU2NDI2ODM4MWU2MzVj
MmNkMTZhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbmFsLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIxOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KLQot
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgaW50IHJldHVybkZvcnR5VHdvKCkK
LXsKLSAgICByZXR1cm4gNDI7Ci19Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIEJhc2ljKQotewot
ICAgIEZ1bmN0aW9uPGludCAoKT4gZW1wdHlGdW5jdGlvbjsKLSAgICBBU1NFUlRfVFJVRShlbXB0
eUZ1bmN0aW9uLmlzTnVsbCgpKTsKLQotICAgIEZ1bmN0aW9uPGludCAoKT4gcmV0dXJuRm9ydHlU
d29GdW5jdGlvbiA9IGJpbmQocmV0dXJuRm9ydHlUd28pOwotICAgIEFTU0VSVF9GQUxTRShyZXR1
cm5Gb3J0eVR3b0Z1bmN0aW9uLmlzTnVsbCgpKTsKLSAgICBBU1NFUlRfRVEoNDIsIHJldHVybkZv
cnR5VHdvRnVuY3Rpb24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHlCeVR3byhpbnQgbikK
LXsKLSAgICByZXR1cm4gbiAqIDI7Ci19Ci0KLXN0YXRpYyBkb3VibGUgbXVsdGlwbHlCeU9uZUFu
ZEFIYWxmKGRvdWJsZSBkKQotewotICAgIHJldHVybiBkICogMS41OwotfQotCi1URVNUKEZ1bmN0
aW9uYWxUZXN0LCBVbmFyeUJpbmQpCi17Ci0gICAgRnVuY3Rpb248aW50ICgpPiBtdWx0aXBseUZv
dXJCeVR3b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseUJ5VHdvLCA0KTsKLSAgICBBU1NFUlRfRVEo
OCwgbXVsdGlwbHlGb3VyQnlUd29GdW5jdGlvbigpKTsKLQotICAgIEZ1bmN0aW9uPGRvdWJsZSAo
KT4gbXVsdGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rpb24gPSBiaW5kKG11bHRpcGx5QnlPbmVBbmRB
SGFsZiwgMyk7Ci0gICAgQVNTRVJUX0VRKDQuNSwgbXVsdGlwbHlCeU9uZUFuZEFIYWxmRnVuY3Rp
b24oKSk7Ci19Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHkoaW50IHgsIGludCB5KQotewotICAgIHJl
dHVybiB4ICogeTsKLX0KLQotc3RhdGljIGludCBzdWJ0cmFjdChpbnQgeCwgaW50IHkpCi17Ci0g
ICAgcmV0dXJuIHggLSB5OwotfQotCi1URVNUKEZ1bmN0aW9uYWxUZXN0LCBCaW5hcnlCaW5kKQot
ewotICAgIEZ1bmN0aW9uPGludCAoKT4gbXVsdGlwbHlGb3VyQnlUd29GdW5jdGlvbiA9IGJpbmQo
bXVsdGlwbHksIDQsIDIpOwotICAgIEFTU0VSVF9FUSg4LCBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0
aW9uKCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBzdWJ0cmFjdFR3b0Zyb21Gb3VyRnVuY3Rp
b24gPSBiaW5kKHN1YnRyYWN0LCA0LCAyKTsKLSAgICBBU1NFUlRfRVEoMiwgc3VidHJhY3RUd29G
cm9tRm91ckZ1bmN0aW9uKCkpOwotfQotCi1jbGFzcyBBIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBBKGludCBpKQotICAgICAgICA6IG1faShpKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgZigp
IHsgcmV0dXJuIG1faTsgfQotICAgIGludCBhZGRGKGludCBqKSB7IHJldHVybiBtX2kgKyBqOyB9
Ci0KLXByaXZhdGU6Ci0gICAgaW50IG1faTsKLX07Ci0KLVRFU1QoRnVuY3Rpb25hbFRlc3QsIE1l
bWJlckZ1bmN0aW9uQmluZCkKLXsKLSAgICBBIGEoMTApOwotICAgIEZ1bmN0aW9uPGludCAoKT4g
ZnVuY3Rpb24xID0gYmluZCgmQTo6ZiwgJmEpOwotICAgIEFTU0VSVF9FUSgxMCwgZnVuY3Rpb24x
KCkpOwotCi0gICAgRnVuY3Rpb248aW50ICgpPiBmdW5jdGlvbjIgPSBiaW5kKCZBOjphZGRGLCAm
YSwgMTUpOwotICAgIEFTU0VSVF9FUSgyNSwgZnVuY3Rpb24yKCkpOwotfQotCi1jbGFzcyBCIHsK
LXB1YmxpYzoKLSAgICBCKCkKLSAgICAgICAgOiBtX251bVJlZkNhbGxzKDApCi0gICAgICAgICwg
bV9udW1EZXJlZkNhbGxzKDApCi0gICAgewotICAgIH0KLQotICAgIH5CKCkKLSAgICB7Ci0gICAg
fQotCi0gICAgdm9pZCByZWYoKQotICAgIHsKLSAgICAgICAgbV9udW1SZWZDYWxscysrOwotICAg
IH0KLQotICAgIHZvaWQgZGVyZWYoKQotICAgIHsKLSAgICAgICAgbV9udW1EZXJlZkNhbGxzKys7
Ci0gICAgfQotCi0gICAgdm9pZCBmKCkgeyBBU1NFUlRfR1QobV9udW1SZWZDYWxscywgMCk7IH0K
LSAgICB2b2lkIGcoaW50KSB7IEFTU0VSVF9HVChtX251bVJlZkNhbGxzLCAwKTsgfQotCi0gICAg
aW50IG1fbnVtUmVmQ2FsbHM7Ci0gICAgaW50IG1fbnVtRGVyZWZDYWxsczsKLX07Ci0KLVRFU1Qo
RnVuY3Rpb25hbFRlc3QsIE1lbWJlckZ1bmN0aW9uQmluZFJlZkRlcmVmKQotewotICAgIEIgYjsK
LQotICAgIHsKLSAgICAgICAgRnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24xID0gYmluZCgmQjo6
ZiwgJmIpOwotICAgICAgICBmdW5jdGlvbjEoKTsKLQotICAgICAgICBGdW5jdGlvbjx2b2lkICgp
PiBmdW5jdGlvbjIgPSBiaW5kKCZCOjpnLCAmYiwgMTApOwotICAgICAgICBmdW5jdGlvbjIoKTsK
LSAgICB9Ci0KLSAgICBBU1NFUlRfVFJVRShiLm1fbnVtUmVmQ2FsbHMgPT0gYi5tX251bURlcmVm
Q2FsbHMpOwotICAgIEFTU0VSVF9HVChiLm1fbnVtUmVmQ2FsbHMsIDApOwotCi19Ci0KLWNsYXNz
IE51bWJlciA6IHB1YmxpYyBSZWZDb3VudGVkPE51bWJlcj4gewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE51bWJlcj4gY3JlYXRlKGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTnVtYmVyKHZhbHVlKSk7Ci0gICAgfQotCi0gICAgfk51bWJlcigp
Ci0gICAgewotICAgICAgICBtX3ZhbHVlID0gMDsKLSAgICB9Ci0KLSAgICBpbnQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTnVtYmVy
KGludCB2YWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBpbnQgbV92YWx1ZTsKLX07Ci0KLXN0YXRpYyBpbnQgbXVsdGlwbHlOdW1iZXJCeVR3byhOdW1i
ZXIqIG51bWJlcikKLXsKLSAgICByZXR1cm4gbnVtYmVyLT52YWx1ZSgpICogMjsKLX0KLQotVEVT
VChGdW5jdGlvbmFsVGVzdCwgUmVmQ291bnRlZFN0b3JhZ2UpCi17Ci0gICAgUmVmUHRyPE51bWJl
cj4gZml2ZSA9IE51bWJlcjo6Y3JlYXRlKDUpOwotICAgIEZ1bmN0aW9uPGludCAoKT4gbXVsdGlw
bHlGaXZlQnlUd29GdW5jdGlvbiA9IGJpbmQobXVsdGlwbHlOdW1iZXJCeVR3bywgZml2ZSk7Ci0g
ICAgQVNTRVJUX0VRKDEwLCBtdWx0aXBseUZpdmVCeVR3b0Z1bmN0aW9uKCkpOwotCi0gICAgRnVu
Y3Rpb248aW50ICgpPiBtdWx0aXBseUZvdXJCeVR3b0Z1bmN0aW9uID0gYmluZChtdWx0aXBseU51
bWJlckJ5VHdvLCBOdW1iZXI6OmNyZWF0ZSg0KSk7Ci0gICAgQVNTRVJUX0VRKDgsIG11bHRpcGx5
Rm91ckJ5VHdvRnVuY3Rpb24oKSk7Ci0KLSAgICBSZWZQdHI8TnVtYmVyPiBzaXggPSBOdW1iZXI6
OmNyZWF0ZSg2KTsKLSAgICBGdW5jdGlvbjxpbnQgKCk+IG11bHRpcGx5U2l4QnlUd29GdW5jdGlv
biA9IGJpbmQobXVsdGlwbHlOdW1iZXJCeVR3bywgc2l4LnJlbGVhc2UoKSk7Ci0gICAgQVNTRVJU
X0ZBTFNFKHNpeCk7Ci0gICAgQVNTRVJUX0VRKDEyLCBtdWx0aXBseVNpeEJ5VHdvRnVuY3Rpb24o
KSk7Ci19Ci0KLW5hbWVzcGFjZSBSZWZBbmREZXJlZlRlc3RzIHsKLSAgICAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVmQ291bnRlZCB7Ci0gICAgICAgIHZvaWQgcmVmKCk7Ci0g
ICAgICAgIHZvaWQgZGVyZWYoKTsKLSAgICB9OwotICAgIHN0cnVjdCBDb25uZWN0aW9uIDogUmVm
Q291bnRlZDxDb25uZWN0aW9uPiB7IH07Ci0gICAgQ09NUElMRV9BU1NFUlQoV1RGOjpIYXNSZWZB
bmREZXJlZjxDb25uZWN0aW9uPjo6dmFsdWUsIGNsYXNzX2hhc19yZWZfYW5kX2RlcmVmKTsKLSAg
ICAKLSAgICBzdHJ1Y3QgTm9SZWZPckRlcmVmIHsgfTsKLSAgICBDT01QSUxFX0FTU0VSVCghV1RG
OjpIYXNSZWZBbmREZXJlZjxOb1JlZk9yRGVyZWY+Ojp2YWx1ZSwgY2xhc3NfaGFzX25vX3JlZl9v
cl9kZXJlZik7Ci0gICAgCi0gICAgc3RydWN0IFJlZk9ubHkgeyB2b2lkIHJlZigpOyB9OwotICAg
IENPTVBJTEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPFJlZk9ubHk+Ojp2YWx1ZSwgY2xh
c3NfaGFzX3JlZl9vbmx5KTsKLSAgICAKLSAgICBzdHJ1Y3QgRGVyZWZPbmx5IHsgdm9pZCBkZXJl
ZigpOyB9OwotICAgIENPTVBJTEVfQVNTRVJUKCFXVEY6Okhhc1JlZkFuZERlcmVmPERlcmVmT25s
eT46OnZhbHVlLCBjbGFzc19oYXNfZGVyZWZfb25seSk7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>