<?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>159643</bug_id>
          
          <creation_ts>2016-07-11 13:31:10 -0700</creation_ts>
          <short_desc>MarkedBlocks should know that they can be used for more than JSCells</short_desc>
          <delta_ts>2016-07-18 14:35:53 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159644</blocked>
    
    <blocked>159658</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209776</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-11 13:31:10 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209778</commentid>
    <comment_count>1</comment_count>
      <attachid>283338</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-11 13:31:51 -0700</bug_when>
    <thetext>Created attachment 283338
stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209820</commentid>
    <comment_count>2</comment_count>
      <attachid>283349</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-11 15:01:15 -0700</bug_when>
    <thetext>Created attachment 283349
the carnage expands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209890</commentid>
    <comment_count>3</comment_count>
      <attachid>283368</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-11 17:14:10 -0700</bug_when>
    <thetext>Created attachment 283368
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209894</commentid>
    <comment_count>4</comment_count>
      <attachid>283370</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-11 17:32:06 -0700</bug_when>
    <thetext>Created attachment 283370
OMG it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210111</commentid>
    <comment_count>5</comment_count>
      <attachid>283434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-12 11:36:16 -0700</bug_when>
    <thetext>Created attachment 283434
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210114</commentid>
    <comment_count>6</comment_count>
      <attachid>283434</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-12 11:40:04 -0700</bug_when>
    <thetext>Comment on attachment 283434
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210135</commentid>
    <comment_count>7</comment_count>
      <attachid>283441</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-12 12:52:01 -0700</bug_when>
    <thetext>Created attachment 283441
performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210138</commentid>
    <comment_count>8</comment_count>
      <attachid>283442</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-12 12:55:18 -0700</bug_when>
    <thetext>Created attachment 283442
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210139</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-12 12:57:19 -0700</bug_when>
    <thetext>Attachment 283442 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:62:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:71:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:82:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:126:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:209:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:236:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:244:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:208:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:218:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.cpp:243:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:954:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:982:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:992:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 18 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212059</commentid>
    <comment_count>10</comment_count>
      <attachid>283918</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-18 13:01:54 -0700</bug_when>
    <thetext>Created attachment 283918
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212060</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-18 13:03:46 -0700</bug_when>
    <thetext>Attachment 283918 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:62:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:71:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:82:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:126:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:209:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:236:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:244:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:208:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:218:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.cpp:243:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:954:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:982:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:992:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 18 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212089</commentid>
    <comment_count>12</comment_count>
      <attachid>283927</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-18 13:52:09 -0700</bug_when>
    <thetext>Created attachment 283927
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212091</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-18 13:54:33 -0700</bug_when>
    <thetext>Attachment 283927 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:52:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:62:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:71:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:82:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:113:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:126:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:162:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:209:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:236:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:244:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:208:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.h:218:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.cpp:243:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:954:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:982:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:992:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 18 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212119</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-18 14:35:53 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/203375</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283338</attachid>
            <date>2016-07-11 13:31:51 -0700</date>
            <delta_ts>2016-07-11 15:01:15 -0700</delta_ts>
            <desc>stuff</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29249</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9I
YW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3Bw
CisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAg
IGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQwLDYgKzExNDAsMTAgQEAKIAkJMkFGNzM4MkMxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OworCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
aW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJf
aGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxMjk1MjdBMUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEyOTUyNzYxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUEx
MzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCAqLzsgfTsKQEAgLTE0NzQsMTAgKzE0NzgsNiBAQAogCQk5OURBMDBBODFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5
RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBi
dWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzgxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0
aW9uLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWls
dGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1
QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFEMUJENTk5M0Uw
MEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5REEwMEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250
ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTk5Miw2ICsxOTkyLDggQEAK
IAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3RTgxNjFDOUM4MDJCMDA4
QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4
ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi87IH07CiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKKwkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKIAkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07CiAJCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKQEAgLTQyMjQsNiArNDIyNiw4IEBACiAJCURDMTdF
ODE2MUM5QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMyMTQzMDUxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJE
dW1wQXNKUy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYw
NUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE5MSw2
ICs1MTk1LDggQEAKIAkJCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMu
aCAqLywKIAkJCQkxNEJBN0E5NTEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTRCQTdBOTYxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCAqLywKKwkJCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAorCQkJCURDM0QyQjA5MUQzNDMxNjEwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oICovLAogCQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBI
ZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhl
YXBIZWxwZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJ
bmxpbmVzLmggKi8sCkBAIC03MjcwLDYgKzcyNzYsNyBAQAogCQkJCTBGRkI5MjFBMTZEMDJFQzUw
MDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCQkQ5NjFDNUZGM0Y1MDAyM0VGMjMgLyogQjNTcGFyc2VDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENl
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdC
bG9ja01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8q
IERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MTIsNiArOTQx
OSw3IEBACiAJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREMzRDJCMEMxRDM0Mzc3
MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdE
N0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqCkBAIC00MCwxNCArNDAsMTkgQEAgbmFtZXNwYWNlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBHYXRoZXJTb3VyY2VQcm92aWRlcnMgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBIYXNoU2V0PFNvdXJjZVByb3Zp
ZGVyKj4gc291cmNlUHJvdmlkZXJzOworICAgIG11dGFibGUgSGFzaFNldDxTb3VyY2VQcm92aWRl
cio+IHNvdXJjZVByb3ZpZGVyczsKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7
CiAKICAgICBHYXRoZXJTb3VyY2VQcm92aWRlcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpIHsgfQogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29u
c3QKICAgICB7CisgICAgICAgIGlmIChraW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihoZWFwQ2VsbCk7CisgICAgICAgIAogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogICAgICAgICBpZiAoIWZ1
bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjAzMDY4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
Myw3ICsyNTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFRocmVhZFN0YXRlKFZNCiB9
CiAKIHN0cnVjdCBDb3VudCA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxsKikgeyBjb3VudCgxKTsgfQorICAgIHZvaWQgb3BlcmF0
b3IoKShIZWFwQ2VsbCopIHsgY291bnQoMSk7IH0KIH07CiAKIHN0cnVjdCBDb3VudElmR2xvYmFs
T2JqZWN0IDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7CkBAIC0yNjUsOSArMjY1LDkgQEAg
c3RydWN0IENvdW50SWZHbG9iYWxPYmplY3QgOiBNYXJrZWRCbG9jawogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjb3VudCgxKTsKICAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJh
dG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBD
ZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7CisgICAgICAgIHZpc2l0KHN0
YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiAgICAgfQogfTsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5UeXBlOwogCiAgICAg
UmVjb3JkVHlwZSgpOwotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOwor
ICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKik7CiAgICAgUmV0dXJuVHlw
ZSByZXR1cm5WYWx1ZSgpOwogCiBwcml2YXRlOgpAQCAtMjk4LDkgKzI5OCw5IEBAIGlubGluZSBj
b25zdCBjaGFyKiBSZWNvcmRUeXBlOjp0eXBlTmFtZSgKICAgICByZXR1cm4gaW5mby0+Y2xhc3NO
YW1lOwogfQogCi1pbmxpbmUgSXRlcmF0aW9uU3RhdHVzIFJlY29yZFR5cGU6Om9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKQoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBSZWNvcmRUeXBlOjpvcGVyYXRv
cigpKEhlYXBDZWxsKiBjZWxsKQogewotICAgIG1fdHlwZUNvdW50U2V0LT5hZGQodHlwZU5hbWUo
Y2VsbCkpOworICAgIG1fdHlwZUNvdW50U2V0LT5hZGQodHlwZU5hbWUoc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oY2VsbCkpKTsKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0K
IApAQCAtNzcxLDggKzc3MSw5IEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRhIDogTWFy
a2VkQmwKICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlND
ZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFw
Q2VsbCkKICAgICB7CisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+
KGhlYXBDZWxsKTsKICAgICAgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+aGVhcFNuYXBzaG90KGNl
bGwsIG1fYnVpbGRlcik7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwogICAgIH0KQEAgLTc5Niw5ICs3OTcsOSBAQCBzdHJ1Y3QgUmVtb3ZlRGVhZEhlYXBTbmFwc2hv
dE5vZGVzIDogTWFyCiAgICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRv
cigpKEpTQ2VsbCogY2VsbCkKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2Vs
bCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1fc25hcHNob3Quc3dlZXBDZWxsKGNlbGwpOworICAg
ICAgICBtX3NuYXBzaG90LnN3ZWVwQ2VsbChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CiAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIApAQCAtMTU5
MSw5ICsxNTkyLDkgQEAgcHVibGljOgogICAgICAgICBmb3IgKDsgY3VycmVudCA8IGxpbWl0OyBj
dXJyZW50KyspCiAgICAgICAgICAgICAqY3VycmVudCA9IHpvbWJpZmllZEJpdHM7CiAgICAgfQot
ICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIHZpc2l0
KGNlbGwpOworICAgICAgICB2aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CiAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCisKKyNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXVEY7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBIZWFwQ2VsbDo6
S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSGVhcENlbGw6OkpT
Q2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJKU0NlbGwiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSGVhcENlbGw6OlN0b3JhZ2U6CisgICAgICAgIG91dC5wcmludCgiU3RvcmFnZSIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7CitwdWJsaWM6CisgICAgZW51bSBLaW5kIDogaW50
OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAgICBTdG9yYWdlCisgICAgfTsKKyAgICAKKyAg
ICBIZWFwQ2VsbCgpIHsgfQorICAgIAorICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0IHsg
cmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0Kj4odGhpcyk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRT
dHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SGVhcENlbGw6
OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMjAzMDY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgU3RvcmFnZVN0YXRpc3RpY3MgOiBwdWJsaWMgTWFya2Vk
QgogcHVibGljOgogICAgIFN0b3JhZ2VTdGF0aXN0aWNzKCk7CiAKLSAgICBJdGVyYXRpb25TdGF0
dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShI
ZWFwQ2VsbCopOwogCiAgICAgc2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQo
KTsKICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKQEAgLTE5MCw5ICsxOTAsOSBAQCBpbmxpbmUg
dm9pZCBTdG9yYWdlU3RhdGlzdGljczo6dmlzaXQoSlNDCiAgICAgbV9zdG9yYWdlQ2FwYWNpdHkg
Kz0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KTsgCiB9CiAKLWlubGluZSBJdGVyYXRpb25TdGF0dXMg
U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQoraW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCkK
IHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICB2aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSk7CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjAz
MDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBAIHN0cnVjdCBHYXRoZXJMaXZlT2JqRnVuY3Rv
ciA6IE1hcmtlZEJsb2MKICAgICAgICAgbV9saXN0LmxpdmVPYmplY3RzLmFwcGVuZChkYXRhKTsK
ICAgICB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisg
ICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwpCiAgICAgewotICAg
ICAgICB2aXNpdChjZWxsKTsKKyAgICAgICAgdmlzaXQoc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2Vs
bCkpOwogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTcgKzc0LDE5IEBAIE1hcmtlZEJsb2NrOjpNYXJrZWRC
bG9jayhNYXJrZWRBbGxvY2F0b3IKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9O
KHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IoSlND
ZWxsKiBjZWxsKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEhlYXBD
ZWxsKiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dlZXAgbWF5IGFscmVhZHkg
aGF2ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNlbGwtPmlzWmFwcGVkKCkpCiAg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0NlbGwqIGpzQ2VsbCA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGNlbGwpOwogCi0gICAgQVNTRVJUKGNlbGwtPnN0cnVjdHVyZUlEKCkpOwotICAgIGlm
IChjZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpCi0gICAgICAg
IGNlbGwtPnN0cnVjdHVyZSgqdm0oKSktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95
KGNlbGwpOworICAgIEFTU0VSVChqc0NlbGwtPnN0cnVjdHVyZUlEKCkpOworICAgIGlmIChqc0Nl
bGwtPmlubGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1vcnRhbCkKKyAgICAgICAganND
ZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShq
c0NlbGwpOwogICAgIGVsc2UKLSAgICAgICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4o
Y2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNlbGwpOworICAgICAgICBq
c0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihqc0NlbGwpLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGNlbGwtPnphcCgpOwogfQogCkBAIC0xMDMsNyAr
MTA1LDcgQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpzcGVjaQogICAgICAg
ICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQgJiYgKG1fbWFya3MuZ2V0KGkpIHx8IChtX25ld2x5
QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlND
ZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogCiAgICAgICAgIGlmIChjYWxsRGVz
dHJ1Y3RvcnMgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCiAgICAgICAgICAgICBjYWxsRGVzdHJ1Y3Rv
cihjZWxsKTsKQEAgLTE3MSw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJdGVyYXRpb25T
dGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChN
YXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCkgPT0gbV9ibG9jayk7CiAgICAgICAgIG1fYmxvY2st
PnNldE5ld2x5QWxsb2NhdGVkKGNlbGwpOwpAQCAtMjEzLDcgKzIxNSw4IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IEYKICAgICBGcmVlQ2VsbCogbmV4dDsKICAgICBm
b3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IG5leHQpIHsK
ICAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQ7Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsKj4oY3VycmVudCktPnphcCgpOworICAgICAgICBpZiAobV9uZWVkc0Rlc3RydWN0aW9u
KQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KGN1cnJlbnQpLT56YXAo
KTsKICAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZChjdXJyZW50KTsKICAgICB9CiAgICAgCkBA
IC0yOTAsNyArMjkzLDggQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGlkUmV0aXJlQmxvY2soY29uc3Qg
RgogICAgIEZyZWVDZWxsKiBuZXh0OwogICAgIGZvciAoRnJlZUNlbGwqIGN1cnJlbnQgPSBoZWFk
OyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4
dDsKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjdXJyZW50KS0+emFwKCk7Cisg
ICAgICAgIGlmIChtX25lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PEhlYXBDZWxsKj4oY3VycmVudCktPnphcCgpOwogICAgIH0KIAogICAgIEFTU0VSVChtX3N0
YXRlID09IEZyZWVMaXN0ZWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVm
IE1hcmtlZEJsb2NrX2gKICNkZWZpbmUgTWFya2VkQmxvY2tfaAogCisjaW5jbHVkZSAiSGVhcENl
bGwuaCIKICNpbmNsdWRlICJIZWFwT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSXRlcmF0aW9uU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiV2Vha1NldC5oIgpAQCAtNTMsOCArNTQsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHR5cGVkZWYgdWludHB0cl90IEJpdHM7CiAKLSAgICBib29sIGlzWmFwcGVk
KGNvbnN0IEpTQ2VsbCopOwotICAgIAogICAgIC8vIEEgbWFya2VkIGJsb2NrIGlzIGEgcGFnZS1h
bGlnbmVkIGNvbnRhaW5lciBmb3IgaGVhcC1hbGxvY2F0ZWQgb2JqZWN0cy4KICAgICAvLyBPYmpl
Y3RzIGFyZSBhbGxvY2F0ZWQgd2l0aGluIGNlbGxzIG9mIHRoZSBtYXJrZWQgYmxvY2suIEZvciBh
IGdpdmVuCiAgICAgLy8gbWFya2VkIGJsb2NrLCBhbGwgY2VsbHMgaGF2ZSB0aGUgc2FtZSBzaXpl
LiBPYmplY3RzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTE0NywxNiArMTQ2LDE3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQoKSBj
b25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2FwYWNpdHko
KTsKIAogICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCB0
ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc0xpdmUoY29uc3Qg
SlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAg
IGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0
IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlND
ZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBD
ZWxsKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9p
ZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CiAKQEAgLTE3MCw5ICsxNzAsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlzdCYpOwog
ICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoRnVuY3RvciYpOwotICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hM
aXZlQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJ
dGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBG
dW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3Qg
RnVuY3RvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBh
dG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTE4MiwxMCArMTgyLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXplXTsKIAot
ICAgICAgICBNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgTWFya2VkQmxv
Y2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQpOwogICAgICAgICBBdG9tKiBhdG9t
cygpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAgIHZv
aWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7CisgICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3Io
SGVhcENlbGwqKTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBib29s
IGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAK
ICAgICAgICAgTWFya2VkQmxvY2sqIG1fcHJldjsKQEAgLTE5OCw2ICsxOTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICAgICAgYm9vbCBtX25l
ZWRzRGVzdHJ1Y3Rpb247CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIG1fY2VsbEtpbmQ7CiAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3RhdGUgbV9z
dGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBAIC0zMDMsNiArMzA0LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgIH0K
IAorICAgIGlubGluZSBIZWFwQ2VsbDo6S2luZCBNYXJrZWRCbG9jazo6Y2VsbEtpbmQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VsbEtpbmQ7CisgICAgfQorCiAgICAgaW5saW5l
IHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gbWFya0Nv
dW50KCkgKiBjZWxsU2l6ZSgpOwpAQCAtMzYzLDEzICszNjksMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhl
YXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmV0aXJlZCB8
fCBtX3N0YXRlID09IE1hcmtlZCk7CiAgICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVt
YmVyKGNlbGwpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwp
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0IEpT
Q2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0IEhl
YXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAg
IGNhc2UgQWxsb2NhdGVkOgpAQCAtNDA3LDQwICs0MTMsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgICAgICBpZiAoIWlzQXRvbShwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihwKSk7Cisg
ICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25T
dGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxv
Y2s6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBI
ZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAg
ICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRv
bXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0
dXM6OkRvbmUpCisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2Vs
bCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2Vs
bChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2Nl
bGxLaW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0
b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhl
YXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtp
XSk7CiAgICAgICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVz
OjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRv
bmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRp
b25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7
CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNl
bGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpT
Q2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAo
aXNMaXZlKGNlbGwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBp
ZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBp
ZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJFbnVtZXJhdGlvbk1vZGUu
aCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSGVhcENlbGwuaCIKICNpbmNsdWRlICJJ
bmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1R5cGVJbmZv
LmgiCkBAIC02NCw3ICs2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRl
Q2VsbCgKICAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgc3RhdGljIGNvbnN0IDo6SlNDOjpDbGFz
c0luZm8qIGluZm8oKSB7IHJldHVybiAmc19pbmZvOyB9CiAKLWNsYXNzIEpTQ2VsbCB7CitjbGFz
cyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwog
ICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBm
cmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKQEAgLTE1NSw5ICsxNTYsNiBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNN
QU1vZGUpOwogCi0gICAgdm9pZCB6YXAoKSB7ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoq
Pih0aGlzKSA9IDA7IH0KLSAgICBib29sIGlzWmFwcGVkKCkgY29uc3QgeyByZXR1cm4gISpyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdCogY29uc3QqPih0aGlzKTsgfQotCiAgICAgc3RhdGljIGJv
b2wgY2FuVXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOwogICAgIEpTVmFs
dWUgZmFzdEdldE93blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTEgKzE0NSw2IEBAIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJiBoZWFwKQogICAgIHJldHVybiBhbGxvY2F0ZUNlbGw8VD4oaGVhcCwgc2l6
ZW9mKFQpKTsKIH0KICAgICAKLWlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCogY2Vs
bCkKLXsKLSAgICByZXR1cm4gY2VsbC0+aXNaYXBwZWQoKTsKLX0KLQogaW5saW5lIGJvb2wgSlND
ZWxsOjppc09iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFR5cGVJbmZvOjppc09iamVjdCht
X3R5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283349</attachid>
            <date>2016-07-11 15:01:15 -0700</date>
            <delta_ts>2016-07-11 17:14:10 -0700</delta_ts>
            <desc>the carnage expands</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>46135</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9I
YW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3Bw
CisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAg
IGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQwLDYgKzExNDAsMTAgQEAKIAkJMkFGNzM4MkMxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OworCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
aW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJf
aGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxMjk1MjdBMUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEyOTUyNzYxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUEx
MzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCAqLzsgfTsKQEAgLTE0NzQsMTAgKzE0NzgsNiBAQAogCQk5OURBMDBBODFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5
RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBi
dWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzgxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0
aW9uLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWls
dGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1
QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFEMUJENTk5M0Uw
MEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5REEwMEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250
ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTk5Miw2ICsxOTkyLDggQEAK
IAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3RTgxNjFDOUM4MDJCMDA4
QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4
ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi87IH07CiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKKwkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKIAkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07CiAJCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKQEAgLTQyMjQsNiArNDIyNiw4IEBACiAJCURDMTdF
ODE2MUM5QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMyMTQzMDUxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJE
dW1wQXNKUy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYw
NUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE5MSw2
ICs1MTk1LDggQEAKIAkJCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMu
aCAqLywKIAkJCQkxNEJBN0E5NTEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTRCQTdBOTYxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCAqLywKKwkJCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAorCQkJCURDM0QyQjA5MUQzNDMxNjEwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oICovLAogCQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBI
ZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhl
YXBIZWxwZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJ
bmxpbmVzLmggKi8sCkBAIC03MjcwLDYgKzcyNzYsNyBAQAogCQkJCTBGRkI5MjFBMTZEMDJFQzUw
MDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCQkQ5NjFDNUZGM0Y1MDAyM0VGMjMgLyogQjNTcGFyc2VDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENl
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdC
bG9ja01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8q
IERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MTIsNiArOTQx
OSw3IEBACiAJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREMzRDJCMEMxRDM0Mzc3
MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdE
N0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqCkBAIC00MCwxNCArNDAsMjEgQEAgbmFtZXNwYWNlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBHYXRoZXJTb3VyY2VQcm92aWRlcnMgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBIYXNoU2V0PFNvdXJjZVByb3Zp
ZGVyKj4gc291cmNlUHJvdmlkZXJzOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBm
aWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11dGFibGUgSGFzaFNldDxT
b3VyY2VQcm92aWRlcio+IHNvdXJjZVByb3ZpZGVyczsKICAgICBKU0dsb2JhbE9iamVjdCogbV9n
bG9iYWxPYmplY3Q7CiAKICAgICBHYXRoZXJTb3VyY2VQcm92aWRlcnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpIHsg
fQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0
ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6Oktp
bmQga2luZCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChraW5kICE9IEhlYXBDZWxsOjpKU0Nl
bGwpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxs
KTsKKyAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKQEAgLTE5MSw3ICsxOTgsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKKyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2RlID09IFN0ZXBwaW5nTW9k
ZUVuYWJsZWQpCkBAIC0yOTgsNyArMzA1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBvcGVyYXRv
cigpKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fZGVi
dWdnZXIgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKICAgICAgICAg
ICAgIG1fZGVidWdnZXItPnRvZ2dsZUJyZWFrcG9pbnQoY29kZUJsb2NrLCBtX2JyZWFrcG9pbnQs
IG1fZW5hYmxlZE9yTm90KTsKQEAgLTQ3NCw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29s
IG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9kZWJ1Z2dlciA9PSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQogICAgICAgICAgICAgY29kZUJsb2Nr
LT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKQEAgLTUwNCw3ICs1MTEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykK
KyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9nbG9iYWxP
YmplY3QgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+Y2xlYXJEZWJ1Z2dlclJlcXVlc3RzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIC8vIFZpc2l0cyBlYWNoIENvZGVCbG9jayBpbiB0aGUgaGVhcCB1bnRp
bCB0aGUgdmlzaXRvciBmdW5jdGlvbiByZXR1cm5zIHRydWUKICAgICAvLyB0byBpbmRpY2F0ZSB0
aGF0IGl0IGlzIGRvbmUgaXRlcmF0aW5nLCBvciB1bnRpbCBldmVyeSBDb2RlQmxvY2sgaGFzIGJl
ZW4KICAgICAvLyB2aXNpdGVkLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZShGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBjb2RlQmxvY2sgOiBt
X29sZENvZGVCbG9ja3MpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNl
dC5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSGFuZGxl
LmgiCiAjaW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtNzksNyArODAs
NyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFu
ZGxlKEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKGNv
bnN0IEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7CiAK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYW5kbGVOb2RlIE5vZGU7CkBAIC0xODAsNyArMTgxLDcg
QEAgaW5saW5lIEhhbmRsZU5vZGUqIEhhbmRsZU5vZGU6Om5leHQoKQogICAgIHJldHVybiBtX25l
eHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgSGFuZGxlU2V0Ojpmb3JF
YWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImIGZ1bmN0b3IsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpT
Q2VsbCo+JiBza2lwU2V0KQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVT
ZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFz
aENvdW50ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCiB7CiAgICAgSGFuZGxlU2V0OjpOb2RlKiBl
bmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICAgZm9yIChIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUg
PSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDMwNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUyLDYxICsyNTIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRUaHJlYWRTdGF0
ZShWTQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgQ291bnQgOiBwdWJsaWMgTWFya2Vk
QmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopIHsgY291
bnQoMSk7IH0KLX07Ci0KLXN0cnVjdCBDb3VudElmR2xvYmFsT2JqZWN0IDogTWFya2VkQmxvY2s6
OkNvdW50RnVuY3RvciB7Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQotICAg
IHsKLSAgICAgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpZiAoIWFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjb3VudCgxKTsKLSAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVz
IG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Ci0g
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotICAgIH0KLX07Ci0KLWNs
YXNzIFJlY29yZFR5cGUgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gUmV0dXJuVHlwZTsKLQotICAgIFJlY29yZFR5cGUoKTsKLSAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gbV90eXBlQ291bnRTZXQ7Ci19OwotCi1pbmxp
bmUgUmVjb3JkVHlwZTo6UmVjb3JkVHlwZSgpCi0gICAgOiBtX3R5cGVDb3VudFNldChzdGQ6Om1h
a2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKSkKLXsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIFJl
Y29yZFR5cGU6OnR5cGVOYW1lKEpTQ2VsbCogY2VsbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWNv
cmRUeXBlKFR5cGVDb3VudFNldCYgc2V0LCBKU0NlbGwqIGNlbGwpCiB7CisgICAgY29uc3QgY2hh
ciogdHlwZU5hbWUgPSAiW3Vua25vd25dIjsKICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBj
ZWxsLT5jbGFzc0luZm8oKTsKLSAgICBpZiAoIWluZm8gfHwgIWluZm8tPmNsYXNzTmFtZSkKLSAg
ICAgICAgcmV0dXJuICJbdW5rbm93bl0iOwotICAgIHJldHVybiBpbmZvLT5jbGFzc05hbWU7Ci19
Ci0KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgUmVjb3JkVHlwZTo6b3BlcmF0b3IoKShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgbV90eXBlQ291bnRTZXQtPmFkZCh0eXBlTmFtZShjZWxsKSk7Ci0gICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLWlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeXBlOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0
dXJuIFdURk1vdmUobV90eXBlQ291bnRTZXQpOworICAgIGlmIChpbmZvICYmIGluZm8tPmNsYXNz
TmFtZSkKKyAgICAgICAgdHlwZU5hbWUgPSBpbmZvLT5jbGFzc05hbWU7CisgICAgc2V0LmFkZCh0
eXBlTmFtZSk7CiB9CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtNzcxLDkgKzcyMywx
MiBAQCBzdHJ1Y3QgR2F0aGVySGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsCiAgICAgewogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogaGVhcENlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIGNvbnN0CiAgICAgewotICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFw
U25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6
OkpTQ2VsbCkgeworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcENlbGwpOworICAgICAgICAgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+aGVhcFNuYXBz
aG90KGNlbGwsIG1fYnVpbGRlcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC03OTYsOSArNzUxLDEwIEBAIHN0cnVjdCBS
ZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXMgOiBNYXIKICAgICB7CiAgICAgfQogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAog
ICAgIHsKLSAgICAgICAgbV9zbmFwc2hvdC5zd2VlcENlbGwoY2VsbCk7CisgICAgICAgIGlmIChr
aW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2Vs
bChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIApAQCAtOTk4LDI5ICs5NTQsNjQgQEAgc2l6ZV90IEhl
YXA6OmNhcGFjaXR5KCkKIAogc2l6ZV90IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50
KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291bnRJZkdsb2JhbE9iamVj
dD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgK
KyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzaXpl
X3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQoKQogewogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBzaXplX3Qg
cmVzdWx0ID0gMDsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2Vs
bDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgaWYgKGtpbmQg
IT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGhlYXBDZWxsKTsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpICYmIGFz
T2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsr
OworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmpl
Y3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRDZWxsPENvdW50PigpOwor
ICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAg
ICBbJl0gKEpTQ2VsbCopIHsKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFw
Ojpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3Rl
Y3RlZENlbGw8UmVjb3JkVHlwZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBmb3JFYWNo
UHJvdGVjdGVkQ2VsbCgKKyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgY2VsbCk7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVD
b3VudHMoKQogeworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPFJlY29yZFR5cGU+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgaXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVh
cENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Cisg
ICAgICAgICAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcygpCkBA
IC0xMzA1LDkgKzEyOTYsMTEgQEAgc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDog
cHVibAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJs
b2NrKSB7IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsgfQorICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRCbG9jayogYmxvY2spIGNvbnN0IHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2Nr
OyB9CiAKLSAgICBzaXplX3QgbV9pbmRleDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFi
bGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICBtdXRhYmxlIHNpemVf
dCBtX2luZGV4OwogICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+JiBtX2Jsb2NrczsKIH07CiAKQEAg
LTE1NzgsNyArMTU3MSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVS
ZWMKIAogY2xhc3MgWm9tYmlmeSA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3Igewog
cHVibGljOgotICAgIGlubGluZSB2b2lkIHZpc2l0KEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUg
dm9pZCB2aXNpdChIZWFwQ2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAgICAgIHZvaWQqKiBj
dXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNlbGwpOwogCkBAIC0xNTkxLDcgKzE1
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoOyBjdXJyZW50IDwgbGltaXQ7IGN1cnJlbnQr
KykKICAgICAgICAgICAgICpjdXJyZW50ID0gem9tYmlmaWVkQml0czsKICAgICB9Ci0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7
CiAgICAgICAgIHZpc2l0KGNlbGwpOwogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKQEAgLTE2MDMsNyArMTU5Niw3IEBAIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmpl
Y3RzKCkKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9u
Y2Ugd2UncmUgem9tYmlmaWVkLgogICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CiAg
ICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICBtX29iamVj
dFNwYWNlLmZvckVhY2hEZWFkQ2VsbDxab21iaWZ5PihpdGVyYXRpb25TY29wZSk7CisgICAgbV9v
YmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9
CiAKIHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKiBjZWxsKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2
LDggQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJr
TGlzdFNldCgpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaFByb3RlY3RlZENlbGwoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5j
dG9yJik7CiAKICAgICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hhbmRsZVNl
dDsgfQogICAgIEhhbmRsZVN0YWNrKiBoYW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hhbmRsZVN0
YWNrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBIZWFwQ2VsbDo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNh
c2UgSGVhcENlbGw6OkpTQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJKU0NlbGwiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgSGVhcENlbGw6OlN0b3JhZ2U6CisgICAgICAgIG91dC5wcmlu
dCgiU3RvcmFnZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7CitwdWJsaWM6CisgICAg
ZW51bSBLaW5kIDogaW50OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAgICBTdG9yYWdlCisg
ICAgfTsKKyAgICAKKyAgICBIZWFwQ2VsbCgpIHsgfQorICAgIAorICAgIHZvaWQgemFwKCkgeyAq
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CisgICAgYm9vbCBpc1ph
cHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6SGVhcENlbGw6OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjUsNyArMTY1LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4
dHJhTQogICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFj
aENvZGVCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIC8vIFdlIGRvbid0IGtub3cgdGhlIGZ1bGwgc2V0IG9mIENvZGVCbG9ja3MgdW50
aWwgY29tcGlsYXRpb24gaGFzIHRlcm1pbmF0ZWQuCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygp
OwpAQCAtMTczLDE5ICsxNzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHZvaWQgSAogICAgIHJldHVybiBtX2NvZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihmdW5jdG9y
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVuY3Rv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2hQ
cm90ZWN0ZWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCiAgICAgICAgIGZ1bmN0b3IocGFpci5rZXkpOwogICAg
IG1faGFuZGxlU2V0LmZvckVhY2hTdHJvbmdIYW5kbGUoZnVuY3RvciwgbV9wcm90ZWN0ZWRWYWx1
ZXMpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVh
cDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBy
ZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIwMzA2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVi
bGljIE1hcmtlZEIKIHB1YmxpYzoKICAgICBTdG9yYWdlU3RhdGlzdGljcygpOwogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9w
ZXJhdG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKICAgICBzaXplX3Qg
b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOwogICAgIHNpemVfdCBvYmplY3RDb3Vu
dCgpOwpAQCAtMTkwLDkgKzE5MCwxMyBAQCBpbmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6
dmlzaXQoSlNDCiAgICAgbV9zdG9yYWdlQ2FwYWNpdHkgKz0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KTsgCiB9CiAKLWlubGluZSBJdGVyYXRpb25TdGF0dXMgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJh
dG9yKCkoSlNDZWxsKiBjZWxsKQoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3RhdGlz
dGljczo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29u
c3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxs
KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhp
cyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3RfY2FzdDxTdG9yYWdlU3RhdGlz
dGljcyo+KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQog
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw5ICsxMjAsMTMgQEAgc3RydWN0IEdhdGhlckxpdmVPYmpGdW5jdG9yIDog
TWFya2VkQmxvYwogICAgICAgICBtX2xpc3QubGl2ZU9iamVjdHMuYXBwZW5kKGRhdGEpOwogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQg
a2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIHZpc2l0KGNlbGwpOworICAgICAgICBpZiAoa2lu
ZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25z
dF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAg
ICAgICAgICAgY29uc3RfY2FzdDxHYXRoZXJMaXZlT2JqRnVuY3Rvcio+KHRoaXMpLT52aXNpdChz
dGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQog
ICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKEZ1
bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9j
ayhjb25zdCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayop
OwogICAgIHZvaWQgcmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqKTsKQEAgLTE1MSw3ICsxNTEsNyBA
QCBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jCiAgICAgbV9sYXN0QWN0
aXZlQmxvY2sgPSAwOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3RlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVh
Y2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIE1hcmtlZEJsb2NrKiBuZXh0
OwogICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOyBibG9j
azsgYmxvY2sgPSBuZXh0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE3ICs3NCwxOSBAQCBN
YXJrZWRCbG9jazo6TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yCiAgICAgSEVBUF9MT0dfQkxP
Q0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6
OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCkKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpj
YWxsRGVzdHJ1Y3RvcihIZWFwQ2VsbCogY2VsbCkKIHsKICAgICAvLyBBIHByZXZpb3VzIGVhZ2Vy
IHN3ZWVwIG1heSBhbHJlYWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVjdG9yLgogICAgIGlmIChj
ZWxsLT5pc1phcHBlZCgpKQogICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNDZWxsKiBqc0Nl
bGwgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKTsKIAotICAgIEFTU0VSVChjZWxsLT5zdHJ1
Y3R1cmVJRCgpKTsKLSAgICBpZiAoY2VsbC0+aW5saW5lVHlwZUZsYWdzKCkgJiBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsKQotICAgICAgICBjZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+
bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKKyAgICBBU1NFUlQoanNDZWxsLT5zdHJ1Y3R1cmVJ
RCgpKTsKKyAgICBpZiAoanNDZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1t
b3J0YWwpCisgICAgICAgIGpzQ2VsbC0+c3RydWN0dXJlKCp2bSgpKS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koanNDZWxsKTsKICAgICBlbHNlCi0gICAgICAgIGpzQ2FzdDxKU0Rl
c3RydWN0aWJsZU9iamVjdCo+KGNlbGwpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJv
eShjZWxsKTsKKyAgICAgICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4oanNDZWxsKS0+
Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koanNDZWxsKTsKICAgICBjZWxsLT56YXAo
KTsKIH0KIApAQCAtMTAzLDcgKzEwNSw3IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRC
bG9jazo6c3BlY2kKICAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkICYmIChtX21hcmtz
LmdldChpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAog
ICAgICAgICBpZiAoY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KQogICAgICAg
ICAgICAgY2FsbERlc3RydWN0b3IoY2VsbCk7CkBAIC0xNzEsNyArMTczLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNl
bGwpCisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwpCiAgICAg
ewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpID09IG1fYmxvY2sp
OwogICAgICAgICBtX2Jsb2NrLT5zZXROZXdseUFsbG9jYXRlZChjZWxsKTsKQEAgLTIxMyw3ICsy
MTUsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpzdG9wQWxsb2NhdGluZyhjb25zdCBGCiAgICAgRnJl
ZUNlbGwqIG5leHQ7CiAgICAgZm9yIChGcmVlQ2VsbCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0OwotICAgICAg
ICByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGN1cnJlbnQpLT56YXAoKTsKKyAgICAgICAgaWYg
KG1fbmVlZHNEZXN0cnVjdGlvbikKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SGVhcENl
bGwqPihjdXJyZW50KS0+emFwKCk7CiAgICAgICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY3VycmVu
dCk7CiAgICAgfQogICAgIApAQCAtMjkwLDcgKzI5Myw4IEBAIHZvaWQgTWFya2VkQmxvY2s6OmRp
ZFJldGlyZUJsb2NrKGNvbnN0IEYKICAgICBGcmVlQ2VsbCogbmV4dDsKICAgICBmb3IgKEZyZWVD
ZWxsKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IG5leHQpIHsKICAgICAgICAg
bmV4dCA9IGN1cnJlbnQtPm5leHQ7Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4o
Y3VycmVudCktPnphcCgpOworICAgICAgICBpZiAobV9uZWVkc0Rlc3RydWN0aW9uKQorICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KGN1cnJlbnQpLT56YXAoKTsKICAgICB9
CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NiArMjIsNyBAQAogI2lmbmRlZiBNYXJrZWRCbG9ja19oCiAjZGVmaW5lIE1hcmtlZEJsb2NrX2gK
IAorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSGVhcE9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkl0ZXJhdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIldlYWtTZXQuaCIKQEAgLTUzLDgg
KzU0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwog
Ci0gICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsKLSAgICAKICAgICAvLyBBIG1hcmtl
ZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9i
amVjdHMuCiAgICAgLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUg
bWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogICAgIC8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxz
IGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRoYW4gdGhlCkBAIC05OSwxMSAr
OTgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB0eXBlZGVmIHNpemVfdCBSZXR1
cm5UeXBlOwogCiAgICAgICAgICAgICBDb3VudEZ1bmN0b3IoKSA6IG1fY291bnQoMCkgeyB9Ci0g
ICAgICAgICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkgeyBtX2NvdW50ICs9IGNvdW50OyB9
Ci0gICAgICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkgeyByZXR1cm4gbV9jb3VudDsg
fQorICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291bnQpIGNvbnN0IHsgbV9jb3VudCAr
PSBjb3VudDsgfQorICAgICAgICAgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY291bnQ7IH0KIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgUmV0dXJu
VHlwZSBtX2NvdW50OworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbXV0YWJsZSBiZWNh
dXNlIHdlJ3JlIHVzaW5nIGEgZnVuY3RvciByYXRoZXIgdGhhbiBDKysgbGFtYmRhcy4KKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQK
KyAgICAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgICB9OwogCiAg
ICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3Iq
LCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
KTsKQEAgLTE0NywxNiArMTQ4LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHNpemVf
dCBjZWxsU2l6ZSgpOwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAg
ICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qg
c2l6ZSgpOwogICAgICAgICBzaXplX3QgY2FwYWNpdHkoKTsKIAogICAgICAgICBib29sIGlzTWFy
a2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZv
aWQqKTsKLSAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wg
aXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2
b2lkKik7CiAgICAgICAgIGJvb2wgaXNBdG9tKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBp
c01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNN
YXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIHZvaWQgc2V0
TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lk
Kik7CiAKQEAgLTE3MCw5ICsxNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBk
aWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlzdCYpOwogICAgICAgICB2b2lkIHdpbGxSZW1vdmVC
bG9jaygpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaENlbGwoRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7Ci0gICAg
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERl
YWRDZWxsKEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0
ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNv
bnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJh
dGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21T
aXplIC0gMTsKQEAgLTE4MiwxMCArMTg0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXplXTsKIAotICAgICAgICBNYXJrZWRCbG9jayhNYXJr
ZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uKTsKKyAgICAgICAgTWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6
ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVh
cENlbGw6OktpbmQpOwogICAgICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICBzaXplX3QgYXRv
bU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxs
Kik7CisgICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSGVhcENlbGwqKTsKICAgICAgICAgdGVt
cGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBib29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxp
c3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1f
cHJldjsKQEAgLTE5OCw2ICsyMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXpl
X3QgbV9jYXBhY2l0eTsKICAgICAgICAgYm9vbCBtX25lZWRzRGVzdHJ1Y3Rpb247CisgICAgICAg
IEhlYXBDZWxsOjpLaW5kIG1fY2VsbEtpbmQ7CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3RhdGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBt
X3dlYWtTZXQ7CkBAIC0zMDMsNiArMzA2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgIH0KIAorICAgIGlubGluZSBIZWFwQ2VsbDo6
S2luZCBNYXJrZWRCbG9jazo6Y2VsbEtpbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fY2VsbEtpbmQ7CisgICAgfQorCiAgICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gbWFya0NvdW50KCkgKiBjZWxsU2l6ZSgpOwpAQCAt
MzYzLDEzICszNzEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxs
b2NhdGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmV0aXJlZCB8fCBtX3N0YXRlID09IE1hcmtlZCk7CiAg
ICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKGNlbGwpKSB8fCAobV9uZXdseUFs
bG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUg
Ym9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgICAgIGNhc2UgQWxsb2NhdGVkOgpAQCAtNDA3
LDQwICs0MTUsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpZiAoIWlzQXRv
bShwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIGlzTGl2ZShz
dGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihwKSk7CisgICAgICAgIHJldHVybiBpc0xpdmUoc3Rh
dGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVh
Y2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9j
ZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRB
dG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBy
ZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBp
ZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBI
ZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClb
aV0pOworICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25T
dGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtl
ZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7Cisg
ICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwp
IHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2Vs
bCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAoIWlz
TGl2ZShjZWxsKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYg
KGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgaWYg
KGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAg
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZv
ckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENl
bGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5k
IGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7
IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2Vs
bCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAg
ICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwq
PigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAoaXNMaXZlKGNlbGwpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVy
YXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6RG9uZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDYgQEAgc3RydWN0IFpvbWJpZnlT
d2VlcCA6IE1hcmtlZEJsb2NrOjpWb2lkRgogICAgIH0KIH07CiAKLXN0cnVjdCBNYXJrQ291bnQg
OiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2Vk
QmxvY2sqIGJsb2NrKSB7IGNvdW50KGJsb2NrLT5tYXJrQ291bnQoKSk7IH0KLX07Ci0KLXN0cnVj
dCBTaXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigp
KE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChibG9jay0+bWFya0NvdW50KCkgKiBibG9jay0+
Y2VsbFNpemUoKSk7IH0KLX07Ci0KIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShNYXJrZWRTcGFjZSk7CiBwdWJsaWM6CkBAIC0xMTIsMTIgKzEwNCw5IEBAIHB1
YmxpYzoKIAogICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9j
a0l0ZXJhdG9yOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVu
Y3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVu
Y3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6
OlJldHVyblR5cGUgZm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9y
RWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hE
ZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJu
VHlwZSBmb3JFYWNoQmxvY2soKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwoSGVhcEl0
ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHZvaWQgc2hy
aW5rKCk7CiAgICAgdm9pZCBmcmVlQmxvY2soTWFya2VkQmxvY2sqKTsKQEAgLTE0Myw4ICsxMzIs
NyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgZm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIFN1YnNw
YWNlIG1fZGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CkBAIC0x
NTYsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nr
c1dpdGhOZXdPYmplY3RzOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2Vs
bChIZWFwSXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFw
SXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEFTU0VSVChp
c0l0ZXJhdGluZygpKTsKICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVu
ZCgpOwpAQCAtMTY0LDE2ICsxNTIsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdHlwZW5hCiAgICAgICAgIGlmICgoKml0KS0+Zm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09
IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBy
ZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9y
RWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYgc2NvcGUpCi17Ci0gICAgRnVuY3RvciBm
dW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoTGl2ZUNlbGwoc2NvcGUsIGZ1bmN0b3IpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYs
IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJs
b2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0xODEsMTMgKzE2Miw2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYg
KCgqaXQpLT5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZh
bHVlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBG
dW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJh
dGlvblNjb3BlJiBzY29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZv
ckVhY2hEZWFkQ2VsbChzY29wZSwgZnVuY3Rvcik7CiB9CiAKIGlubGluZSBNYXJrZWRBbGxvY2F0
b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQpAQCAtMjIwLDcgKzE5
NCw3IEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGUKICAgICByZXR1
cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByZWNpc2VDb3VudDsgKytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKQEAgLTIzMywxNCArMjA3LDYgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbgogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1w
cmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9kZXN0cnVj
dG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotCi0gICAgcmV0
dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JF
YWNoQmxvY2soKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwogfQogCiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2so
TWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjU2LDEyICsyMjIsMjIgQEAgaW5saW5lIHZvaWQgTWFy
a2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbAogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpv
YmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxNYXJrQ291bnQ+KCk7Cisg
ICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1h
cmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291
bnQoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHNpemVf
dCBNYXJrZWRTcGFjZTo6c2l6ZSgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxTaXplPigp
OworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZd
IChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBibG9jay0+bWFy
a0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6Y2FwYWNpdHkoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDIwMzA2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkVu
dW1lcmF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5o
IgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1
ZGUgIkpTVHlwZUluZm8uaCIKQEAgLTY0LDcgKzY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCogYWxsb2NhdGVDZWxsKAogICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBzdGF0aWMgY29u
c3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KIAotY2xhc3Mg
SlNDZWxsIHsKK2NsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgZnJpZW5kIGNs
YXNzIEpTVmFsdWU7CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwpAQCAtMTU1LDkg
KzE1Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBF
eGVjU3RhdGUqLCBFQ01BTW9kZSk7CiAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Kio+KHRoaXMpID0gMDsgfQotICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7
IHJldHVybiAhKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9Ci0K
ICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJl
Jik7CiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9w
ZXJ0eU5hbWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDYg
QEAgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgcmV0dXJuIGFsbG9jYXRlQ2Vs
bDxUPihoZWFwLCBzaXplb2YoVCkpOwogfQogICAgIAotaW5saW5lIGJvb2wgaXNaYXBwZWQoY29u
c3QgSlNDZWxsKiBjZWxsKQotewotICAgIHJldHVybiBjZWxsLT5pc1phcHBlZCgpOwotfQotCiBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHlwZUlu
Zm86OmlzT2JqZWN0KG1fdHlwZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283368</attachid>
            <date>2016-07-11 17:14:10 -0700</date>
            <delta_ts>2016-07-11 17:32:06 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57165</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9I
YW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3Bw
CisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAg
IGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQwLDYgKzExNDAsMTAgQEAKIAkJMkFGNzM4MkMxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OworCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
aW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJf
aGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxMjk1MjdBMUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEyOTUyNzYxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUEx
MzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCAqLzsgfTsKQEAgLTE0NzQsMTAgKzE0NzgsNiBAQAogCQk5OURBMDBBODFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5
RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBi
dWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzgxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0
aW9uLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWls
dGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1
QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFEMUJENTk5M0Uw
MEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5REEwMEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250
ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTk5Miw2ICsxOTkyLDggQEAK
IAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3RTgxNjFDOUM4MDJCMDA4
QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4
ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi87IH07CiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKKwkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKIAkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07CiAJCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKQEAgLTQyMjQsNiArNDIyNiw4IEBACiAJCURDMTdF
ODE2MUM5QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMyMTQzMDUxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJE
dW1wQXNKUy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYw
NUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE5MSw2
ICs1MTk1LDggQEAKIAkJCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMu
aCAqLywKIAkJCQkxNEJBN0E5NTEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTRCQTdBOTYxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCAqLywKKwkJCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAorCQkJCURDM0QyQjA5MUQzNDMxNjEwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oICovLAogCQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBI
ZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhl
YXBIZWxwZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJ
bmxpbmVzLmggKi8sCkBAIC03MjcwLDYgKzcyNzYsNyBAQAogCQkJCTBGRkI5MjFBMTZEMDJFQzUw
MDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCQkQ5NjFDNUZGM0Y1MDAyM0VGMjMgLyogQjNTcGFyc2VDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENl
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdC
bG9ja01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8q
IERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MTIsNiArOTQx
OSw3IEBACiAJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREMzRDJCMEMxRDM0Mzc3
MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdE
N0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqCkBAIC00MCwxNCArNDAsMjEgQEAgbmFtZXNwYWNlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBHYXRoZXJTb3VyY2VQcm92aWRlcnMgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBIYXNoU2V0PFNvdXJjZVByb3Zp
ZGVyKj4gc291cmNlUHJvdmlkZXJzOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBm
aWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11dGFibGUgSGFzaFNldDxT
b3VyY2VQcm92aWRlcio+IHNvdXJjZVByb3ZpZGVyczsKICAgICBKU0dsb2JhbE9iamVjdCogbV9n
bG9iYWxPYmplY3Q7CiAKICAgICBHYXRoZXJTb3VyY2VQcm92aWRlcnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpIHsg
fQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0
ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6Oktp
bmQga2luZCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChraW5kICE9IEhlYXBDZWxsOjpKU0Nl
bGwpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxs
KTsKKyAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKQEAgLTE5MSw3ICsxOTgsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKKyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2RlID09IFN0ZXBwaW5nTW9k
ZUVuYWJsZWQpCkBAIC0yOTgsNyArMzA1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBvcGVyYXRv
cigpKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fZGVi
dWdnZXIgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKICAgICAgICAg
ICAgIG1fZGVidWdnZXItPnRvZ2dsZUJyZWFrcG9pbnQoY29kZUJsb2NrLCBtX2JyZWFrcG9pbnQs
IG1fZW5hYmxlZE9yTm90KTsKQEAgLTQ3NCw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29s
IG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9kZWJ1Z2dlciA9PSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQogICAgICAgICAgICAgY29kZUJsb2Nr
LT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKQEAgLTUwNCw3ICs1MTEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykK
KyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9nbG9iYWxP
YmplY3QgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+Y2xlYXJEZWJ1Z2dlclJlcXVlc3RzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIC8vIFZpc2l0cyBlYWNoIENvZGVCbG9jayBpbiB0aGUgaGVhcCB1bnRp
bCB0aGUgdmlzaXRvciBmdW5jdGlvbiByZXR1cm5zIHRydWUKICAgICAvLyB0byBpbmRpY2F0ZSB0
aGF0IGl0IGlzIGRvbmUgaXRlcmF0aW5nLCBvciB1bnRpbCBldmVyeSBDb2RlQmxvY2sgaGFzIGJl
ZW4KICAgICAvLyB2aXNpdGVkLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZShGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBjb2RlQmxvY2sgOiBt
X29sZENvZGVCbG9ja3MpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNl
dC5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSGFuZGxl
LmgiCiAjaW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtNzksNyArODAs
NyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFu
ZGxlKEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKGNv
bnN0IEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7CiAK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYW5kbGVOb2RlIE5vZGU7CkBAIC0xODAsNyArMTgxLDcg
QEAgaW5saW5lIEhhbmRsZU5vZGUqIEhhbmRsZU5vZGU6Om5leHQoKQogICAgIHJldHVybiBtX25l
eHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgSGFuZGxlU2V0Ojpmb3JF
YWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImIGZ1bmN0b3IsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpT
Q2VsbCo+JiBza2lwU2V0KQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVT
ZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFz
aENvdW50ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCiB7CiAgICAgSGFuZGxlU2V0OjpOb2RlKiBl
bmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICAgZm9yIChIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUg
PSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDMwNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUyLDYxICsyNTIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRUaHJlYWRTdGF0
ZShWTQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgQ291bnQgOiBwdWJsaWMgTWFya2Vk
QmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopIHsgY291
bnQoMSk7IH0KLX07Ci0KLXN0cnVjdCBDb3VudElmR2xvYmFsT2JqZWN0IDogTWFya2VkQmxvY2s6
OkNvdW50RnVuY3RvciB7Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQotICAg
IHsKLSAgICAgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpZiAoIWFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjb3VudCgxKTsKLSAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVz
IG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Ci0g
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotICAgIH0KLX07Ci0KLWNs
YXNzIFJlY29yZFR5cGUgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gUmV0dXJuVHlwZTsKLQotICAgIFJlY29yZFR5cGUoKTsKLSAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gbV90eXBlQ291bnRTZXQ7Ci19OwotCi1pbmxp
bmUgUmVjb3JkVHlwZTo6UmVjb3JkVHlwZSgpCi0gICAgOiBtX3R5cGVDb3VudFNldChzdGQ6Om1h
a2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKSkKLXsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIFJl
Y29yZFR5cGU6OnR5cGVOYW1lKEpTQ2VsbCogY2VsbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWNv
cmRUeXBlKFR5cGVDb3VudFNldCYgc2V0LCBKU0NlbGwqIGNlbGwpCiB7CisgICAgY29uc3QgY2hh
ciogdHlwZU5hbWUgPSAiW3Vua25vd25dIjsKICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBj
ZWxsLT5jbGFzc0luZm8oKTsKLSAgICBpZiAoIWluZm8gfHwgIWluZm8tPmNsYXNzTmFtZSkKLSAg
ICAgICAgcmV0dXJuICJbdW5rbm93bl0iOwotICAgIHJldHVybiBpbmZvLT5jbGFzc05hbWU7Ci19
Ci0KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgUmVjb3JkVHlwZTo6b3BlcmF0b3IoKShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgbV90eXBlQ291bnRTZXQtPmFkZCh0eXBlTmFtZShjZWxsKSk7Ci0gICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLWlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeXBlOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0
dXJuIFdURk1vdmUobV90eXBlQ291bnRTZXQpOworICAgIGlmIChpbmZvICYmIGluZm8tPmNsYXNz
TmFtZSkKKyAgICAgICAgdHlwZU5hbWUgPSBpbmZvLT5jbGFzc05hbWU7CisgICAgc2V0LmFkZCh0
eXBlTmFtZSk7CiB9CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtNzcxLDkgKzcyMywx
MiBAQCBzdHJ1Y3QgR2F0aGVySGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsCiAgICAgewogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogaGVhcENlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIGNvbnN0CiAgICAgewotICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFw
U25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6
OkpTQ2VsbCkgeworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcENlbGwpOworICAgICAgICAgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+aGVhcFNuYXBz
aG90KGNlbGwsIG1fYnVpbGRlcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC03OTYsOSArNzUxLDEwIEBAIHN0cnVjdCBS
ZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXMgOiBNYXIKICAgICB7CiAgICAgfQogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAog
ICAgIHsKLSAgICAgICAgbV9zbmFwc2hvdC5zd2VlcENlbGwoY2VsbCk7CisgICAgICAgIGlmIChr
aW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2Vs
bChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIApAQCAtOTk4LDI5ICs5NTQsNjQgQEAgc2l6ZV90IEhl
YXA6OmNhcGFjaXR5KCkKIAogc2l6ZV90IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50
KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291bnRJZkdsb2JhbE9iamVj
dD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgK
KyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzaXpl
X3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQoKQogewogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBzaXplX3Qg
cmVzdWx0ID0gMDsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2Vs
bDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgaWYgKGtpbmQg
IT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGhlYXBDZWxsKTsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpICYmIGFz
T2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsr
OworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmpl
Y3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRDZWxsPENvdW50PigpOwor
ICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAg
ICBbJl0gKEpTQ2VsbCopIHsKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFw
Ojpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3Rl
Y3RlZENlbGw8UmVjb3JkVHlwZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBmb3JFYWNo
UHJvdGVjdGVkQ2VsbCgKKyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgY2VsbCk7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVD
b3VudHMoKQogeworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPFJlY29yZFR5cGU+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgaXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVh
cENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Cisg
ICAgICAgICAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcygpCkBA
IC0xMzA1LDkgKzEyOTYsMTEgQEAgc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDog
cHVibAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJs
b2NrKSB7IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsgfQorICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRCbG9jayogYmxvY2spIGNvbnN0IHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2Nr
OyB9CiAKLSAgICBzaXplX3QgbV9pbmRleDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFi
bGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICBtdXRhYmxlIHNpemVf
dCBtX2luZGV4OwogICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+JiBtX2Jsb2NrczsKIH07CiAKQEAg
LTE1NzgsNyArMTU3MSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVS
ZWMKIAogY2xhc3MgWm9tYmlmeSA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3Igewog
cHVibGljOgotICAgIGlubGluZSB2b2lkIHZpc2l0KEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUg
dm9pZCB2aXNpdChIZWFwQ2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAgICAgIHZvaWQqKiBj
dXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNlbGwpOwogCkBAIC0xNTkxLDcgKzE1
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoOyBjdXJyZW50IDwgbGltaXQ7IGN1cnJlbnQr
KykKICAgICAgICAgICAgICpjdXJyZW50ID0gem9tYmlmaWVkQml0czsKICAgICB9Ci0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7
CiAgICAgICAgIHZpc2l0KGNlbGwpOwogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKQEAgLTE2MDMsNyArMTU5Niw3IEBAIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmpl
Y3RzKCkKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9u
Y2Ugd2UncmUgem9tYmlmaWVkLgogICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CiAg
ICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICBtX29iamVj
dFNwYWNlLmZvckVhY2hEZWFkQ2VsbDxab21iaWZ5PihpdGVyYXRpb25TY29wZSk7CisgICAgbV9v
YmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9
CiAKIHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKiBjZWxsKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2
LDggQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJr
TGlzdFNldCgpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaFByb3RlY3RlZENlbGwoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5j
dG9yJik7CiAKICAgICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hhbmRsZVNl
dDsgfQogICAgIEhhbmRsZVN0YWNrKiBoYW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hhbmRsZVN0
YWNrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBIZWFwQ2VsbDo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNh
c2UgSGVhcENlbGw6OkpTQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJKU0NlbGwiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgSGVhcENlbGw6OlN0b3JhZ2U6CisgICAgICAgIG91dC5wcmlu
dCgiU3RvcmFnZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7CitwdWJsaWM6CisgICAg
ZW51bSBLaW5kIDogaW50OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAgICBTdG9yYWdlCisg
ICAgfTsKKyAgICAKKyAgICBIZWFwQ2VsbCgpIHsgfQorICAgIAorICAgIHZvaWQgemFwKCkgeyAq
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CisgICAgYm9vbCBpc1ph
cHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6SGVhcENlbGw6OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjUsNyArMTY1LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4
dHJhTQogICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFj
aENvZGVCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIC8vIFdlIGRvbid0IGtub3cgdGhlIGZ1bGwgc2V0IG9mIENvZGVCbG9ja3MgdW50
aWwgY29tcGlsYXRpb24gaGFzIHRlcm1pbmF0ZWQuCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygp
OwpAQCAtMTczLDE5ICsxNzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHZvaWQgSAogICAgIHJldHVybiBtX2NvZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihmdW5jdG9y
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVuY3Rv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2hQ
cm90ZWN0ZWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCiAgICAgICAgIGZ1bmN0b3IocGFpci5rZXkpOwogICAg
IG1faGFuZGxlU2V0LmZvckVhY2hTdHJvbmdIYW5kbGUoZnVuY3RvciwgbV9wcm90ZWN0ZWRWYWx1
ZXMpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVh
cDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBy
ZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIwMzA2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVi
bGljIE1hcmtlZEIKIHB1YmxpYzoKICAgICBTdG9yYWdlU3RhdGlzdGljcygpOwogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9w
ZXJhdG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKICAgICBzaXplX3Qg
b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOwogICAgIHNpemVfdCBvYmplY3RDb3Vu
dCgpOwpAQCAtMTkwLDkgKzE5MCwxMyBAQCBpbmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6
dmlzaXQoSlNDCiAgICAgbV9zdG9yYWdlQ2FwYWNpdHkgKz0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KTsgCiB9CiAKLWlubGluZSBJdGVyYXRpb25TdGF0dXMgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJh
dG9yKCkoSlNDZWxsKiBjZWxsKQoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3RhdGlz
dGljczo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29u
c3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxs
KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhp
cyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3RfY2FzdDxTdG9yYWdlU3RhdGlz
dGljcyo+KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQog
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw5ICsxMjAsMTMgQEAgc3RydWN0IEdhdGhlckxpdmVPYmpGdW5jdG9yIDog
TWFya2VkQmxvYwogICAgICAgICBtX2xpc3QubGl2ZU9iamVjdHMuYXBwZW5kKGRhdGEpOwogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQg
a2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIHZpc2l0KGNlbGwpOworICAgICAgICBpZiAoa2lu
ZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25z
dF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAg
ICAgICAgICAgY29uc3RfY2FzdDxHYXRoZXJMaXZlT2JqRnVuY3Rvcio+KHRoaXMpLT52aXNpdChz
dGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwMzA2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE4Niw3ICsxODYsMTAgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsb2NhdGVCbAogCiAgICAgc2l6ZV90IGNlbGxTaXplID0gbV9jZWxsU2l6ZSA/
IG1fY2VsbFNpemUgOiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21T
aXplPihieXRlcyk7CiAKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZSgqbV9oZWFwLCB0
aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX25lZWRzRGVzdHJ1Y3Rpb24pOworICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGFsbG9jYXRpbmcgc3RvcmFnZSBpbiBtYXJrZWQgYmxvY2tzLiBUaGlzIHdv
dWxkIG1lYW4gdGhhdCBhbGxvY2F0ZUJsb2NrKCkKKyAgICAvLyB0YWtlcyBhIEhlYXBDZWxsOjpL
aW5kLCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NTgKKyAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0
ZSgqbV9oZWFwLCB0aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX25lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2so
TWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjMzLDE1ICsyMzYsMTMgQEAgdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnJlc2V0KCkKICAgICB9CiB9CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSA6
IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKiBibG9jaykgeyBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsgfQotfTsKLQogdm9p
ZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBtX2Jsb2Nr
TGlzdC5hcHBlbmQobV9yZXRpcmVkQmxvY2tzKTsKLSAgICBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSBm
dW5jdG9yOwotICAgIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3JFYWNoQmxvY2soCisg
ICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBibG9jay0+bGFz
dENoYW5jZVRvRmluYWxpemUoKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJ
KHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJsb2NrOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiB2b2lkIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZv
aWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJs
b2NrKik7CkBAIC0xNTEsNyArMTUxLDcgQEAgaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXN1bWVBbGxvYwogICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKICAgICBNYXJrZWRCbG9jayogbmV4dDsKICAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9
IG1fYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjAzMDY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9v
bCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJr
ZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbikKK01hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAs
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxs
U2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCkKIHsK
ICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwogICAgICAgICBp
ZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFs
YW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9
IG5ldyAoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1h
cmtlZEJsb2NrKGFsbG9jYXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9u
KTsKKyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGZhc3RBbGlnbmVkTWFs
bG9jKGJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBNYXJrZWRCbG9jayhhbGxvY2F0b3IsIGNhcGFjaXR5
LCBjZWxsU2l6ZSwgbmVlZHNEZXN0cnVjdGlvbiwgY2VsbEtpbmQpOwogICAgIGhlYXAuZGlkQWxs
b2NhdGVCbG9jayhjYXBhY2l0eSk7CiAgICAgcmV0dXJuIGJsb2NrOwogfQpAQCAtNjAsMTIgKzYw
LDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koSGVhcCYgaGVhcCwgTWEKICAgICBoZWFw
LmRpZEZyZWVCbG9jayhjYXBhY2l0eSk7CiB9CiAKLU1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKK01hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQpCiAgICAgOiBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxNYXJrZWRCbG9jaz4oKQogICAgICwgbV9hdG9tc1BlckNlbGwo
KGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKChh
bGxvY2F0b3ItPmNlbGxTaXplKCkgPyBhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgOiBm
aXJzdEF0b20oKSkgKyAxKQogICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAsIG1fbmVl
ZHNEZXN0cnVjdGlvbihuZWVkc0Rlc3RydWN0aW9uKQorICAgICwgbV9jZWxsS2luZChjZWxsS2lu
ZCkKICAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3KSAvLyBB
bGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgogICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+
aGVhcCgpLT52bSgpLCAqdGhpcykKQEAgLTc0LDE3ICs3NSwxOSBAQCBNYXJrZWRCbG9jazo6TWFy
a2VkQmxvY2soTWFya2VkQWxsb2NhdG9yCiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9y
KEpTQ2VsbCogY2VsbCkKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihI
ZWFwQ2VsbCogY2VsbCkKIHsKICAgICAvLyBBIHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJl
YWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVjdG9yLgogICAgIGlmIChjZWxsLT5pc1phcHBlZCgp
KQogICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNDZWxsKiBqc0NlbGwgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihjZWxsKTsKIAotICAgIEFTU0VSVChjZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKLSAg
ICBpZiAoY2VsbC0+aW5saW5lVHlwZUZsYWdzKCkgJiBTdHJ1Y3R1cmVJc0ltbW9ydGFsKQotICAg
ICAgICBjZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVz
dHJveShjZWxsKTsKKyAgICBBU1NFUlQoanNDZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBpZiAo
anNDZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpCisgICAgICAg
IGpzQ2VsbC0+c3RydWN0dXJlKCp2bSgpKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ry
b3koanNDZWxsKTsKICAgICBlbHNlCi0gICAgICAgIGpzQ2FzdDxKU0Rlc3RydWN0aWJsZU9iamVj
dCo+KGNlbGwpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKKyAgICAg
ICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4oanNDZWxsKS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koanNDZWxsKTsKICAgICBjZWxsLT56YXAoKTsKIH0KIApAQCAtMTAz
LDcgKzEwNiw3IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2kKICAg
ICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkICYmIChtX21hcmtzLmdldChpKSB8fCAobV9u
ZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVy
cHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAogICAgICAgICBpZiAoY2Fs
bERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KQogICAgICAgICAgICAgY2FsbERlc3Ry
dWN0b3IoY2VsbCk7CkBAIC0xNzEsNyArMTc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKSA9PSBt
X2Jsb2NrKTsKICAgICAgICAgbV9ibG9jay0+c2V0TmV3bHlBbGxvY2F0ZWQoY2VsbCk7CkBAIC0y
MTMsNyArMjE2LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRgog
ICAgIEZyZWVDZWxsKiBuZXh0OwogICAgIGZvciAoRnJlZUNlbGwqIGN1cnJlbnQgPSBoZWFkOyBj
dXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dDsK
LSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjdXJyZW50KS0+emFwKCk7CisgICAg
ICAgIGlmIChtX25lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PEhlYXBDZWxsKj4oY3VycmVudCktPnphcCgpOwogICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVk
KGN1cnJlbnQpOwogICAgIH0KICAgICAKQEAgLTI5MCw3ICsyOTQsOCBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpkaWRSZXRpcmVCbG9jayhjb25zdCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9y
IChGcmVlQ2VsbCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAg
ICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KGN1cnJlbnQpLT56YXAoKTsKKyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikK
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7
CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwMzA2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgTWFya2VkQmxvY2tfaAogI2RlZmluZSBNYXJrZWRC
bG9ja19oCiAKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKICNpbmNsdWRlICJJdGVyYXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJXZWFrU2V0LmgiCkBA
IC01Myw4ICs1NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiB1aW50cHRyX3Qg
Qml0czsKIAotICAgIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgCiAgICAgLy8g
QSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9j
YXRlZCBvYmplY3RzLgogICAgIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMg
b2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KICAgICAvLyBtYXJrZWQgYmxvY2ssIGFs
bCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAt
OTksMTQgKzk4LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdHlwZWRlZiBzaXpl
X3QgUmV0dXJuVHlwZTsKIAogICAgICAgICAgICAgQ291bnRGdW5jdG9yKCkgOiBtX2NvdW50KDAp
IHsgfQotICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291bnQpIHsgbV9jb3VudCArPSBj
b3VudDsgfQotICAgICAgICAgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1f
Y291bnQ7IH0KKyAgICAgICAgICAgIHZvaWQgY291bnQoc2l6ZV90IGNvdW50KSBjb25zdCB7IG1f
Y291bnQgKz0gY291bnQ7IH0KKyAgICAgICAgICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NvdW50OyB9CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAg
IFJldHVyblR5cGUgbV9jb3VudDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG11dGFi
bGUgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIGZ1bmN0b3IgcmF0aGVyIHRoYW4gQysrIGxhbWJkYXMu
CisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5NjQ0CisgICAgICAgICAgICBtdXRhYmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICAgICAg
fTsKIAotICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShIZWFwJiwgTWFya2VkQWxs
b2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbik7CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAmLCBNYXJr
ZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSGVhcCYsIE1hcmtlZEJsb2NrKik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxp
Z25lZChjb25zdCB2b2lkKik7CkBAIC0xNDcsMTYgKzE0OCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uKCkgY29uc3Q7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3Q7CiAK
ICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CiAKICAg
ICAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgdGVzdEFuZFNl
dE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCop
OworICAgICAgICBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlz
TGl2ZUNlbGwoY29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7
Ci0gICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwor
ICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwog
ICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJN
YXJrZWQoY29uc3Qgdm9pZCopOwogCkBAIC0xNzAsOSArMTcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZGlkUmV0aXJlQmxvY2soY29uc3QgRnJlZUxpc3QmKTsKICAgICAgICAg
dm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwo
RnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYp
OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3Im
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdu
bWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CkBAIC0xODIsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAg
TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2Vs
bFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CisgICAgICAgIE1hcmtlZEJsb2NrKE1hcmtl
ZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAg
ICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCopOworICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEhlYXBDZWxs
Kik7CiAgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgYm9vbCBjYWxsRGVz
dHJ1Y3RvcnM+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAgICAgICAg
IE1hcmtlZEJsb2NrKiBtX3ByZXY7CkBAIC0xOTgsNiArMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgICAgIGJvb2wgbV9uZWVkc0Rlc3Ry
dWN0aW9uOworICAgICAgICBIZWFwQ2VsbDo6S2luZCBtX2NlbGxLaW5kOwogICAgICAgICBNYXJr
ZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7CiAg
ICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwpAQCAtMzAzLDYgKzMwNiwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICB9CiAKKyAgICBp
bmxpbmUgSGVhcENlbGw6OktpbmQgTWFya2VkQmxvY2s6OmNlbGxLaW5kKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2NlbGxLaW5kOworICAgIH0KKwogICAgIGlubGluZSBzaXplX3Qg
TWFya2VkQmxvY2s6OnNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1hcmtDb3VudCgpICog
Y2VsbFNpemUoKTsKQEAgLTM2MywxMyArMzcxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFJldGlyZWQgfHwgbV9zdGF0
ZSA9PSBNYXJrZWQpOwogICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihjZWxs
KSkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBKU0NlbGwqIGNl
bGwpCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIEFs
bG9jYXRlZDoKQEAgLTQwNyw0MCArNDE1LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICAgICAgaWYgKCFpc0F0b20ocCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOworICAgICAgICBy
ZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JF
YWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKKyAgICAgICAgSGVhcENlbGw6
OktpbmQga2luZCA9IG1fY2VsbEtpbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0
b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICAgICAg
SlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0p
OwotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpEb25lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoRnVuY3Rv
ciYgZnVuY3RvcikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBNYXJrZWRCbG9jazo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgeworICAgICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7CisgICAgICAgICAgICBIZWFwQ2VsbCog
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogICAg
ICAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkK
KyAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9j
azo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAg
ICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigm
YXRvbXMoKVtpXSk7CisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogICAgICAgICAgICAgaWYgKGlzTGl2ZShj
ZWxsKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjcsMzEgKzI3LDYgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBGcmVlIDogTWFya2VkQmxvY2s6OlZvaWRGdW5j
dG9yIHsKLSAgICBGcmVlKE1hcmtlZFNwYWNlJiBzcGFjZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNl
KSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IG1fbWFya2Vk
U3BhY2UuZnJlZUJsb2NrKGJsb2NrKTsgfQotcHJpdmF0ZToKLSAgICBNYXJrZWRTcGFjZSYgbV9t
YXJrZWRTcGFjZTsKLX07Ci0KLXN0cnVjdCBGcmVlT3JTaHJpbmsgOiBNYXJrZWRCbG9jazo6Vm9p
ZEZ1bmN0b3IgewotICAgIEZyZWVPclNocmluayhNYXJrZWRTcGFjZSYgc3BhY2UpIDogbV9tYXJr
ZWRTcGFjZShzcGFjZSkgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9j
aykgeyBtX21hcmtlZFNwYWNlLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsgfQotcHJpdmF0ZToK
LSAgICBNYXJrZWRTcGFjZSYgbV9tYXJrZWRTcGFjZTsKLX07Ci0KLXN0cnVjdCBWaXNpdFdlYWtT
ZXQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIFZpc2l0V2Vha1NldChIZWFwUm9v
dFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikgOiBtX2hlYXBSb290VmlzaXRvcihoZWFwUm9vdFZp
c2l0b3IpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxv
Y2stPnZpc2l0V2Vha1NldChtX2hlYXBSb290VmlzaXRvcik7IH0KLXByaXZhdGU6Ci0gICAgSGVh
cFJvb3RWaXNpdG9yJiBtX2hlYXBSb290VmlzaXRvcjsKLX07Ci0KLXN0cnVjdCBSZWFwV2Vha1Nl
dCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtl
ZEJsb2NrKiBibG9jaykgeyBibG9jay0+cmVhcFdlYWtTZXQoKTsgfQotfTsKLQogTWFya2VkU3Bh
Y2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBtX2hlYXAoaGVhcCkKICAgICAsIG1f
Y2FwYWNpdHkoMCkKQEAgLTczLDI1ICs0OCwyOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2Uo
SGVhcCogaGVhcCkKIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCiB7Ci0gICAgRnJlZSBm
cmVlKCp0aGlzKTsKLSAgICBmb3JFYWNoQmxvY2soZnJlZSk7CisgICAgZm9yRWFjaEJsb2NrKAor
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgZnJlZUJsb2Nr
KGJsb2NrKTsKKyAgICAgICAgfSk7CiAgICAgQVNTRVJUKCFtX2Jsb2Nrcy5zZXQoKS5zaXplKCkp
OwogfQogCi1zdHJ1Y3QgTGFzdENoYW5jZVRvRmluYWxpemUgewotICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyBhbGxvY2F0b3IubGFzdENoYW5jZVRvRmlu
YWxpemUoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUo
KQogewogICAgIHN0b3BBbGxvY2F0aW5nKCk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxMYXN0Q2hh
bmNlVG9GaW5hbGl6ZT4oKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgICAgICBhbGxvY2F0b3IubGFzdENo
YW5jZVRvRmluYWxpemUoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnN3
ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0g
ICAgZm9yRWFjaEJsb2NrPFN3ZWVwPigpOworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZd
IChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAg
ICAgICB9KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKQEAgLTk5LDcg
Kzc4LDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCiAgICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKICAg
ICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJs
b2NrPFpvbWJpZnlTd2VlcD4oKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFy
a2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzU3dlZXBpbmco
KSkKKyAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZv
aWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCkBAIC0xMjIsMTIgKzEwNSwxNSBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2
aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQogewotICAgIFZp
c2l0V2Vha1NldCB2aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kp
CiAgICAgICAgICAgICB2aXNpdFdlYWtTZXQobV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hCbG9jayh2aXNpdFdlYWtTZXQpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2sq
IGJsb2NrKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPnZpc2l0V2Vha1NldChtX2hlYXBSb290
VmlzaXRvcik7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6
OnJlYXBXZWFrU2V0cygpCkBAIC0xMzUsOCArMTIxLDEyIEBAIHZvaWQgTWFya2VkU3BhY2U6OnJl
YXBXZWFrU2V0cygpCiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVk
ZW5Db2xsZWN0aW9uKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nr
c1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3
T2JqZWN0c1tpXS0+cmVhcFdlYWtTZXQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJs
b2NrPFJlYXBXZWFrU2V0PigpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygK
KyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAg
YmxvY2stPnJlYXBXZWFrU2V0KCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtMjI0LDggKzIxNCwxMCBAQCB2b2lkIE1hcmtlZFNw
YWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygp
CiB7Ci0gICAgRnJlZU9yU2hyaW5rIGZyZWVPclNocmluaygqdGhpcyk7Ci0gICAgZm9yRWFjaEJs
b2NrKGZyZWVPclNocmluayk7CisgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtl
ZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOwor
ICAgICAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2so
TWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjkwLDggKzI4MiwxMiBAQCB2b2lkIE1hcmtlZFNwYWNl
OjpjbGVhck1hcmtzKCkKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0g
RWRlbkNvbGxlY3Rpb24pIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxv
Y2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhO
ZXdPYmplY3RzW2ldLT5jbGVhck1hcmtzKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hC
bG9jazxDbGVhck1hcmtzPigpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygK
KyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAg
YmxvY2stPmNsZWFyTWFya3MoKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KIAogI2lmbmRlZiBO
REVCVUcKICAgICBWZXJpZnlNYXJrZWRPclJldGlyZWQgdmVyaWZ5RnVuY3RvcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjAzMDY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0zNywzMyArMzcsNiBAQCBjbGFzcyBIZWFwOwogY2xhc3MgSGVhcEl0
ZXJhdGlvblNjb3BlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi1zdHJ1Y3QgQ2xl
YXJNYXJrcyA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigp
KE1hcmtlZEJsb2NrKiBibG9jaykKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5jbGVhck1hcmtzKCk7
Ci0gICAgfQotfTsKLQotc3RydWN0IFN3ZWVwIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsK
LSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5zd2VlcCgp
OyB9Ci19OwotCi1zdHJ1Y3QgWm9tYmlmeVN3ZWVwIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9y
IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQotICAgIHsKLSAgICAg
ICAgaWYgKGJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICBibG9jay0+c3dlZXAo
KTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgTWFya0NvdW50IDogTWFya2VkQmxvY2s6OkNvdW50RnVu
Y3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChi
bG9jay0+bWFya0NvdW50KCkpOyB9Ci19OwotCi1zdHJ1Y3QgU2l6ZSA6IE1hcmtlZEJsb2NrOjpD
b3VudEZ1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsg
Y291bnQoYmxvY2stPm1hcmtDb3VudCgpICogYmxvY2stPmNlbGxTaXplKCkpOyB9Ci19OwotCiBj
bGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2Up
OwogcHVibGljOgpAQCAtMTEyLDEyICs4NSw5IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgSGFz
aFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNo
TGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaExpdmVD
ZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRp
b25TY29wZSYsIEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2Nv
cGUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMaXZlQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVu
Y3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2Nr
KGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgdm9pZCBmcmVlQmxv
Y2soTWFya2VkQmxvY2sqKTsKQEAgLTE0Myw4ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihGdW5j
dG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2Nh
dG9yKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2Nh
dG9yKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIFN1YnNwYWNlIG1fZGVzdHJ1Y3RvclNwYWNlOwog
ICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CkBAIC0xNTYsNyArMTI1LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBG
dW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
TWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewogICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKICAgICBCbG9j
a0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwpAQCAtMTY0LDE2ICsxMzMsOSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hCiAgICAgICAgIGlmICgo
Kml0KS0+Zm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1
ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVu
Y3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRp
b25TY29wZSYgc2NvcGUpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9yOwotICAgIHJldHVybiBmb3JF
YWNoTGl2ZUNlbGwoc2NvcGUsIGZ1bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9y
RWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERl
YWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAg
ICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9j
a3Muc2V0KCkuZW5kKCk7CkBAIC0xODEsMTMgKzE0Myw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYgKCgqaXQpLT5mb3JFYWNoRGVhZENlbGwo
ZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiBzY29wZSkKLXsKLSAg
ICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hEZWFkQ2VsbChzY29wZSwgZnVu
Y3Rvcik7CiB9CiAKIGlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0
b3JGb3Ioc2l6ZV90IGJ5dGVzKQpAQCAtMjIwLDcgKzE3NSw3IEBAIGlubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGUKICAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZv
cihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVh
Y2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQogICAg
ICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5j
dG9yKTsKQEAgLTIzMywxNCArMTg4LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsr
aSkKICAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JF
YWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUo
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5j
dG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soKQotewotICAgIEZ1bmN0
b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogfQogCiBpbmxp
bmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAt
MjU2LDEyICsyMDMsMjIgQEAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5C
bAogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpvYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0
dXJuIGZvckVhY2hCbG9jazxNYXJrQ291bnQ+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7Cisg
ICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAg
ICAgICAgICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291bnQoKTsKKyAgICAgICAgfSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6c2l6ZSgpCiB7
Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxTaXplPigpOworICAgIHNpemVfdCByZXN1bHQgPSAw
OworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsK
KyAgICAgICAgICAgIHJlc3VsdCArPSBibG9jay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNp
emUoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHNpemVf
dCBNYXJrZWRTcGFjZTo6Y2FwYWNpdHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkVudW1lcmF0aW9uTW9kZS5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlw
ZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKQEAgLTY0
LDcgKzY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKAogICAg
IHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5m
bygpIHsgcmV0dXJuICZzX2luZm87IH0KIAotY2xhc3MgSlNDZWxsIHsKK2NsYXNzIEpTQ2VsbCA6
IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lk
KiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwpAQCAtMTU1LDkgKzE1Niw2IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CiAK
LSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kio+KHRoaXMpID0g
MDsgfQotICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAhKnJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9Ci0KICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VG
YXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJik7CiAgICAgSlNWYWx1ZSBmYXN0R2V0
T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAy
MDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDYgQEAgdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmIGhlYXApCiAgICAgcmV0dXJuIGFsbG9jYXRlQ2VsbDxUPihoZWFwLCBzaXplb2YoVCkpOwog
fQogICAgIAotaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKiBjZWxsKQotewotICAg
IHJldHVybiBjZWxsLT5pc1phcHBlZCgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2Jq
ZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHlwZUluZm86OmlzT2JqZWN0KG1fdHlwZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Nyw3ICs4NjcsNyBAQCBuYW1l
c3BhY2UgewogY2xhc3MgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRlciA6IHB1YmxpYyBN
YXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgogICAgIE9iamVjdHNXaXRoQnJva2Vu
SW5kZXhpbmdGaW5kZXIoTWFya2VkQXJndW1lbnRCdWZmZXImLCBKU0dsb2JhbE9iamVjdCopOwot
ICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOworICAgIEl0ZXJhdGlvblN0
YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiwgSGVhcENlbGw6OktpbmQpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIHZvaWQgdmlzaXQoSlNDZWxsKik7CkBAIC05MjQsOSArOTI0LDEzIEBAIGlubGlu
ZSB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICBtX2ZvdW5kT2JqZWN0cy5h
cHBlbmQob2JqZWN0KTsKIH0KIAotSXRlcmF0aW9uU3RhdHVzIE9iamVjdHNXaXRoQnJva2VuSW5k
ZXhpbmdGaW5kZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorSXRlcmF0aW9uU3RhdHVzIE9i
amVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Om9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGws
IEhlYXBDZWxsOjpLaW5kIGtpbmQpIGNvbnN0CiB7Ci0gICAgdmlzaXQoY2VsbCk7CisgICAgaWYg
KGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25z
dF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgICAg
IGNvbnN0X2Nhc3Q8T2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRlcio+KHRoaXMpLT52aXNp
dChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQogICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdHJ1Y3QgQ2VsbEFkZHJlc3NDaGVja0Z1
bmN0b3IgOiBNYXJrZWRCCiAgICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVy
YXRvcigpKEpTQ2VsbCogY2VsbCkgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3Io
KShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoY2VsbCA9PSBjYW5kaWRhdGUpIHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283370</attachid>
            <date>2016-07-11 17:32:06 -0700</date>
            <delta_ts>2016-07-12 11:36:16 -0700</delta_ts>
            <desc>OMG it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59994</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9I
YW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3Bw
CisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAg
IGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQwLDYgKzExNDAsMTAgQEAKIAkJMkFGNzM4MkMxOEJCQkY5MjAw
OEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovOyB9OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OworCQk0MTI5NTI3NzFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
aW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX2ludGVybmFsc193cmFwcGVyX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNG
NkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVt
ZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBw
ZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJf
aGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxMjk1MjdBMUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVy
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEyOTUyNzYxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUEx
MzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCAqLzsgfTsKQEAgLTE0NzQsMTAgKzE0NzgsNiBAQAogCQk5OURBMDBBODFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5
RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50
YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTQxMjk1Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19n
ZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBi
dWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzgxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0
aW9uLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dy
YXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NTFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUyN0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWls
dGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1
QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFEMUJENTk5M0Uw
MEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5REEwMEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250
ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTk5Miw2ICsxOTkyLDggQEAK
IAkJREMxN0U4MUExQzlDOTFFOTAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzE3RTgxNjFDOUM4MDJCMDA4
QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCAqLzsgfTsKIAkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4
ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi87IH07CiAJCURD
MjE0MzA4MUNBMzJFNTgwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJ
Q1N0YXRzLmNwcCAqLzsgfTsKKwkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIw
OTFEMzQzMTYxMDBCQTkxOEMgLyogSGVhcENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVh
cENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKIAkJREM0NTRC
OEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi87IH07CiAJCURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REM0NTRCOEIxRDAwRTgxRjAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1
QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAv
KiBQcm9maWxlckV2ZW50LmNwcCAqLzsgfTsKQEAgLTQyMjQsNiArNDIyNiw4IEBACiAJCURDMTdF
ODE2MUM5QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ0NhbGxIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREMyMTQzMDUxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURDMjE0MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURDM0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJE
dW1wQXNKUy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJEdW1wQXNKUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYw
NUI1OTFDRTI2RTk4MDA1OTM3MTggLyogUHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE5MSw2
ICs1MTk1LDggQEAKIAkJCQkxNDZGQTVBODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMu
aCAqLywKIAkJCQkxNEJBN0E5NTEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTRCQTdBOTYxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCAqLywKKwkJCQlEQzNEMkIwQjFEMzQz
NzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovLAorCQkJCURDM0QyQjA5MUQzNDMxNjEwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oICovLAogCQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBI
ZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJCQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhl
YXBIZWxwZXJQb29sLmggKi8sCiAJCQkJQzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJ
bmxpbmVzLmggKi8sCkBAIC03MjcwLDYgKzcyNzYsNyBAQAogCQkJCTBGRkI5MjFBMTZEMDJFQzUw
MDU1QTVEQiAvKiBERkdCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCQkQ5NjFDNUZGM0Y1MDAyM0VGMjMgLyogQjNTcGFyc2VDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENl
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdC
bG9ja01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8q
IERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MTIsNiArOTQx
OSw3IEBACiAJCQkJREM2MDVCNUYxQ0UyNkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTcwRUNBNjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAv
KiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREMzRDJCMEMxRDM0Mzc3
MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdE
N0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIg
S2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqCkBAIC00MCwxNCArNDAsMjEgQEAgbmFtZXNwYWNlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIHN0cnVjdCBHYXRoZXJTb3VyY2VQcm92aWRlcnMgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBIYXNoU2V0PFNvdXJjZVByb3Zp
ZGVyKj4gc291cmNlUHJvdmlkZXJzOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBm
aWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11dGFibGUgSGFzaFNldDxT
b3VyY2VQcm92aWRlcio+IHNvdXJjZVByb3ZpZGVyczsKICAgICBKU0dsb2JhbE9iamVjdCogbV9n
bG9iYWxPYmplY3Q7CiAKICAgICBHYXRoZXJTb3VyY2VQcm92aWRlcnMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpIHsg
fQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0
ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6Oktp
bmQga2luZCkgY29uc3QKICAgICB7CisgICAgICAgIGlmIChraW5kICE9IEhlYXBDZWxsOjpKU0Nl
bGwpCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxs
KTsKKyAgICAgICAgCiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKQEAgLTE5MSw3ICsxOTgsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKKyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgICAgICBpZiAobV9tb2RlID09IFN0ZXBwaW5nTW9k
ZUVuYWJsZWQpCkBAIC0yOTgsNyArMzA1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBvcGVyYXRv
cigpKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fZGVi
dWdnZXIgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKICAgICAgICAg
ICAgIG1fZGVidWdnZXItPnRvZ2dsZUJyZWFrcG9pbnQoY29kZUJsb2NrLCBtX2JyZWFrcG9pbnQs
IG1fZW5hYmxlZE9yTm90KTsKQEAgLTQ3NCw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29s
IG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9kZWJ1Z2dlciA9PSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQogICAgICAgICAgICAgY29kZUJsb2Nr
LT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKQEAgLTUwNCw3ICs1MTEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykK
KyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9nbG9iYWxP
YmplY3QgPT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+Y2xlYXJEZWJ1Z2dlclJlcXVlc3RzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIC8vIFZpc2l0cyBlYWNoIENvZGVCbG9jayBpbiB0aGUgaGVhcCB1bnRp
bCB0aGUgdmlzaXRvciBmdW5jdGlvbiByZXR1cm5zIHRydWUKICAgICAvLyB0byBpbmRpY2F0ZSB0
aGF0IGl0IGlzIGRvbmUgaXRlcmF0aW5nLCBvciB1bnRpbCBldmVyeSBDb2RlQmxvY2sgaGFzIGJl
ZW4KICAgICAvLyB2aXNpdGVkLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
aXRlcmF0ZShGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvJiBjb2RlQmxvY2sgOiBt
X29sZENvZGVCbG9ja3MpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNl
dC5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSGFuZGxl
LmgiCiAjaW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtNzksNyArODAs
NyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFu
ZGxlKEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKGNv
bnN0IEZ1bmN0b3ImLCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7CiAK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYW5kbGVOb2RlIE5vZGU7CkBAIC0xODAsNyArMTgxLDcg
QEAgaW5saW5lIEhhbmRsZU5vZGUqIEhhbmRsZU5vZGU6Om5leHQoKQogICAgIHJldHVybiBtX25l
eHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgSGFuZGxlU2V0Ojpmb3JF
YWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImIGZ1bmN0b3IsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpT
Q2VsbCo+JiBza2lwU2V0KQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVT
ZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFz
aENvdW50ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCiB7CiAgICAgSGFuZGxlU2V0OjpOb2RlKiBl
bmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7CiAgICAgZm9yIChIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUg
PSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDMwNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUyLDYxICsyNTIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRUaHJlYWRTdGF0
ZShWTQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgQ291bnQgOiBwdWJsaWMgTWFya2Vk
QmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopIHsgY291
bnQoMSk7IH0KLX07Ci0KLXN0cnVjdCBDb3VudElmR2xvYmFsT2JqZWN0IDogTWFya2VkQmxvY2s6
OkNvdW50RnVuY3RvciB7Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQotICAg
IHsKLSAgICAgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpZiAoIWFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjb3VudCgxKTsKLSAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVz
IG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Ci0g
ICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotICAgIH0KLX07Ci0KLWNs
YXNzIFJlY29yZFR5cGUgewotcHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gUmV0dXJuVHlwZTsKLQotICAgIFJlY29yZFR5cGUoKTsKLSAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gbV90eXBlQ291bnRTZXQ7Ci19OwotCi1pbmxp
bmUgUmVjb3JkVHlwZTo6UmVjb3JkVHlwZSgpCi0gICAgOiBtX3R5cGVDb3VudFNldChzdGQ6Om1h
a2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKSkKLXsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIFJl
Y29yZFR5cGU6OnR5cGVOYW1lKEpTQ2VsbCogY2VsbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWNv
cmRUeXBlKFR5cGVDb3VudFNldCYgc2V0LCBKU0NlbGwqIGNlbGwpCiB7CisgICAgY29uc3QgY2hh
ciogdHlwZU5hbWUgPSAiW3Vua25vd25dIjsKICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBj
ZWxsLT5jbGFzc0luZm8oKTsKLSAgICBpZiAoIWluZm8gfHwgIWluZm8tPmNsYXNzTmFtZSkKLSAg
ICAgICAgcmV0dXJuICJbdW5rbm93bl0iOwotICAgIHJldHVybiBpbmZvLT5jbGFzc05hbWU7Ci19
Ci0KLWlubGluZSBJdGVyYXRpb25TdGF0dXMgUmVjb3JkVHlwZTo6b3BlcmF0b3IoKShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgbV90eXBlQ291bnRTZXQtPmFkZCh0eXBlTmFtZShjZWxsKSk7Ci0gICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci19Ci0KLWlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZUNvdW50U2V0PiBSZWNvcmRUeXBlOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0
dXJuIFdURk1vdmUobV90eXBlQ291bnRTZXQpOworICAgIGlmIChpbmZvICYmIGluZm8tPmNsYXNz
TmFtZSkKKyAgICAgICAgdHlwZU5hbWUgPSBpbmZvLT5jbGFzc05hbWU7CisgICAgc2V0LmFkZCh0
eXBlTmFtZSk7CiB9CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtNzcxLDkgKzcyMywx
MiBAQCBzdHJ1Y3QgR2F0aGVySGVhcFNuYXBzaG90RGF0YSA6IE1hcmtlZEJsCiAgICAgewogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogaGVhcENlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIGNvbnN0CiAgICAgewotICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFw
U25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6
OkpTQ2VsbCkgeworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcENlbGwpOworICAgICAgICAgICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+aGVhcFNuYXBz
aG90KGNlbGwsIG1fYnVpbGRlcik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC03OTYsOSArNzUxLDEwIEBAIHN0cnVjdCBS
ZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXMgOiBNYXIKICAgICB7CiAgICAgfQogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAog
ICAgIHsKLSAgICAgICAgbV9zbmFwc2hvdC5zd2VlcENlbGwoY2VsbCk7CisgICAgICAgIGlmIChr
aW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2Vs
bChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIApAQCAtOTk4LDI5ICs5NTQsNjQgQEAgc2l6ZV90IEhl
YXA6OmNhcGFjaXR5KCkKIAogc2l6ZV90IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50
KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291bnRJZkdsb2JhbE9iamVj
dD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgK
KyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAg
ICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzaXpl
X3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQoKQogewogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBzaXplX3Qg
cmVzdWx0ID0gMDsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2Vs
bDo6S2luZCBraW5kKSAtPiBJdGVyYXRpb25TdGF0dXMgeworICAgICAgICAgICAgaWYgKGtpbmQg
IT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKKyAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGhlYXBDZWxsKTsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpICYmIGFz
T2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsr
OworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmpl
Y3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRDZWxsPENvdW50PigpOwor
ICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAg
ICBbJl0gKEpTQ2VsbCopIHsKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFw
Ojpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3Rl
Y3RlZENlbGw8UmVjb3JkVHlwZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBmb3JFYWNo
UHJvdGVjdGVkQ2VsbCgKKyAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgY2VsbCk7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVD
b3VudHMoKQogeworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBp
dGVyYXRpb25TY29wZSgqdGhpcyk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExp
dmVDZWxsPFJlY29yZFR5cGU+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgaXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVh
cENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Cisg
ICAgICAgICAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAg
IHJlY29yZFR5cGUoKnJlc3VsdCwgc3RhdGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcygpCkBA
IC0xMzA1LDkgKzEyOTYsMTEgQEAgc3RydWN0IE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDog
cHVibAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJs
b2NrKSB7IG1fYmxvY2tzW21faW5kZXgrK10gPSBibG9jazsgfQorICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRCbG9jayogYmxvY2spIGNvbnN0IHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2Nr
OyB9CiAKLSAgICBzaXplX3QgbV9pbmRleDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFi
bGUgZmllbGQgYmVjYXVlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICBtdXRhYmxlIHNpemVf
dCBtX2luZGV4OwogICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+JiBtX2Jsb2NrczsKIH07CiAKQEAg
LTE1NzgsNyArMTU3MSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVS
ZWMKIAogY2xhc3MgWm9tYmlmeSA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3Igewog
cHVibGljOgotICAgIGlubGluZSB2b2lkIHZpc2l0KEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUg
dm9pZCB2aXNpdChIZWFwQ2VsbCogY2VsbCkgY29uc3QKICAgICB7CiAgICAgICAgIHZvaWQqKiBj
dXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNlbGwpOwogCkBAIC0xNTkxLDcgKzE1
ODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoOyBjdXJyZW50IDwgbGltaXQ7IGN1cnJlbnQr
KykKICAgICAgICAgICAgICpjdXJyZW50ID0gem9tYmlmaWVkQml0czsKICAgICB9Ci0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7
CiAgICAgICAgIHZpc2l0KGNlbGwpOwogICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKQEAgLTE2MDMsNyArMTU5Niw3IEBAIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmpl
Y3RzKCkKICAgICAvLyBTd2VlcCBub3cgYmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9u
Y2Ugd2UncmUgem9tYmlmaWVkLgogICAgIG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CiAg
ICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICBtX29iamVj
dFNwYWNlLmZvckVhY2hEZWFkQ2VsbDxab21iaWZ5PihpdGVyYXRpb25TY29wZSk7CisgICAgbV9v
YmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9
CiAKIHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKiBjZWxsKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2
LDggQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJr
TGlzdFNldCgpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1l
IEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaFByb3RlY3RlZENlbGwoKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5j
dG9yJik7CiAKICAgICBIYW5kbGVTZXQqIGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hhbmRsZVNl
dDsgfQogICAgIEhhbmRsZVN0YWNrKiBoYW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hhbmRsZVN0
YWNrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBIZWFwQ2VsbDo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNh
c2UgSGVhcENlbGw6OkpTQ2VsbDoKKyAgICAgICAgb3V0LnByaW50KCJKU0NlbGwiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgSGVhcENlbGw6OlN0b3JhZ2U6CisgICAgICAgIG91dC5wcmlu
dCgiU3RvcmFnZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7CitwdWJsaWM6CisgICAg
ZW51bSBLaW5kIDogaW50OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAgICBTdG9yYWdlCisg
ICAgfTsKKyAgICAKKyAgICBIZWFwQ2VsbCgpIHsgfQorICAgIAorICAgIHZvaWQgemFwKCkgeyAq
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9CisgICAgYm9vbCBpc1ph
cHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0
Kj4odGhpcyk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6SGVhcENlbGw6OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjUsNyArMTY1LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4
dHJhTQogICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFj
aENvZGVCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIC8vIFdlIGRvbid0IGtub3cgdGhlIGZ1bGwgc2V0IG9mIENvZGVCbG9ja3MgdW50
aWwgY29tcGlsYXRpb24gaGFzIHRlcm1pbmF0ZWQuCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygp
OwpAQCAtMTczLDE5ICsxNzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHZvaWQgSAogICAgIHJldHVybiBtX2NvZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihmdW5jdG9y
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVuY3Rv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2hQ
cm90ZWN0ZWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCiAgICAgICAgIGZ1bmN0b3IocGFpci5rZXkpOwogICAg
IG1faGFuZGxlU2V0LmZvckVhY2hTdHJvbmdIYW5kbGUoZnVuY3RvciwgbV9wcm90ZWN0ZWRWYWx1
ZXMpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVh
cDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBy
ZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGwoZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkKiBI
ZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIwMzA2
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVi
bGljIE1hcmtlZEIKIHB1YmxpYzoKICAgICBTdG9yYWdlU3RhdGlzdGljcygpOwogCi0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9w
ZXJhdG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKICAgICBzaXplX3Qg
b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOwogICAgIHNpemVfdCBvYmplY3RDb3Vu
dCgpOwpAQCAtMTkwLDkgKzE5MCwxMyBAQCBpbmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6
dmlzaXQoSlNDCiAgICAgbV9zdG9yYWdlQ2FwYWNpdHkgKz0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KTsgCiB9CiAKLWlubGluZSBJdGVyYXRpb25TdGF0dXMgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJh
dG9yKCkoSlNDZWxsKiBjZWxsKQoraW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3RhdGlz
dGljczo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29u
c3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxs
KSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhp
cyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3RfY2FzdDxTdG9yYWdlU3RhdGlz
dGljcyo+KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQog
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIwMzA2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw5ICsxMjAsMTMgQEAgc3RydWN0IEdhdGhlckxpdmVPYmpGdW5jdG9yIDog
TWFya2VkQmxvYwogICAgICAgICBtX2xpc3QubGl2ZU9iamVjdHMuYXBwZW5kKGRhdGEpOwogICAg
IH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJ
dGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQg
a2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIHZpc2l0KGNlbGwpOworICAgICAgICBpZiAoa2lu
ZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25z
dF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAg
ICAgICAgICAgY29uc3RfY2FzdDxHYXRoZXJMaXZlT2JqRnVuY3Rvcio+KHRoaXMpLT52aXNpdChz
dGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwMzA2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE4Niw3ICsxODYsMTAgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsb2NhdGVCbAogCiAgICAgc2l6ZV90IGNlbGxTaXplID0gbV9jZWxsU2l6ZSA/
IG1fY2VsbFNpemUgOiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21T
aXplPihieXRlcyk7CiAKLSAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZSgqbV9oZWFwLCB0
aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX25lZWRzRGVzdHJ1Y3Rpb24pOworICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGFsbG9jYXRpbmcgc3RvcmFnZSBpbiBtYXJrZWQgYmxvY2tzLiBUaGlzIHdv
dWxkIG1lYW4gdGhhdCBhbGxvY2F0ZUJsb2NrKCkKKyAgICAvLyB0YWtlcyBhIEhlYXBDZWxsOjpL
aW5kLCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NTgKKyAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0
ZSgqbV9oZWFwLCB0aGlzLCBibG9ja1NpemUsIGNlbGxTaXplLCBtX25lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpOwogfQogCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2so
TWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjMzLDE1ICsyMzYsMTMgQEAgdm9pZCBNYXJrZWRBbGxv
Y2F0b3I6OnJlc2V0KCkKICAgICB9CiB9CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSA6
IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKiBibG9jaykgeyBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsgfQotfTsKLQogdm9p
ZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBtX2Jsb2Nr
TGlzdC5hcHBlbmQobV9yZXRpcmVkQmxvY2tzKTsKLSAgICBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSBm
dW5jdG9yOwotICAgIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3JFYWNoQmxvY2soCisg
ICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBibG9jay0+bGFz
dENoYW5jZVRvRmluYWxpemUoKTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJ
KHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJsb2NrOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiB2b2lkIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZv
aWQgYWRkQmxvY2soTWFya2VkQmxvY2sqKTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJs
b2NrKik7CkBAIC0xNTEsNyArMTUxLDcgQEAgaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpy
ZXN1bWVBbGxvYwogICAgIG1fbGFzdEFjdGl2ZUJsb2NrID0gMDsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2Nr
KEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkQWxsb2NhdG9yOjpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKICAgICBNYXJrZWRCbG9jayogbmV4dDsKICAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9
IG1fYmxvY2tMaXN0LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gbmV4dCkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjAzMDY4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9v
bCBjb21wdXRlQmFsYW5jZSA9IGZhbHNlOwogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJr
ZWRCbG9jayogTWFya2VkQmxvY2s6OmNyZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbikKK01hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAs
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxs
U2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCkKIHsK
ICAgICBpZiAoY29tcHV0ZUJhbGFuY2UpIHsKICAgICAgICAgYmFsYW5jZSsrOwogICAgICAgICBp
ZiAoIShiYWxhbmNlICUgMTApKQogICAgICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFs
YW5jZTogIiwgYmFsYW5jZSwgIlxuIik7CiAgICAgfQotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9
IG5ldyAoTm90TnVsbCwgZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1h
cmtlZEJsb2NrKGFsbG9jYXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9u
KTsKKyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGZhc3RBbGlnbmVkTWFs
bG9jKGJsb2NrU2l6ZSwgY2FwYWNpdHkpKSBNYXJrZWRCbG9jayhhbGxvY2F0b3IsIGNhcGFjaXR5
LCBjZWxsU2l6ZSwgbmVlZHNEZXN0cnVjdGlvbiwgY2VsbEtpbmQpOwogICAgIGhlYXAuZGlkQWxs
b2NhdGVCbG9jayhjYXBhY2l0eSk7CiAgICAgcmV0dXJuIGJsb2NrOwogfQpAQCAtNjAsMTIgKzYw
LDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koSGVhcCYgaGVhcCwgTWEKICAgICBoZWFw
LmRpZEZyZWVCbG9jayhjYXBhY2l0eSk7CiB9CiAKLU1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKK01hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJr
ZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQpCiAgICAgOiBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxNYXJrZWRCbG9jaz4oKQogICAgICwgbV9hdG9tc1BlckNlbGwo
KGNlbGxTaXplICsgYXRvbVNpemUgLSAxKSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKChh
bGxvY2F0b3ItPmNlbGxTaXplKCkgPyBhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgOiBm
aXJzdEF0b20oKSkgKyAxKQogICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAsIG1fbmVl
ZHNEZXN0cnVjdGlvbihuZWVkc0Rlc3RydWN0aW9uKQorICAgICwgbV9jZWxsS2luZChjZWxsS2lu
ZCkKICAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3KSAvLyBB
bGwgY2VsbHMgc3RhcnQgb3V0IHVubWFya2VkLgogICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+
aGVhcCgpLT52bSgpLCAqdGhpcykKQEAgLTc0LDE3ICs3NSwxOSBAQCBNYXJrZWRCbG9jazo6TWFy
a2VkQmxvY2soTWFya2VkQWxsb2NhdG9yCiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJ
VElPTih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9y
KEpTQ2VsbCogY2VsbCkKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihI
ZWFwQ2VsbCogY2VsbCkKIHsKICAgICAvLyBBIHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJl
YWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0cnVjdG9yLgogICAgIGlmIChjZWxsLT5pc1phcHBlZCgp
KQogICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNDZWxsKiBqc0NlbGwgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihjZWxsKTsKIAotICAgIEFTU0VSVChjZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKLSAg
ICBpZiAoY2VsbC0+aW5saW5lVHlwZUZsYWdzKCkgJiBTdHJ1Y3R1cmVJc0ltbW9ydGFsKQotICAg
ICAgICBjZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVz
dHJveShjZWxsKTsKKyAgICBBU1NFUlQoanNDZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBpZiAo
anNDZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpCisgICAgICAg
IGpzQ2VsbC0+c3RydWN0dXJlKCp2bSgpKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ry
b3koanNDZWxsKTsKICAgICBlbHNlCi0gICAgICAgIGpzQ2FzdDxKU0Rlc3RydWN0aWJsZU9iamVj
dCo+KGNlbGwpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKKyAgICAg
ICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4oanNDZWxsKS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmRlc3Ryb3koanNDZWxsKTsKICAgICBjZWxsLT56YXAoKTsKIH0KIApAQCAtMTAz
LDcgKzEwNiw3IEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2kKICAg
ICAgICAgaWYgKGJsb2NrU3RhdGUgPT0gTWFya2VkICYmIChtX21hcmtzLmdldChpKSB8fCAobV9u
ZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVy
cHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZhdG9tcygpW2ldKTsKIAogICAgICAgICBpZiAoY2Fs
bERlc3RydWN0b3JzICYmIGJsb2NrU3RhdGUgIT0gTmV3KQogICAgICAgICAgICAgY2FsbERlc3Ry
dWN0b3IoY2VsbCk7CkBAIC0xNzEsNyArMTc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKSA9PSBt
X2Jsb2NrKTsKICAgICAgICAgbV9ibG9jay0+c2V0TmV3bHlBbGxvY2F0ZWQoY2VsbCk7CkBAIC0y
MTMsNyArMjE2LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRgog
ICAgIEZyZWVDZWxsKiBuZXh0OwogICAgIGZvciAoRnJlZUNlbGwqIGN1cnJlbnQgPSBoZWFkOyBj
dXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dDsK
LSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjdXJyZW50KS0+emFwKCk7CisgICAg
ICAgIGlmIChtX25lZWRzRGVzdHJ1Y3Rpb24pCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PEhlYXBDZWxsKj4oY3VycmVudCktPnphcCgpOwogICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVk
KGN1cnJlbnQpOwogICAgIH0KICAgICAKQEAgLTI5MCw3ICsyOTQsOCBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpkaWRSZXRpcmVCbG9jayhjb25zdCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9y
IChGcmVlQ2VsbCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAg
ICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpT
Q2VsbCo+KGN1cnJlbnQpLT56YXAoKTsKKyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikK
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7
CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gRnJlZUxpc3RlZCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwMzA2OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDcgQEAKICNpZm5kZWYgTWFya2VkQmxvY2tfaAogI2RlZmluZSBNYXJrZWRC
bG9ja19oCiAKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24u
aCIKICNpbmNsdWRlICJJdGVyYXRpb25TdGF0dXMuaCIKICNpbmNsdWRlICJXZWFrU2V0LmgiCkBA
IC01Myw4ICs1NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdHlwZWRlZiB1aW50cHRyX3Qg
Qml0czsKIAotICAgIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgCiAgICAgLy8g
QSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdlLWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9j
YXRlZCBvYmplY3RzLgogICAgIC8vIE9iamVjdHMgYXJlIGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMg
b2YgdGhlIG1hcmtlZCBibG9jay4gRm9yIGEgZ2l2ZW4KICAgICAvLyBtYXJrZWQgYmxvY2ssIGFs
bCBjZWxscyBoYXZlIHRoZSBzYW1lIHNpemUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAt
OTksMTQgKzk4LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdHlwZWRlZiBzaXpl
X3QgUmV0dXJuVHlwZTsKIAogICAgICAgICAgICAgQ291bnRGdW5jdG9yKCkgOiBtX2NvdW50KDAp
IHsgfQotICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291bnQpIHsgbV9jb3VudCArPSBj
b3VudDsgfQotICAgICAgICAgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1f
Y291bnQ7IH0KKyAgICAgICAgICAgIHZvaWQgY291bnQoc2l6ZV90IGNvdW50KSBjb25zdCB7IG1f
Y291bnQgKz0gY291bnQ7IH0KKyAgICAgICAgICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NvdW50OyB9CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAg
IFJldHVyblR5cGUgbV9jb3VudDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG11dGFi
bGUgYmVjYXVzZSB3ZSdyZSB1c2luZyBhIGZ1bmN0b3IgcmF0aGVyIHRoYW4gQysrIGxhbWJkYXMu
CisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5NjQ0CisgICAgICAgICAgICBtdXRhYmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICAgICAg
fTsKIAotICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNyZWF0ZShIZWFwJiwgTWFya2VkQWxs
b2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbik7CisgICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAmLCBNYXJr
ZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSGVhcCYsIE1hcmtlZEJsb2NrKik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxp
Z25lZChjb25zdCB2b2lkKik7CkBAIC0xNDcsMTYgKzE0OCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uKCkgY29uc3Q7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3Q7CiAK
ICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CiAKICAg
ICAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgdGVzdEFuZFNl
dE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCop
OworICAgICAgICBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlz
TGl2ZUNlbGwoY29uc3Qgdm9pZCopOwogICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7
Ci0gICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOwor
ICAgICAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwog
ICAgICAgICB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJN
YXJrZWQoY29uc3Qgdm9pZCopOwogCkBAIC0xNzAsOSArMTcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZGlkUmV0aXJlQmxvY2soY29uc3QgRnJlZUxpc3QmKTsKICAgICAgICAg
dm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsKIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwo
RnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYp
OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3Im
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdu
bWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CkBAIC0xODIsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAg
TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2Vs
bFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CisgICAgICAgIE1hcmtlZEJsb2NrKE1hcmtl
ZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAg
ICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGNhbGxE
ZXN0cnVjdG9yKEpTQ2VsbCopOworICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEhlYXBDZWxs
Kik7CiAgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZSwgYm9vbCBjYWxsRGVz
dHJ1Y3RvcnM+IEZyZWVMaXN0IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAgICAgICAg
IE1hcmtlZEJsb2NrKiBtX3ByZXY7CkBAIC0xOTgsNiArMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgICAgIGJvb2wgbV9uZWVkc0Rlc3Ry
dWN0aW9uOworICAgICAgICBIZWFwQ2VsbDo6S2luZCBtX2NlbGxLaW5kOwogICAgICAgICBNYXJr
ZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwogICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7CiAg
ICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OwpAQCAtMzAzLDYgKzMwNiwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICB9CiAKKyAgICBp
bmxpbmUgSGVhcENlbGw6OktpbmQgTWFya2VkQmxvY2s6OmNlbGxLaW5kKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2NlbGxLaW5kOworICAgIH0KKwogICAgIGlubGluZSBzaXplX3Qg
TWFya2VkQmxvY2s6OnNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1hcmtDb3VudCgpICog
Y2VsbFNpemUoKTsKQEAgLTM2MywxMyArMzcxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFJldGlyZWQgfHwgbV9zdGF0
ZSA9PSBNYXJrZWQpOwogICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihjZWxs
KSkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBKU0NlbGwqIGNl
bGwpCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIEFs
bG9jYXRlZDoKQEAgLTQwNyw0MCArNDE1LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICAgICAgaWYgKCFpc0F0b20ocCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlNDZWxsKj4ocCkpOworICAgICAgICBy
ZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JF
YWNoQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKKyAgICAgICAgSGVhcENlbGw6
OktpbmQga2luZCA9IG1fY2VsbEtpbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0
b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICAgICAg
SlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0p
OwotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25l
KQorICAgICAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFw
Q2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpEb25lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoRnVuY3Rv
ciYgZnVuY3RvcikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBNYXJrZWRCbG9jazo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgeworICAgICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJl
dF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7CisgICAgICAgICAgICBIZWFwQ2VsbCog
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogICAg
ICAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkK
KyAgICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6
RG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9j
azo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAg
ICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigm
YXRvbXMoKVtpXSk7CisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogICAgICAgICAgICAgaWYgKGlzTGl2ZShj
ZWxsKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjcsMzEgKzI3LDYgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBGcmVlIDogTWFya2VkQmxvY2s6OlZvaWRGdW5j
dG9yIHsKLSAgICBGcmVlKE1hcmtlZFNwYWNlJiBzcGFjZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNl
KSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IG1fbWFya2Vk
U3BhY2UuZnJlZUJsb2NrKGJsb2NrKTsgfQotcHJpdmF0ZToKLSAgICBNYXJrZWRTcGFjZSYgbV9t
YXJrZWRTcGFjZTsKLX07Ci0KLXN0cnVjdCBGcmVlT3JTaHJpbmsgOiBNYXJrZWRCbG9jazo6Vm9p
ZEZ1bmN0b3IgewotICAgIEZyZWVPclNocmluayhNYXJrZWRTcGFjZSYgc3BhY2UpIDogbV9tYXJr
ZWRTcGFjZShzcGFjZSkgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9j
aykgeyBtX21hcmtlZFNwYWNlLmZyZWVPclNocmlua0Jsb2NrKGJsb2NrKTsgfQotcHJpdmF0ZToK
LSAgICBNYXJrZWRTcGFjZSYgbV9tYXJrZWRTcGFjZTsKLX07Ci0KLXN0cnVjdCBWaXNpdFdlYWtT
ZXQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIFZpc2l0V2Vha1NldChIZWFwUm9v
dFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikgOiBtX2hlYXBSb290VmlzaXRvcihoZWFwUm9vdFZp
c2l0b3IpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxv
Y2stPnZpc2l0V2Vha1NldChtX2hlYXBSb290VmlzaXRvcik7IH0KLXByaXZhdGU6Ci0gICAgSGVh
cFJvb3RWaXNpdG9yJiBtX2hlYXBSb290VmlzaXRvcjsKLX07Ci0KLXN0cnVjdCBSZWFwV2Vha1Nl
dCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtl
ZEJsb2NrKiBibG9jaykgeyBibG9jay0+cmVhcFdlYWtTZXQoKTsgfQotfTsKLQogTWFya2VkU3Bh
Y2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBtX2hlYXAoaGVhcCkKICAgICAsIG1f
Y2FwYWNpdHkoMCkKQEAgLTczLDI1ICs0OCwyOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2Uo
SGVhcCogaGVhcCkKIAogTWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSgpCiB7Ci0gICAgRnJlZSBm
cmVlKCp0aGlzKTsKLSAgICBmb3JFYWNoQmxvY2soZnJlZSk7CisgICAgZm9yRWFjaEJsb2NrKAor
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgZnJlZUJsb2Nr
KGJsb2NrKTsKKyAgICAgICAgfSk7CiAgICAgQVNTRVJUKCFtX2Jsb2Nrcy5zZXQoKS5zaXplKCkp
OwogfQogCi1zdHJ1Y3QgTGFzdENoYW5jZVRvRmluYWxpemUgewotICAgIHZvaWQgb3BlcmF0b3Io
KShNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyBhbGxvY2F0b3IubGFzdENoYW5jZVRvRmlu
YWxpemUoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUo
KQogewogICAgIHN0b3BBbGxvY2F0aW5nKCk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxMYXN0Q2hh
bmNlVG9GaW5hbGl6ZT4oKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1h
cmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgICAgICBhbGxvY2F0b3IubGFzdENo
YW5jZVRvRmluYWxpemUoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnN3
ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0g
ICAgZm9yRWFjaEJsb2NrPFN3ZWVwPigpOworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZd
IChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAg
ICAgICB9KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKQEAgLTk5LDcg
Kzc4LDExIEBAIHZvaWQgTWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCgpCiAgICAgaWYgKE9wdGlv
bnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKICAg
ICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJs
b2NrPFpvbWJpZnlTd2VlcD4oKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFy
a2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBpZiAoYmxvY2stPm5lZWRzU3dlZXBpbmco
KSkKKyAgICAgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZv
aWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCkBAIC0xMjIsMTIgKzEwNSwxNSBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2
aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQogewotICAgIFZp
c2l0V2Vha1NldCB2aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKICAgICBpZiAobV9oZWFw
LT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICB2aXNpdFdlYWtTZXQobV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hCbG9jayh2aXNpdFdlYWtTZXQpOworICAgICAgICAg
ICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+dmlzaXRXZWFrU2V0KGhlYXBSb290VmlzaXRv
cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZd
IChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBibG9jay0+dmlzaXRXZWFr
U2V0KGhlYXBSb290VmlzaXRvcik7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQg
TWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCkBAIC0xMzUsMTkgKzEyMSwxNiBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpyZWFwV2Vha1NldHMoKQogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJv
Z3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1f
YmxvY2tzV2l0aE5ld09iamVjdHNbaV0tPnJlYXBXZWFrU2V0KCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGZvckVhY2hCbG9jazxSZWFwV2Vha1NldD4oKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+Ci12b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKCkKLXsKLSAgICBG
dW5jdG9yIGZ1bmN0b3I7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcihmdW5jdG9yKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2Nr
KiBibG9jaykgeworICAgICAgICAgICAgICAgIGJsb2NrLT5yZWFwV2Vha1NldCgpOworICAgICAg
ICAgICAgfSk7CisgICAgfQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQg
TWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0b3IoRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgTWFy
a2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAg
ICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNl
Q3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewogICAgICAgICBmdW5jdG9yKGFsbG9j
YXRvckZvcihjZWxsU2l6ZSkpOwpAQCAtMTYzLDI0ICsxNDYsMjIgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaEFsbG9jYXRvcihGdW5jdAogICAgIGZ1bmN0b3IobV9kZXN0cnVjdG9yU3BhY2Uu
bGFyZ2VBbGxvY2F0b3IpOwogfQogCi1zdHJ1Y3QgU3RvcEFsbG9jYXRpbmdGdW5jdG9yIHsKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsgYWxsb2NhdG9y
LnN0b3BBbGxvY2F0aW5nKCk7IH0KLX07Ci0KIHZvaWQgTWFya2VkU3BhY2U6OnN0b3BBbGxvY2F0
aW5nKCkKIHsKICAgICBBU1NFUlQoIWlzSXRlcmF0aW5nKCkpOwotICAgIGZvckVhY2hBbGxvY2F0
b3I8U3RvcEFsbG9jYXRpbmdGdW5jdG9yPigpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgICAgIGFsbG9j
YXRvci5zdG9wQWxsb2NhdGluZygpOworICAgICAgICB9KTsKIH0KIAotc3RydWN0IFJlc3VtZUFs
bG9jYXRpbmdGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIHsgYWxsb2NhdG9yLnJlc3VtZUFsbG9jYXRpbmcoKTsgfQotfTsKLQogdm9pZCBN
YXJrZWRTcGFjZTo6cmVzdW1lQWxsb2NhdGluZygpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5n
KCkpOwotICAgIGZvckVhY2hBbGxvY2F0b3I8UmVzdW1lQWxsb2NhdGluZ0Z1bmN0b3I+KCk7Cisg
ICAgZm9yRWFjaEFsbG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgeworICAgICAgICAgICAgYWxsb2NhdG9yLnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICAg
ICAgfSk7CiB9CiAKIGJvb2wgTWFya2VkU3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5l
KQpAQCAtMjI0LDggKzIwNSwxMCBAQCB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9j
ayhNYXJrCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiB7Ci0gICAgRnJlZU9yU2hyaW5r
IGZyZWVPclNocmluaygqdGhpcyk7Ci0gICAgZm9yRWFjaEJsb2NrKGZyZWVPclNocmluayk7Cisg
ICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAg
ICAgICAgICAgZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOworICAgICAgICB9KTsKIH0KIAogc3Rh
dGljIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQpA
QCAtMjM1LDE2ICsyMTgsNiBAQCBzdGF0aWMgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9j
ayhNCiAgICAgYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIH0KIAotc3RydWN0IENsZWFy
TmV3bHlBbGxvY2F0ZWQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZvaWQgb3Bl
cmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQo
KTsgfQotfTsKLQotI2lmbmRlZiBOREVCVUcKLXN0cnVjdCBWZXJpZnlOZXdseUFsbG9jYXRlZCA6
IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKiBibG9jaykgeyBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOyB9Ci19
OwotI2VuZGlmCi0KIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKQEAgLTI2MCwx
NCArMjMzLDE4IEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAg
IC8vIFdlIGhhdmUgdG8gaXRlcmF0ZSBhbGwgb2YgdGhlIGJsb2NrcyBpbiB0aGUgbGFyZ2UgYWxs
b2NhdG9ycyBiZWNhdXNlIHRoZXkgYXJlCiAgICAgLy8gY2Fub25pY2FsaXplZCBhcyB0aGV5IGFy
ZSB1c2VkIHVwIChzZWUgTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcikKICAgICAv
LyB3aGljaCBjcmVhdGVzIHRoZSBtX25ld2x5QWxsb2NhdGVkIGJpdG1hcC4KLSAgICBDbGVhck5l
d2x5QWxsb2NhdGVkIGZ1bmN0b3I7Ci0gICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5m
b3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0
b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU5l
d2x5QWxsb2NhdGVkIHZlcmlmeUZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKHZlcmlmeUZ1bmN0
b3IpOwotI2VuZGlmCisgICAgYXV0byBjbGVhck5ld2x5QWxsb2NhdGVkID0gWyZdIChNYXJrZWRC
bG9jayogYmxvY2spIHsKKyAgICAgICAgYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAg
ICB9OworICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGNsZWFy
TmV3bHlBbGxvY2F0ZWQpOworICAgIG1fZGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZv
ckVhY2hCbG9jayhjbGVhck5ld2x5QWxsb2NhdGVkKTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAg
ICB9KTsKKyNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiB9CiAKICNpZm5kZWYgTkRFQlVHIApA
QCAtMjkwLDggKzI2NywxMiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpjbGVhck1hcmtzKCkKICAgICBp
ZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5jbGVhck1h
cmtzKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hCbG9jazxDbGVhck1hcmtzPigpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFy
a2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPmNsZWFyTWFya3MoKTsK
KyAgICAgICAgICAgIH0pOworICAgIH0KIAogI2lmbmRlZiBOREVCVUcKICAgICBWZXJpZnlNYXJr
ZWRPclJldGlyZWQgdmVyaWZ5RnVuY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNywz
MyArMzcsNiBAQCBjbGFzcyBIZWFwOwogY2xhc3MgSGVhcEl0ZXJhdGlvblNjb3BlOwogY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi1zdHJ1Y3QgQ2xlYXJNYXJrcyA6IE1hcmtlZEJsb2Nr
OjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykK
LSAgICB7Ci0gICAgICAgIGJsb2NrLT5jbGVhck1hcmtzKCk7Ci0gICAgfQotfTsKLQotc3RydWN0
IFN3ZWVwIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCko
TWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5zd2VlcCgpOyB9Ci19OwotCi1zdHJ1Y3QgWm9t
YmlmeVN3ZWVwIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2sqIGJsb2NrKQotICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc1N3
ZWVwaW5nKCkpCi0gICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKLSAgICB9Ci19OwotCi1zdHJ1
Y3QgTWFya0NvdW50IDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVy
YXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChibG9jay0+bWFya0NvdW50KCkpOyB9
Ci19OwotCi1zdHJ1Y3QgU2l6ZSA6IE1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3IgewotICAgIHZv
aWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgY291bnQoYmxvY2stPm1hcmtDb3Vu
dCgpICogYmxvY2stPmNlbGxTaXplKCkpOyB9Ci19OwotCiBjbGFzcyBNYXJrZWRTcGFjZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya2VkU3BhY2UpOwogcHVibGljOgpAQCAtMTEyLDEy
ICs4NSw5IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+Ojpp
dGVyYXRvciBCbG9ja0l0ZXJhdG9yOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlv
blNjb3BlJiwgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVu
YW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29w
ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJl
dHVyblR5cGUgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5U
eXBlIGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9j
ayhGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVu
Y3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBG
dW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoRGVh
ZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImKTsKIAog
ICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgdm9pZCBmcmVlQmxvY2soTWFya2VkQmxvY2sqKTsKQEAg
LTE0Myw4ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsK
IAogICAgIFN1YnNwYWNlIG1fZGVzdHJ1Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFs
U3BhY2U7CkBAIC0xNTYsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFya2VkQmxv
Y2sqPiBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZv
ckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJiBmdW5jdG9yKQordGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hM
aXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewog
ICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxv
Y2tzLnNldCgpLmVuZCgpOwpAQCAtMTY0LDE2ICsxMzMsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdHlwZW5hCiAgICAgICAgIGlmICgoKml0KS0+Zm9yRWFjaExpdmVDZWxs
KGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYgc2NvcGUpCi17Ci0g
ICAgRnVuY3RvciBmdW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoTGl2ZUNlbGwoc2NvcGUsIGZ1
bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVy
YXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25T
Y29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5n
KCkpOwogICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0x
ODEsMTMgKzE0Myw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEK
ICAgICAgICAgaWYgKCgqaXQpLT5mb3JFYWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5j
dG9yLnJldHVyblZhbHVlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENl
bGwoSGVhcEl0ZXJhdGlvblNjb3BlJiBzY29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0g
ICAgcmV0dXJuIGZvckVhY2hEZWFkQ2VsbChzY29wZSwgZnVuY3Rvcik7CiB9CiAKIGlubGluZSBN
YXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQpA
QCAtMjIwLDcgKzE3NSw3IEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRo
RGUKICAgICByZXR1cm4gZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0
ZXMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5j
dG9yKQordGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNl
Ojpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLnBy
ZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKQEAgLTIzMywxNCArMTg4
LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbgogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9kZXN0cnVj
dG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAg
ICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotCi0gICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoQmxvY2soKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1
cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogfQogCiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6
ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjU2LDEyICsyMDMsMjIgQEAgaW5s
aW5lIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbAogCiBpbmxpbmUgc2l6ZV90IE1h
cmtlZFNwYWNlOjpvYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxNYXJr
Q291bnQ+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yRWFjaEJsb2NrKAorICAg
ICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgcmVzdWx0ICs9IGJs
b2NrLT5tYXJrQ291bnQoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
aW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6c2l6ZSgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hC
bG9jazxTaXplPigpOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hCbG9jaygK
KyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIHJlc3VsdCAr
PSBibG9jay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKTsKKyAgICAgICAgfSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6Y2FwYWNp
dHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9u
IDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgog
I2luY2x1ZGUgIkVudW1lcmF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRl
ICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKQEAgLTY0LDcgKzY1LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKAogICAgIHB1YmxpYzogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg
ICBzdGF0aWMgY29uc3QgOjpKU0M6OkNsYXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87
IH0KIAotY2xhc3MgSlNDZWxsIHsKK2NsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAg
ICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYp
OwpAQCAtMTU1LDkgKzE1Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhp
cyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CiAKLSAgICB2b2lkIHphcCgpIHsgKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kio+KHRoaXMpID0gMDsgfQotICAgIGJvb2wgaXNaYXBw
ZWQoKSBjb25zdCB7IHJldHVybiAhKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+
KHRoaXMpOyB9Ci0KICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29u
c3QgU3RydWN0dXJlJik7CiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1
Y3R1cmUmLCBQcm9wZXJ0eU5hbWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSwxMSArMTQ1LDYgQEAgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgcmV0dXJu
IGFsbG9jYXRlQ2VsbDxUPihoZWFwLCBzaXplb2YoVCkpOwogfQogICAgIAotaW5saW5lIGJvb2wg
aXNaYXBwZWQoY29uc3QgSlNDZWxsKiBjZWxsKQotewotICAgIHJldHVybiBjZWxsLT5pc1phcHBl
ZCgpOwotfQotCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gVHlwZUluZm86OmlzT2JqZWN0KG1fdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDMwNjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2Nyw3ICs4NjcsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgT2JqZWN0
c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRlciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0
b3IgewogcHVibGljOgogICAgIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXIoTWFya2Vk
QXJndW1lbnRCdWZmZXImLCBKU0dsb2JhbE9iamVjdCopOwotICAgIEl0ZXJhdGlvblN0YXR1cyBv
cGVyYXRvcigpKEpTQ2VsbCopOworICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBD
ZWxsKiwgSGVhcENlbGw6OktpbmQpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgdmlzaXQo
SlNDZWxsKik7CkBAIC05MjQsOSArOTI0LDEzIEBAIGlubGluZSB2b2lkIE9iamVjdHNXaXRoQnJv
a2VuSW5kZXhpbmdGaW4KICAgICBtX2ZvdW5kT2JqZWN0cy5hcHBlbmQob2JqZWN0KTsKIH0KIAot
SXRlcmF0aW9uU3RhdHVzIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Om9wZXJhdG9y
KCkoSlNDZWxsKiBjZWxsKQorSXRlcmF0aW9uU3RhdHVzIE9iamVjdHNXaXRoQnJva2VuSW5kZXhp
bmdGaW5kZXI6Om9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQp
IGNvbnN0CiB7Ci0gICAgdmlzaXQoY2VsbCk7CisgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpT
Q2VsbCkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25zdF9jYXN0IGV4aXN0cyBiZWNhdXNl
IHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgICAgIGNvbnN0X2Nhc3Q8T2JqZWN0c1dp
dGhCcm9rZW5JbmRleGluZ0ZpbmRlcio+KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwq
PihjZWxsKSk7CisgICAgfQogICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3
ICsxNjEsNyBAQCBzdHJ1Y3QgQ2VsbEFkZHJlc3NDaGVja0Z1bmN0b3IgOiBNYXJrZWRCCiAgICAg
ewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkg
Y29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVh
cENlbGw6OktpbmQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY2VsbCA9PSBjYW5kaWRhdGUp
IHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283434</attachid>
            <date>2016-07-12 11:36:16 -0700</date>
            <delta_ts>2016-07-12 12:55:18 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>68919</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzMTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxNi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrcyBzaG91bGQga25vdyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIG1vcmUg
dGhhbiBKU0NlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTk2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgdGVhY2hlcyB0aGUgSGVhcCB0aGF0IGEgTWFya2VkQmxvY2sgbWF5
IGhvbGQgZWl0aGVyIEpTQ2VsbHMsIG9yIFN0b3JhZ2UsIHdoaWNoIGlzIG5vdAorICAgICAgICBh
IEpTQ2VsbC4gSXQgdGVhY2hlcyB0aGUgaGVhcCBhbmQgYWxsIG9mIHRoZSB0aGluZ3MgdGhhdCB3
YWxrIHRoZSBoZWFwIHRvIGlnbm9yZQorICAgICAgICBub24tSlNDZWxscyB3aGVuZXZlciB0aGV5
IGFyZSBsb29raW5nIGZvciBnbG9iYWwgb2JqZWN0cywgSlNPYmplY3RzLCBhbmQgdGhpbmdzIHRv
IHRyYWNlCisgICAgICAgIGZvciBkZWJ1Z2dpbmcgb3IgcHJvZmlsaW5nLiBUaGUgaWRlYSBpcyB0
aGF0IHdlIHdpbGwgYmUgYWJsZSB0byBhbGxvY2F0ZSBidXR0ZXJmbGllcyBhbmQKKyAgICAgICAg
dHlwZWQgYXJyYXkgYmFja2luZyBzdG9yZXMgYXMgU3RvcmFnZSBpbiBNYXJrZWRTcGFjZSByYXRo
ZXIgdGhhbiBhbGxvY2F0aW5nIHRob3NlIHRoaW5ncworICAgICAgICBpbiBDb3BpZWRTcGFjZS4g
VGhhdCdzIHdoYXQgYnVnIDE1OTY1OCBpcyBhbGwgYWJvdXQuCisgICAgICAgIAorICAgICAgICBU
aGlzIGdpdmVzIHVzIGEgbmV3IHR5cGUsIGNhbGxlZCBIZWFwQ2VsbCwgd2hpY2ggaXMganVzdCBt
ZWFudCB0byBiZSBhIGNsYXNzIGRpc3RpbmN0IGZyb20KKyAgICAgICAgSlNDZWxsIG9yIGFueSB0
eXBlIHdlIHdvdWxkIHVzZSBmb3IgU3RvcmFnZS4gRm9yIGNvbnZlbmllbmNlLCBKU0NlbGwgaXMg
YSBzdWJjbGFzcyBvZgorICAgICAgICBIZWFwQ2VsbC4gSGVhcENlbGwgaGFzIGFuIGVudW0gY2Fs
bGVkIEhlYXBDZWxsOjpLaW5kLCB3aGljaCBpcyBlaXRoZXIgSGVhcENlbGw6OkpTQ2VsbCBvcgor
ICAgICAgICBIZWFwQ2VsbDo6U3RvcmFnZS4gTWFya2VkU3BhY2Ugbm8gbG9uZ2VyIHNwZWFrcyBv
ZiBKU0NlbGxzIGRpcmVjdGx5IGV4Y2VwdCB3aGVuIGRlYWxpbmcKKyAgICAgICAgd2l0aCBkZXN0
cnVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcXVpcmVkIGRvaW5nIGEg
bG90IG9mIHN0dWZmIHRvIGFsbCBvZiB0aG9zZSBmdW5jdG9yIGNhbGxiYWNrcywgc2luY2UgdGhl
eQorICAgICAgICBub3cgdGFrZSBIZWFwQ2VsbCogaW5zdGVhZCBvZiBKU0NlbGwqIGFuZCB0aGV5
IHRha2UgYW4gZXh0cmEgSGVhcENlbGw6OktpbmQgYXJndW1lbnQgdG8KKyAgICAgICAgdGVsbCB0
aGVtIGlmIHRoZXkgYXJlIGRlYWxpbmcgd2l0aCBKU0NlbGxzIG9yIFN0b3JhZ2UuIEkgZmlndXJl
ZCB0aGF0IHRoaXMgd291bGQgYmUgYXMKKyAgICAgICAgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGNv
bnZlcnQgdGhvc2UgZnVuY3RvcnMgdG8gYmVpbmcgbGFtYmRhLWNvbXBhdGlibGUuIFRoaXMgbWVh
bnMgdGhhdAorICAgICAgICBvcGVyYXRvcigpIG11c3QgYmUgY29uc3QuIEluIHNvbWUgY2FzZXMs
IGNvbnZlcnRpbmcgdGhlIG9wZXJhdG9yKCkgdG8gYmUgY29uc3Qgd291bGQgaGF2ZQorICAgICAg
ICB0YWtlbiBtb3JlIHdvcmsgdGhhbiBqdXN0IHR1cm5pbmcgdGhlIHdob2xlIHRoaW5nIGludG8g
YSBsYW1iZGEuIFdoZW5ldmVyIHRoaXMgd2FzIHRoZQorICAgICAgICBjYXNlLCBJIGNvbnZlcnRl
ZCB0aGUgY29kZSB0byB1c2UgbGFtYmRhcy4gSSBsZWZ0IGEgbG90IG9mIGZ1bmN0b3JzIGFsb25l
LiBJbiBjYXNlcyB3aGVyZQorICAgICAgICB0aGUgZnVuY3RvciB3b3VsZCBiZW5lZml0IGZyb20g
YmVpbmcgYSBsYW1iZGEsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgd291bGQgZ2V0IHJpZCBvZgor
ICAgICAgICBjb25zdF9jYXN0cyBvciBtdXRhYmxlcywgSSBwdXQgaW4gYSBGSVhNRSByZWZlcmVu
Y2luZyBidWcgMTU5NjQ0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpTZXRTdGVwcGluZ01v
ZGVGdW5jdG9yOjpTZXRTdGVwcGluZ01vZGVGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXI6OlNldFN0ZXBwaW5nTW9kZUZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6VG9nZ2xlQnJlYWtwb2ludEZ1bmN0b3I6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9y
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3I6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Q2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckRlYnVnZ2Vy
UmVxdWVzdHNGdW5jdG9yOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yKToKKyAgICAgICAg
KEpTQzo6RGVidWdnZXI6OkNsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGhlYXAvQ29kZUJsb2NrU2V0Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
a1NldDo6aXRlcmF0ZSk6CisgICAgICAgICogaGVhcC9IYW5kbGVTZXQuaDoKKyAgICAgICAgKEpT
Qzo6SGFuZGxlTm9kZTo6bmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZVNldDo6Zm9yRWFjaFN0
cm9uZ0hhbmRsZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6R2F0
aGVySGVhcFNuYXBzaG90RGF0YTo6R2F0aGVySGVhcFNuYXBzaG90RGF0YSk6CisgICAgICAgIChK
U0M6OkdhdGhlckhlYXBTbmFwc2hvdERhdGE6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpS
ZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXM6OlJlbW92ZURlYWRIZWFwU25hcHNob3ROb2Rlcyk6
CisgICAgICAgIChKU0M6OlJlbW92ZURlYWRIZWFwU25hcHNob3ROb2Rlczo6b3BlcmF0b3IoKSk6
CisgICAgICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpw
cm90ZWN0ZWRPYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKEpTQzo6Wm9tYmlmeTo6dmlzaXQpOgorICAgICAgICAoSlNDOjpab21iaWZ5OjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpoYW5kbGVTZXQpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpoYW5kbGVTdGFjayk6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBoZWFwL0hlYXBDZWxsLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwQ2VsbDo6SGVhcENlbGwpOgorICAgICAgICAoSlND
OjpIZWFwQ2VsbDo6emFwKToKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OmlzWmFwcGVkKToKKyAg
ICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmRlcHJlY2F0
ZWRSZXBvcnRFeHRyYU1lbW9yeSk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvSGVh
cFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoSlNDOjpTdG9yYWdlU3RhdGlzdGljczo6dmlzaXQp
OgorICAgICAgICAoSlNDOjpTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKSk6CisgICAgICAg
ICogaGVhcC9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpHYXRoZXJMaXZlT2JqRnVu
Y3Rvcjo6dmlzaXQpOgorICAgICAgICAoSlNDOjpHYXRoZXJMaXZlT2JqRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXNl
dCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpMYXN0Q2hhbmNlVG9GaW5hbGl6ZTo6b3BlcmF0b3IoKSk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjp0YWtlTGFzdEFjdGl2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAgIChKU0M6OlNldE5ld2x5
QWxsb2NhdGVkRnVuY3Rvcjo6U2V0TmV3bHlBbGxvY2F0ZWRGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6U2V0TmV3bHlBbGxvY2F0ZWRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmRpZFJldGlyZUJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OkNvdW50RnVuY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkNvdW50RnVuY3Rvcjo6cmV0dXJuVmFsdWUpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpjZWxsS2luZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzaXplKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxs
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Omxh
c3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN3ZWVwKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1Nl
dHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OmlzUGFnZWRPdXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2hyaW5rKToKKyAgICAg
ICAgKEpTQzo6Y2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpjbGVhck1hcmtzKToKKyAgICAgICAgKEpTQzo6RnJlZTo6RnJlZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZyZWU6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGcmVl
T3JTaHJpbms6OkZyZWVPclNocmluayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZyZWVPclNo
cmluazo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZpc2l0V2Vha1NldDo6
VmlzaXRXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmlzaXRXZWFrU2V0OjpvcGVy
YXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVhcFdlYWtTZXQ6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXN0Q2hhbmNlVG9GaW5hbGl6ZTo6b3BlcmF0b3Io
KSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0b3BBbGxvY2F0aW5nRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlc3VtZUFsbG9jYXRpbmdGdW5jdG9yOjpv
cGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2xlYXJOZXdseUFsbG9jYXRlZDo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU5ld2x5QWxsb2NhdGVk
OjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRvckZvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVdp
dGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpz
aXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNhcGFjaXR5KToKKyAgICAgICAgKEpT
Qzo6Q2xlYXJNYXJrczo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN3ZWVw
OjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Wm9tYmlmeVN3ZWVwOjpvcGVy
YXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya0NvdW50OjpvcGVyYXRvcigpKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2l6ZTo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp6YXApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzWmFwcGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6YWxsb2NhdGVDZWxsKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OmlzWmFwcGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Q2VsbEFk
ZHJlc3NDaGVja0Z1bmN0b3I6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6Q2VsbEFkZHJlc3NDaGVja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA3LTEyICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
RU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLIGZsYWcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAgICAgaGVhcC9I
YW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCisgICAgaGVhcC9IZWFwQ2VsbC5jcHAK
ICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAog
ICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQwLDYg
KzExNDAsMTAgQEAKIAkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFG
NzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9OwogCQky
QUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxp
YiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4
NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OworCQk0MTI5NTI3NzFEMkNG
NkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaGVhZGVy
LnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUy
NzMxRDJDRjZBQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVy
X2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJu
YWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNf
Z2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDEyOTUyNzkxRDJDRjZCQzAw
RTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzUxRDJDRjZBQzAwRTc4
Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxMjk1MjdBMUQyQ0Y2QkMwMEU3
OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEyOTUyNzYxRDJDRjZB
QzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzNTlD
RjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyog
RGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUExMzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQzMTlEQTAzMUMxQkU0MEEw
MDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzMTlEQTAxMUMxQkUzQzEwMDFE
MjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLzsgfTsKQEAgLTE0
NzQsMTAgKzE0NzgsNiBAQAogCQk5OURBMDBBODFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNf
Z2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVp
bHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1
QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTExQkQ1OTky
NzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxMjk1
Mjc3MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBl
cl9oZWFkZXIucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMjk1MjczMUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5h
bHNfd3JhcHBlcl9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3NDFEMkNGNkFDMDBFNzhCODkg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUy
NzkxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaGVhZGVyLnB5
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5NTI3
NTFEMkNGNkFDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfd3JhcHBlcl9oZWFkZXIucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDEyOTUy
N0ExRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3dyYXBwZXJfaW1wbGVtZW50
YXRpb24ucHkgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMjk1Mjc2MUQyQ0Y2QUMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV93cmFwcGVyX2lt
cGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlu
cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEw
MEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OURBMDBCMDFCRDU5OTRF
MDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5REEwMEFEMUJENTk5M0UwMEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5REEw
MEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFFMUJENTk5M0UwMEY0NTc1QyAv
KiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTk5Miw2ICsxOTkyLDggQEAKIAkJREMxN0U4MUExQzlDOTFFOTAwOEE2
QUIzIC8qIENDYWxsSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBEQzE3RTgxNjFDOUM4MDJCMDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNw
cCAqLzsgfTsKIAkJREMyMTQzMDcxQ0EzMkU1NTAwMEE4ODY5IC8qIElDU3RhdHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMjE0MzA2MUNBMzJFNTIw
MDBBODg2OSAvKiBJQ1N0YXRzLmggKi87IH07CiAJCURDMjE0MzA4MUNBMzJFNTgwMDBBODg2OSAv
KiBJQ1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERDMjE0MzA1MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmNwcCAqLzsgfTsKKwkJREMz
RDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVh
cENlbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlEQzNEMkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThD
IC8qIEhlYXBDZWxsLmNwcCAqLzsgfTsKIAkJREM0NTRCOEMxRDAwRTgyMjAwNEMxOEFGIC8qIEFp
ckR1bXBBc0pTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi87IH07CiAJ
CURDNDU0QjhEMUQwMEU4MjQwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEIxRDAwRTgxRjAwNEMxOEFG
IC8qIEFpckR1bXBBc0pTLmggKi87IH07CiAJCURDNjA1QjVEMUNFMjZFQTAwMDU5MzcxOCAvKiBQ
cm9maWxlckV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLzsg
fTsKQEAgLTQyMjQsNiArNDIyNiw4IEBACiAJCURDMTdFODE2MUM5QzgwMkIwMDhBNkFCMyAvKiBD
Q2FsbEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0Nh
bGxIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMyMTQzMDUxQ0Ez
MkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSUNTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDMjE0
MzA2MUNBMzJFNTIwMDBBODg2OSAvKiBJQ1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElDU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJC
MDkxRDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhlYXBDZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDM0Qy
QjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIZWFwQ2VsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNDU0QjhBMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJEdW1wQXNKUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJEdW1wQXNKUy5jcHA7IHBhdGggPSBiMy9h
aXIvQWlyRHVtcEFzSlMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzQ1NEI4
QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQWlyRHVtcEFzSlMuaDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzYwNUI1OTFDRTI2RTk4MDA1OTM3MTggLyog
UHJvZmlsZXJFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlckV2ZW50LmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE5MSw2ICs1MTk1LDggQEAKIAkJCQkxNDZGQTVB
ODEzNzhGNkIwMDAzNjI3QTMgLyogSGFuZGxlVHlwZXMuaCAqLywKIAkJCQkxNEJBN0E5NTEzQUFE
RkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgKi8sCiAJCQkJMTRCQTdBOTYxM0FBREZGODAwNUI3QzJD
IC8qIEhlYXAuaCAqLywKKwkJCQlEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwu
Y3BwICovLAorCQkJCURDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovLAog
CQkJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi8sCiAJ
CQkJMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggKi8sCiAJCQkJ
QzJEQTc3ODIxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggKi8sCkBAIC03MjcwLDYg
KzcyNzYsNyBAQAogCQkJCTBGRkI5MjFBMTZEMDJFQzUwMDU1QTVEQiAvKiBERkdCYXNpY0Jsb2Nr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCQkQ5NjFDNUZG
M0Y1MDAyM0VGMjMgLyogQjNTcGFyc2VDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlE
QzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKQEAgLTk0MTIsNiArOTQxOSw3IEBACiAJCQkJREM2MDVCNUYxQ0Uy
NkVBNTAwNTkzNzE4IC8qIFByb2ZpbGVyVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwRUNB
NjA3MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREMzRDJCMEMxRDM0Mzc3MDAwQkE5MThDIC8qIEhlYXBDZWxsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTJDMTdCMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVu
bmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5
IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJENERFODE5ODMy
REFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCShyZXZpc2lvbiAyMDMw
NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMywgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAq
CkBAIC00MCwxNCArNDAsMjEgQEAgbmFtZXNwYWNlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IHN0cnVjdCBHYXRoZXJTb3VyY2VQcm92aWRlcnMgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRG
dW5jdG9yIHsKLSAgICBIYXNoU2V0PFNvdXJjZVByb3ZpZGVyKj4gc291cmNlUHJvdmlkZXJzOwor
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbXV0YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBh
IEMrKyBsYW1iZGEuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1OTY0NAorICAgIG11dGFibGUgSGFzaFNldDxTb3VyY2VQcm92aWRlcio+IHNvdXJjZVBy
b3ZpZGVyczsKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAKICAgICBHYXRo
ZXJTb3VyY2VQcm92aWRlcnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAg
OiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpIHsgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVz
IG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigp
KEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29uc3QKICAgICB7Cisg
ICAgICAgIGlmIChraW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogY2Vs
bCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxsKTsKKyAgICAgICAgCiAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CiAg
ICAgICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKQEAgLTE5MSw3ICsxOTgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29sIG9wZXJh
dG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9k
ZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAg
ICAgICAgICBpZiAobV9tb2RlID09IFN0ZXBwaW5nTW9kZUVuYWJsZWQpCkBAIC0yOTgsNyArMzA1
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2Nr
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fZGVidWdnZXIgPT0gY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKICAgICAgICAgICAgIG1fZGVidWdnZXItPnRvZ2dsZUJy
ZWFrcG9pbnQoY29kZUJsb2NrLCBtX2JyZWFrcG9pbnQsIG1fZW5hYmxlZE9yTm90KTsKQEAgLTQ3
NCw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3Io
KShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBj
b2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNEZWJ1Z2dl
clJlcXVlc3RzKCkgJiYgbV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5k
ZWJ1Z2dlcigpKQogICAgICAgICAgICAgY29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMo
KTsKQEAgLTUwNCw3ICs1MTEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29sIG9wZXJhdG9yKCkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY29kZUJsb2NrLT5o
YXNEZWJ1Z2dlclJlcXVlc3RzKCkgJiYgbV9nbG9iYWxPYmplY3QgPT0gY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSkKICAgICAgICAgICAgIGNvZGVCbG9jay0+Y2xlYXJEZWJ1Z2dlclJlcXVlc3Rz
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2
aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8vIFZpc2l0
cyBlYWNoIENvZGVCbG9jayBpbiB0aGUgaGVhcCB1bnRpbCB0aGUgdmlzaXRvciBmdW5jdGlvbiBy
ZXR1cm5zIHRydWUKICAgICAvLyB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIGRvbmUgaXRlcmF0aW5n
LCBvciB1bnRpbCBldmVyeSBDb2RlQmxvY2sgaGFzIGJlZW4KICAgICAvLyB2aXNpdGVkLgotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShGdW5jdG9yJiBmdW5jdG9y
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgaXRlcmF0ZShjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsK
ICAgICAgICAgZm9yIChhdXRvJiBjb2RlQmxvY2sgOiBtX29sZENvZGVCbG9ja3MpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oCShyZXZpc2lvbiAyMDMwNjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSGFuZGxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlQmxv
Y2suaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRM
aXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtNzksNyArODAsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3ImLCBjb25zdCBIYXNo
Q291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBmb3JFYWNoU3Ryb25nSGFuZGxlKGNvbnN0IEZ1bmN0b3ImLCBjb25zdCBIYXNo
Q291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCk7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YW5kbGVOb2RlIE5vZGU7CkBAIC0xODAsNyArMTgxLDcgQEAgaW5saW5lIEhhbmRsZU5vZGUqIEhh
bmRsZU5vZGU6Om5leHQoKQogICAgIHJldHVybiBtX25leHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHZvaWQgSGFuZGxlU2V0Ojpmb3JFYWNoU3Ryb25nSGFuZGxlKEZ1bmN0b3Im
IGZ1bmN0b3IsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lwU2V0KQordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVTZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUo
Y29uc3QgRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4mIHNr
aXBTZXQpCiB7CiAgICAgSGFuZGxlU2V0OjpOb2RlKiBlbmQgPSBtX3N0cm9uZ0xpc3QuZW5kKCk7
CiAgICAgZm9yIChIYW5kbGVTZXQ6Ok5vZGUqIG5vZGUgPSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsg
bm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5uZXh0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYxICsyNTIsMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzVmFsaWRUaHJlYWRTdGF0ZShWTQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdHJ1Y3QgQ291bnQgOiBwdWJsaWMgTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7Ci0g
ICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopIHsgY291bnQoMSk7IH0KLX07Ci0KLXN0cnVjdCBD
b3VudElmR2xvYmFsT2JqZWN0IDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3RvciB7Ci0gICAgaW5s
aW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgaWYgKCFjZWxsLT5p
c09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIWFzT2JqZWN0KGNl
bGwpLT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb3Vu
dCgxKTsKLSAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxs
KQotICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Ci0gICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwotICAgIH0KLX07Ci0KLWNsYXNzIFJlY29yZFR5cGUgewotcHVibGlj
OgotICAgIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gUmV0dXJuVHlwZTsK
LQotICAgIFJlY29yZFR5cGUoKTsKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0Nl
bGwqKTsKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7Ci0KLXByaXZhdGU6Ci0gICAgY29u
c3QgY2hhciogdHlwZU5hbWUoSlNDZWxsKik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3Vu
dFNldD4gbV90eXBlQ291bnRTZXQ7Ci19OwotCi1pbmxpbmUgUmVjb3JkVHlwZTo6UmVjb3JkVHlw
ZSgpCi0gICAgOiBtX3R5cGVDb3VudFNldChzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4o
KSkKLXsKLX0KLQotaW5saW5lIGNvbnN0IGNoYXIqIFJlY29yZFR5cGU6OnR5cGVOYW1lKEpTQ2Vs
bCogY2VsbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRUeXBlKFR5cGVDb3VudFNldCYgc2V0
LCBKU0NlbGwqIGNlbGwpCiB7CisgICAgY29uc3QgY2hhciogdHlwZU5hbWUgPSAiW3Vua25vd25d
IjsKICAgICBjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjZWxsLT5jbGFzc0luZm8oKTsKLSAgICBp
ZiAoIWluZm8gfHwgIWluZm8tPmNsYXNzTmFtZSkKLSAgICAgICAgcmV0dXJuICJbdW5rbm93bl0i
OwotICAgIHJldHVybiBpbmZvLT5jbGFzc05hbWU7Ci19Ci0KLWlubGluZSBJdGVyYXRpb25TdGF0
dXMgUmVjb3JkVHlwZTo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi17Ci0gICAgbV90eXBlQ291
bnRTZXQtPmFkZCh0eXBlTmFtZShjZWxsKSk7Ci0gICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7Ci19Ci0KLWlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBSZWNv
cmRUeXBlOjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0dXJuIFdURk1vdmUobV90eXBlQ291bnRT
ZXQpOworICAgIGlmIChpbmZvICYmIGluZm8tPmNsYXNzTmFtZSkKKyAgICAgICAgdHlwZU5hbWUg
PSBpbmZvLT5jbGFzc05hbWU7CisgICAgc2V0LmFkZCh0eXBlTmFtZSk7CiB9CiAKIH0gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQpAQCAtNzcxLDkgKzcyMywxMiBAQCBzdHJ1Y3QgR2F0aGVySGVhcFNu
YXBzaG90RGF0YSA6IE1hcmtlZEJsCiAgICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3Io
KShIZWFwQ2VsbCogaGVhcENlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIGNvbnN0CiAgICAgewot
ICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5oZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVy
KTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkgeworICAgICAgICAgICAg
SlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOworICAgICAgICAg
ICAgY2VsbC0+bWV0aG9kVGFibGUoKS0+aGVhcFNuYXBzaG90KGNlbGwsIG1fYnVpbGRlcik7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAg
fQogCkBAIC03OTYsOSArNzUxLDEwIEBAIHN0cnVjdCBSZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9k
ZXMgOiBNYXIKICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKLSAgICAgICAgbV9zbmFwc2hv
dC5zd2VlcENlbGwoY2VsbCk7CisgICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwp
CisgICAgICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2VsbChzdGF0aWNfY2FzdDxKU0NlbGwqPihj
ZWxsKSk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0K
IApAQCAtOTk4LDI5ICs5NTQsNjQgQEAgc2l6ZV90IEhlYXA6OmNhcGFjaXR5KCkKIAogc2l6ZV90
IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFj
aFByb3RlY3RlZENlbGw8Q291bnRJZkdsb2JhbE9iamVjdD4oKTsKKyAgICBzaXplX3QgcmVzdWx0
ID0gMDsKKyAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKKyAgICAgICAgWyZdIChKU0NlbGwqIGNl
bGwpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpICYmIGFzT2JqZWN0KGNlbGwp
LT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICB9
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzaXplX3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291
bnQoKQogewogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0g
ICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsPENvdW50SWZHbG9iYWxPYmpl
Y3Q+KGl0ZXJhdGlvblNjb3BlKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBtX29iamVj
dFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAgaXRlcmF0aW9uU2NvcGUsCisgICAgICAg
IFsmXSAoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5kKSAtPiBJdGVyYXRp
b25TdGF0dXMgeworICAgICAgICAgICAgaWYgKGtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
ICAgIEpTQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxsKTsKKyAgICAg
ICAgICAgIGlmIChjZWxsLT5pc09iamVjdCgpICYmIGFzT2JqZWN0KGNlbGwpLT5pc0dsb2JhbE9i
amVjdCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJu
IGZvckVhY2hQcm90ZWN0ZWRDZWxsPENvdW50PigpOworICAgIHNpemVfdCByZXN1bHQgPSAwOwor
ICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCopIHsKKyAgICAg
ICAgICAgIHJlc3VsdCsrOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291
bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8UmVjb3JkVHlwZT4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKKyAgICAgICAg
WyZdIChKU0NlbGwqIGNlbGwpIHsKKyAgICAgICAgICAgIHJlY29yZFR5cGUoKnJlc3VsdCwgY2Vs
bCk7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMoKQogeworICAgIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50
U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7Ci0g
ICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsPFJlY29yZFR5cGU+KGl0ZXJh
dGlvblNjb3BlKTsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKKyAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCisgICAgICAgIFsmXSAoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpL
aW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBI
ZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAgIHJlY29yZFR5cGUoKnJlc3VsdCwgc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oY2VsbCkpOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6Q29udGludWU7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZv
aWQgSGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2NrcygpCkBAIC0xMzA1LDkgKzEyOTYsMTEgQEAgc3Ry
dWN0IE1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yIDogcHVibAogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IG1fYmxvY2tzW21faW5kZXgr
K10gPSBibG9jazsgfQorICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIGNv
bnN0IHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2NrOyB9CiAKLSAgICBzaXplX3QgbV9pbmRl
eDsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG11dGFibGUgZmllbGQgYmVjYXVlIHRoaXMgaXNu
J3QgYSBDKysgbGFtYmRhLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTk2NDQKKyAgICBtdXRhYmxlIHNpemVfdCBtX2luZGV4OwogICAgIFZlY3RvcjxN
YXJrZWRCbG9jayo+JiBtX2Jsb2NrczsKIH07CiAKQEAgLTE1NzgsNyArMTU3MSw3IEBAIHZvaWQg
SGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2VJZk5vdERvbmVSZWMKIAogY2xhc3MgWm9tYmlmeSA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgotICAgIGlubGluZSB2b2lk
IHZpc2l0KEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgdm9pZCB2aXNpdChIZWFwQ2VsbCogY2Vs
bCkgY29uc3QKICAgICB7CiAgICAgICAgIHZvaWQqKiBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KGNlbGwpOwogCkBAIC0xNTkxLDcgKzE1ODQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGZvciAoOyBjdXJyZW50IDwgbGltaXQ7IGN1cnJlbnQrKykKICAgICAgICAgICAgICpjdXJyZW50
ID0gem9tYmlmaWVkQml0czsKICAgICB9Ci0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBj
ZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7CiAgICAgICAgIHZpc2l0KGNlbGwpOwog
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKQEAgLTE2MDMsNyArMTU5
Niw3IEBAIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmplY3RzKCkKICAgICAvLyBTd2VlcCBub3cg
YmVjYXVzZSBkZXN0cnVjdG9ycyB3aWxsIGNyYXNoIG9uY2Ugd2UncmUgem9tYmlmaWVkLgogICAg
IG1fb2JqZWN0U3BhY2Uuem9tYmlmeVN3ZWVwKCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbDxa
b21iaWZ5PihpdGVyYXRpb25TY29wZSk7CisgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENl
bGwoaXRlcmF0aW9uU2NvcGUsIFpvbWJpZnkoKSk7CiB9CiAKIHZvaWQgSGVhcDo6Zmx1c2hXcml0
ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKiBjZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2LDggQEAgcHVibGljOgogCiAgICAgSGFz
aFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBtYXJrTGlzdFNldCgpOwogICAgIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9y
RWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hDb2RlQmxvY2soRnVu
Y3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaFByb3Rl
Y3RlZENlbGwoY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgZm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJik7CiAKICAgICBIYW5kbGVTZXQq
IGhhbmRsZVNldCgpIHsgcmV0dXJuICZtX2hhbmRsZVNldDsgfQogICAgIEhhbmRsZVN0YWNrKiBo
YW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hhbmRsZVN0YWNrOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBIZWFwQ2VsbDo6S2luZCBraW5k
KQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgSGVhcENlbGw6OkpTQ2VsbDoKKyAg
ICAgICAgb3V0LnByaW50KCJKU0NlbGwiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSGVh
cENlbGw6OlN0b3JhZ2U6CisgICAgICAgIG91dC5wcmludCgiU3RvcmFnZSIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
Q2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBIZWFwQ2VsbCB7CitwdWJsaWM6CisgICAgZW51bSBLaW5kIDogaW50OF90IHsKKyAg
ICAgICAgSlNDZWxsLAorICAgICAgICBTdG9yYWdlCisgICAgfTsKKyAgICAKKyAgICBIZWFwQ2Vs
bCgpIHsgfQorICAgIAorICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3QqKj4odGhpcykgPSAwOyB9CisgICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEq
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqIGNvbnN0Kj4odGhpcyk7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisK
K3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6SGVhcENlbGw6OktpbmQpOwor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgaW5s
aW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTQogICAgICAgICBkZXByZWNhdGVk
UmVwb3J0RXh0cmFNZW1vcnlTbG93Q2FzZShzaXplKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJiBmdW5j
dG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVhcDo6Zm9yRWFj
aENvZGVCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIC8vIFdlIGRvbid0IGtu
b3cgdGhlIGZ1bGwgc2V0IG9mIENvZGVCbG9ja3MgdW50aWwgY29tcGlsYXRpb24gaGFzIHRlcm1p
bmF0ZWQuCiAgICAgY29tcGxldGVBbGxKSVRQbGFucygpOwpAQCAtMTczLDE5ICsxNzMsMTEgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSAogICAgIHJldHVybiBtX2Nv
ZGVCbG9ja3MuaXRlcmF0ZTxGdW5jdG9yPihmdW5jdG9yKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9y
RWFjaFByb3RlY3RlZENlbGwoRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB2b2lkIEhlYXA6OmZvckVhY2hQcm90ZWN0ZWRDZWxsKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMp
CiAgICAgICAgIGZ1bmN0b3IocGFpci5rZXkpOwogICAgIG1faGFuZGxlU2V0LmZvckVhY2hTdHJv
bmdIYW5kbGUoZnVuY3RvciwgbV9wcm90ZWN0ZWRWYWx1ZXMpOwotCi0gICAgcmV0dXJuIGZ1bmN0
b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5l
IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwo
KQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENl
bGwoZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVj
dG9yKHNpemVfdCBieXRlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
dGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ2LDcgKzE0Niw3
IEBAIGNsYXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVibGljIE1hcmtlZEIKIHB1YmxpYzoKICAg
ICBTdG9yYWdlU3RhdGlzdGljcygpOwogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
SlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqLCBIZWFw
Q2VsbDo6S2luZCkgY29uc3Q7CiAKICAgICBzaXplX3Qgb2JqZWN0V2l0aE91dE9mTGluZVN0b3Jh
Z2VDb3VudCgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwpAQCAtMTkwLDkgKzE5MCwxMyBA
QCBpbmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6dmlzaXQoSlNDCiAgICAgbV9zdG9yYWdl
Q2FwYWNpdHkgKz0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAq
IHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KTsgCiB9CiAKLWlubGluZSBJdGVyYXRp
b25TdGF0dXMgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQoraW5s
aW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShIZWFwQ2Vs
bCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29uc3QKIHsKLSAgICB2aXNpdChjZWxsKTsK
KyAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQK
KyAgICAgICAgY29uc3RfY2FzdDxTdG9yYWdlU3RhdGlzdGljcyo+KHRoaXMpLT52aXNpdChzdGF0
aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQogICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBWZXJpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw5ICsxMjAsMTMg
QEAgc3RydWN0IEdhdGhlckxpdmVPYmpGdW5jdG9yIDogTWFya2VkQmxvYwogICAgICAgICBtX2xp
c3QubGl2ZU9iamVjdHMuYXBwZW5kKGRhdGEpOwogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1
cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3Io
KShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHZpc2l0KGNlbGwpOworICAgICAgICBpZiAoa2luZCA9PSBIZWFwQ2VsbDo6SlNDZWxsKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb25zdF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRo
aXMgaXNuJ3QgYSBDKysgbGFtYmRhLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgICAgICAgICAgY29uc3RfY2FzdDxHYXRo
ZXJMaXZlT2JqRnVuY3Rvcio+KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5jcHAJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE4Niw3
ICsxODYsMTAgQEAgTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbAogCiAg
ICAgc2l6ZV90IGNlbGxTaXplID0gbV9jZWxsU2l6ZSA/IG1fY2VsbFNpemUgOiBXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihieXRlcyk7CiAKLSAgICByZXR1
cm4gTWFya2VkQmxvY2s6OmNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBibG9ja1NpemUsIGNlbGxTaXpl
LCBtX25lZWRzRGVzdHJ1Y3Rpb24pOworICAgIC8vIEZJWE1FOiBTdXBwb3J0IGFsbG9jYXRpbmcg
c3RvcmFnZSBpbiBtYXJrZWQgYmxvY2tzLiBUaGlzIHdvdWxkIG1lYW4gdGhhdCBhbGxvY2F0ZUJs
b2NrKCkKKyAgICAvLyB0YWtlcyBhIEhlYXBDZWxsOjpLaW5kLCBvciBzb21ldGhpbmcgbGlrZSB0
aGF0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2
NTgKKyAgICByZXR1cm4gTWFya2VkQmxvY2s6OmNyZWF0ZSgqbV9oZWFwLCB0aGlzLCBibG9ja1Np
emUsIGNlbGxTaXplLCBtX25lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpOwogfQog
CiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6YWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAt
MjMzLDE1ICsyMzYsMTMgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKICAgICB9CiB9
CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3Rv
ciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+bGFz
dENoYW5jZVRvRmluYWxpemUoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omxhc3RD
aGFuY2VUb0ZpbmFsaXplKCkKIHsKICAgICBtX2Jsb2NrTGlzdC5hcHBlbmQobV9yZXRpcmVkQmxv
Y2tzKTsKLSAgICBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSBmdW5jdG9yOwotICAgIGZvckVhY2hCbG9j
ayhmdW5jdG9yKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sq
IGJsb2NrKSB7CisgICAgICAgICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKKyAg
ICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0K
ICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9jayhG
dW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgYWRkQmxvY2soTWFya2VkQmxvY2sq
KTsKICAgICB2b2lkIHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKik7CkBAIC0xNTEsNyArMTUxLDcg
QEAgaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXN1bWVBbGxvYwogICAgIG1fbGFzdEFj
dGl2ZUJsb2NrID0gMDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpmb3JF
YWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBNYXJrZWRCbG9jayogbmV4
dDsKICAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IG1fYmxvY2tMaXN0LmhlYWQoKTsgYmxv
Y2s7IGJsb2NrID0gbmV4dCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNCArMzUsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgYm9vbCBjb21wdXRlQmFsYW5jZSA9IGZhbHNl
Owogc3RhdGljIHNpemVfdCBiYWxhbmNlOwogCi1NYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNy
ZWF0ZShIZWFwJiBoZWFwLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGNhcGFj
aXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbikKK01hcmtlZEJsb2Nr
KiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtlZEFsbG9jYXRvciogYWxsb2Nh
dG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCkKIHsKICAgICBpZiAoY29tcHV0ZUJhbGFuY2Up
IHsKICAgICAgICAgYmFsYW5jZSsrOwogICAgICAgICBpZiAoIShiYWxhbmNlICUgMTApKQogICAg
ICAgICAgICAgZGF0YUxvZygiTWFya2VkQmxvY2sgQmFsYW5jZTogIiwgYmFsYW5jZSwgIlxuIik7
CiAgICAgfQotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG5ldyAoTm90TnVsbCwgZmFzdEFsaWdu
ZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFsbG9jYXRvciwgY2Fw
YWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBNYXJrZWRCbG9jayogYmxv
Y2sgPSBuZXcgKE5vdE51bGwsIGZhc3RBbGlnbmVkTWFsbG9jKGJsb2NrU2l6ZSwgY2FwYWNpdHkp
KSBNYXJrZWRCbG9jayhhbGxvY2F0b3IsIGNhcGFjaXR5LCBjZWxsU2l6ZSwgbmVlZHNEZXN0cnVj
dGlvbiwgY2VsbEtpbmQpOwogICAgIGhlYXAuZGlkQWxsb2NhdGVCbG9jayhjYXBhY2l0eSk7CiAg
ICAgcmV0dXJuIGJsb2NrOwogfQpAQCAtNjAsMTIgKzYwLDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6
OmRlc3Ryb3koSGVhcCYgaGVhcCwgTWEKICAgICBoZWFwLmRpZEZyZWVCbG9jayhjYXBhY2l0eSk7
CiB9CiAKLU1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlv
bikKK01hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwg
c2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwg
SGVhcENlbGw6OktpbmQgY2VsbEtpbmQpCiAgICAgOiBEb3VibHlMaW5rZWRMaXN0Tm9kZTxNYXJr
ZWRCbG9jaz4oKQogICAgICwgbV9hdG9tc1BlckNlbGwoKGNlbGxTaXplICsgYXRvbVNpemUgLSAx
KSAvIGF0b21TaXplKQogICAgICwgbV9lbmRBdG9tKChhbGxvY2F0b3ItPmNlbGxTaXplKCkgPyBh
dG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgOiBmaXJzdEF0b20oKSkgKyAxKQogICAgICwg
bV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAsIG1fbmVlZHNEZXN0cnVjdGlvbihuZWVkc0Rlc3Ry
dWN0aW9uKQorICAgICwgbV9jZWxsS2luZChjZWxsS2luZCkKICAgICAsIG1fYWxsb2NhdG9yKGFs
bG9jYXRvcikKICAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQgb3V0IHVubWFy
a2VkLgogICAgICwgbV93ZWFrU2V0KGFsbG9jYXRvci0+aGVhcCgpLT52bSgpLCAqdGhpcykKQEAg
LTc0LDE3ICs3NSwxOSBAQCBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soTWFya2VkQWxsb2NhdG9y
CiAgICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIH0KIAotaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKEpTQ2VsbCogY2VsbCkKK2lubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihIZWFwQ2VsbCogY2VsbCkKIHsKICAgICAv
LyBBIHByZXZpb3VzIGVhZ2VyIHN3ZWVwIG1heSBhbHJlYWR5IGhhdmUgcnVuIGNlbGwncyBkZXN0
cnVjdG9yLgogICAgIGlmIChjZWxsLT5pc1phcHBlZCgpKQogICAgICAgICByZXR1cm47CisgICAg
CisgICAgSlNDZWxsKiBqc0NlbGwgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKTsKIAotICAg
IEFTU0VSVChjZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICBpZiAoY2VsbC0+aW5saW5lVHlwZUZs
YWdzKCkgJiBTdHJ1Y3R1cmVJc0ltbW9ydGFsKQotICAgICAgICBjZWxsLT5zdHJ1Y3R1cmUoKnZt
KCkpLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKKyAgICBBU1NFUlQo
anNDZWxsLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBpZiAoanNDZWxsLT5pbmxpbmVUeXBlRmxhZ3Mo
KSAmIFN0cnVjdHVyZUlzSW1tb3J0YWwpCisgICAgICAgIGpzQ2VsbC0+c3RydWN0dXJlKCp2bSgp
KS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koanNDZWxsKTsKICAgICBlbHNlCi0g
ICAgICAgIGpzQ2FzdDxKU0Rlc3RydWN0aWJsZU9iamVjdCo+KGNlbGwpLT5jbGFzc0luZm8oKS0+
bWV0aG9kVGFibGUuZGVzdHJveShjZWxsKTsKKyAgICAgICAganNDYXN0PEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Kj4oanNDZWxsKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmRlc3Ryb3koanNDZWxs
KTsKICAgICBjZWxsLT56YXAoKTsKIH0KIApAQCAtMTAzLDcgKzEwNiw3IEBAIE1hcmtlZEJsb2Nr
OjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3BlY2kKICAgICAgICAgaWYgKGJsb2NrU3RhdGUgPT0g
TWFya2VkICYmIChtX21hcmtzLmdldChpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBtX25ld2x5
QWxsb2NhdGVkLT5nZXQoaSkpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEpT
Q2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsK
KyAgICAgICAgSGVhcENlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+
KCZhdG9tcygpW2ldKTsKIAogICAgICAgICBpZiAoY2FsbERlc3RydWN0b3JzICYmIGJsb2NrU3Rh
dGUgIT0gTmV3KQogICAgICAgICAgICAgY2FsbERlc3RydWN0b3IoY2VsbCk7CkBAIC0xNzEsNyAr
MTc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3Bl
cmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVh
cENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKSA9PSBtX2Jsb2NrKTsKICAgICAgICAgbV9ibG9j
ay0+c2V0TmV3bHlBbGxvY2F0ZWQoY2VsbCk7CkBAIC0yMTMsNyArMjE2LDggQEAgdm9pZCBNYXJr
ZWRCbG9jazo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRgogICAgIEZyZWVDZWxsKiBuZXh0OwogICAg
IGZvciAoRnJlZUNlbGwqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dCkg
ewogICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dDsKLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxKU0NlbGwqPihjdXJyZW50KS0+emFwKCk7CisgICAgICAgIGlmIChtX25lZWRzRGVzdHJ1Y3Rp
b24pCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEhlYXBDZWxsKj4oY3VycmVudCktPnph
cCgpOwogICAgICAgICBjbGVhck5ld2x5QWxsb2NhdGVkKGN1cnJlbnQpOwogICAgIH0KICAgICAK
QEAgLTI5MCw3ICsyOTQsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpkaWRSZXRpcmVCbG9jayhjb25z
dCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9yIChGcmVlQ2VsbCogY3VycmVudCA9IGhl
YWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBjdXJyZW50LT5u
ZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGN1cnJlbnQpLT56YXAoKTsK
KyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1f
c3RhdGUgPT0gRnJlZUxpc3RlZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZm5k
ZWYgTWFya2VkQmxvY2tfaAogI2RlZmluZSBNYXJrZWRCbG9ja19oCiAKKyNpbmNsdWRlICJIZWFw
Q2VsbC5oIgogI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJdGVyYXRpb25T
dGF0dXMuaCIKICNpbmNsdWRlICJXZWFrU2V0LmgiCkBAIC01Myw4ICs1NCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIAotICAgIGJvb2wgaXNaYXBw
ZWQoY29uc3QgSlNDZWxsKik7Ci0gICAgCiAgICAgLy8gQSBtYXJrZWQgYmxvY2sgaXMgYSBwYWdl
LWFsaWduZWQgY29udGFpbmVyIGZvciBoZWFwLWFsbG9jYXRlZCBvYmplY3RzLgogICAgIC8vIE9i
amVjdHMgYXJlIGFsbG9jYXRlZCB3aXRoaW4gY2VsbHMgb2YgdGhlIG1hcmtlZCBibG9jay4gRm9y
IGEgZ2l2ZW4KICAgICAvLyBtYXJrZWQgYmxvY2ssIGFsbCBjZWxscyBoYXZlIHRoZSBzYW1lIHNp
emUuIE9iamVjdHMgc21hbGxlciB0aGFuIHRoZQpAQCAtOTksMTQgKzk4LDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgdHlwZWRlZiBzaXplX3QgUmV0dXJuVHlwZTsKIAogICAgICAg
ICAgICAgQ291bnRGdW5jdG9yKCkgOiBtX2NvdW50KDApIHsgfQotICAgICAgICAgICAgdm9pZCBj
b3VudChzaXplX3QgY291bnQpIHsgbV9jb3VudCArPSBjb3VudDsgfQotICAgICAgICAgICAgUmV0
dXJuVHlwZSByZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICAgICAgICAgIHZv
aWQgY291bnQoc2l6ZV90IGNvdW50KSBjb25zdCB7IG1fY291bnQgKz0gY291bnQ7IH0KKyAgICAg
ICAgICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9
CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIFJldHVyblR5cGUgbV9jb3VudDsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG11dGFibGUgYmVjYXVzZSB3ZSdyZSB1c2luZyBh
IGZ1bmN0b3IgcmF0aGVyIHRoYW4gQysrIGxhbWJkYXMuCisgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgICAgICAgICBtdXRh
YmxlIFJldHVyblR5cGUgbV9jb3VudDsKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgTWFy
a2VkQmxvY2sqIGNyZWF0ZShIZWFwJiwgTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5
LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbik7CisgICAgICAgIHN0YXRp
YyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2Fw
YWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6
S2luZCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSGVhcCYsIE1hcmtlZEJsb2NrKik7
CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChjb25zdCB2b2lkKik7CkBAIC0x
NDcsMTYgKzE0OCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgY2VsbFNp
emUoKTsKICAgICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3Q7CisgICAgICAgIEhl
YXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKTsK
ICAgICAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CiAKICAgICAgICAgYm9vbCBpc01hcmtlZChjb25z
dCB2b2lkKik7CiAgICAgICAgIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7Ci0g
ICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEpTQ2VsbCopOworICAgICAgICBib29sIGlzTGl2ZShj
b25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOwog
ICAgICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgaXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCopOworICAgICAgICBib29sIGlzTWFya2VkT3JO
ZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICB2b2lkIHNldE1hcmtlZChj
b25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJNYXJrZWQoY29uc3Qgdm9pZCopOwogCkBA
IC0xNzAsOSArMTcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkUmV0aXJl
QmxvY2soY29uc3QgRnJlZUxpc3QmKTsKICAgICAgICAgdm9pZCB3aWxsUmVtb3ZlQmxvY2soKTsK
IAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoRnVuY3RvciYpOwotICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChG
dW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOworICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5j
dG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0
dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7
CkBAIC0xODIsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVm
IGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKLSAgICAgICAgTWFya2VkQmxvY2soTWFya2VkQWxsb2Nh
dG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUsIGJvb2wgbmVlZHNEZXN0cnVj
dGlvbik7CisgICAgICAgIE1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBh
Y2l0eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpL
aW5kKTsKICAgICAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIo
Y29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEpTQ2VsbCopOworICAg
ICAgICB2b2lkIGNhbGxEZXN0cnVjdG9yKEhlYXBDZWxsKik7CiAgICAgICAgIHRlbXBsYXRlPEJs
b2NrU3RhdGUsIFN3ZWVwTW9kZSwgYm9vbCBjYWxsRGVzdHJ1Y3RvcnM+IEZyZWVMaXN0IHNwZWNp
YWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CkBA
IC0xOTgsNiArMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc2l6ZV90IG1fY2Fw
YWNpdHk7CiAgICAgICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9uOworICAgICAgICBIZWFwQ2Vs
bDo6S2luZCBtX2NlbGxLaW5kOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9y
OwogICAgICAgICBCbG9ja1N0YXRlIG1fc3RhdGU7CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0
OwpAQCAtMzAzLDYgKzMwNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1f
bmVlZHNEZXN0cnVjdGlvbjsKICAgICB9CiAKKyAgICBpbmxpbmUgSGVhcENlbGw6OktpbmQgTWFy
a2VkQmxvY2s6OmNlbGxLaW5kKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NlbGxL
aW5kOworICAgIH0KKwogICAgIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OnNpemUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1hcmtDb3VudCgpICogY2VsbFNpemUoKTsKQEAgLTM2MywxMyAr
MzcxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChj
b25zdCBKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2Vk
T3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX3N0YXRlID09IFJldGlyZWQgfHwgbV9zdGF0ZSA9PSBNYXJrZWQpOwogICAgICAgICBy
ZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihjZWxsKSkgfHwgKG1fbmV3bHlBbGxvY2F0ZWQg
JiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTGl2ZShjb25zdCBKU0NlbGwqIGNlbGwpCisgICAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAobV9zdGF0ZSkgewogICAgICAgICBjYXNlIEFsbG9jYXRlZDoKQEAgLTQwNyw0MCArNDE1
LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKCFpc0F0b20ocCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nh
c3Q8Y29uc3QgSlNDZWxsKj4ocCkpOworICAgICAgICByZXR1cm4gaXNMaXZlKHN0YXRpY19jYXN0
PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoQ2VsbChG
dW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
SXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogICAgIHsKKyAgICAgICAgSGVhcENlbGw6OktpbmQga2luZCA9IG1fY2VsbEtpbmQ7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOwotICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgSGVhcENlbGwq
IGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxIZWFwQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAg
ICAgICAgICAgIGlmIChmdW5jdG9yKGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9u
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1h
cmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6
Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBI
ZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAg
ICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRv
bXMoKVtpXSk7CisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogICAgICAgICAgICAgaWYgKCFpc0xpdmUoY2Vs
bCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChmdW5jdG9y
KGNlbGwpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKKyAgICAgICAgICAgIGlmIChmdW5jdG9y
KGNlbGwsIGtpbmQpID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVh
ZENlbGwoRnVuY3RvciYgZnVuY3RvcikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6Zm9yRWFjaERlYWRDZWxsKGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0g
bV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9l
bmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwg
PSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigmYXRvbXMoKVtpXSk7CisgICAgICAgICAg
ICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21z
KClbaV0pOwogICAgICAgICAgICAgaWYgKGlzTGl2ZShjZWxsKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShy
ZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtMjcsMzEgKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
cnVjdCBGcmVlIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICBGcmVlKE1hcmtlZFNw
YWNlJiBzcGFjZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNlKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IG1fbWFya2VkU3BhY2UuZnJlZUJsb2NrKGJsb2NrKTsg
fQotcHJpdmF0ZToKLSAgICBNYXJrZWRTcGFjZSYgbV9tYXJrZWRTcGFjZTsKLX07Ci0KLXN0cnVj
dCBGcmVlT3JTaHJpbmsgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEZyZWVPclNo
cmluayhNYXJrZWRTcGFjZSYgc3BhY2UpIDogbV9tYXJrZWRTcGFjZShzcGFjZSkgeyB9Ci0gICAg
dm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBtX21hcmtlZFNwYWNlLmZyZWVP
clNocmlua0Jsb2NrKGJsb2NrKTsgfQotcHJpdmF0ZToKLSAgICBNYXJrZWRTcGFjZSYgbV9tYXJr
ZWRTcGFjZTsKLX07Ci0KLXN0cnVjdCBWaXNpdFdlYWtTZXQgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1
bmN0b3IgewotICAgIFZpc2l0V2Vha1NldChIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRv
cikgOiBtX2hlYXBSb290VmlzaXRvcihoZWFwUm9vdFZpc2l0b3IpIHsgfQotICAgIHZvaWQgb3Bl
cmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxvY2stPnZpc2l0V2Vha1NldChtX2hlYXBS
b290VmlzaXRvcik7IH0KLXByaXZhdGU6Ci0gICAgSGVhcFJvb3RWaXNpdG9yJiBtX2hlYXBSb290
VmlzaXRvcjsKLX07Ci0KLXN0cnVjdCBSZWFwV2Vha1NldCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVu
Y3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+
cmVhcFdlYWtTZXQoKTsgfQotfTsKLQogTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhl
YXApCiAgICAgOiBtX2hlYXAoaGVhcCkKICAgICAsIG1fY2FwYWNpdHkoMCkKQEAgLTczLDI1ICs0
OCwyOSBAQCBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKIAogTWFya2VkU3Bh
Y2U6On5NYXJrZWRTcGFjZSgpCiB7Ci0gICAgRnJlZSBmcmVlKCp0aGlzKTsKLSAgICBmb3JFYWNo
QmxvY2soZnJlZSk7CisgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2Nr
KiBibG9jaykgeworICAgICAgICAgICAgZnJlZUJsb2NrKGJsb2NrKTsKKyAgICAgICAgfSk7CiAg
ICAgQVNTRVJUKCFtX2Jsb2Nrcy5zZXQoKS5zaXplKCkpOwogfQogCi1zdHJ1Y3QgTGFzdENoYW5j
ZVRvRmluYWxpemUgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRBbGxvY2F0b3ImIGFsbG9j
YXRvcikgeyBhbGxvY2F0b3IubGFzdENoYW5jZVRvRmluYWxpemUoKTsgfQotfTsKLQogdm9pZCBN
YXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIHN0b3BBbGxvY2F0aW5n
KCk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxMYXN0Q2hhbmNlVG9GaW5hbGl6ZT4oKTsKKyAgICBm
b3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
KSB7CisgICAgICAgICAgICBhbGxvY2F0b3IubGFzdENoYW5jZVRvRmluYWxpemUoKTsKKyAgICAg
ICAgfSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwKCkKIHsKICAgICBtX2hlYXAtPnN3
ZWVwZXIoKS0+d2lsbEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrPFN3ZWVwPigp
OworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsK
KyAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBNYXJr
ZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKQEAgLTk5LDcgKzc4LDExIEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OnpvbWJpZnlTd2VlcCgpCiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgIGRh
dGFMb2coIlpvbWJpZnlpbmcgc3dlZXAuLi4iKTsKICAgICBtX2hlYXAtPnN3ZWVwZXIoKS0+d2ls
bEZpbmlzaFN3ZWVwaW5nKCk7Ci0gICAgZm9yRWFjaEJsb2NrPFpvbWJpZnlTd2VlcD4oKTsKKyAg
ICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAg
ICAgICAgICBpZiAoYmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKKyAgICAgICAgICAgICAgICBibG9j
ay0+c3dlZXAoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxs
b2NhdG9ycygpCkBAIC0xMjIsMTIgKzEwNSwxNSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFs
bG9jYXRvcnMoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKEhlYXBSb290Vmlz
aXRvciYgaGVhcFJvb3RWaXNpdG9yKQogewotICAgIFZpc2l0V2Vha1NldCB2aXNpdFdlYWtTZXQo
aGVhcFJvb3RWaXNpdG9yKTsKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkg
PT0gRWRlbkNvbGxlY3Rpb24pIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICB2aXNpdFdlYWtT
ZXQobV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvckVh
Y2hCbG9jayh2aXNpdFdlYWtTZXQpOworICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0
c1tpXS0+dmlzaXRXZWFrU2V0KGhlYXBSb290VmlzaXRvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsK
KyAgICAgICAgICAgICAgICBibG9jay0+dmlzaXRXZWFrU2V0KGhlYXBSb290VmlzaXRvcik7Cisg
ICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0
cygpCkBAIC0xMzUsMTkgKzEyMSwxNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMo
KQogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlv
bikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2Jq
ZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0t
PnJlYXBXZWFrU2V0KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hCbG9jazxSZWFwV2Vh
a1NldD4oKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIE1hcmtlZFNw
YWNlOjpmb3JFYWNoQWxsb2NhdG9yKCkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgZm9y
RWFjaEFsbG9jYXRvcihmdW5jdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQmxv
Y2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAg
ICAgIGJsb2NrLT5yZWFwV2Vha1NldCgpOworICAgICAgICAgICAgfSk7CisgICAgfQogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxv
Y2F0b3IoRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0
b3IoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9
IHByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVj
aXNlU3RlcCkgewogICAgICAgICBmdW5jdG9yKGFsbG9jYXRvckZvcihjZWxsU2l6ZSkpOwpAQCAt
MTYzLDI0ICsxNDYsMjIgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihGdW5j
dAogICAgIGZ1bmN0b3IobV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IpOwogfQogCi1z
dHJ1Y3QgU3RvcEFsbG9jYXRpbmdGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2Vk
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsgYWxsb2NhdG9yLnN0b3BBbGxvY2F0aW5nKCk7IH0KLX07
Ci0KIHZvaWQgTWFya2VkU3BhY2U6OnN0b3BBbGxvY2F0aW5nKCkKIHsKICAgICBBU1NFUlQoIWlz
SXRlcmF0aW5nKCkpOwotICAgIGZvckVhY2hBbGxvY2F0b3I8U3RvcEFsbG9jYXRpbmdGdW5jdG9y
PigpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9y
JiBhbGxvY2F0b3IpIHsKKyAgICAgICAgICAgIGFsbG9jYXRvci5zdG9wQWxsb2NhdGluZygpOwor
ICAgICAgICB9KTsKIH0KIAotc3RydWN0IFJlc3VtZUFsbG9jYXRpbmdGdW5jdG9yIHsKLSAgICB2
b2lkIG9wZXJhdG9yKCkoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsgYWxsb2NhdG9yLnJl
c3VtZUFsbG9jYXRpbmcoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFjZTo6cmVzdW1lQWxsb2Nh
dGluZygpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwotICAgIGZvckVhY2hBbGxvY2F0
b3I8UmVzdW1lQWxsb2NhdGluZ0Z1bmN0b3I+KCk7CisgICAgZm9yRWFjaEFsbG9jYXRvcigKKyAg
ICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAgICAgICAgYWxs
b2NhdG9yLnJlc3VtZUFsbG9jYXRpbmcoKTsKKyAgICAgICAgfSk7CiB9CiAKIGJvb2wgTWFya2Vk
U3BhY2U6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKQpAQCAtMjI0LDggKzIwNSwxMCBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpmcmVlT3JTaHJpbmtCbG9jayhNYXJrCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnNocmluaygpCiB7Ci0gICAgRnJlZU9yU2hyaW5rIGZyZWVPclNocmluaygqdGhpcyk7Ci0g
ICAgZm9yRWFjaEJsb2NrKGZyZWVPclNocmluayk7CisgICAgZm9yRWFjaEJsb2NrKAorICAgICAg
ICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgZnJlZU9yU2hyaW5rQmxv
Y2soYmxvY2spOworICAgICAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgY2xlYXJOZXdseUFsbG9j
YXRlZEluQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtMjM1LDE2ICsyMTgsNiBAQCBzdGF0
aWMgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhNCiAgICAgYmxvY2stPmNsZWFyTmV3
bHlBbGxvY2F0ZWQoKTsKIH0KIAotc3RydWN0IENsZWFyTmV3bHlBbGxvY2F0ZWQgOiBNYXJrZWRC
bG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxv
Y2spIHsgYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsgfQotfTsKLQotI2lmbmRlZiBOREVC
VUcKLXN0cnVjdCBWZXJpZnlOZXdseUFsbG9jYXRlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3Rv
ciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBBU1NFUlQoIWJs
b2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOyB9Ci19OwotI2VuZGlmCi0KIHZvaWQgTWFya2Vk
U3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJlY2lzZUNvdW50OyArK2kpIHsKQEAgLTI2MCwxNCArMjMzLDE4IEBAIHZvaWQgTWFya2Vk
U3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQogICAgIC8vIFdlIGhhdmUgdG8gaXRlcmF0ZSBh
bGwgb2YgdGhlIGJsb2NrcyBpbiB0aGUgbGFyZ2UgYWxsb2NhdG9ycyBiZWNhdXNlIHRoZXkgYXJl
CiAgICAgLy8gY2Fub25pY2FsaXplZCBhcyB0aGV5IGFyZSB1c2VkIHVwIChzZWUgTWFya2VkQWxs
b2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcikKICAgICAvLyB3aGljaCBjcmVhdGVzIHRoZSBtX25l
d2x5QWxsb2NhdGVkIGJpdG1hcC4KLSAgICBDbGVhck5ld2x5QWxsb2NhdGVkIGZ1bmN0b3I7Ci0g
ICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0g
ICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFZlcmlmeU5ld2x5QWxsb2NhdGVkIHZlcmlmeUZ1bmN0
b3I7Ci0gICAgZm9yRWFjaEJsb2NrKHZlcmlmeUZ1bmN0b3IpOwotI2VuZGlmCisgICAgYXV0byBj
bGVhck5ld2x5QWxsb2NhdGVkID0gWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAg
YmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICB9OworICAgIG1fbm9ybWFsU3BhY2Uu
bGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGNsZWFyTmV3bHlBbGxvY2F0ZWQpOworICAgIG1f
ZGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhjbGVhck5ld2x5QWxs
b2NhdGVkKTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBmb3JFYWNoQmxvY2soCisgICAg
ICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBBU1NFUlQoIWJsb2Nr
LT5jbGVhck5ld2x5QWxsb2NhdGVkKCkpOworICAgICAgICB9KTsKKyNlbmRpZiAvLyAhQVNTRVJU
X0RJU0FCTEVECiB9CiAKICNpZm5kZWYgTkRFQlVHIApAQCAtMjkwLDggKzI2NywxMiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpjbGVhck1hcmtzKCkKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblBy
b2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBt
X2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT5jbGVhck1hcmtzKCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGZvckVhY2hCbG9jazxDbGVhck1hcmtzPigpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZv
ckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAg
ICAgICAgICAgICAgYmxvY2stPmNsZWFyTWFya3MoKTsKKyAgICAgICAgICAgIH0pOworICAgIH0K
IAogI2lmbmRlZiBOREVCVUcKICAgICBWZXJpZnlNYXJrZWRPclJldGlyZWQgdmVyaWZ5RnVuY3Rv
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMjAzMDY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNywzMyArMzcsNiBAQCBjbGFzcyBIZWFwOwog
Y2xhc3MgSGVhcEl0ZXJhdGlvblNjb3BlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
Ci1zdHJ1Y3QgQ2xlYXJNYXJrcyA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9p
ZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5j
bGVhck1hcmtzKCk7Ci0gICAgfQotfTsKLQotc3RydWN0IFN3ZWVwIDogTWFya2VkQmxvY2s6OlZv
aWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJs
b2NrLT5zd2VlcCgpOyB9Ci19OwotCi1zdHJ1Y3QgWm9tYmlmeVN3ZWVwIDogTWFya2VkQmxvY2s6
OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKQot
ICAgIHsKLSAgICAgICAgaWYgKGJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpCi0gICAgICAgICAgICBi
bG9jay0+c3dlZXAoKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgTWFya0NvdW50IDogTWFya2VkQmxv
Y2s6OkNvdW50RnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9j
aykgeyBjb3VudChibG9jay0+bWFya0NvdW50KCkpOyB9Ci19OwotCi1zdHJ1Y3QgU2l6ZSA6IE1h
cmtlZEJsb2NrOjpDb3VudEZ1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9j
ayogYmxvY2spIHsgY291bnQoYmxvY2stPm1hcmtDb3VudCgpICogYmxvY2stPmNlbGxTaXplKCkp
OyB9Ci19OwotCiBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TWFya2VkU3BhY2UpOwogcHVibGljOgpAQCAtMTEyLDEyICs4NSw5IEBAIHB1YmxpYzoKIAogICAg
IHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOwog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJu
VHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaERlYWRDZWxs
KEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hEZWFkQ2VsbChIZWFw
SXRlcmF0aW9uU2NvcGUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNo
QmxvY2soKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hMaXZl
Q2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3Bl
JiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAg
dm9pZCBmcmVlQmxvY2soTWFya2VkQmxvY2sqKTsKQEAgLTE0Myw4ICsxMTMsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEFs
bG9jYXRvcihGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBm
b3JFYWNoQWxsb2NhdG9yKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBm
b3JFYWNoQWxsb2NhdG9yKGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIFN1YnNwYWNlIG1fZGVzdHJ1
Y3RvclNwYWNlOwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CkBAIC0xNTYsNyArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nrc1dpdGhOZXdPYmpl
Y3RzOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0
aW9uU2NvcGUmLCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2Nv
cGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEFTU0VSVChpc0l0ZXJhdGluZygp
KTsKICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwpAQCAtMTY0
LDE2ICsxMzMsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hCiAg
ICAgICAgIGlmICgoKml0KS0+Zm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpID09IEl0ZXJhdGlvblN0
YXR1czo6RG9uZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gZnVuY3Rv
ci5yZXR1cm5WYWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxs
KEhlYXBJdGVyYXRpb25TY29wZSYgc2NvcGUpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9yOwotICAg
IHJldHVybiBmb3JFYWNoTGl2ZUNlbGwoc2NvcGUsIGZ1bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1
bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJsb2NrSXRlcmF0b3Ig
ZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0xODEsMTMgKzE0Myw2IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYgKCgqaXQpLT5mb3JF
YWNoRGVhZENlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiBz
Y29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hEZWFkQ2Vs
bChzY29wZSwgZnVuY3Rvcik7CiB9CiAKIGlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNw
YWNlOjphbGxvY2F0b3JGb3Ioc2l6ZV90IGJ5dGVzKQpAQCAtMjIwLDcgKzE3NSw3IEBAIGlubGlu
ZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGUKICAgICByZXR1cm4gZGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoYnl0ZXMpOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2Vk
U3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3Vu
dDsgKytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVh
Y2hCbG9jayhmdW5jdG9yKTsKQEAgLTIzMywxNCArMTg4LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB0eXBlbgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVj
aXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3Iu
cmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soKQot
ewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwogfQogCiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sq
IGJsb2NrKQpAQCAtMjU2LDEyICsyMDMsMjIgQEAgaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmRp
ZEFsbG9jYXRlSW5CbAogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpvYmplY3RDb3VudCgp
CiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxNYXJrQ291bnQ+KCk7CisgICAgc2l6ZV90IHJl
c3VsdCA9IDA7CisgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBi
bG9jaykgeworICAgICAgICAgICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291bnQoKTsKKyAgICAg
ICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFj
ZTo6c2l6ZSgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxTaXplPigpOworICAgIHNpemVf
dCByZXN1bHQgPSAwOworICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9j
ayogYmxvY2spIHsKKyAgICAgICAgICAgIHJlc3VsdCArPSBibG9jay0+bWFya0NvdW50KCkgKiBi
bG9jay0+Y2VsbFNpemUoKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
aW5saW5lIHNpemVfdCBNYXJrZWRTcGFjZTo6Y2FwYWNpdHkoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDIwMzA2OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkVudW1lcmF0aW9uTW9k
ZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgogI2luY2x1ZGUg
IkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTVHlwZUlu
Zm8uaCIKQEAgLTY0LDcgKzY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2Nh
dGVDZWxsKAogICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBzdGF0aWMgY29uc3QgOjpKU0M6OkNs
YXNzSW5mbyogaW5mbygpIHsgcmV0dXJuICZzX2luZm87IH0KIAotY2xhc3MgSlNDZWxsIHsKK2Ns
YXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7
CiAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwpAQCAtMTU1LDkgKzE1Niw2IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBF
Q01BTW9kZSk7CiAKLSAgICB2b2lkIHphcCgpIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Kio+KHRoaXMpID0gMDsgfQotICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAhKnJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9Ci0KICAgICBzdGF0aWMg
Ym9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJik7CiAgICAgSlNW
YWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMSArMTQ1LDYgQEAgdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmIGhlYXApCiAgICAgcmV0dXJuIGFsbG9jYXRlQ2VsbDxUPihoZWFwLCBz
aXplb2YoVCkpOwogfQogICAgIAotaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKiBj
ZWxsKQotewotICAgIHJldHVybiBjZWxsLT5pc1phcHBlZCgpOwotfQotCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gVHlwZUluZm86OmlzT2JqZWN0
KG1fdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Nyw3ICs4
NjcsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRl
ciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgogICAgIE9iamVj
dHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXIoTWFya2VkQXJndW1lbnRCdWZmZXImLCBKU0dsb2Jh
bE9iamVjdCopOwotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOworICAg
IEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiwgSGVhcENlbGw6OktpbmQpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgdmlzaXQoSlNDZWxsKik7CkBAIC05MjQsOSArOTI0
LDEzIEBAIGlubGluZSB2b2lkIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW4KICAgICBtX2Zv
dW5kT2JqZWN0cy5hcHBlbmQob2JqZWN0KTsKIH0KIAotSXRlcmF0aW9uU3RhdHVzIE9iamVjdHNX
aXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQorSXRlcmF0
aW9uU3RhdHVzIE9iamVjdHNXaXRoQnJva2VuSW5kZXhpbmdGaW5kZXI6Om9wZXJhdG9yKCkoSGVh
cENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIGNvbnN0CiB7Ci0gICAgdmlzaXQoY2Vs
bCk7CisgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkgeworICAgICAgICAvLyBGSVhN
RTogVGhpcyBjb25zdF9jYXN0IGV4aXN0cyBiZWNhdXNlIHRoaXMgaXNuJ3QgYSBDKysgbGFtYmRh
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5
NjQ0CisgICAgICAgIGNvbnN0X2Nhc3Q8T2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRlcio+
KHRoaXMpLT52aXNpdChzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7CisgICAgfQogICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDMwNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdHJ1Y3QgQ2VsbEFk
ZHJlc3NDaGVja0Z1bmN0b3IgOiBNYXJrZWRCCiAgICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlv
blN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0
dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoY2VsbCA9PSBjYW5kaWRhdGUpIHsKICAgICAgICAgICAgIGZvdW5kID0g
dHJ1ZTsK
</data>
<flag name="review"
          id="307130"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>283441</attachid>
            <date>2016-07-12 12:52:01 -0700</date>
            <delta_ts>2016-07-12 12:52:01 -0700</delta_ts>
            <desc>performance</desc>
            <filename>report.txt</filename>
            <type>text/plain</type>
            <size>80534</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIEpTUmVncmVzcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJlbmNoIG9u
IGhvZG9yIChNYWNCb29rUHJvMTEsMykuCgpWTXMgdGVzdGVkOgoiVGlwT2ZUcmVlIiBhdCAvVm9s
dW1lcy9EYXRhL3NlbmFyeS9PcGVuU291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChyMjAz
MDY4KQoiVGhpbmdzIiBhdCAvVm9sdW1lcy9EYXRhL3ByaW1hcnkvT3BlblNvdXJjZS9XZWJLaXRC
dWlsZC9SZWxlYXNlL2pzYyAocjIwMzA2OCkKCkNvbGxlY3RlZCA2IHNhbXBsZXMgcGVyIGJlbmNo
bWFyay9WTSwgd2l0aCA2IFZNIGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBj
YWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJr
IGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNw
ZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRp
bWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlk
ZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBPZlRyZWUgICAgICAgICAgICAgICAg
ICAgVGhpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVy
OgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LjkxMTArLTAuMjc1MyAgICAgICAgICAgIDQuNzg5OSstMC4yNDEyICAgICAgICAgIG1pZ2h0IGJl
IDEuMDI1M3ggZmFzdGVyCiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuOTUzNCstMC4wODczICAgICA/ICAgICAgNS4wMjUzKy0wLjEyMzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NTMyKy0wLjA4NDQgICAgICAgICAgICA0Ljg0
NDQrLTAuMTM4NSAgICAgICAgCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuOTMyMistMC4xMDkwICAgICA/ICAgICAgMS45MzY0Ky0wLjA2NTEg
ICAgICAgID8KICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNS42ODcxKy0wLjU5ODYgICAgICAgICAgICA1LjYxMjUrLTAuMjQ4NiAgICAgICAgICBt
aWdodCBiZSAxLjAxMzN4IGZhc3RlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjQ1NzIrLTAuMDk0NCAgICAgICAgICAgIDIuNDA3NistMC4w
Mjg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwNnggZmFzdGVyCiAgIGFjY2Vzcy1uc2lldmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDYxMCstMC4xNDQ3ICAgICA/ICAg
ICAgMy4xNTQ1Ky0wLjI2NjMgICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBzbG93ZXIKICAgYml0
b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNDU1Ky0w
LjAxNjAgICAgID8gICAgICAxLjA2MjYrLTAuMDU1NCAgICAgICAgPyBtaWdodCBiZSAxLjAxNjR4
IHNsb3dlcgogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjU5NTgrLTAuMjM2MiAgICAgICAgICAgIDIuNTMwMistMC4wNTk2ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI1OXggZmFzdGVyCiAgIGJpdG9wcy1iaXR3aXNlLWFuZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuOTA0OSstMC4wMTMyICAgICAgICAgICAgMS44OTcxKy0wLjAw
NjUgICAgICAgIAogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjA0MTMrLTAuMDkzOCAgICAgICAgICAgIDMuMDMwNistMC4wNjUyICAgICAgICAK
ICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4y
NDkzKy0wLjA0NzIgICAgID8gICAgICAyLjI0OTYrLTAuMDUyMiAgICAgICAgPwogICBjcnlwdG8t
YWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM0MTMrLTAuMTAy
NCAgICAgPyAgICAgIDQuMzU4MCstMC4xMzg1ICAgICAgICA/CiAgIGNyeXB0by1tZDUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjI2MCstMC4wNjIwICAgICA/ICAg
ICAgMi42NjQzKy0wLjEyNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ2eCBzbG93ZXIKICAgY3J5
cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NzQ4Ky0w
LjAzMjcgICAgICAgICAgICAyLjY3MTErLTAuMDQyNiAgICAgICAgCiAgIGRhdGUtZm9ybWF0LXRv
ZnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTgyNystMC40Mjc0ICAgICAg
ICAgICAgNi4zMjkxKy0wLjE4MDcgICAgICAgICAgbWlnaHQgYmUgMS4wNDAxeCBmYXN0ZXIKICAg
ZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42Mzk1
Ky0wLjEzMzkgICAgICAgICAgICA0LjYzNDkrLTAuMDU2NSAgICAgICAgCiAgIG1hdGgtY29yZGlj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzE1NystMC4wNDA0ICAg
ICA/ICAgICAgMi43MjY0Ky0wLjA4MDQgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44ODc4Ky0wLjEwNzAgICAgID8gICAgICAz
LjkyNzIrLTAuMTMxNiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDJ4IHNsb3dlcgogICBtYXRoLXNw
ZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkyOTUrLTAuMDM3
NiAgICAgPyAgICAgIDEuOTgwNistMC4wNjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2NXggc2xv
d2VyCiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYuNjk3NSstMC40Nzc3ICAgICAgICAgICAgNi42MDg2Ky0wLjI2OTUgICAgICAgICAgbWlnaHQg
YmUgMS4wMTM0eCBmYXN0ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4wMTUxKy0wLjEwNjEgICAgICAgICAgICAzLjkzNDMrLTAuMDUzMCAg
ICAgICAgICBtaWdodCBiZSAxLjAyMDV4IGZhc3RlcgogICBzdHJpbmctZmFzdGEgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjY2MTUrLTAuMTIwMiAgICAgPyAgICAgIDUu
Nzc1MSstMC4zNzE0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMXggc2xvd2VyCiAgIHN0cmluZy10
YWdjbG91ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODkzOCstMS4wMDc1
ICAgICAgICAgICAgOC40OTg3Ky0wLjQxMzkgICAgICAgICAgbWlnaHQgYmUgMS4wNDY1eCBmYXN0
ZXIKICAgc3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny40NzQ3Ky0wLjUyNDggICAgID8gICAgIDE4LjMzNDUrLTAuNzA3MyAgICAgICAgPyBtaWdodCBi
ZSAxLjA0OTJ4IHNsb3dlcgogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjk2MDkrLTAuMDE4NiAgICAgICAgICAgIDMuOTQ5MistMC4wNDA1ICAg
ICAgICAKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuNDE1MSstMC4wMzgxICAgICA/ICAgICAgNC40MjA1Ky0wLjA0ODIgICAgICAgID8gbWln
aHQgYmUgMS4wMDEyeCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkxvbmdTcGlkZXI6CiAgIDNkLWN1
YmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3ODcuNjE2NCstMjUu
MzYzNyAgICA/ICAgIDgxOS4wMDM0Ky01MC42Mjg0ICAgICAgID8gbWlnaHQgYmUgMS4wMzk5eCBz
bG93ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU4OC4yNDg2Ky0xNC4xMTIwICAgID8gICAgNTk0LjgyNTkrLTI0LjA2MjEgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTJ4IHNsb3dlcgogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDc1LjY0MDkrLTIzLjY2MjkgICAgICAgICA0NjUuMTgyMCstMi45MTEw
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyNXggZmFzdGVyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MzkuNDE2OSstNDAuODgyOSAgICAgICAgIDgx
NC40MjcyKy01LjA1NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMzA3eCBmYXN0ZXIKICAgYWNjZXNz
LWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0Mi4xMjIxKy0xMS4w
MTk2ICAgID8gICAgMjQ1LjQ3MjArLTEyLjIzMjkgICAgICAgPyBtaWdodCBiZSAxLjAxMzh4IHNs
b3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTMyLjAyNTUrLTIuMzc4MSAgICAgPyAgICA1NDEuOTMzMCstMzAuODkyMiAgICAgICA/IG1pZ2h0
IGJlIDEuMDE4Nnggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyODcuODEzMCstMTEuODY1MiAgICA/ICAgIDMwMC4wNzI4Ky0yNC4xMzA0
ICAgICAgID8gbWlnaHQgYmUgMS4wNDI2eCBzbG93ZXIKICAgYml0b3BzLTNiaXQtYml0cy1pbi1i
eXRlICAgICAgICAgICAgICAgICAgICAgICAgICAzMy40MTg4Ky0yLjIxODAgICAgICAgICAgIDMy
LjE2MjArLTAuNTQ2NCAgICAgICAgICBtaWdodCBiZSAxLjAzOTF4IGZhc3RlcgogICBiaXRvcHMt
Yml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2LjMzNjkrLTAuOTYx
OSAgICAgPyAgICAxMDAuNjM2NCstOS4wMTM0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ0Nnggc2xv
d2VyCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
ODkuMDU2OCstMTguNTk3NCAgICAgICAgIDM4Ni4yMTYzKy0xNC4wOTcwICAgICAgIAogICBjb250
cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ1Ljk4NTIrLTAu
OTcyNCAgICAgPyAgICA0NTkuMDcxMistMjIuNTM1NCAgICAgICA/IG1pZ2h0IGJlIDEuMDI5M3gg
c2xvd2VyCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1NzQuMDQyOSstMTIuMDA5NiAgICAgICAgIDU3MS4yODk3Ky01LjE3NDEgICAgICAgIAogICBj
cnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgyLjQ0MjUr
LTI1Ljg0OTMgICAgICAgICA0NzguOTU4MSstMTkuMjI2NyAgICAgICAKICAgY3J5cHRvLXNoYTEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0Ny45NjMxKy0zMS4yNjk2ICAg
ID8gICAgNjUzLjg2NDUrLTM1LjA0NTYgICAgICAgPwogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkzLjM5NjkrLTE0Ljc1MzcgICAgPyAgICA1MDAu
MTQyOSstMjIuMjE4NCAgICAgICA/IG1pZ2h0IGJlIDEuMDEzN3ggc2xvd2VyCiAgIGRhdGUtZm9y
bWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MjkuMjU3NSstMjIuNTAy
MiAgICAgICAgIDYxMC4wMjQxKy0xLjk2NzUgICAgICAgICAgbWlnaHQgYmUgMS4wMzE1eCBmYXN0
ZXIKICAgaGFzaC1tYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0
OS43MjcxKy0xNi40MTc2ICAgICAgICAgMTQ0LjI3MTYrLTMuMzc1OSAgICAgICAgICBtaWdodCBi
ZSAxLjAzNzh4IGZhc3RlcgogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDQxLjA5NDIrLTE4LjgzNDkgICAgICAgICA0MzQuODQ0MistMTUuMzM0NCAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE0NHggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyODcuNTY0MystMTIuMTEzMiAgICAgICAgIDI3Ni40
NDAxKy0wLjQwNjUgICAgICAgICAgbWlnaHQgYmUgMS4wNDAyeCBmYXN0ZXIKICAgbWF0aC1zcGVj
dHJhbC1ub3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0MS41ODYzKy03LjkxODkg
ICAgID8gICAgNTUwLjQyNzMrLTI4LjE2MTAgICAgICAgPyBtaWdodCBiZSAxLjAxNjN4IHNsb3dl
cgogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQx
LjE2ODMrLTMuNDQ4NCAgICAgICAgICAzMzkuMTMzNystNS42Mjc3ICAgICAgICAKICAgc3RyaW5n
LWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzNS4yNDA3Ky0xMC43
MDY3ICAgID8gICAgMzQ5Ljc5NzUrLTUyLjA3NTMgICAgICAgPyBtaWdodCBiZSAxLjA0MzR4IHNs
b3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTcwLjc1MTYrLTIuNzcwNSAgICAgICAgICAxNjkuMzg2OCstMS4xNDI2ICAgICAgICAKCiAgIDxn
ZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNTMuOTUwOSst
MS43MTYzICAgICA/ICAgIDM1NC4zMzY5Ky0yLjM2ODggICAgICAgID8gbWlnaHQgYmUgMS4wMDEx
eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGlwT2ZUcmVlICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgClY4U3BpZGVyOgogICBjcnlwdG8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjM1NjIrLTAuMjQyOCAgICAgICAgICAg
MzUuMTk2NistMC4wNzMyICAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MC4yNDUwKy0xLjExMDMgICAgICAgICAgIDQ5LjU1NzkrLTEu
ODI5NyAgICAgICAgICBtaWdodCBiZSAxLjAxMzl4IGZhc3RlcgogICBlYXJsZXktYm95ZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4LjQ0MzYrLTAuNDQzOCAgICAgPyAg
ICAgMzguNzU0NystMC4zMzYwICAgICAgICA/CiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjAuMDQ5NCstMC44ODg2ICAgICAgICAgICAxOS41NzAw
Ky0wLjMxNDggICAgICAgICAgbWlnaHQgYmUgMS4wMjQ1eCBmYXN0ZXIKICAgcmVnZXhwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS44MDA2Ky0wLjQ3NDcgICAg
ID8gICAgIDUyLjM3NjcrLTEuNTM0NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTF4IHNsb3dlcgog
ICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjg3
MzUrLTIuNjgwOSAgICAgICAgICAgMzkuNjQ5NSstMC40NTkyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMwOXggZmFzdGVyCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjkuMTQxMSstMC42NDQyICAgICAgICAgICAyOC40OTU4Ky0wLjI5ODEgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI2eCBmYXN0ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzYuMzc4MistMC42MjIwICAgICAgICAgICAzNS45OTA0
Ky0wLjI4MTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0ZXIKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVlICAgICAg
ICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ck9jdGFuZToKICAgZW5jcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjE1NDgyKy0wLjAwMDYyICAgID8gICAgIDAuMTU3NzUrLTAuMDA0NzMgICAgICAgPyBt
aWdodCBiZSAxLjAxODl4IHNsb3dlcgogICBkZWNyeXB0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNjUyNzUrLTAuMDY5NTQgICAgICAgICAgMi42MjQ5NCstMC4w
MTg0OCAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNnggZmFzdGVyCiAgIGRlbHRhYmx1ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4xMjYzOSstMC4wMDI2MiAgICA/ICAg
ICAwLjEyNjQ5Ky0wLjAwMjMyICAgICAgID8KICAgZWFybGV5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjI4MDY0Ky0wLjAwMzEzICAgICAgICAgIDAuMjc5MzUr
LTAuMDAyNzkgICAgICAgCiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC45NTI2NistMC4wNzEwNCAgICA/ICAgICA0Ljk5NjM1Ky0wLjE4ODc2ICAg
ICAgID8KICAgbmF2aWVyLXN0b2tlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
ICA0Ljg5ODEyKy0wLjIyNzQ3ICAgICAgICAgIDQuODkzMjkrLTAuMTc4ODIgICAgICAgCiAgIHJh
eXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC43ODYxNCst
MC4wMjY4NCAgICAgICAgICAwLjc3OTAwKy0wLjAwMzgzICAgICAgIAogICByaWNoYXJkcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMDgxMzMrLTAuMDAxNzIgICAg
PyAgICAgMC4wODE0NistMC4wMDI1MyAgICAgICA/CiAgIHNwbGF5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4zMjg2NystMC4wMDU1MSAgICA/ICAgICAwLjMz
MjQyKy0wLjAxMjEyICAgICAgID8gbWlnaHQgYmUgMS4wMTE0eCBzbG93ZXIKICAgcmVnZXhwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDE1LjM3NDM1Ky0wLjI2MjA2
ICAgID8gICAgMTYuMDA0NzkrLTAuNjc2NjkgICAgICAgPyBtaWdodCBiZSAxLjA0MTB4IHNsb3dl
cgogICBwZGZqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMzcu
NzQyNDYrLTAuMjUxODQgICAgPyAgICAzOC4wMTIyOCstMC41MTkxNyAgICAgICA/CiAgIG1hbmRy
ZWVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICA0My41NjgxMCstMy4x
NjUzOCAgICAgICAgIDQyLjkwODI4Ky0xLjg1NTQ4ICAgICAgICAgbWlnaHQgYmUgMS4wMTU0eCBm
YXN0ZXIKICAgZ2JlbXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
IDI5LjY3MjQwKy0yLjYyNjI1ICAgICAgICAgMjkuMTE5NTArLTAuOTk4MzUgICAgICAgICBtaWdo
dCBiZSAxLjAxOTB4IGZhc3RlcgogICBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuNDg0OTcrLTAuMDA2NjkgICAgICAgICAgMC40ODI3NSstMC4wMDM0
NiAgICAgICAKICAganF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2LjQ2Mjg3Ky0wLjE2MjM2ICAgICAgICAgIDYuMzk4MzYrLTAuMDQyNzcgICAgICAgICBt
aWdodCBiZSAxLjAxMDF4IGZhc3RlcgogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyICAgICAgIDkuMDEzNzYrLTAuMDY2NDcgICAgPyAgICAgOS4xNjM0MCstMC4z
MzMxOSAgICAgICA/IG1pZ2h0IGJlIDEuMDE2Nnggc2xvd2VyCiAgIHpsaWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDM1NC42NTk0MCstNS40ODMzMiAgICA/ICAg
MzYzLjI5ODA3Ky02LjkzOTk0ICAgICAgID8gbWlnaHQgYmUgMS4wMjQ0eCBzbG93ZXIKICAgdHlw
ZXNjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgNjAzLjk2Mjk3Ky03
LjY3NDM2ICAgICAgICA2MDIuNzYwNzgrLTkuNzAzNjUgICAgICAgCgogICA8Z2VvbWV0cmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuOTM0NDcrLTAuMDQwODUgICAg
PyAgICAgNC45NTMxMSstMC4wMzg4NCAgICAgICA/IG1pZ2h0IGJlIDEuMDAzOHggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRp
cE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApLcmFrZW46CiAgIGFpLWFzdGFyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDg0LjgyMystMS42NzYgICAgICA/ICAgICAgODYuOTU3Ky0zLjgx
MSAgICAgICAgID8gbWlnaHQgYmUgMS4wMjUyeCBzbG93ZXIKICAgYXVkaW8tYmVhdC1kZXRlY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcuNjkwKy0wLjg2MCAgICAgICAgICAg
ICAzNy42NjMrLTAuOTk2ICAgICAgICAgCiAgIGF1ZGlvLWRmdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDk2LjYxNSstMi4zMzMgICAgICAgICAgICAgOTUuMzQ5Ky0w
LjQ3MiAgICAgICAgICAgbWlnaHQgYmUgMS4wMTMzeCBmYXN0ZXIKICAgYXVkaW8tZmZ0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuMzQ1Ky03LjcyNSAgICAgICAg
ICAgICAyOS41MDgrLTAuMzY1ICAgICAgICAgICBtaWdodCBiZSAxLjA5NjF4IGZhc3RlcgogICBh
dWRpby1vc2NpbGxhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny42NjAr
LTAuNDg4ICAgICAgPyAgICAgIDQ5LjgxNystMi42OTggICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ1
M3ggc2xvd2VyCiAgIGltYWdpbmctZGFya3Jvb20gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYxLjA0OSstMi4xMTMgICAgICAgICAgICAgNjAuMDM4Ky0xLjAxMiAgICAgICAgICAg
bWlnaHQgYmUgMS4wMTY5eCBmYXN0ZXIKICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDMuMDg4Ky0wLjYzMyAgICAgID8gICAgICA0NC4xODgrLTIu
NzE1ICAgICAgICAgPyBtaWdodCBiZSAxLjAyNTV4IHNsb3dlcgogICBpbWFnaW5nLWdhdXNzaWFu
LWJsdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MC4wNDcrLTMuODg2ICAgICAgICAg
ICAgIDU4LjIxMCstMi4zNTIgICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxNnggZmFzdGVyCiAgIGpz
b24tcGFyc2UtZmluYW5jaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjUyMCst
MC4yODcgICAgICA/ICAgICAgMzMuOTQ2Ky0xLjM1NyAgICAgICAgID8gbWlnaHQgYmUgMS4wNDM5
eCBzbG93ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjIuMjg1Ky0wLjcyOSAgICAgID8gICAgICAyMi40ODkrLTAuNzI4ICAgICAgICAgPwog
ICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi4y
MTIrLTAuNTczICAgICAgPyAgICAgIDM2LjQ0MSstMS40NDIgICAgICAgICA/CiAgIHN0YW5mb3Jk
LWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0LjE3MCstMS4xMzEg
ICAgICA/ICAgICAgMzUuNDIyKy0yLjI1OSAgICAgICAgID8gbWlnaHQgYmUgMS4wMzY2eCBzbG93
ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTEuMTQyKy0xLjQ2MyAgICAgID8gICAgICA5My41MTUrLTUuMDIyICAgICAgICAgPyBtaWdodCBi
ZSAxLjAyNjB4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAg
ICAgICAgICAgICAgICAyOS43ODgrLTAuNzA2ICAgICAgICAgICAgIDI5LjQ3MCstMC4xMzIgICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEwOHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MC42NzQrLTAuOTM5ICAgICAgPyAgICAgIDUw
LjkzMCstMC41MTkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDA1MHggc2xvd2VyCgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAg
ICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIApKU1JlZ3Jlc3M6CiAgIGFiYy1mb3J3YXJkLWxvb3AtZXF1YWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjQuMDI5NSstMS42MzY2ICAgICAgICAgICAyMy4zNTE0Ky0wLjY4MjkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjkweCBmYXN0ZXIKICAgYWJjLXBvc3RmaXgtYmFja3dhcmQtbG9v
cCAgICAgICAgICAgICAgICAgICAgICAgICAyOS40MTkxKy0wLjQ3ODYgICAgID8gICAgIDMwLjIz
MTgrLTEuMzIwOCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzZ4IHNsb3dlcgogICBhYmMtc2ltcGxl
LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjYyMDIrLTEuMTMyOSAg
ICAgICAgICAgMjIuOTQxMystMC4zNTk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5NnggZmFzdGVy
CiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMu
Njc5MistMS44NzY2ICAgICA/ICAgICAyNC4wNzUyKy0yLjIyNjkgICAgICAgID8gbWlnaHQgYmUg
MS4wMTY3eCBzbG93ZXIKICAgYWJjLXNraXBweS1sb29wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMS4zMjkxKy0zLjI0NzcgICAgID8gICAgIDIxLjQ4NTArLTEuNTE1OSAgICAg
ICAgPwogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjIxOTErLTAuMDcxMSAgICAgPyAgICAgIDIuMjY0MSstMC4wNDY5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIwM3ggc2xvd2VyCiAgIGFkYXB0LXRvLWRvdWJsZS1kaXZpZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTUuMDQ5NistMS4wMTI2ICAgICAgICAgICAxNC4yMjU1Ky0wLjQyNjMg
ICAgICAgICAgbWlnaHQgYmUgMS4wNTc5eCBmYXN0ZXIKICAgYWxpYXNlZC1hcmd1bWVudHMtZ2V0
Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNzEyKy0wLjA1MTIgICAgICAgICAgICAx
LjA0ODkrLTAuMDY4NiAgICAgICAgICBtaWdodCBiZSAxLjAyMTN4IGZhc3RlcgogICBhbGxvY2F0
ZS1iaWctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI2NzIrLTAuMjcx
MyAgICAgICAgICAgIDIuMjE3NystMC4xMzAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyM3ggZmFz
dGVyCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVjdGl2ZSAgICAgICAgICAgICAgICAgICAg
IDguMjM0NSstMC40OTM2ICAgICA/ICAgICAgOC4yMzY1Ky0wLjY5NzcgICAgICAgID8KICAgYXJn
dW1lbnRzLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS43NzkxKy0w
LjEwOTkgICAgID8gICAgIDEwLjIyMDcrLTAuOTExMSAgICAgICAgPyBtaWdodCBiZSAxLjA0NTJ4
IHNsb3dlcgogICBhcmd1bWVudHMtc3RyaWN0LW1vZGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE1LjgwMTYrLTAuNDI4NCAgICAgICAgICAgMTUuNzM1NystMC44NDQ0ICAgICAgICAKICAg
YXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42MTgy
Ky0wLjM2NjUgICAgICAgICAgICA2LjQwMjMrLTAuMTc1MyAgICAgICAgICBtaWdodCBiZSAxLjAz
Mzd4IGZhc3RlcgogICBhcml0eS1taXNtYXRjaC1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjk0NTArLTAuMjk2NyAgICAgICAgICAgIDAuNzc3NystMC4wMTczICAgICAgICAg
IG1pZ2h0IGJlIDEuMjE1MXggZmFzdGVyCiAgIGFycmF5LWFjY2Vzcy1wb2x5bW9ycGhpYy1zdHJ1
Y3R1cmUgICAgICAgICAgICAgICAgIDMuNzgzOSstMC42MzU2ICAgICAgICAgICAgMy41NzMxKy0w
LjA1NDMgICAgICAgICAgbWlnaHQgYmUgMS4wNTkweCBmYXN0ZXIKICAgYXJyYXktbm9uYXJyYXkt
cG9seW1vcmhwaWMtYWNjZXNzICAgICAgICAgICAgICAgICAyMC42Mzk0Ky0wLjc3MTcgICAgICAg
ICAgIDIwLjU2MDMrLTAuNDU1MSAgICAgICAgCiAgIGFycmF5LXByb3RvdHlwZS1ldmVyeSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNzEuMTg2MystMy43NDc5ICAgICAgICAgICA2Ny42MTQz
Ky0wLjYwNjAgICAgICAgICAgbWlnaHQgYmUgMS4wNTI4eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90
eXBlLWZvckVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICA2Ny44NTAwKy0wLjUwNTcgICAg
ID8gICAgIDY4LjM2MjMrLTMuMjI5MiAgICAgICAgPwogICBhcnJheS1wcm90b3R5cGUtbWFwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcyLjI4NTIrLTQuNjc1MiAgICAgICAgICAgNzAu
NzgwMCstMC41NTQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxM3ggZmFzdGVyCiAgIGFycmF5LXBy
b3RvdHlwZS1yZWR1Y2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjYuMzI5MystMC4zMzI3
ICAgICBeICAgICA2NS43MTA0Ky0wLjIwMzcgICAgICAgIF4gZGVmaW5pdGVseSAxLjAwOTR4IGZh
c3RlcgogICBhcnJheS1wcm90b3R5cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAgICAgICAg
IDk4LjE3NDQrLTguMTgwNCAgICAgICAgICAgOTAuNjczMSstNC42OTc2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDgyN3ggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1zb21lICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjcuNDA0MystMC4yODgwICAgICA/ICAgICA2OC42NjA4Ky0xLjk5Mzgg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTg2eCBzbG93ZXIKICAgYXJyYXktc3BsaWNlLWNvbnRpZ3Vv
dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC4wNDY2Ky0wLjc3NTAgICAgID8gICAgIDIx
LjA1NTArLTEuNTc3OSAgICAgICAgPyBtaWdodCBiZSAxLjA1MDN4IHNsb3dlcgogICBhcnJheS13
aXRoLWRvdWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA4OTQrLTAuMDUz
OCAgICAgICAgICAgIDMuMDI4MistMC4wNjQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMnggZmFz
dGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAgICAgICAgICAg
IDIuNjA1MystMC4wNzg5ICAgICA/ICAgICAgMi42MjcyKy0wLjA5NzQgICAgICAgID8KICAgYXJy
YXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgMy42NDk3Ky0w
LjQzMjMgICAgICAgICAgICAzLjQ4MjUrLTAuMTAxOSAgICAgICAgICBtaWdodCBiZSAxLjA0ODB4
IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjU5NTUrLTAuMDY5NiAgICAgICAgICAgIDIuNTkwNystMC4wNTMzICAgICAgICAKICAg
YXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41NTQ4
Ky0wLjA0MTkgICAgID8gICAgICA0LjU3NzMrLTAuMDcyNCAgICAgICAgPwogICBhcnJheS13aXRo
LWludDMyLW9yLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAgICAgICAyLjY4MzErLTAuMDU5NSAg
ICAgPyAgICAgIDIuNzU5MCstMC4wOTU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4M3ggc2xvd2Vy
CiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOS4yOTkyKy0y
LjM0MDggICAgICAgICAgIDM3LjM3NjUrLTAuMTg5NyAgICAgICAgICBtaWdodCBiZSAxLjA1MTR4
IGZhc3RlcgogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sb25nLWxpdmVkICAgICAgICAg
ICAgIDE0LjAzNjQrLTAuMTU0MSAgICAgPyAgICAgMTQuMTI5MistMC4yNTU4ICAgICAgICA/CiAg
IEFycmF5QnVmZmVyLUludDMyQXJyYXktYnl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDMuNTQ3
NSstMC4wNTA2ICAgICA/ICAgICAgMy41NjAzKy0wLjA0NzEgICAgICAgID8KICAgQXJyYXlCdWZm
ZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy45ODMzKy0wLjE2ODIgICAgID8g
ICAgIDM4LjIyNjIrLTAuNzA3MiAgICAgICAgPwogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxs
b2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxOS44OTAzKy0wLjgzMzYgICAgICAgICAgIDE5LjQ3MDYrLTAu
NDc0MiAgICAgICAgICBtaWdodCBiZSAxLjAyMTZ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQ4
QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDEzLjkyNTYrLTEuMTU1NSAgICAgICAg
ICAgMTMuNTQ3NystMC40MDg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OXggZmFzdGVyCiAgIEFy
cmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgMTIuMjcxNyst
MC44MDY0ICAgICA/ICAgICAxMi4zMjkzKy0wLjY4MzAgICAgICAgID8KICAgYXJyb3dmdW5jdGlv
bi1jYWxsLWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICA2Ni44ODYxKy0xLjI0MDEgICAg
ICAgICAgIDY2LjYzNzcrLTAuMzg5MCAgICAgICAgCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1j
bGFzcy1tZXRob2QgICAgICAgICAgICAgICAgMTUuODIwMystMC4xOTc5ICAgICA/ICAgICAxNi4w
MTk4Ky0wLjkwNDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTI2eCBzbG93ZXIKICAgYXJyb3dmdW5j
dGlvbi1jYWxsLWluLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAxMS43NzkzKy0wLjIwNDEg
ICAgICAgICAgIDExLjY1MzIrLTAuMzc4NiAgICAgICAgICBtaWdodCBiZSAxLjAxMDh4IGZhc3Rl
cgogICBhcnJvd2Z1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw
LjA3MjArLTAuNzQ3NyAgICAgICAgICAgIDkuODk3MystMC44MjI3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE3N3ggZmFzdGVyCiAgIGFzbWpzX2Jvb2xfYnVnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNzM0MCstMC4zNTQwICAgICAgICAgICAgNy42Nzg2Ky0wLjIyMzAgICAg
ICAgIAogICBhc3NpZ24tY3VzdG9tLXNldHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAg
ICAyLjU4NzErLTAuMDQ4NCAgICAgICAgICAgIDIuNTQ0MystMC4wMjgxICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE2OHggZmFzdGVyCiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuOTM3MistMC4xNTg1ICAgICAgICAgICAgMy44MjM5Ky0wLjA1MDQg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjk2eCBmYXN0ZXIKICAgYmFzaWMtc2V0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy41NTQzKy0wLjc0OTEgICAgICAgICAgICA3
LjA4NDErLTAuMjQ1OSAgICAgICAgICBtaWdodCBiZSAxLjA2NjR4IGZhc3RlcgogICBiaWctaW50
LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA0NDgrLTAuMDcw
NyAgICAgICAgICAgIDMuMDIxMSstMC4wNjI1ICAgICAgICAKICAgYmlnc3dpdGNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC40MzMxKy0wLjI1NjYgICAgID8gICAg
IDI4LjkzOTArLTAuNzkyOSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzh4IHNsb3dlcgogICBib29s
ZWFuLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc1NDgrLTAu
MDI2NiAgICAgXiAgICAgIDIuNjYxOSstMC4wMjkwICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzQ5
eCBmYXN0ZXIKICAgYm91bmQtZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC4zMjkwKy0wLjU2OTkgICAgICAgICAgICA5Ljk4NzgrLTAuMzczOCAgICAgICAgICBt
aWdodCBiZSAxLjAzNDJ4IGZhc3RlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjYxNjUrLTAuMDE2MCAgICAgPyAgICAgIDMuNjQ2NistMC4x
MjMyICAgICAgICA/CiAgIGJyYW5jaC1vbi1zdHJpbmctYXMtYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgMTAuNTM4NSstMC4zODI1ICAgICA/ICAgICAxMC43Njg1Ky0wLjY1OTQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjE4eCBzbG93ZXIKICAgYnVnLTE1MzQzMSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi44NDUxKy0wLjA1MzUgICAgID8gICAgICAyLjkyMjQr
LTAuMDM4OCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzJ4IHNsb3dlcgogICBidWlsZC1sYXJnZS1v
YmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5Ljg5NDgrLTAuNjUzNSAgICAg
PyAgICAgMzAuNzMzNCstMS40NDY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4MXggc2xvd2VyCiAg
IGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDYz
NystMC4xOTk5ICAgICA/ICAgICAgNC4yNjA1Ky0wLjEwMDcgICAgICAgID8gbWlnaHQgYmUgMS4w
NDg0eCBzbG93ZXIKICAgY2FsbC1zcHJlYWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMi4zODY4Ky0wLjI0OTAgICAgID8gICAgIDIyLjM5NTUrLTAuMzc4MCAgICAgICAg
PwogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2
LjM4NzkrLTAuNTk2MyAgICAgPyAgICAgMjYuNDY5MSstMC42Mzg4ICAgICAgICA/CiAgIGNhcHR1
cmVkLWFzc2lnbm1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA0MystMC4w
MTA3ICAgICAgICAgICAgMC4yOTc0Ky0wLjAwMzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBm
YXN0ZXIKICAgY2FzdC1pbnQtdG8tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC44MDc1Ky0wLjA3OTggICAgICAgICAgICA0Ljc3NTkrLTAuMDQyNCAgICAgICAgCiAgIGNl
bGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTk5Myst
MC4wMzEwICAgICA/ICAgICAgMy4wNTA5Ky0xLjA1ODAgICAgICAgID8gbWlnaHQgYmUgMS4xNzM3
eCBzbG93ZXIKICAgY2ZnLXNpbXBsaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi43ODExKy0wLjA2NzEgICAgICAgICAgICAyLjczMzkrLTAuMDI5MSAgICAgICAgICBt
aWdodCBiZSAxLjAxNzN4IGZhc3RlcgogICBjaGFpbi1nZXR0ZXItYWNjZXNzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjA1MzgrLTAuMjc5NyAgICAgICAgICAgMTEuMDM4MCstMC41
MDc0ICAgICAgICAKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOS4xMTQ1Ky0xLjg2NTYgICAgICAgICAgICA4LjE5OTErLTAuMjk4OSAgICAgICAg
ICBtaWdodCBiZSAxLjExMTd4IGZhc3RlcgogICBjb25jYXQtYXBwZW5kLW9uZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjU1NDYrLTAuNTk5NiAgICAgICAgICAgIDYuOTY2OSst
MC40MTc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg0NHggZmFzdGVyCiAgIGNvbnN0YW50LXRlc3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTAzMystMC4wOTM3ICAgICAg
ICAgICAgNC40NzY2Ky0wLjAzNjkgICAgICAgIAogICBjcmVhdGUtbG90cy1vZi1mdW5jdGlvbnMg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LjQ1NTArLTAuMjE5OCAgICAgPyAgICAgIDkuMjU3
NistMC42MzA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk0OXggc2xvd2VyCiAgIGNzZS1uZXctYXJy
YXktYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTE3MystMC4wNTg2ICAg
ICA/ICAgICAgMi4xNDg3Ky0wLjAxNzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ4eCBzbG93ZXIK
ICAgY3NlLW5ldy1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4x
NTA3Ky0wLjA5MjEgICAgID8gICAgICAyLjE1MzArLTAuMTE3MiAgICAgICAgPwogICBjdXN0b20t
c2V0dGVyLWdldHRlci1hcy1wdXQtZ2V0LWJ5LWlkICAgICAgICAgICAgICAwLjQzODMrLTAuMDkz
NSAgICAgICAgICAgIDAuNDEwMistMC4wMTA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4M3ggZmFz
dGVyCiAgIERhdGFWaWV3LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAg
NDMuNjQ2NCstMS41MjI3ICAgICBeICAgICA0MS41MDc5Ky0wLjQ1OTUgICAgICAgIF4gZGVmaW5p
dGVseSAxLjA1MTV4IGZhc3RlcgogICBkZWxheS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9k
ZSAgICAgICAgICAgICAgICA0LjAxMDQrLTAuMzEzNiAgICAgICAgICAgIDMuOTc0OCstMC4xMDQz
ICAgICAgICAKICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMC41Nzk1Ky0wLjM5MTkgICAgID8gICAgIDMxLjg1MjIrLTQuMjkzOCAgICAgICAgPyBt
aWdodCBiZSAxLjA0MTZ4IHNsb3dlcgogICBkZWx0YWJsdWUtdmFyYXJncyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDM1LjA1NDErLTAuNTM1MyAgICAgPyAgICAgMzUuMDYzNistMC41
NDQxICAgICAgICA/CiAgIGRlc3RydWN0dXJpbmctYXJndW1lbnRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNTMuMDM1MCstMi4yNTQ1ICAgICA/ICAgICA1NC4wMjg0Ky0wLjQ2NTQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTg3eCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92
ZXJyaWRkZW4tYnktZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4zNTUzKy0wLjAxNTUgICAgID8gICAgICAwLjM5NDUrLTAu
MDc4NCAgICAgICAgPyBtaWdodCBiZSAxLjExMDN4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLXN3
YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM5NDkrLTAuMTU3MSAgICAgPyAg
ICAgIDQuNDI4NSstMC4xMTc4ICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtZ2V0Ynl2YWwg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDM5NCstMC4wMTI1ICAgICAgICAgICAgMS4wMTI1
Ky0wLjA0NDEgICAgICAgICAgbWlnaHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgZGlyZWN0LWFyZ3Vt
ZW50cy1sZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zNjc2Ky0wLjE5MzkgICAg
ID8gICAgICA2LjQzNzMrLTAuMzcyNiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgog
ICBkaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAgICAgICAgICA2LjQ2
NzIrLTAuMzA2OCAgICAgICAgICAgIDYuMzQ1MistMC4zMjgxICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE5MnggZmFzdGVyCiAgIGRpcmVjdC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5n
dGggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi44ODY4Ky0wLjIzNDEgICAgID8gICAgICA2LjkzMzcrLTAuMjM1OCAgICAgICAgPwogICBk
aXYtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk4Mjcr
LTAuMTEyMSAgICAgPyAgICAgIDQuMDM1OCstMC4xMTk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEz
M3ggc2xvd2VyCiAgIGRpdi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNDgyNSstMC4yMDk0ICAgICA/ICAgICAgNy40ODczKy0wLjE1NTUgICAgICAgID8K
ICAgZG91YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgNC4w
MjIwKy0wLjAyODYgICAgID8gICAgICA0LjEzNDgrLTAuMTM3OCAgICAgICAgPyBtaWdodCBiZSAx
LjAyODB4IHNsb3dlcgogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LjE1ODIrLTAuMTkzNSAgICAgICAgICAgIDguMTM0NystMC4xMDgwICAgICAg
ICAKICAgZG91YmxlLXBvbGx1dGlvbi1wdXRieW9mZnNldCAgICAgICAgICAgICAgICAgICAgICAg
My40MDE4Ky0wLjA3NzggICAgICAgICAgICAzLjM1MjYrLTAuMDIyNSAgICAgICAgICBtaWdodCBi
ZSAxLjAxNDd4IGZhc3RlcgogICBkb3VibGUtcmVhbC11c2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIzLjYwMDMrLTAuODE2NSAgICAgPyAgICAgMjcuMzgzNystNS45NzU4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMTYwM3ggc2xvd2VyCiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1h
cnJheS1uby1pbmxpbmUgICAgICAgICAgICAgIDIuMjA2NistMC4wNzc4ICAgICA/ICAgICAgMi40
MTk3Ky0wLjUyOTEgICAgICAgID8gbWlnaHQgYmUgMS4wOTY2eCBzbG93ZXIKICAgZG91YmxlLXRv
LWludDMyLXR5cGVkLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgMi4wOTY0Ky0wLjA5MTMg
ICAgID8gICAgICAyLjE0MTMrLTAuMDg3OSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTR4IHNsb3dl
cgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICAy
LjI5MzcrLTAuMTMwMCAgICAgPyAgICAgIDIuMzM3MystMC4wOTk5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE5MHggc2xvd2VyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXkgICAgICAgICAg
ICAgICAgICAgICAgIDIuMTU2NSstMC4wNzYzICAgICAgICAgICAgMi4xNTAzKy0wLjA2NDcgICAg
ICAgIAogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE5Ljk0OTUrLTAuMTkzMyAgICAgPyAgICAgMjAuMDg5NCstMC4zNDA2ICAgICAgICA/CiAgIGVs
aWRhYmxlLW5ldy1vYmplY3Qtcm9mbGNvcHRlciAgICAgICAgICAgICAgICAgICAgMjMuNjcxOSst
Ni41OTU5ICAgICAgICAgICAyMi42NDM0Ky01LjI4MDQgICAgICAgICAgbWlnaHQgYmUgMS4wNDU0
eCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC10aGVuLWNhbGwgICAgICAgICAgICAgICAg
ICAgICAxNy42NTEyKy0wLjU0NDEgICAgICAgICAgIDE3LjY0MjQrLTAuNzEwNyAgICAgICAgCiAg
IGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMzUy
OSstMC41MjMxICAgICA/ICAgICAyMC42NDE2Ky0wLjMyNjkgICAgICAgID8gbWlnaHQgYmUgMS4w
MTQyeCBzbG93ZXIKICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC42NTU4Ky0wLjA3OTggICAgICAgICAgICA0LjU4MDUrLTAuMjE2NiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNjR4IGZhc3RlcgogICBlbXNjcmlwdGVuLWN1YmUyaGFzaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIzLjU5ODMrLTAuNDcwOCAgICAgICAgICAgMjMuMjgzOCst
MC4zNTk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIGV4aXQtbGVuZ3RoLW9u
LXBsYWluLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgIDguMzg3NCstMC4yODcyICAgICA/
ICAgICAgOC42MTYzKy0wLjgxNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMjczeCBzbG93ZXIKICAg
ZXh0ZXJuYWwtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMS4xMzE4
Ky0wLjA5MDggICAgICAgICAgICAxLjEyMjErLTAuMDU3NyAgICAgICAgCiAgIGV4dGVybmFsLWFy
Z3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDIuMzAwNSstMC4wMjc0ICAg
ICAgICAgICAgMi4yODE3Ky0wLjA4MTEgICAgICAgIAogICBmaXhlZC10eXBlZC1hcnJheS1zdG9y
YWdlLXZhci1pbmRleCAgICAgICAgICAgICAgICAxLjM2ODIrLTAuMDM2MiAgICAgICAgICAgIDEu
MzQ1MSstMC4wMjY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MnggZmFzdGVyCiAgIGZpeGVkLXR5
cGVkLWFycmF5LXN0b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDYzNystMC4wMjI4
ICAgICA/ICAgICAgMS4wNzM3Ky0wLjAyNTQgICAgICAgID8KICAgRmxvYXQzMkFycmF5LW1hdHJp
eC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wMzYxKy0wLjA4MTYgICAgID8gICAg
ICA1LjEwOTkrLTAuMTAxOCAgICAgICAgPyBtaWdodCBiZSAxLjAxNDd4IHNsb3dlcgogICBGbG9h
dDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAgICAgICAgIDM2LjkxNzgrLTAu
ODY3NSAgICAgPyAgICAgMzcuNTM4NSstMC4xMzI2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2OHgg
c2xvd2VyCiAgIEZsb2F0NjRBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAg
ICAgNTEuMjYyNystMC40MTQxICAgICAgICAgICA1MS4wNjk4Ky0wLjM1NTAgICAgICAgIAogICBG
bG9hdDY0QXJyYXktdG8tSW50MTZBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgIDQ3LjgxOTEr
LTEuNzM5OCAgICAgICAgICAgNDYuNDkzMSstMy40Njc2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4
NXggZmFzdGVyCiAgIGZvbGQtZG91YmxlLXRvLWludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTIuODkxNCstMS4wMzUxICAgICAgICAgICAxMi40NTc3Ky0wLjQwODEgICAgICAgICAg
bWlnaHQgYmUgMS4wMzQ4eCBmYXN0ZXIKICAgZm9sZC1nZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5
LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4Ljg0MjYrLTEuMjE0OSAgICAgICAgICAgIDguMzI5OCstMC43NzIy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYxNnggZmFzdGVyCiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11
bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgIDYuMjY0OSstMC4xMzkwICAgICAgICAgICAg
Ni4xOTE3Ky0wLjExMTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBmYXN0ZXIKICAgZm9sZC1t
dWx0aS1nZXQtYnktb2Zmc2V0LXRvLWdldC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MjE1Ky0xLjExMjQgICAgID8g
ICAgICA0LjkwMTcrLTEuNTk0OSAgICAgICAgPyBtaWdodCBiZSAxLjA2MDZ4IHNsb3dlcgogICBm
b2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tcG9seS1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTk4NistMC4w
NTQ2ICAgICA/ICAgICAgNC4yMTk2Ky0wLjA3NDAgICAgICAgID8KICAgZm9sZC1tdWx0aS1wdXQt
Ynktb2Zmc2V0LXRvLXBvbHktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjkyMzcrLTEuNjkwNSAgICAgICAgICAg
IDQuMzYxNistMC4yNDM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMTI4OXggZmFzdGVyCiAgIGZvbGQt
bXVsdGktcHV0LWJ5LW9mZnNldC10by1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTI1NSstMC4yMTcwICAgICAg
ICAgICAgMy4zNjc4Ky0wLjExMjAgICAgICAgICAgbWlnaHQgYmUgMS4wNDY4eCBmYXN0ZXIKICAg
Zm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Utb3ItdHJhbnNpdGlvbi1wdXQtYnkt
b2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuODc0OSstMC4zNDk2ICAgICA/ICAgICAgNy4wODE1Ky0wLjE3NjAgICAgICAgID8g
bWlnaHQgYmUgMS4wMzAweCBzbG93ZXIKICAgZm9sZC1wdXQtYnktaWQtdG8tbXVsdGktcHV0LWJ5
LW9mZnNldCAgICAgICAgICAgICAxMC4zOTg5Ky0yLjEzMjMgICAgICAgICAgICA4Ljc1NTUrLTIu
NjIwMiAgICAgICAgICBtaWdodCBiZSAxLjE4Nzd4IGZhc3RlcgogICBmb2xkLXB1dC1ieS12YWwt
d2l0aC1zdHJpbmctdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjI5MTQrLTEuNzUxNSAgICAgICAg
ICAgIDguMTMxMCstMS42OTU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5N3ggZmFzdGVyCiAgIGZv
bGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjM4MCst
MC4zNjcyICAgICAgICAgICAgNy4wNzQ1Ky0wLjMyOTcgICAgICAgICAgbWlnaHQgYmUgMS4wMjMx
eCBmYXN0ZXIKICAgZm9sZC1wdXQtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC44MTA1Ky0xLjc1MzQgICAgICAgICAgICAzLjc1MTQrLTEuMzAyNCAgICAgICAgICBt
aWdodCBiZSAxLjI4MjN4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1lbnRyaWVzICAg
ICAgICAgICAgICAgICAgICAgICA5LjEwMzErLTAuNDg0NiAgICAgICAgICAgIDkuMDQ2NystMC41
NTE2ICAgICAgICAKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy45ODc2Ky0wLjA2MzAgICAgID8gICAgICA0LjA3MDIrLTAuMjIzNiAgICAgICAg
PyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMg
ICAgICAgICAgICAgICAgICAgICAgICAzLjczMjYrLTAuMDYxMCAgICAgPyAgICAgIDMuODM4MSst
MC4wNTY5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4M3ggc2xvd2VyCiAgIGZyb3VuZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTExNSstMC4xMzgzICAgICA/
ICAgICAxMC4wOTY4Ky0wLjgwODQgICAgICAgID8gbWlnaHQgYmUgMS4wMTg3eCBzbG93ZXIKICAg
ZnRsLWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAgICAgICAgICAgICA2MC4zMjQx
Ky0wLjIwNzQgICAgID8gICAgIDYxLjU4MzUrLTEuNTIwNyAgICAgICAgPyBtaWdodCBiZSAxLjAy
MDl4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIyLjYwNDMrLTAuMzUyMiAgICAgPyAgICAgMjIuODQyMCstMS4xMjIwICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRhbmQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMzUuMTg5NCstNi4yNzQzICAgICAgICAgIDEzMy45ODI2Ky03
LjAxNTUgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTMzLjY3NDMrLTcuMTMwNyAgICAgICAgICAxMzEuNDc0NistMi4yMjYzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXR4b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMzEuNjI4MystMi4yNjE3ICAgICA/ICAgIDEzMi4wMjA4
Ky0yLjc1MTAgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLWRpdiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQ1Ni41NDQ4Ky0yLjQwNTEgICAgID8gICAgNDYyLjgyMDArLTguOTQxNSAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMzd4IHNsb3dlcgogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYxLjIxMDErLTguODcyMCAgICAgICAgICAxNTcu
OTUwMistMS4yMTE1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwNnggZmFzdGVyCiAgIGZ0bC1wb2x5
bW9ycGhpYy1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzMuOTE2OCstMy40NTMx
ICAgICA/ICAgIDIzNi41NzAyKy0zLjAzMDMgICAgICAgID8gbWlnaHQgYmUgMS4wMTEzeCBzbG93
ZXIKICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2
My45NDczKy0xMS41MzAzICAgICAgICAgMTU2LjQ2NDErLTAuMjQwMCAgICAgICAgICBtaWdodCBi
ZSAxLjA0Nzh4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtU3RyaW5nRnJvbUNoYXJDb2RlICAg
ICAgICAgICAgICAgIDQxLjU4NDIrLTAuMTUzMCAgICAgPyAgICAgNDIuMTI2MystMS4wMzk1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEzMHggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNjAuMzUzNCstMTEuNjMzOCAgICAgICAgIDE1Ny45
MTA3Ky01Ljc4NjggICAgICAgICAgbWlnaHQgYmUgMS4wMTU1eCBmYXN0ZXIKICAgZnRsLXBvbHlt
b3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDE2OS4xMDg1Ky0wLjc5MTgg
ICAgID8gICAgMTcyLjA0ODIrLTcuNjIyOSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzR4IHNsb3dl
cgogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
LjI2MjMrLTAuMjMzMSAgICAgICAgICAgMTEuMDA4NistMC4xNDkwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIzMHggZmFzdGVyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEuOTAzMCstMC4wNTc3ICAgICA/ICAgICAgMS45MDk3Ky0wLjA2MDEgICAg
ICAgID8KICAgZnVuY3Rpb24tdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi41MDczKy0wLjAzMjYgICAgICAgICAgICAyLjQ4NjArLTAuMDE4MSAgICAgICAgCiAgIGZ1
bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODguMzk3NCst
My4xNjU4ICAgICAgICAgICA4Ny4xNTQ3Ky0zLjgyMjUgICAgICAgICAgbWlnaHQgYmUgMS4wMTQz
eCBmYXN0ZXIKICAgZ2NzZS1wb2x5LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAg
ICAgICAgOC41MzQ0Ky0wLjc4NzAgICAgICAgICAgICA3Ljk3NTErLTAuMTc2MSAgICAgICAgICBt
aWdodCBiZSAxLjA3MDF4IGZhc3RlcgogICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4Ljk4ODcrLTAuNDM2MiAgICAgICAgICAgIDguOTQ3NystMC40
OTQ4ICAgICAgICAKICAgZ2NzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy40NzUzKy0wLjMwMjUgICAgICAgICAgICAzLjMyNjcrLTAuMTAwOSAgICAgICAg
ICBtaWdodCBiZSAxLjA0NDd4IGZhc3RlcgogICBnZW5lcmF0b3ItY3JlYXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjY5NzkrLTAuMDM5NCAgICAgICAgICAgIDAuNjc4MCst
MC4wNTY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5M3ggZmFzdGVyCiAgIGdlbmVyYXRvci1maWIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEuMTE4MCstNC43NjE5ICAgICAg
ICAgICA5OS42ODQzKy0yLjM4MjAgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKICAg
Z2VuZXJhdG9yLWZ1bmN0aW9uLWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMy40OTI0
Ky0wLjE1NTMgICAgID8gICAgICAzLjYzNzUrLTAuMjAwNyAgICAgICAgPyBtaWdodCBiZSAxLjA0
MTV4IHNsb3dlcgogICBnZW5lcmF0b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgICAg
ICAgICAgICA1LjY3MzMrLTAuMDg4NyAgICAgPyAgICAgIDUuNzMxMistMC4xMjM2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwMnggc2xvd2VyCiAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMg
ICAgICAgICAgICAgICAgICAgICAzMTguNTE4MCstMTAuOTU5MiAgICA/ICAgIDMyNS41NTI3Ky0x
NC4wOTcxICAgICAgID8gbWlnaHQgYmUgMS4wMjIxeCBzbG93ZXIKICAgZ2V0LWJ5LWlkLWJpbW9y
cGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjY2MistMC4wNTU0ICAg
ICA/ICAgICAgMi4zMjIxKy0wLjA3MDIgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIK
ICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yODQz
Ky0wLjAzMjQgICAgICAgICAgICA0LjI3MzMrLTAuMDIzMiAgICAgICAgCiAgIGdldC1ieS1pZC1j
aGFpbi1mcm9tLXRyeS1ibG9jayAgICAgICAgICAgICAgICAgICAgIDEuODY0MCstMC4wNTY5ICAg
ICA/ICAgICAgMS44OTQzKy0wLjA5MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTYyeCBzbG93ZXIK
ICAgZ2V0LWJ5LWlkLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgICAgICAgICAgICAgMi44
OTI3Ky0wLjA3MTEgICAgICAgICAgICAyLjg4OTArLTAuMDQyMSAgICAgICAgCiAgIGdldC1ieS1p
ZC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTI3NystMC4yOTM3
ICAgICA/ICAgICAxMS40OTQzKy0xLjQzOTcgICAgICAgID8gbWlnaHQgYmUgMS4xNTc4eCBzbG93
ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1z
aW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi42NTUwKy0wLjAyMTQgICAgICAgICAgICAyLjY0ODUrLTAuMDQwMSAgICAgICAgCiAg
IGdldC1ieS1pZC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjc0
OSstMS40MjMzICAgICA/ICAgICAxMC4yNTc5Ky0wLjU1ODMgICAgICAgID8gbWlnaHQgYmUgMS4x
MDYweCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy44NDY3Ky0wLjA2MTkgICAgID8gICAgICAzLjkzOTUrLTAuMTY3NSAgICAgICAg
PyBtaWdodCBiZSAxLjAyNDF4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9y
cGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDY5NSstMC4wNzY3ICAg
ICAgICAgICAgMy4wNjc5Ky0wLjA0ODUgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45MDQ1Ky0wLjA1NDkgICAg
ID8gICAgICA1LjkxOTgrLTAuMDQ2MSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuODk3MistMC4wMjU1ICAgICAgICAgICAgMS44OTAzKy0w
LjAyNjEgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1l
bGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1LjMxMDgrLTAuMDQ3OCAgICAgPyAgICAgIDUuMzc1NystMC4xMDY1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJv
dG8tb3Itc2VsZiAgICAgICAgICAgICAgIDkuNTcyNCstMS4wOTI1ICAgICAgICAgICAgOS4zMjUy
Ky0wLjkzOTEgICAgICAgICAgbWlnaHQgYmUgMS4wMjY1eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxl
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuODMwMSstMC4wMjQ1ICAgICA/ICAgICAgMy44NDkyKy0wLjA0MjUgICAgICAgID8KICAgZ2V0
LWJ5LXZhbC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgOS41NjU2Ky0w
LjgzMzkgICAgID8gICAgICA5LjYxNzQrLTAuNjY0NCAgICAgICAgPwogICBnZXQtYnktdmFsLXdp
dGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
Njg1NystMC4wMjg4ICAgICA/ICAgICAgMi43MDEwKy0wLjA4MDEgICAgICAgID8KICAgZ2V0LWJ5
LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDku
MTMwNCstMC4zMDY1ICAgICAgICAgICAgOS4wNTU2Ky0wLjM5NjggICAgICAgIAogICBnZXQtYnkt
dmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuODc3NistMC4wMjg1ICAgICA/
ICAgICAgMS45MDY0Ky0wLjA1NjkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4xODU2
Ky0wLjE5MTUgICAgICAgICAgICA3LjExMTkrLTAuMTI4OSAgICAgICAgICBtaWdodCBiZSAxLjAx
MDR4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXByb3RvLW9yLXNlbGYgICAgICAg
ICAgICAgICA5Ljg1NTUrLTEuMTkyOCAgICAgPyAgICAgIDkuOTk2MistMC41ODcxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE0M3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcXVhZG1v
cnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM0MjUrLTAuMDM1NiAg
ICAgPyAgICAgIDMuMzQ3OSstMC4wNjkwICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zeW1i
b2wtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgIDkuNzYxOSstMC41NzAxICAgICA/ICAgICAg
OS45MTM5Ky0wLjg5MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTU2eCBzbG93ZXIKICAgZ2V0X2J5
X3ZhbC1JbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNzc3Ky0wLjA0
OTMgICAgID8gICAgICAxLjI1NjcrLTAuMTY1MyAgICAgICAgPyBtaWdodCBiZSAxLjA2NzB4IHNs
b3dlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjEwNDErLTAuMTQ2NyAgICAgICAgICAgIDIuMTAyNystMC4xNzg0ICAgICAgICAKICAgZ2V0
X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MzEwKy0w
LjE0ODkgICAgID8gICAgICAyLjk1NzArLTAuMDg4OSAgICAgICAgPwogICBnZXR0ZXItbm8tYWN0
aXZhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4MjErLTAuMDY5MCAgICAg
PyAgICAgIDIuODk3MistMC4wNjY5ICAgICAgICA/CiAgIGdldHRlci1wcm90b3R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjY2NistMC4wMzk0ICAgICA/ICAgICAgNC43
NjM2Ky0wLjI1ODAgICAgICAgID8gbWlnaHQgYmUgMS4wMjA4eCBzbG93ZXIKICAgZ2V0dGVyLXJp
Y2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgIDg5NC42OTkzKy0xMi41OTEw
ICAgID8gICAgOTAzLjQxODkrLTI4LjQxNjEgICAgICAgPwogICBnZXR0ZXItcmljaGFyZHMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyLjEzNzErLTQuNDM4NCAgICAgICAgICAg
NjEuNDM1NystNS40MzcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNHggZmFzdGVyCiAgIGdldHRl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDM4NSstMC4w
NTc4ICAgICA/ICAgICAgMy4wNzI3Ky0wLjA0NzEgICAgICAgID8gbWlnaHQgYmUgMS4wMTEzeCBz
bG93ZXIKICAgZ2xvYmFsLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMC4yODA0Ky0wLjI1NTUgICAgICAgICAgIDEwLjEyMjgrLTAuMjcyNCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNTZ4IGZhc3RlcgogICBnbG9iYWwtb2JqZWN0LWFjY2Vzcy13aXRoLW11dGF0aW5n
LXN0cnVjdHVyZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ljg4NzgrLTAuMTY4MCAgICAgICAgICAgIDQuODA2MSstMC4wNjI1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE3MHggZmFzdGVyCiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXItZmly
ZS1mcm9tLW9wdCAgICAgICAgICAgICAgIDAuODAxNCstMC4wNzU5ICAgICA/ICAgICAgMC44MzYw
Ky0wLjAzNjMgICAgICAgID8gbWlnaHQgYmUgMS4wNDMyeCBzbG93ZXIKICAgZ2xvYmFsLXZhci1j
b25zdC1pbmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC42ODA5Ky0wLjA5NTEgICAg
ID8gICAgICAwLjcyODcrLTAuMDg0MyAgICAgICAgPyBtaWdodCBiZSAxLjA3MDJ4IHNsb3dlcgog
ICBoYXJkLW92ZXJmbG93LWNoZWNrLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjQ0
OTIrLTAuNzUyNyAgICAgPyAgICAgMjMuNjg3OSstMS4yNzA1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwMnggc2xvd2VyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjQuMjY4MistMC4zNzkwICAgICA/ICAgICAyNS4wNjE0Ky0xLjE3NTUgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzI3eCBzbG93ZXIKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5
cyAgICAgICAgICAgICAgICAgICAgICAyMi41Njc3Ky0wLjY4NjQgICAgICAgICAgIDIxLjcyMDAr
LTAuMzY2NSAgICAgICAgICBtaWdodCBiZSAxLjAzOTB4IGZhc3RlcgogICBIYXNoTWFwLXB1dC1n
ZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjkyOTArLTAuNjg1MyAgICAg
ICAgICAgMjEuNjEzNCstMC44NzA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NnggZmFzdGVyCiAg
IEhhc2hNYXAtc3RyaW5nLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgMjQuMDQ3
NCstMS4zNzQyICAgICAgICAgICAyMy42Mjg5Ky0wLjM3ODUgICAgICAgICAgbWlnaHQgYmUgMS4w
MTc3eCBmYXN0ZXIKICAgaG9pc3QtbWFrZS1yb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy44MDIwKy0wLjI0NTcgICAgICAgICAgICAzLjYzMzYrLTAuMDkxMSAgICAgICAg
ICBtaWdodCBiZSAxLjA0NjN4IGZhc3RlcgogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVjdHVyZS1l
ZmZlY3RmdWwtbG9vcCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjAzODIrLTAuMTk2MCAgICAgPyAgICAgIDMuMTUyMystMC4wNjUyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM3Nnggc2xvd2VyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0
dXJlICAgICAgICAgICAgICAgICAgICAgICAgIDIuMDA1NystMC4wNzMyICAgICA/ICAgICAgMi4w
MTE2Ky0wLjA0OTAgICAgICAgID8KICAgaW11bC1kb3VibGUtb25seSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4xNjc1Ky0wLjI3MDcgICAgICAgICAgICAzLjA2MjMrLTAuMDU4
MCAgICAgICAgICBtaWdodCBiZSAxLjAzNDR4IGZhc3RlcgogICBpbXVsLWludC1vbmx5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjIwNjIrLTAuMTExOCAgICAgPyAgICAg
IDUuMjQ5MSstMC4wNjIxICAgICAgICA/CiAgIGltdWwtbWl4ZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuOTI3NystMC4xMTk1ICAgICA/ICAgICAgMi45ODc5Ky0w
LjA3NDkgICAgICAgID8gbWlnaHQgYmUgMS4wMjA2eCBzbG93ZXIKICAgaW4tZm91ci1jYXNlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi43MzAzKy0xLjUwOTYgICAgICAg
ICAgIDE2LjYxMzIrLTEuNTE0OSAgICAgICAgCiAgIGluLW9uZS1jYXNlLWZhbHNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTExNSstMC4xNjIwICAgICA/ICAgICAgNy45MTkw
Ky0wLjI1NDggICAgICAgID8KICAgaW4tb25lLWNhc2UtdHJ1ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy44MzU3Ky0wLjE0MTMgICAgID8gICAgICA4LjA0NjMrLTAuMjA3MiAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjl4IHNsb3dlcgogICBpbi10d28tY2FzZXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjkzOTIrLTAuMTY5NCAgICAgPyAgICAgIDgu
MjQ4MistMC4yNzc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4OXggc2xvd2VyCiAgIGluZGV4ZWQt
cHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDIuNzI5MistMC4wNTQ2
ICAgICAgICAgICAgMi41OTMyKy0wLjE2MzQgICAgICAgICAgbWlnaHQgYmUgMS4wNTI1eCBmYXN0
ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdi1uby1pbmxpbmUgICAgICAgICAgICAg
My4xNzQ4Ky0wLjM0OTQgICAgICAgICAgICAzLjAzMTcrLTAuMDYwNyAgICAgICAgICBtaWdodCBi
ZSAxLjA0NzJ4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92ICAgICAgICAg
ICAgICAgICAgICAgICA2Ljg1OTYrLTAuMTI3MyAgICAgPyAgICAgIDYuOTI4MCstMC4xMzI2ICAg
ICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUtbm8taW5saW5l
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTEuMTYwNistMC41MDk3ICAgICAgICAgICAxMS4wNDUyKy0wLjUxNTEgICAgICAgICAgbWlnaHQg
YmUgMS4wMTA0eCBmYXN0ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10by1zY29w
ZSAgICAgICAgICAgICAyMi44NzgxKy0xLjI5MzkgICAgICAgICAgIDIyLjM2NDArLTAuMTc2MSAg
ICAgICAgICBtaWdodCBiZSAxLjAyMzB4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRo
ZW4tcmVlbnRlci1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MS4xNTk5Ky0yLjg5MjkgICAgICAgICAgIDQ4LjYxNDkrLTAu
MDc4NSAgICAgICAgICBtaWdodCBiZSAxLjA1MjN4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNv
bnN0LXRoZW4tcmVlbnRlciAgICAgICAgICAgICAgICAgIDIzLjMzOTgrLTEuMjQ2MCAgICAgPyAg
ICAgMjMuNTEzMSstMS43Mzg5ICAgICAgICA/CiAgIGluZmVyLWNvbnN0YW50LWdsb2JhbC1wcm9w
ZXJ0eSAgICAgICAgICAgICAgICAgICAgIDIuNTE4NSstMC4wMjIxICAgICA/ICAgICAgMi41NzA0
Ky0wLjEwNzAgICAgICAgID8gbWlnaHQgYmUgMS4wMjA2eCBzbG93ZXIKICAgaW5mZXItY29uc3Rh
bnQtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wMzc1Ky0wLjA0MjQgICAg
ID8gICAgICAyLjExNjErLTAuMTEwNyAgICAgICAgPyBtaWdodCBiZSAxLjAzODZ4IHNsb3dlcgog
ICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXRlbi12YXJzICAgICAgICAgICAgICAgICAgICA2LjUz
NDMrLTAuMDk2MCAgICAgICAgICAgIDYuNDY5OSstMC4yMTY1ICAgICAgICAKICAgaW5mZXItb25l
LXRpbWUtY2xvc3VyZS10d28tdmFycyAgICAgICAgICAgICAgICAgICAgNi4xMzM4Ky0wLjA4OTkg
ICAgID8gICAgICA2LjE1NzkrLTAuMTQ1OSAgICAgICAgPwogICBpbmZlci1vbmUtdGltZS1jbG9z
dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjA1NDkrLTAuMTA0MyAgICAgICAgICAg
IDUuOTgyMCstMC4wMTQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAgIGluZmVy
LW9uZS10aW1lLWRlZXAtY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgMTEuMTc4MSstMC4y
MjU4ICAgICAgICAgICAxMS4xNzQyKy0wLjMwMTEgICAgICAgIAogICBpbmxpbmUtYXJndW1lbnRz
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ0MDkrLTAuMTg1MiAgICAgPyAg
ICAgIDMuNDc5NistMC4xNDkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExMnggc2xvd2VyCiAgIGlu
bGluZS1hcmd1bWVudHMtYWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgIDMuMzc5Nist
MC4xODE2ICAgICA/ICAgICAgMy41MzczKy0wLjI0MjMgICAgICAgID8gbWlnaHQgYmUgMS4wNDY3
eCBzbG93ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAg
ICAgICAgMy40ODU0Ky0wLjIxNzIgICAgID8gICAgICAzLjU0NDYrLTAuMTkwNSAgICAgICAgPyBt
aWdodCBiZSAxLjAxNzB4IHNsb3dlcgogICBpbmxpbmUtZ2V0LXNjb3BlZC12YXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjE4MjMrLTAuMDUwOSAgICAgICAgICAgIDIuMTY1MCstMC4w
MjU0ICAgICAgICAKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgNy42MTY1Ky0wLjM1MDIgICAgID8gICAgICA3LjcwNTArLTAuMjgwMSAgICAgICAg
PyBtaWdodCBiZSAxLjAxMTZ4IHNsb3dlcgogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJp
bmctdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDM3Ljc3NzgrLTAuNjY2NiAgICAgICAgICAgMzcuNDcxNystMC4yNjczICAg
ICAgICAKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRyYW5zaXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4zODkw
Ky0wLjQ3MTggICAgID8gICAgIDM3LjY1ODkrLTAuNzI2NiAgICAgICAgPwogICBpbnN0YW5jZW9m
LWJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjY1NTErLTAuNTg4OSAg
ICAgPyAgICAgMjAuNzc2MCstMS4yMzAwICAgICAgICA/CiAgIGludC1vci1vdGhlci1hYnMtdGhl
bi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuMDYxMCstMC4wOTY2ICAgICAgICAgICAg
NC4wMTk3Ky0wLjAyNjMgICAgICAgICAgbWlnaHQgYmUgMS4wMTAzeCBmYXN0ZXIKICAgaW50LW9y
LW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAxNS41ODI2Ky0wLjg2
NzEgICAgID8gICAgIDE2LjAyMTkrLTEuNTc1OCAgICAgICAgPyBtaWdodCBiZSAxLjAyODJ4IHNs
b3dlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAg
ICA0LjE5NTcrLTAuMDQyMiAgICAgXiAgICAgIDQuMDYzNSstMC4wMzUzICAgICAgICBeIGRlZmlu
aXRlbHkgMS4wMzI1eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC41Njk3Ky0wLjA5MjUgICAgID8gICAgICA0LjU4NTkrLTAuMDY3
MiAgICAgICAgPwogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAg
ICAgICAgICAzLjM4MTMrLTAuMDIyMSAgICAgPyAgICAgIDMuMzgzMSstMC4wMzI3ICAgICAgICA/
CiAgIGludC1vci1vdGhlci1tYXgtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDMu
NjUxMCstMC4wNDgxICAgICA/ICAgICAgMy43MTA3Ky0wLjIwNDMgICAgICAgID8gbWlnaHQgYmUg
MS4wMTYzeCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAgICAg
ICAgICAgICAgICAgMy40MzA5Ky0wLjAyMDAgICAgICAgICAgICAzLjQyNzkrLTAuMDE2MCAgICAg
ICAgCiAgIGludC1vci1vdGhlci1tb2QtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAg
IDMuMjk3MSstMC4wMTk2ICAgICA/ICAgICAgMy4zMDA0Ky0wLjAxNjMgICAgICAgID8KICAgaW50
LW9yLW90aGVyLW11bC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS4wODA2Ky0w
LjA0MDQgICAgID8gICAgICA1LjA4OTArLTAuMDUwMCAgICAgICAgPwogICBpbnQtb3Itb3RoZXIt
bmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAzLjkwNDUrLTAuMDEzNyAgICAg
PyAgICAgIDMuOTI2OCstMC4wMjEzICAgICAgICA/CiAgIGludC1vci1vdGhlci1uZWctemVyby10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTUuMzI5OCstMC4yMDA1ICAgICA/ICAgICAxNS40
MDM1Ky0wLjc2NzUgICAgICAgID8KICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwg
ICAgICAgICAgICAgICAgICAgNS44Mzc0Ky0wLjExOTEgICAgID8gICAgICA1Ljk4NzgrLTAuMjE0
NCAgICAgICAgPyBtaWdodCBiZSAxLjAyNTh4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItc3ViICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkyMDIrLTAuMDY0MCAgICAgPyAgICAg
IDMuOTQzOSstMC4xMTMwICAgICAgICA/CiAgIGludC1vdmVyZmxvdy1sb2NhbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuNzIxMCstMC4wMzQ2ICAgICA/ICAgICAgMy43NjU3Ky0w
LjA3MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBzbG93ZXIKICAgSW50MTZBcnJheS1hbGxv
Yy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA0MS4wODg1Ky0xLjM1ODAgICAgICAg
ICAgIDQwLjM3MDArLTAuOTA1MSAgICAgICAgICBtaWdodCBiZSAxLjAxNzh4IGZhc3RlcgogICBJ
bnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDE1LjI0MDAr
LTAuODQzMyAgICAgPyAgICAgMTUuMjQ2OSstMC43OTAyICAgICAgICA/CiAgIEludDE2QXJyYXkt
YnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuOTM3OSstMC44MzI0ICAg
ICA/ICAgICAxNy42NjkxKy0xLjg0NTQgICAgICAgID8gbWlnaHQgYmUgMS4wNDMyeCBzbG93ZXIK
ICAgSW50MTZBcnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS43
NTkxKy0wLjIxMDMgICAgID8gICAgICAxLjg0MzQrLTAuNDU4OCAgICAgICAgPyBtaWdodCBiZSAx
LjA0ODB4IHNsb3dlcgogICBJbnQxNkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAg
ICAgICAgICAgIDM3LjYzNTgrLTEuNjQxMCAgICAgICAgICAgMzcuMTgyNistMC43MjEzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTIuMjg4NSstMC40NjUwICAgICAgICAgICAxMi4xMjk2
Ky0wLjM1NTggICAgICAgICAgbWlnaHQgYmUgMS4wMTMxeCBmYXN0ZXIKICAgSW50MzJBcnJheS1h
bGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA0My45NTcxKy0xLjEzMjIgICAg
ICAgICAgIDQzLjgzNTcrLTEuMjA0MSAgICAgICAgCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTU0NistMC4xMDg3ICAgICAgICAgICAgMi41
NTE1Ky0wLjE1MDcgICAgICAgIAogICBJbnQzMkFycmF5LUludDhBcnJheS12aWV3LWFsbG9jICAg
ICAgICAgICAgICAgICAgICA2LjMwNzMrLTAuMjU0OSAgICAgPyAgICAgIDYuNDUzMCstMC4zMDI0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzMXggc2xvd2VyCiAgIGludDUyLXNwaWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODYyOSstMC4wODIxICAgICAgICAgICAg
NC43NTUxKy0wLjA2MzYgICAgICAgICAgbWlnaHQgYmUgMS4wMjI3eCBmYXN0ZXIKICAgSW50OEFy
cmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgICAzNy41MDEyKy0xLjUw
NTkgICAgICAgICAgIDM1LjkzODYrLTAuMTg3OCAgICAgICAgICBtaWdodCBiZSAxLjA0MzV4IGZh
c3RlcgogICBJbnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAgICAgICAg
ICAzLjUyNzYrLTAuMjk3NiAgICAgPyAgICAgIDMuODQxMSstMS4xMDI5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDg4OXggc2xvd2VyCiAgIEludDhBcnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMzk4NCstMC4wMzkzICAgICA/ICAgICAgMy40MTU0Ky0wLjAyMzEg
ICAgICAgID8KICAgaW50ZWdlci1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC42NjA2Ky0wLjU1NTMgICAgID8gICAgIDExLjA2ODMrLTAuODExMSAgICAgICAgPyBt
aWdodCBiZSAxLjAzODJ4IHNsb3dlcgogICBpbnRlZ2VyLW1vZHVsbyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjk2NDIrLTAuMDc0NSAgICAgICAgICAgIDEuODc2MCstMC4w
ODk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3MHggZmFzdGVyCiAgIGlzLWJvb2xlYW4tZm9sZC10
cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQxOSstMC4wNzQzICAgICA/ICAg
ICAgMi44NDE4Ky0wLjI3NzIgICAgICAgID8gbWlnaHQgYmUgMS4wMzY0eCBzbG93ZXIKICAgaXMt
Ym9vbGVhbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xMDEyKy0w
LjEwMzEgICAgICAgICAgICAyLjA5MDMrLTAuMDY2OCAgICAgICAgCiAgIGlzLWZ1bmN0aW9uLWZv
bGQtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODg1NSstMC4yMjk3ICAgICA/ICAgICAgOS45
NzMzKy0wLjMxNTEgICAgICAgID8KICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi45MTg0Ky0wLjA1OTQgICAgID8gICAgICAyLjkyNzcrLTAuMDU3
MyAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjA1MjUrLTAuMDQwMCAgICAgPyAgICAgIDIuMDUzMistMC4wNDI4ICAgICAgICA/
CiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
OTg4NystMC4zNDAxICAgICAgICAgICAgMi44MjYwKy0wLjA3MjEgICAgICAgICAgbWlnaHQgYmUg
MS4wNTc1eCBmYXN0ZXIKICAgaXMtbnVtYmVyLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4wMzgwKy0wLjA3NDYgICAgID8gICAgICAyLjA0MjArLTAuMDQ4OCAgICAg
ICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAg
ICAyLjA1MjcrLTAuMDI2MiAgICAgPyAgICAgIDIuMTcyOCstMC4yMzE1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDU4NXggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtbGVzcy10cmlja3kg
ICAgICAgICAgICAgICAgIDIuODUxOCstMC4wMzk2ICAgICA/ICAgICAgMi44Njc4Ky0wLjA2Mjkg
ICAgICAgID8KICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC10cmlja3kgICAgICAgICAgICAgICAg
ICAgICAgMy4xNDk2Ky0wLjA1NzYgICAgID8gICAgICAzLjE5ODQrLTAuMDUzNSAgICAgICAgPyBt
aWdodCBiZSAxLjAxNTV4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjA5NDArLTAuMDUzNSAgICAgICAgICAgIDIuMDczMSstMC4w
MzY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMXggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxs
LXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAgIDIuODk5MCstMC4wNjE3ICAgICA/ICAg
ICAgMi45MzY4Ky0wLjAyMDggICAgICAgID8gbWlnaHQgYmUgMS4wMTMxeCBzbG93ZXIKICAgaXMt
b2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4wOTc0Ky0wLjEyMzgg
ICAgICAgICAgIDEwLjA1MDMrLTAuNDA0MiAgICAgICAgCiAgIGlzLW9iamVjdC1vci1udWxsLXRy
aWNreS1mdW5jdGlvbiAgICAgICAgICAgICAgICAgIDIuOTAzNystMC4wNDU3ICAgICAgICAgICAg
Mi44ODE4Ky0wLjAzNzggICAgICAgIAogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJu
YWwtZnVuY3Rpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi43MDM0Ky0wLjE2ODQgICAgICAgICAgICA2LjYzNjArLTAuMTY3NSAgICAg
ICAgICBtaWdodCBiZSAxLjAxMDF4IGZhc3RlcgogICBpcy1zdHJpbmctZm9sZC10cmlja3kgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkxMTkrLTAuMjYwNCAgICAgICAgICAgIDIuODU4
NCstMC4xMjI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4N3ggZmFzdGVyCiAgIGlzLXN0cmluZy1m
b2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMDUwOSstMC4wODM0ICAg
ICAgICAgICAgMi4wMzA2Ky0wLjA3MDkgICAgICAgIAogICBpcy11bmRlZmluZWQtZm9sZC10cmlj
a3kgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQ3NDIrLTAuMDQ2MiAgICAgICAgICAgIDIu
NDYxMystMC4wNzAyICAgICAgICAKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4wNTY5Ky0wLjAyOTYgICAgICAgICAgICAyLjA0MTgrLTAuMDE5
OSAgICAgICAgCiAgIEpTT05QLW5lZ2F0aXZlLTAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMTc4MystMC4wMDE5ICAgICA/ICAgICAgMC4xODI5Ky0wLjAwNjAgICAgICAgID8g
bWlnaHQgYmUgMS4wMjUzeCBzbG93ZXIKICAgbGFyZ2UtaW50LWNhcHR1cmVkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy4zODg1Ky0wLjE1NzkgICAgID8gICAgICAzLjUyNDArLTAu
MTAzMCAgICAgICAgPyBtaWdodCBiZSAxLjA0MDB4IHNsb3dlcgogICBsYXJnZS1pbnQtbmVnICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjU4MTArLTEuNDUwNiAgICAgICAg
ICAgMTMuMjU2OCstMC44MjU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0NXggZmFzdGVyCiAgIGxh
cmdlLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNDU3Nyst
MS4yMDMzICAgICAgICAgICAxMi4wOTgzKy0wLjkwMjkgICAgICAgICAgbWlnaHQgYmUgMS4wMjk3
eCBmYXN0ZXIKICAgbGF6eS1hcnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAg
ICAgICAyMC40NTExKy0wLjQ1NjQgICAgID8gICAgIDIwLjYxNTMrLTAuNTU3OSAgICAgICAgPwog
ICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgIDMxLjQw
NDErLTAuMTg3MiAgICAgPyAgICAgMzEuNDk0NCstMC41MTY0ICAgICAgICA/CiAgIGxpY20tZHJh
Z29ucy1vdmVyZmxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguNDYxNystMC4zNTEx
ICAgICA/ICAgICAxOC42ODI2Ky0wLjUwODYgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBzbG93
ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
NS45NzkyKy0wLjEzMDcgICAgID8gICAgIDM2LjAwODArLTAuMTM4NCAgICAgICAgPwogICBsb2Fk
LXZhcmFyZ3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjQ4ODQrLTEu
OTgxNCAgICAgICAgICAgMTguNjE3NCstMC42Mzc0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ2OHgg
ZmFzdGVyCiAgIGxvY2FsZS1jb21wYXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjEuOTQxNistMC4zNjQ4ICAgICA/ICAgICAyMi4xODUwKy0wLjg0MDEgICAgICAgID8gbWln
aHQgYmUgMS4wMTExeCBzbG93ZXIKICAgbG9naWNhbC1ub3Qtd2VpcmQtdHlwZXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi40MzczKy0wLjAyODMgICAgID8gICAgICAyLjQ3NTcrLTAuMDcy
MSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTh4IHNsb3dlcgogICBsb2dpY2FsLW5vdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjYwOTArLTAuMDMxNiAgICAgPyAgICAg
IDMuNjI0OSstMC4wNTMwICAgICAgICA/CiAgIGxvdHMtb2YtZmllbGRzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDguNjIzNCstMC43NzcxICAgICA/ICAgICAgOC45Nzk5Ky0w
LjU2NTIgICAgICAgID8gbWlnaHQgYmUgMS4wNDEzeCBzbG93ZXIKICAgbWFrZS1pbmRleGVkLXN0
b3JhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NzA2Ky0wLjA0NzEgICAgID8g
ICAgICAyLjYwMTgrLTAuMDk2MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMjJ4IHNsb3dlcgogICBt
YWtlLXJvcGUtY3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI5Mzkr
LTAuMTYwNCAgICAgPyAgICAgIDMuNjYyNistMC4yODE1ICAgICAgICA/IG1pZ2h0IGJlIDEuMTEx
OXggc2xvd2VyCiAgIG1hbnktZm9yZWFjaC1jYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuNDUwNystMC4wNDc4ICAgICA/ICAgICAgMi40OTg4Ky0wLjEwMjAgICAgICAgID8g
bWlnaHQgYmUgMS4wMTk2eCBzbG93ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNS44MDM1Ky0wLjU3NDMgICAgID8gICAgIDE2LjE4MjMrLTEu
MDE4OSAgICAgICAgPyBtaWdodCBiZSAxLjAyNDB4IHNsb3dlcgogICBtYXAtZm9yLWVhY2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY2NzUrLTAuMTMyMyAgICAgICAg
ICAgIDQuNTQ0NSstMC4wMTc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3MXggZmFzdGVyCiAgIG1h
cC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNzQ0Myst
MS4zMDU2ICAgICAgICAgICAxNC43Mjg1Ky0wLjQwMDAgICAgICAgIAogICBtYXJzYWdsaWEtbGFy
Z2VyLWludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0LjUwNjMrLTAuODEyNSAgICAg
ICAgICAgNjQuNTA1MCstMC41NzAxICAgICAgICAKICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxOC4zOTc3Ky0xLjQwNzYgICAgICAgICAgIDE3LjE1
NTQrLTAuODI1OSAgICAgICAgICBtaWdodCBiZSAxLjA3MjR4IGZhc3RlcgogICBtYXRoLXJhbmRv
bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjI3MTIrLTAuMzM3MyAg
ICAgPyAgICAgMTQuNTEzOCstMC44ODIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3MHggc2xvd2Vy
CiAgIG1hdGgtdHJ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
NTQ5MistMC4xMzIxICAgICAgICAgICAgNS41MDQ1Ky0wLjA1ODggICAgICAgIAogICBtYXRoLXdp
dGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgIDI3LjUzMzErLTEuNDI1
NCAgICAgICAgICAgMjcuMjY1MistMC43OTAyICAgICAgICAKICAgbWF4LWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xODIyKy0wLjA5MjggICAgICAgICAg
ICAyLjE1NjArLTAuMDU1NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjF4IGZhc3RlcgogICBtZWdh
bW9ycGhpYy1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2LjQ4NDMrLTAu
MzcwMCAgICAgPyAgICAgMjguNDk2OSstMy4zMzExICAgICAgICA/IG1pZ2h0IGJlIDEuMDc2MHgg
c2xvd2VyCiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYuMzU5NCstMC44NjI0ICAgICA/ICAgICAxNy44ODUxKy0xLjk1MTAgICAgICAgID8gbWln
aHQgYmUgMS4wOTMzeCBzbG93ZXIKICAgbWluLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4xNDgzKy0wLjA1NDkgICAgID8gICAgICAyLjIxMzErLTAuMDgz
MyAgICAgICAgPyBtaWdodCBiZSAxLjAzMDJ4IHNsb3dlcgogICBtaW51cy1ib29sZWFuLWRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI2NjgrLTAuMDM0NCAgICAgICAgICAg
IDIuMjU4NCstMC4wMzAxICAgICAgICAKICAgbWludXMtYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS45NjgzKy0wLjA2ODAgICAgICAgICAgICAxLjk2MTErLTAu
MDc2MiAgICAgICAgCiAgIG1pc2MtYnVncy04NDczODktanBlZzIwMDAgICAgICAgICAgICAgICAg
ICAgICAgIDM3ODAuNDQyMCstMTQ4LjI4MjYgICAgICAgMzc2Mi43NTg3Ky0xMS45MDU0ICAgICAg
IAogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIx
LjI1MTUrLTIuMzY2NyAgICAgICAgICAgMTkuODE3NSstMC44OTE5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDcyNHggZmFzdGVyCiAgIG1vZC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuNDExMystMC4xOTc2ICAgICA/ICAgICAgOS42ODU4Ky0wLjcxNDkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjkyeCBzbG93ZXIKICAgbW9kLWJvb2xlYW4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4wNzYwKy0wLjIxNzQgICAgID8gICAgICA3LjIx
ODgrLTAuNDYyMCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDJ4IHNsb3dlcgogICBtdWwtYm9vbGVh
bi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY0OTIrLTAuMDM3MSAg
ICAgICAgICAgIDIuNjM4NSstMC4wNTQxICAgICAgICAKICAgbXVsLWJvb2xlYW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yNjM5Ky0wLjA3MTAgICAgID8gICAgICAy
LjI2OTErLTAuMDQ5OCAgICAgICAgPwogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjMwNzcrLTAuMDEyMCAgICAgPyAgICAgIDIuMzE1NystMC4w
MjM4ICAgICAgICA/CiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMzA2NistMC4wMjM4ICAgICAgICAgICAgMC4yOTc4Ky0wLjAxMjYgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjk2eCBmYXN0ZXIKICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTIwKy0wLjAxNTYgICAgID8gICAgICAwLjMxOTUr
LTAuMDE4MiAgICAgICAgPyBtaWdodCBiZSAxLjAyNDF4IHNsb3dlcgogICBuZWdhdGl2ZS16ZXJv
LW5lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI4OTYrLTAuMDExMyAgICAg
PyAgICAgIDAuMzAzNistMC4wMzI4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4NXggc2xvd2VyCiAg
IG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIuNTg2
NCstMC42NjQwICAgICAgICAgICAzMi4zOTU4Ky0wLjIwMzQgICAgICAgIAogICBuZXctYXJyYXkt
YnVmZmVyLWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjkzMDkrLTEuNjcxOSAg
ICAgICAgICAgNzUuMDE5OSstMC4zNTU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMXggZmFzdGVy
CiAgIG5ldy1hcnJheS1idWZmZXItcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
MDg4OCstMC4yNjUzICAgICAgICAgICAgNC45MjA4Ky0wLjEzMTAgICAgICAgICAgbWlnaHQgYmUg
MS4wMzQxeCBmYXN0ZXIKICAgbmV3LWFycmF5LWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi44Mzc4Ky0wLjEyMjEgICAgID8gICAgICA2LjkwMTYrLTAuMTc3NCAgICAg
ICAgPwogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjEzMTQrLTAuMjY2MCAgICAgICAgICAgIDMuMDI0NystMC4wNzk1ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDM1M3ggZmFzdGVyCiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjkuMjg4MistMC4zMzkwICAgICA/ICAgICAyOS4zNzk1Ky0wLjA5NTkg
ICAgICAgID8KICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC42NTczKy0wLjk2NjcgICAgICAgICAgIDEwLjEyNDArLTAuMDg0MCAgICAgICAgICBt
aWdodCBiZSAxLjA1Mjd4IGZhc3RlcgogICBudW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjcyODUrLTAuMDM2OCAgICAgPyAgICAgIDIuNzQzNCstMC4x
OTUwICAgICAgICA/CiAgIG9iamVjdC1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuODk3MistMC4yNTM0ICAgICAgICAgICAgNC44MTE2Ky0wLjA1NTAgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTc4eCBmYXN0ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC40NDk4Ky0wLjAyNjMgICAgID8gICAgICA0LjQ2MjQr
LTAuMDI0NSAgICAgICAgPwogICBvYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxh
cmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMDY2OSstMC4wMTc0ICAgICAgICAgICAgMS4wNjA4Ky0wLjAzNTYgICAgICAg
IAogICBvYmplY3QtaW50LWFkZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx
LjAwOTQrLTAuMzU3NSAgICAgICAgICAgMTAuOTM4NistMC40ODU3ICAgICAgICAKICAgb2JqZWN0
LWludC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4wMjE3Ky0wLjQw
NzIgICAgICAgICAgIDEyLjk0MjIrLTAuMzY2NCAgICAgICAgCiAgIG9iamVjdC1pbnQtYW5kLWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMTQ2MystMC43MDc0ICAgICAgICAg
ICAxMS4xMzczKy0wLjQ1NzIgICAgICAgIAogICBvYmplY3QtaW50LW11bC1hcnJheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjQ5MTcrLTAuNTgwNSAgICAgPyAgICAgIDkuODczOSst
MC42NjcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwM3ggc2xvd2VyCiAgIG9iamVjdC1pbnQtc3Vi
LWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTI3NCstMC4yNDg3ICAgICA/
ICAgICAgOC4zNzU3Ky0wLjc1NTAgICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBzbG93ZXIKICAg
b2JqZWN0LWludC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4xNjk0
Ky0wLjYxNzUgICAgICAgICAgIDEyLjg2ODMrLTAuMjg3MCAgICAgICAgICBtaWdodCBiZSAxLjAy
MzR4IGZhc3RlcgogICBvYmplY3QtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0LjgwMDgrLTAuMDU0MSAgICAgPyAgICAgIDQuODc5NCstMC4xMjQ5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE2NHggc2xvd2VyCiAgIG9iamVjdC1vciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNzg0NistMC4wNTgzICAgICA/ICAgICAgNC44MjMwKy0w
LjA1MDggICAgICAgID8KICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC44Mjg1Ky0wLjEyODYgICAgICAgICAgICA0LjgxNzYrLTAuMDYyMCAgICAg
ICAgCiAgIG9iamVjdC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNDUzOSstMC4wNTQxICAgICAgICAgICAgMi40MzkwKy0wLjAyOTYgICAgICAgIAogICBvYmpl
Y3QtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljg1MTIrLTAu
MDU1MiAgICAgPyAgICAgIDQuODUyNSstMC4wMjcxICAgICAgICA/CiAgIG9iamVjdC14b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODMwNSstMC4wNDMzICAgICAg
ICAgICAgNC44MjcwKy0wLjA0MTcgICAgICAgIAogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5LXRh
a2VuICAgICAgICAgICAgICAgICAgICAgMTE0Ljk2NzcrLTExLjM3NDYgICAgICAgICAxMTEuMTA1
MystMy43NTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0OHggZmFzdGVyCiAgIG9idmlvdXMtc2lu
ay1wYXRob2xvZ3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuODE1MystMC45NDUyICAg
ICAgICAgICAxNy43NjMxKy0wLjQwNTcgICAgICAgIAogICBvYnZpb3VzbHktZWxpZGFibGUtbmV3
LW9iamVjdCAgICAgICAgICAgICAgICAgICAgIDE1Ljc0NjcrLTAuNjk1OSAgICAgICAgICAgMTUu
NzAwMistMC40Mzc3ICAgICAgICAKICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi4wMzYzKy0wLjAzOTAgICAgICAgICAgICAxLjk2NTgrLTAuMDM2
OSAgICAgICAgICBtaWdodCBiZSAxLjAzNTh4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91Ymxl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjIxOTMrLTAuMDQ2NiAgICAgPyAgICAg
IDIuMjI2NistMC4wNzMxICAgICAgICA/CiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuOTMwOSstMC4wMzEzICAgICA/ICAgICAgMS45Mzc4Ky0w
LjA2MjIgICAgICAgID8KICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMt
c2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuMzY3NistMC4wMzU0ICAgICAgICAgICAgMi4zNjI4Ky0wLjA1NTkgICAgICAgIAog
ICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAgICAgICAgICAyLjM2
MDArLTAuMDMzMyAgICAgICAgICAgIDIuMzQyMistMC4wNzIwICAgICAgICAKICAgcG9seS1jaGFp
bi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zNTUwKy0wLjAyNjUg
ICAgICAgICAgICAyLjMyMTArLTAuMDM4MCAgICAgICAgICBtaWdodCBiZSAxLjAxNDd4IGZhc3Rl
cgogICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjMzOTkrLTAuMDM5MSAgICAgICAgICAgIDIuMzAyMCstMC4wMTMzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE2NXggZmFzdGVyCiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDcuOTM2NCstMS4yOTkzICAgICA/ICAgICA0OC44MDg2Ky0wLjEzMDggICAg
ICAgID8gbWlnaHQgYmUgMS4wMTgyeCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zMTU4Ky0wLjIwMzcgICAgID8gICAgICAxLjM0
NzIrLTAuMTkwMCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzl4IHNsb3dlcgogICBwb2x5bW9ycGhp
Yy1nZXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjg5ODcrLTAuMDQwMSAg
ICAgPyAgICAgIDEuOTI5MistMC4wNDQzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MXggc2xvd2Vy
CiAgIHBvbHltb3JwaGljLXB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQu
MDQ0NistMC40NTcxICAgICA/ICAgICAyNC4yMzgzKy0wLjk2NjYgICAgICAgID8KICAgcG9seW1v
cnBoaWMtcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAgICAyNy4zOTc2Ky0yLjQz
NTIgICAgICAgICAgIDI0Ljc0NTErLTAuNDY0OSAgICAgICAgICBtaWdodCBiZSAxLjEwNzJ4IGZh
c3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAg
IDI0LjYxMjQrLTAuNDA5MyAgICAgPyAgICAgMjQuOTgzNystMS4wNTM1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE1MXggc2xvd2VyCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTIuMzc1MCstMC40OTgwICAgICA/ICAgICAxMi40ODkxKy0wLjYwNzQg
ICAgICAgID8KICAgcG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAg
ICAgICAgMy40MDAxKy0wLjA4OTggICAgID8gICAgICAzLjQyMDErLTAuMDQ5NyAgICAgICAgPwog
ICBwcm90by1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjc5
NzkrLTAuMjUyNSAgICAgPyAgICAgMTAuODUwNistMC40NjExICAgICAgICA/CiAgIHByb3RvdHlw
ZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAgICAgIDQuMjExNCstMC4wNzEw
ICAgICA/ICAgICAgNC4zMzU0Ky0wLjQ3MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMjk0eCBzbG93
ZXIKICAgcHV0LWJ5LWlkLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAgICAgICAgICAgICAgICAg
Ni44OTU5Ky0wLjM3MDIgICAgID8gICAgICA2Ljk1ODUrLTAuNjQ3NiAgICAgICAgPwogICBwdXQt
YnktaWQtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAyLjMwMTYrLTAu
MDY1NiAgICAgICAgICAgIDIuMjcwMCstMC4wMjczICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOXgg
ZmFzdGVyCiAgIHB1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMDYw
MSstMC41NzA0ICAgICAgICAgICAxMC44NDc0Ky0xLjA1NzYgICAgICAgICAgbWlnaHQgYmUgMS4w
MTk2eCBmYXN0ZXIKICAgcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC45Nzc1Ky0wLjM5ODEgICAgID8gICAgICA5LjEwNzcrLTAuNDkzMyAgICAgICAg
PyBtaWdodCBiZSAxLjAxNDV4IHNsb3dlcgogICBwdXQtYnktdmFsLWRpcmVjdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjI4MTYrLTAuMDIwNyAgICAgICAgICAgIDAuMjc3Nyst
MC4wMjMwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MnggZmFzdGVyCiAgIHB1dC1ieS12YWwtbGFy
Z2UtaW5kZXgtYmxhbmstaW5kZXhpbmctdHlwZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY0NzkrLTAuMjU2OSAgICAgICAgICAgIDQu
NDcxOCstMC4xNTUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NHggZmFzdGVyCiAgIHB1dC1ieS12
YWwtbWFjaGluZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTc5OSstMC4xMTM3
ICAgICA/ICAgICAgMi42MDM0Ky0wLjI1ODYgICAgICAgID8KICAgcHV0LWJ5LXZhbC13aXRoLXN0
cmluZy1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTgyNCstMC4yNDQ1ICAgICAgICAgICAgOS44
OTEyKy0wLjQxNDggICAgICAgIAogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXNsaWdodGx5LXBv
bHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMDEzMSstMC4wMjk3ICAgICA/ICAgICAgMy4wMzY0Ky0wLjAyOTAgICAgICAg
ID8KICAgcHV0LWJ5LXZhbC13aXRoLXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OS4yOTU2Ky0wLjI3ODAgICAgID8gICAgICA5LjM3MDErLTAuMjk2NCAgICAgICAgPwogICBwdXQt
YnktdmFsLXdpdGgtc3ltYm9sLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS41MDAwKy0wLjI5NTUg
ICAgICAgICAgICA5LjQ4MzYrLTAuMjUxMiAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1i
b2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42NjAzKy0wLjA2MTMgICAgID8gICAgICAyLjc1MTEr
LTAuMzI1NCAgICAgICAgPyBtaWdodCBiZSAxLjAzNDF4IHNsb3dlcgogICBwdXQtYnktdmFsLXdp
dGgtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjI5NzArLTAuMTk4MCAgICAg
ICAgICAgIDkuMjI3MistMC4wOTUzICAgICAgICAKICAgcmFyZS1vc3ItZXhpdC1vbi1sb2NhbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS40MTcyKy0wLjM2MzIgICAgID8gICAgIDEyLjM3
MzQrLTAuNzI4OCAgICAgICAgPyBtaWdodCBiZSAxLjA4Mzh4IHNsb3dlcgogICByYXl0cmFjZS13
aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICA1LjI0NTMrLTAuMDUzOSAg
ICAgICAgICAgIDUuMjIzNCstMC4xNDY5ICAgICAgICAKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0
Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4xNDk1Ky0wLjI1NTcgICAgICAgICAgICA4
LjA5MDIrLTAuMjAxMCAgICAgICAgCiAgIHJlZ2V4cC1leGVjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzIuODgwNystMC45OTg0ICAgICAgICAgICAzMi41MzQ1Ky0wLjI4
OTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgcmVnZXhwLWxhc3QtaW5kZXgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44MzEyKy0wLjE3NzYgICAgID8gICAg
ICA5LjI3NDkrLTAuNTIzMyAgICAgICAgPyBtaWdodCBiZSAxLjA1MDJ4IHNsb3dlcgogICByZWdl
eHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAwLjM0NTkrLTAu
MDU1MSAgICAgICAgICAgIDAuMzQxOCstMC4wMjk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOHgg
ZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuODc3NCstMC4zMDY4ICAgICAgICAgICAgMC43MzEyKy0wLjA0MTYgICAgICAgICAgbWlnaHQg
YmUgMS4yMDAweCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMjM5MCstMC4wMTkwICAgICA/ICAgICAgMC4yNTEwKy0wLjAzNzUgICAg
ICAgID8gbWlnaHQgYmUgMS4wNTAxeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjE0MjErLTAuMDc0MiAgICAgICAgICAgIDEuMTM2Myst
MC4wNTg5ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNTQ2Ky0wLjAxNjkgICAgID8gICAgICAwLjI1ODgrLTAuMDE1NSAgICAgICAg
PyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1NDMrLTAuMDA3MSAgICAgPyAgICAgIDAuMjcw
NCstMC4wNDEzICAgICAgICA/IG1pZ2h0IGJlIDEuMDYzMnggc2xvd2VyCiAgIHJlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI2NjArLTAuMDE3
NSAgICAgICAgICAgIDAuMjU4MistMC4wMDkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwMXggZmFz
dGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWln
bm9yZUNhc2UgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNTg2Ky0wLjAxNjQgICAgID8gICAgICAwLjI2MjUrLTAuMDEwNCAgICAgICAg
PyBtaWdodCBiZSAxLjAxNDl4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNTkyKy0wLjAxNDEgICAgICAgICAgICAw
LjI1NjIrLTAuMDA5NyAgICAgICAgICBtaWdodCBiZSAxLjAxMTh4IGZhc3RlcgogICByZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNTUzKy0w
LjAxMTAgICAgID8gICAgICAwLjI1NjYrLTAuMDEwOCAgICAgICAgPwogICByZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjY0MCstMC4wMjI3
ICAgICA/ICAgICAgMC4yNjg1Ky0wLjAyNzkgICAgICAgID8gbWlnaHQgYmUgMS4wMTcxeCBzbG93
ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
Njc0Ky0wLjAxNjcgICAgICAgICAgICAwLjI2NzMrLTAuMDEyNyAgICAgICAgCiAgIHJlZ2V4cC1w
cm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjYyNjYrLTAuMDcwOCAgICAg
ICAgICAgIDAuNTk0MCstMC4wMjU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU0OXggZmFzdGVyCiAg
IHJlZ2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzQyKy0w
LjAwMjcgICAgID8gICAgICAwLjI1NDErLTAuMDM5MyAgICAgICAgPyBtaWdodCBiZSAxLjA4NTB4
IHNsb3dlcgogICByZWdleHAtc2V0LWxhc3QtaW5kZXggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5LjcwMzUrLTAuNjcwOCAgICAgPyAgICAgIDkuODU5MCstMC42MzQwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE2MHggc2xvd2VyCiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZyb20tb3NyICAgICAg
ICAgICAgICAgICAgICAgICAgMTUuODgzMystMS4yNjcyICAgICAgICAgICAxNS4xMzk2Ky0wLjcx
NDAgICAgICAgICAgbWlnaHQgYmUgMS4wNDkxeCBmYXN0ZXIKICAgcmVwZWF0LW11bHRpLWdldC1i
eS1vZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAxOS4xODQ5Ky0xLjEyMTIgICAgID8gICAg
IDE5LjYzMDQrLTEuNjE1MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMzJ4IHNsb3dlcgogICByaWNo
YXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDQ3LjM0MzQrLTMu
MDQwMiAgICAgPyAgICAgNDcuOTAwMCstMi44NDg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOHgg
c2xvd2VyCiAgIHJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMTguNjk0NCstOC45MDMwICAgICAgICAgIDIxMS4wNzk1Ky0wLjg2NTIgICAgICAgICAgbWln
aHQgYmUgMS4wMzYxeCBmYXN0ZXIKICAgc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi42MzI2Ky0wLjQ4NzUgICAgICAgICAgICA2LjQyNDUrLTAuMTc1
MSAgICAgICAgICBtaWdodCBiZSAxLjAzMjR4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLW92
ZXJyaWRkZW4tbGVuZ3RoICAgICAgICAgICAgICAgICA2LjgxMTArLTEuNjE5MyAgICAgICAgICAg
IDYuMTUzOSstMC4wMjk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTA2OHggZmFzdGVyCiAgIHNjb3Bl
ZC1hcmd1bWVudHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi45MDYwKy0wLjA3NzIgICAg
ICAgICAgICA2Ljg3MDYrLTAuMDU0MyAgICAgICAgCiAgIHNldC1mb3ItZWFjaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjI5MCstMC4wNzk0ICAgICA/ICAgICAgMy42
MzIwKy0wLjAyNjMgICAgICAgID8KICAgc2V0LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy4zMTUxKy0wLjQyOTUgICAgICAgICAgICA2LjkyMDYrLTAuNDQw
NSAgICAgICAgICBtaWdodCBiZSAxLjA1NzB4IGZhc3RlcgogICBzZXR0ZXItcHJvdG90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ5MTUrLTAuMDU0NyAgICAgICAgICAg
IDQuNDg1MystMC4wNDI0ICAgICAgICAKICAgc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi45MTg5Ky0wLjAzNzkgICAgICAgICAgICAyLjkwODErLTAu
MDUxMiAgICAgICAgCiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjEuNzA2MystMC44MzQyICAgICA/ICAgICAyMi42NjU5Ky0yLjA2MTggICAgICAg
ID8gbWlnaHQgYmUgMS4wNDQyeCBzbG93ZXIKICAgc2ltcGxlLWdldHRlci1hY2Nlc3MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNy4wNDMwKy0wLjY0OTIgICAgID8gICAgIDE3LjE2NjMr
LTEuMDI2NCAgICAgICAgPwogICBzaW1wbGUtcG9seS1jYWxsLW5lc3RlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0LjE4ODIrLTAuNTM4MiAgICAgICAgICAgIDQuMDQ0MCstMC41MDgxICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDM1N3ggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTg5NistMC4wMzYxICAgICA/ICAgICAgMS4y
MzcyKy0wLjA4ODcgICAgICAgID8gbWlnaHQgYmUgMS4wNDAxeCBzbG93ZXIKICAgc2ltcGxlLXJl
Z2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAgMi45NjA5Ky0wLjE1NDkg
ICAgID8gICAgICAzLjAwNDcrLTAuMjUzMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDh4IHNsb3dl
cgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAgIDE2
LjI3NzkrLTAuMzA3MCAgICAgICAgICAgMTYuMTg1MistMC4zMTk4ICAgICAgICAKICAgc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMDQyNCstMC41
Mzk4ICAgICAgICAgICAgOC4zNzQ3Ky0wLjU3NTUgICAgICAgICAgbWlnaHQgYmUgMS4wNzk3eCBm
YXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAg
ICAxNC42NjAxKy0wLjQyODcgICAgID8gICAgIDE1LjAxNjQrLTEuMDQ3OCAgICAgICAgPyBtaWdo
dCBiZSAxLjAyNDN4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy13aXRoLWhv
aXN0ZWQtcmVnZXhwICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuOTQ4MCstMC4xNTkwICAgICA/ICAgICAxMC4zMjYzKy0wLjkyMTEgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzgweCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRp
bmcgICAgICAgICAgICAgICAgICAgICAgICAxNS44MDIzKy0wLjc4MTIgICAgID8gICAgIDE2LjE0
MjMrLTAuNzEzMSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTV4IHNsb3dlcgogICBzaW4tYm9vbGVh
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjM3ODcrLTAuMjgzOCAg
ICAgICAgICAgIDYuMzc4NSstMC4yNDc0ICAgICAgICAKICAgc2luZ2xldG9uLXNjb3BlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OS4wMTQ1Ky0wLjEzNzkgICAgID8gICAgIDYw
Ljc3NjYrLTQuNTEwNCAgICAgICAgPyBtaWdodCBiZSAxLjAyOTl4IHNsb3dlcgogICBzaW5rLWZ1
bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjMwNjgrLTAuNDAz
MCAgICAgICAgICAgIDUuMjY2NistMC4yMDg5ICAgICAgICAKICAgc2luay1odWdlLWFjdGl2YXRp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4zNzk5Ky0wLjMyNTAgICAgID8gICAg
IDEyLjg0MzcrLTEuMzYzNyAgICAgICAgPyBtaWdodCBiZSAxLjAzNzV4IHNsb3dlcgogICBzaW5r
YWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4Ljc2OTIrLTEu
ODI5NiAgICAgPyAgICAgMzkuMzE2OCstMS45OTg0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0MXgg
c2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QtdGFrZW4gICAgICAgICAgICAgICAgICAgICAg
ICAgMzMuMzYzNystMS41NzY1ICAgICAgICAgICAzMy4wNTUyKy0wLjU2MTcgICAgICAgIAogICBz
aW5rYWJsZS1uZXctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjY2MTcr
LTAuNTU2MSAgICAgPyAgICAgMTguMDU3MystMS42Nzk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIy
NHggc2xvd2VyCiAgIHNsb3ctYXJyYXktcHJvZmlsZS1jb252ZXJnZW5jZSAgICAgICAgICAgICAg
ICAgICAgIDIuNDQwMystMC4wODUxICAgICA/ICAgICAgMi41MTg2Ky0wLjIwMzUgICAgICAgID8g
bWlnaHQgYmUgMS4wMzIxeCBzbG93ZXIKICAgc2xvdy1jb252ZXJnZW5jZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4yNzkxKy0wLjAyNDIgICAgID8gICAgICAyLjI4ODQrLTAu
MDQyNCAgICAgICAgPwogICBzbG93LXRlcm5hcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEzLjEzMzArLTEuMDc2NSAgICAgICAgICAgMTIuOTk5OSstMS4zNDEzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEwMnggZmFzdGVyCiAgIHNvcnRpbmctYmVuY2htYXJrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTguMTk2OCstMC43MTkzICAgICA/ICAgICAxOC4zNjYz
Ky0yLjAwNjUgICAgICAgID8KICAgc3BhcnNlLWNvbmRpdGlvbmFsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS4xMTU0Ky0wLjA1NTkgICAgICAgICAgICAxLjEwNDIrLTAuMDE5MyAg
ICAgICAgICBtaWdodCBiZSAxLjAxMDF4IGZhc3RlcgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjI1OTgrLTEuMDkxMSAgICAgICAgICAgMTMu
MjQzMSstMS4xMDU0ICAgICAgICAKICAgc3RyY2F0LWNvbnN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNS4wODAxKy0wLjA2NTEgICAgICAgICAgICA1LjAzNjgrLTAuMDcx
NyAgICAgICAgCiAgIHN0cmNhdC1sZW5ndGgtY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUuMzQ2OCstMC4wNDcyICAgICAgICAgICAgNS4zNDI3Ky0wLjA0MjQgICAgICAgIAog
ICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjk0
NDkrLTEuNTAzOCAgICAgICAgICAgMTIuODMyOSstMC44OTMyICAgICAgICAKICAgc3RyaW5nLWNv
bmNhdC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44NDkyKy0wLjEwMDIg
ICAgID8gICAgICAxLjk0MDQrLTAuMTAwMyAgICAgICAgPyBtaWdodCBiZSAxLjA0OTN4IHNsb3dl
cgogICBzdHJpbmctY29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAx
LjkyMzcrLTAuMTU5NyAgICAgICAgICAgIDEuOTIzNystMC4wODQ2ICAgICAgICAKICAgc3RyaW5n
LWNvbmNhdC1wYWlyLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMi43MTY2Ky0wLjAz
MjMgICAgID8gICAgICAyLjc0MzQrLTAuMTA2OCAgICAgICAgPwogICBzdHJpbmctY29uY2F0LXNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU1NjcrLTAuNzA4NCAgICAgICAg
ICAgIDguNDE0NSstMC4xNTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVyCiAgIHN0
cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzA0NSst
MC43MjgwICAgICAgICAgICAgNi4wNzc2Ky0wLjMxNDEgICAgICAgICAgbWlnaHQgYmUgMS4wMzcz
eCBmYXN0ZXIKICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi4xMzMzKy0wLjE0MzQgICAgID8gICAgICA2LjE2NTErLTAuMjA5NCAgICAgICAgPwog
ICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjY2
NTkrLTEuNDk5MCAgICAgICAgICAgMTUuNjY1MystMS4wNTg0ICAgICAgICAKICAgc3RyaW5nLWZy
b20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS44MTU4Ky0wLjA0MzYg
ICAgID8gICAgICA1LjgxNjUrLTAuMDMwNyAgICAgICAgPwogICBzdHJpbmctZ2V0LWJ5LXZhbC1i
aWctY2hhciAgICAgICAgICAgICAgICAgICAgICAgICA0LjI3NzMrLTAuMDY5MCAgICAgICAgICAg
IDQuMjY2MystMC4wMzk4ICAgICAgICAKICAgc3RyaW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5k
cy1pbnNhbmUgICAgICAgICAgICAgMy40MzA1Ky0wLjA2NzMgICAgICAgICAgICAzLjQxMzIrLTAu
MDMyMyAgICAgICAgCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAg
ICAgICAgICAgIDQuMTcyMCstMC4wOTE1ICAgICA/ICAgICAgNC4zNDg5Ky0wLjc4NDIgICAgICAg
ID8gbWlnaHQgYmUgMS4wNDI0eCBzbG93ZXIKICAgc3RyaW5nLWdldC1ieS12YWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS44OTk5Ky0wLjA5MTIgICAgID8gICAgICAxLjk0NDAr
LTAuMTYyMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMzJ4IHNsb3dlcgogICBzdHJpbmctaGFzaCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjgzNjIrLTAuMDQxOCAgICAg
ICAgICAgIDEuODM1NSstMC4wNDEwICAgICAgICAKICAgc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxp
dHkgICAgICAgICAgICAgICAgICAgICAgICAxMi40MjA1Ky0wLjM4NjcgICAgID8gICAgIDEyLjg4
MjYrLTEuNDkwNSAgICAgICAgPyBtaWdodCBiZSAxLjAzNzJ4IHNsb3dlcgogICBzdHJpbmctb3V0
LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjQwNDcrLTAuNzk2MyAg
ICAgICAgICAgMTAuMDk0NCstMC40MDUyICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwN3ggZmFzdGVy
CiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODMw
MCstMC4wNDcxICAgICA/ICAgICAgMC44NzQ1Ky0wLjA4MTQgICAgICAgID8gbWlnaHQgYmUgMS4w
NTM2eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjkwNistMC4wMDI2ICAgICA/ICAgICAgMC4yOTU0Ky0wLjAxMTMgICAgICAgID8g
bWlnaHQgYmUgMS4wMTY1eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjkzMCstMC4wMDM1ICAgICA/ICAgICAgMC4zMTMyKy0wLjAz
ODcgICAgICAgID8gbWlnaHQgYmUgMS4wNjg3eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1z
ZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzI2NystMC4wNzEzICAgICAgICAgICAg
MC4zMDIwKy0wLjAyMTggICAgICAgICAgbWlnaHQgYmUgMS4wODE2eCBmYXN0ZXIKICAgc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjI3NDcrLTAuMDQwOSAg
ICAgPyAgICAgIDEuMjg0MystMC4wNDM5ICAgICAgICA/CiAgIHN0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA4MistMC4wMDcyICAgICA/ICAgICAgMC4z
NDQ2Ky0wLjA0MTEgICAgICAgID8gbWlnaHQgYmUgMS4xMTc5eCBzbG93ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzA1Ky0wLjAy
MTcgICAgICAgICAgICAwLjMxNzIrLTAuMDA4NiAgICAgICAgICBtaWdodCBiZSAxLjA0MjF4IGZh
c3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1n
bG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4zMTQwKy0wLjAwNTQgICAgID8gICAgICAwLjMyMDgrLTAuMDA0NSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMTh4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE3NystMC4wMDQyICAgICA/ICAgICAgMC4z
MjUzKy0wLjAxNjkgICAgICAgID8gbWlnaHQgYmUgMS4wMjM4eCBzbG93ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzU4MCst
MC4wNTg2ICAgICA/ICAgICAgMC4zNjg5Ky0wLjA5NTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzA1
eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMzI0NCstMC4wMjA5ICAgICA/ICAgICAgMC4zNDI5Ky0wLjA1NTEgICAgICAg
ID8gbWlnaHQgYmUgMS4wNTcxeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMxODUrLTAuMDA1MSAgICAgPyAgICAgIDAu
MzIwMSstMC4wMDM5ICAgICAgICA/CiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzE0OCstMC4wMDQ4ICAgICA/ICAgICAgMC4zMzA1Ky0wLjAzNjMg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDk5eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1hcml0aCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC42NTg1Ky0xLjc5MjIgICAgICAgICAgIDIw
LjYwNjArLTEuMzk0NiAgICAgICAgCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhl
ZCAgICAgICAgICAgICAgICAgIDIuNTY2OSstMC4xMjY4ICAgICAgICAgICAgMi40OTQ4Ky0wLjEx
NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjg5eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3Qt
cmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgMy41NTYyKy0wLjExMzYgICAgID8gICAg
ICAzLjcwNjArLTAuMjgyNSAgICAgICAgPyBtaWdodCBiZSAxLjA0MjF4IHNsb3dlcgogICBzdHJp
bmctcmVwZWF0LW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAzLjU0ODErLTAu
MTU3NCAgICAgICAgICAgIDMuNTAzNystMC4xNDUwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyN3gg
ZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkICAgICAgICAgICAgICAgICAg
ICAgMTguMTMyNistMC41NjI5ICAgICA/ICAgICAxOC4zMDU3Ky0wLjk4NDEgICAgICAgID8KICAg
c3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICAgICAyNS40MDUx
Ky0yLjY0NzAgICAgICAgICAgIDI0LjEzNjUrLTAuMzI5MyAgICAgICAgICBtaWdodCBiZSAxLjA1
MjZ4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI0LjUwNjIrLTAuMzk5OCAgICAgPyAgICAgMjQuNzQxMCstMS4zOTY3ICAgICAgICA/
CiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgIDYu
NjI5NistMC45MTIxICAgICA/ICAgICAgNy4zMTYyKy0wLjc4NDcgICAgICAgID8gbWlnaHQgYmUg
MS4xMDM2eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAgICAg
ICAgICAgICAgICAgNi44MjYwKy0wLjQyNjMgICAgID8gICAgICA3LjE3NDQrLTAuNzYxOSAgICAg
ICAgPyBtaWdodCBiZSAxLjA1MTB4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5vdC1y
ZXNvbHZpbmcgICAgICAgICAgICAgICAgICAyLjg0MTErLTAuMTY4NCAgICAgICAgICAgIDIuODIy
MistMC4xMjc2ICAgICAgICAKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAgICAg
ICAgICAgICAgICAgICAyNi4yMjAxKy0xLjQwMDAgICAgICAgICAgIDI1LjE5MDMrLTAuMjQ1OCAg
ICAgICAgICBtaWdodCBiZSAxLjA0MDl4IGZhc3RlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjAxMDErLTEuODM4NSAgICAgICAgICAgIDgu
OTk0NistMC43NDY1ICAgICAgICAKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MS45NzE0Ky0xLjk3MTYgICAgID8gICAgIDUyLjIxNTgrLTAuODAw
OCAgICAgICAgPwogICBzdHJpbmctcmVwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjI4MjErLTAuMzExOSAgICAgPyAgICAgIDguOTA1OSstMS4wMjUzICAgICAgICA/
IG1pZ2h0IGJlIDEuMDc1M3ggc2xvd2VyCiAgIHN0cmluZy1yb3BlLXdpdGgtb2JqZWN0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTYuNTMwMistMC45MDc1ICAgICA/ICAgICAxNy42OTAyKy0x
LjgyNjkgICAgICAgID8gbWlnaHQgYmUgMS4wNzAyeCBzbG93ZXIKICAgc3RyaW5nLXN1YiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMy4zMTg4Ky00LjExMzYgICAgID8g
ICAgIDMzLjQyODcrLTAuMzc4NCAgICAgICAgPwogICBzdHJpbmctdGVzdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU5OTQrLTAuMDUzNSAgICAgICAgICAgIDIuNTMy
OCstMC4wNTEwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2M3ggZmFzdGVyCiAgIHN0cmluZy10cmFu
c2NvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTI4NCstMC44NzcyICAg
ICA/ICAgICAxNC4yMDAyKy0xLjAyMTEgICAgICAgID8KICAgc3RyaW5nLXZhci1lcXVhbGl0eSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS4zMTg0Ky0xLjE2OTMgICAgICAgICAgIDI0
LjQxODcrLTAuMjQxNyAgICAgICAgICBtaWdodCBiZSAxLjAzNjh4IGZhc3RlcgogICBzdHJ1Y3R1
cmUtaG9pc3Qtb3Zlci10cmFuc2l0aW9ucyAgICAgICAgICAgICAgICAgICAyLjEyNTIrLTAuMDg0
MyAgICAgPyAgICAgIDIuMTk3MistMC4wNjQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMzOXggc2xv
d2VyCiAgIHN1YnN0cmluZy1jb25jYXQtd2VpcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzQuOTUxMistMS41ODEzICAgICAgICAgICAzNC41Njk3Ky0wLjg4MjggICAgICAgICAgbWlnaHQg
YmUgMS4wMTEweCBmYXN0ZXIKICAgc3Vic3RyaW5nLWNvbmNhdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzOS4yNjU3Ky0yLjE2ODggICAgID8gICAgIDM5LjQ1NzcrLTMuOTY0MSAg
ICAgICAgPwogICBzdWJzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQ0LjkwNzIrLTIuNzc0OCAgICAgICAgICAgNDMuNzExMCstMC40Nzk5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI3NHggZmFzdGVyCiAgIHN3aXRjaC1jaGFyLWNvbnN0YW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuOTQ1MSstMC4wNjkxICAgICA/ICAgICAgMS45Nzk1Ky0wLjA5
ODEgICAgICAgID8gbWlnaHQgYmUgMS4wMTc3eCBzbG93ZXIKICAgc3dpdGNoLWNoYXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41NTI2Ky0wLjEzNTQgICAgICAgICAg
ICA0LjQ1ODUrLTAuMDYxMyAgICAgICAgICBtaWdodCBiZSAxLjAyMTF4IGZhc3RlcgogICBzd2l0
Y2gtY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM3OTgrLTAu
MTc1MSAgICAgICAgICAgIDMuMzAwNSstMC4wNjA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0MHgg
ZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAgICAg
ICAgMTMuNjU1NystMC41MTYyICAgICA/ICAgICAxMy43Mjg0Ky0wLjQ0MTAgICAgICAgID8KICAg
c3dpdGNoLXN0cmluZy1iYXNpYy1iaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4yMTY2
Ky0wLjY5ODIgICAgICAgICAgIDEyLjg5OTUrLTAuNDU5MSAgICAgICAgICBtaWdodCBiZSAxLjAy
NDZ4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLXZhciAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEzLjI2ODYrLTAuMzI2MCAgICAgPyAgICAgMTQuNTQ2NystMS41Njg1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDk2M3ggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTIuNDAxOSstMS40MTg0ICAgICAgICAgICAxMi4zMjY2Ky0w
LjYwODQgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAg
ICAgICAgICAgIDE5LjY4NzgrLTAuODgzOSAgICAgICAgICAgMTguODg5MCstMC43MzA1ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDQyM3ggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2Vy
LXZhciAgICAgICAgICAgICAgICAgICAgMTQuNDc0NCstMC44OTIyICAgICAgICAgICAxMy44NzQx
Ky0wLjI1ODYgICAgICAgICAgbWlnaHQgYmUgMS4wNDMzeCBmYXN0ZXIKICAgc3dpdGNoLXN0cmlu
Zy1sZW5ndGgtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAxMi4xNTQxKy0xLjA1NjYgICAg
ICAgICAgIDExLjUwMjQrLTAuMjM2OCAgICAgICAgICBtaWdodCBiZSAxLjA1Njd4IGZhc3Rlcgog
ICBzd2l0Y2gtc3RyaW5nLXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjI1
NTIrLTAuMzMxOSAgICAgPyAgICAgMTEuNzc5MSstMS4wMDc1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDQ2NXggc2xvd2VyCiAgIHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuMzI3OCstMC4yNDI2ICAgICA/ICAgICAgNi45NDA2Ky0xLjI5NTUgICAgICAg
ID8gbWlnaHQgYmUgMS4wOTY4eCBzbG93ZXIKICAgc3ltYm9sLXRvc3RyaW5ndGFnICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi44OTI1Ky0wLjAzMjIgICAgID8gICAgICAyLjkxODYr
LTAuMDUxNCAgICAgICAgPwogICB0ZWFyLW9mZi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjY5NDIrLTAuMTYzNCAgICAgICAgICAgIDIuNDcwMystMC4yOTMxICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDkwNnggZmFzdGVyCiAgIHRlYXItb2ZmLWFyZ3VtZW50cyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTc2MCstMC4yMzgxICAgICA/ICAgICAgMy4y
NjY2Ky0wLjA4MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjg1eCBzbG93ZXIKICAgdGVtcG9yYWwt
c3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zOTYzKy0wLjEzODYg
ICAgID8gICAgIDExLjg4MjErLTAuOTI0MCAgICAgICAgPyBtaWdodCBiZSAxLjA0MjZ4IHNsb3dl
cgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy
LjE5MTErLTAuMzAzMSAgICAgPyAgICAgMTIuMzI1MistMC4zMzA1ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDExMHggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1udW1iZXItc3RyaW5nLW51
bWJlci1zdHJpbmcgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy40MzMyKy0wLjA5MjkgICAgICAgICAgICAzLjM4NTIrLTAuMDUzMSAgICAg
ICAgICBtaWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICB0by1udW1iZXItY29uc3RydWN0b3Itb25s
eS1udW1iZXIgICAgICAgICAgICAgICAgICAwLjY0MTcrLTAuMDUwOSAgICAgPyAgICAgIDAuNjg1
MystMC4wODQzICAgICAgICA/IG1pZ2h0IGJlIDEuMDY4MHggc2xvd2VyCiAgIHRvLW51bWJlci1j
b25zdHJ1Y3Rvci1vbmx5LXN0cmluZyAgICAgICAgICAgICAgICAgIDEuNTQ1MystMC4wNDU5ICAg
ICA/ICAgICAgMS41OTgzKy0wLjA5MzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzQzeCBzbG93ZXIK
ICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLXN0cmluZy1udW1iZXItc3RyaW5nLW51bWJlciAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4
MjArLTAuMTMxOCAgICAgICAgICAgIDIuODU0MystMC4wMTY2ICAgICAgICAKICAgdG8tbnVtYmVy
LW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgMy4wMzY1Ky0wLjE3OTEg
ICAgICAgICAgICAzLjAxNDkrLTAuMDc2MiAgICAgICAgCiAgIHRvLW51bWJlci1vbmx5LW51bWJl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjQ0NSstMC4wNTc3ICAgICAgICAgICAg
MC42MDY4Ky0wLjAxOTMgICAgICAgICAgbWlnaHQgYmUgMS4wNjIyeCBmYXN0ZXIKICAgdG8tbnVt
YmVyLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS41MDkzKy0wLjA0
ODcgICAgID8gICAgICAxLjUyMjcrLTAuMDMzNSAgICAgICAgPwogICB0by1udW1iZXItc3RyaW5n
LW51bWJlci1zdHJpbmctbnVtYmVyICAgICAgICAgICAgICAyLjg0MDYrLTAuMDY5MyAgICAgPyAg
ICAgIDIuODU0OCstMC4wNDMwICAgICAgICA/CiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWNsb25l
ZC1hcmd1bWVudHMgICAgICAgICAgICAgIDMuMjY1MSstMC4xMjY0ICAgICAgICAgICAgMy4xNzAw
Ky0wLjEyMzEgICAgICAgICAgbWlnaHQgYmUgMS4wMzAweCBmYXN0ZXIKICAgdHJ5LWNhdGNoLWdl
dC1ieS12YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMi4wMjU1Ky0wLjA2MzUgICAg
ID8gICAgICAyLjAyOTMrLTAuMTcyNSAgICAgICAgPwogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1z
Y29wZWQtYXJndW1lbnRzICAgICAgICAgICAgICA0LjA4NzkrLTAuMTQ3OSAgICAgPyAgICAgIDQu
MTAxMystMC40NTc0ICAgICAgICA/CiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2Zp
bGluZyAgICAgICAgICAgICAgMjAuMTI4OSstMC4yNTk1ICAgICBeICAgICAxOS42MDA4Ky0wLjE2
MTkgICAgICAgIF4gZGVmaW5pdGVseSAxLjAyNjl4IGZhc3RlcgogICB1bmRlZmluZWQtcHJvcGVy
dHktYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgMjE2LjgzMTkrLTIuMDIzOCAgICAgPyAg
ICAyMTguOTIzOCstNS4xNTI4ICAgICAgICA/CiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzMzMSstMC4wNzA2ICAgICAgICAgICAgMi42Nzgz
Ky0wLjA1NTYgICAgICAgICAgbWlnaHQgYmUgMS4wMjA1eCBmYXN0ZXIKICAgdW5wcm9maWxlZC1s
aWNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45OTYzKy0wLjEzNzkgICAg
IF4gICAgICA1Ljc2NDMrLTAuMDg5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDQwMnggZmFzdGVy
CiAgIHVudHlwZWQtc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgIDku
MTk2NystMC4xMjQ4ICAgICAhICAgICAgOS44Njc4Ky0wLjQ4MjggICAgICAgICEgZGVmaW5pdGVs
eSAxLjA3MzB4IHNsb3dlcgogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgIDI3LjUzNzIrLTAuOTA2NCAgICAgICAgICAgMjcuMjA5OCstMC40OTc1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyMHggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNh
dGNoLWhpZ2gtZnJlcXVlbmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjkzLjc2MTQrLTEuNTM2OCAgICAgICAgICAyOTMuNDAz
NCstMy43NTgzICAgICAgICAKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICA1NC43NjYwKy0wLjY2MTIgICAgID8gICAgIDU0Ljk3MjMrLTEuMDE5MSAg
ICAgICAgPwogICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQ4LjMxOTQrLTAuNTE1MCAgICAgPyAgICAgNDguNzE2NSstMS41NTA1ICAgICAgICA/CiAg
IHZhcmFyZ3MtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTM0
MSstMS4xMDY0ICAgICA/ICAgICAxNC4xOTM4Ky0xLjY5NzUgICAgICAgID8KICAgdmFyYXJncy1j
b25zdHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAxOC41MjYxKy0wLjM3ODMg
ICAgICAgICAgIDE4LjQxNTkrLTAuMTQ1NSAgICAgICAgCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMTQ4MistMS4yMzU5ICAgICA/ICAgICAx
NC42NjQ0Ky0yLjc4MzggICAgICAgID8gbWlnaHQgYmUgMS4wMzY1eCBzbG93ZXIKICAgdmFyYXJn
cy1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4zNjI3Ky0wLjUw
MTEgICAgID8gICAgICA5LjA4NzMrLTAuNTQ1NyAgICAgICAgPyBtaWdodCBiZSAxLjA4Njd4IHNs
b3dlcgogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwLjE2MzQrLTAuODA0NiAgICAgPyAgICAgMTAuNDk2NystMS4wMTY0ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMyOHggc2xvd2VyCiAgIHZhcmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTAuMTQxOSstMS4xNDY3ICAgICAgICAgICAgOS43OTA5Ky0wLjg1MDgg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzU5eCBmYXN0ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3Qt
cHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wMzU0Ky0wLjEwOTggICAgID8gICAgICAy
LjA4ODErLTAuMTUyNyAgICAgICAgPyBtaWdodCBiZSAxLjAyNTh4IHNsb3dlcgoKICAgPGdlb21l
dHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NTY5Ky0wLjAy
MTYgICAgID8gICAgICA2LjQ2MjQrLTAuMDE1MyAgICAgICAgPyBtaWdodCBiZSAxLjAwMDh4IHNs
b3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUaXBPZlRyZWUgICAgICAgICAgICAgICAgICAgVGhpbmdzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0MjkuNzY3MCstNy41NzIxICAgICAgICAgIDQxOC41
OTkwKy03LjIzNjQgICAgICAgICAgbWlnaHQgYmUgMS4wMjY3eCBmYXN0ZXIKICAgY3JheS5jICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4MC45NTEzKy04LjE2NDUg
ICAgICAgICAgMzc4LjU1ODUrLTMuMzkwNSAgICAgICAgCiAgIGRyeS5jICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTcuMTgwOSstNi4zODkzICAgICAgICAgIDQx
NC4xNzEwKy0xMS44NzI0ICAgICAgIAogICBGbG9hdE1NLmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjk3LjcxMDYrLTQuNjc2MyAgICAgPyAgICA3MDcuOTgzNCstMjAu
MzQwMiAgICAgICA/IG1pZ2h0IGJlIDEuMDE0N3ggc2xvd2VyCiAgIGdjYy1sb29wcy5jcHAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2NzMuMDA2OCstMjM2LjA0NDggICA/ICAg
MzcxMS4yNjg4Ky0xNzQuNDM2MyAgICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgbi1i
b2R5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4MC4yNzkyKy0z
Ljc0NDYgICAgID8gICAgNzk0LjEyMDErLTI3LjA2MTcgICAgICAgPyBtaWdodCBiZSAxLjAxNzd4
IHNsb3dlcgogICBRdWlja3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzg3LjA5NzgrLTQuMjg1NCAgICAgPyAgICAzOTEuNjMzMystNC44NTQ0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDExN3ggc2xvd2VyCiAgIHN0ZXBhbm92X2NvbnRhaW5lci5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMzMzEuNDU5NCstMzE5Ljg0MDcgICAgICAgMzMyMi4zMjU2Ky0yNjUu
MTUxNCAgICAgIAogICBUb3dlcnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjYzLjE5NTQrLTguODcwNyAgICAgPyAgICAyNjUuMTQwMSstMTIuNjYwNiAgICAgICA/
CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzEw
LjQ4NTIrLTEwLjAxNDggICAgPyAgICA3MTEuOTg5NSstNi45NTEzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDAyMXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRpcE9mVHJlZSAgICAgICAgICAgICAgICAgICBUaGluZ3MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApDb21wcmVzc2lvbkJlbmNoOgogICBodWZm
bWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjQyOTIrLTEu
MzA0NiAgICAgICAgICAgMzMuMTAwOSstMS4wNzE2ICAgICAgICAKICAgYXJpdGhtZXRpYy1zaW1w
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1Ni40MzEyKy04LjQxMjkgICAgICAg
ICAgMjU1LjY3MzkrLTUuNzQ3OCAgICAgICAgCiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMzguOTA2MCstMC42MTkxICAgICA/ICAgIDI0Ny4wNDA5
Ky0xMS40MDY5ICAgICAgID8gbWlnaHQgYmUgMS4wMzQxeCBzbG93ZXIKICAgYXJpdGhtZXRpYy1j
b21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDIzOC41NTQwKy0yLjc4MDMgICAg
ICAgICAgMjM2LjUzMjgrLTEuODcxNyAgICAgICAgCiAgIGFyaXRobWV0aWMtcHJlY2lzZS1vcmRl
ci0wICAgICAgICAgICAgICAgICAgICAgICAyNTguMjI4NystMS4zMjk2ICAgICA/ICAgIDI2Mi40
MjMzKy05Ljc5NTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTYyeCBzbG93ZXIKICAgYXJpdGhtZXRp
Yy1wcmVjaXNlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgIDI5MS44MTkwKy0zLjU5OTAg
ICAgID8gICAgMzAzLjA5NjgrLTE2LjE5MzggICAgICAgPyBtaWdodCBiZSAxLjAzODZ4IHNsb3dl
cgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgMzMy
LjA2ODMrLTExLjAxMzcgICAgICAgICAzMjcuNTYyOCstNy45MDk0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEzOHggZmFzdGVyCiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAg
ICAgICAgICAgICAzMDYuNjE2NSstNi4yMjYxICAgICAgICAgIDMwNC4xMjM0Ky00LjU2ODEgICAg
ICAgIAogICBhcml0aG1ldGljLXNpbXBsZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAg
MzU0LjU0OTgrLTYuODM2MyAgICAgPyAgICAzNjMuOTA4MSstMjAuNDc1MCAgICAgICA/IG1pZ2h0
IGJlIDEuMDI2NHggc2xvd2VyCiAgIGx6LXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyNzQuNTI0MistNS40MDA4ICAgICA/ICAgIDI4NS43NTk2Ky04LjcwNjEg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDA5eCBzbG93ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjcuMDU3MSstMS42Mzg4ICAgICA/ICAgIDIy
OS41MjU1Ky0yLjkyODAgICAgICAgID8gbWlnaHQgYmUgMS4wMTA5eCBzbG93ZXIKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwT2ZUcmVl
ICAgICAgICAgICAgICAgICAgIFRoaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjI4ODMrLTAuMTcwMyAgICAgPyAgICAg
NDQuMzY3NCstMC4wNjY1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAxOHggc2xvd2VyCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283442</attachid>
            <date>2016-07-12 12:55:18 -0700</date>
            <delta_ts>2016-07-18 13:01:54 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>64622</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzMTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxNi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrcyBzaG91bGQga25vdyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIG1vcmUg
dGhhbiBKU0NlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTk2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgdGVhY2hlcyB0aGUgSGVhcCB0aGF0IGEgTWFya2VkQmxvY2sgbWF5
IGhvbGQgZWl0aGVyIEpTQ2VsbHMsIG9yIFN0b3JhZ2UsIHdoaWNoIGlzIG5vdAorICAgICAgICBh
IEpTQ2VsbC4gSXQgdGVhY2hlcyB0aGUgaGVhcCBhbmQgYWxsIG9mIHRoZSB0aGluZ3MgdGhhdCB3
YWxrIHRoZSBoZWFwIHRvIGlnbm9yZQorICAgICAgICBub24tSlNDZWxscyB3aGVuZXZlciB0aGV5
IGFyZSBsb29raW5nIGZvciBnbG9iYWwgb2JqZWN0cywgSlNPYmplY3RzLCBhbmQgdGhpbmdzIHRv
IHRyYWNlCisgICAgICAgIGZvciBkZWJ1Z2dpbmcgb3IgcHJvZmlsaW5nLiBUaGUgaWRlYSBpcyB0
aGF0IHdlIHdpbGwgYmUgYWJsZSB0byBhbGxvY2F0ZSBidXR0ZXJmbGllcyBhbmQKKyAgICAgICAg
dHlwZWQgYXJyYXkgYmFja2luZyBzdG9yZXMgYXMgU3RvcmFnZSBpbiBNYXJrZWRTcGFjZSByYXRo
ZXIgdGhhbiBhbGxvY2F0aW5nIHRob3NlIHRoaW5ncworICAgICAgICBpbiBDb3BpZWRTcGFjZS4g
VGhhdCdzIHdoYXQgYnVnIDE1OTY1OCBpcyBhbGwgYWJvdXQuCisgICAgICAgIAorICAgICAgICBU
aGlzIGdpdmVzIHVzIGEgbmV3IHR5cGUsIGNhbGxlZCBIZWFwQ2VsbCwgd2hpY2ggaXMganVzdCBt
ZWFudCB0byBiZSBhIGNsYXNzIGRpc3RpbmN0IGZyb20KKyAgICAgICAgSlNDZWxsIG9yIGFueSB0
eXBlIHdlIHdvdWxkIHVzZSBmb3IgU3RvcmFnZS4gRm9yIGNvbnZlbmllbmNlLCBKU0NlbGwgaXMg
YSBzdWJjbGFzcyBvZgorICAgICAgICBIZWFwQ2VsbC4gSGVhcENlbGwgaGFzIGFuIGVudW0gY2Fs
bGVkIEhlYXBDZWxsOjpLaW5kLCB3aGljaCBpcyBlaXRoZXIgSGVhcENlbGw6OkpTQ2VsbCBvcgor
ICAgICAgICBIZWFwQ2VsbDo6U3RvcmFnZS4gTWFya2VkU3BhY2Ugbm8gbG9uZ2VyIHNwZWFrcyBv
ZiBKU0NlbGxzIGRpcmVjdGx5IGV4Y2VwdCB3aGVuIGRlYWxpbmcKKyAgICAgICAgd2l0aCBkZXN0
cnVjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcXVpcmVkIGRvaW5nIGEg
bG90IG9mIHN0dWZmIHRvIGFsbCBvZiB0aG9zZSBmdW5jdG9yIGNhbGxiYWNrcywgc2luY2UgdGhl
eQorICAgICAgICBub3cgdGFrZSBIZWFwQ2VsbCogaW5zdGVhZCBvZiBKU0NlbGwqIGFuZCB0aGV5
IHRha2UgYW4gZXh0cmEgSGVhcENlbGw6OktpbmQgYXJndW1lbnQgdG8KKyAgICAgICAgdGVsbCB0
aGVtIGlmIHRoZXkgYXJlIGRlYWxpbmcgd2l0aCBKU0NlbGxzIG9yIFN0b3JhZ2UuIEkgZmlndXJl
ZCB0aGF0IHRoaXMgd291bGQgYmUgYXMKKyAgICAgICAgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGNv
bnZlcnQgdGhvc2UgZnVuY3RvcnMgdG8gYmVpbmcgbGFtYmRhLWNvbXBhdGlibGUuIFRoaXMgbWVh
bnMgdGhhdAorICAgICAgICBvcGVyYXRvcigpIG11c3QgYmUgY29uc3QuIEluIHNvbWUgY2FzZXMs
IGNvbnZlcnRpbmcgdGhlIG9wZXJhdG9yKCkgdG8gYmUgY29uc3Qgd291bGQgaGF2ZQorICAgICAg
ICB0YWtlbiBtb3JlIHdvcmsgdGhhbiBqdXN0IHR1cm5pbmcgdGhlIHdob2xlIHRoaW5nIGludG8g
YSBsYW1iZGEuIFdoZW5ldmVyIHRoaXMgd2FzIHRoZQorICAgICAgICBjYXNlLCBJIGNvbnZlcnRl
ZCB0aGUgY29kZSB0byB1c2UgbGFtYmRhcy4gSSBsZWZ0IGEgbG90IG9mIGZ1bmN0b3JzIGFsb25l
LiBJbiBjYXNlcyB3aGVyZQorICAgICAgICB0aGUgZnVuY3RvciB3b3VsZCBiZW5lZml0IGZyb20g
YmVpbmcgYSBsYW1iZGEsIGZvciBleGFtcGxlIGJlY2F1c2UgaXQgd291bGQgZ2V0IHJpZCBvZgor
ICAgICAgICBjb25zdF9jYXN0cyBvciBtdXRhYmxlcywgSSBwdXQgaW4gYSBGSVhNRSByZWZlcmVu
Y2luZyBidWcgMTU5NjQ0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlci5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpTZXRTdGVwcGluZ01v
ZGVGdW5jdG9yOjpTZXRTdGVwcGluZ01vZGVGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXI6OlNldFN0ZXBwaW5nTW9kZUZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6VG9nZ2xlQnJlYWtwb2ludEZ1bmN0b3I6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9y
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3I6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Q2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckRlYnVnZ2Vy
UmVxdWVzdHNGdW5jdG9yOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yKToKKyAgICAgICAg
KEpTQzo6RGVidWdnZXI6OkNsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGhlYXAvQ29kZUJsb2NrU2V0Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
a1NldDo6aXRlcmF0ZSk6CisgICAgICAgICogaGVhcC9IYW5kbGVTZXQuaDoKKyAgICAgICAgKEpT
Qzo6SGFuZGxlTm9kZTo6bmV4dCk6CisgICAgICAgIChKU0M6OkhhbmRsZVNldDo6Zm9yRWFjaFN0
cm9uZ0hhbmRsZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6R2F0
aGVySGVhcFNuYXBzaG90RGF0YTo6R2F0aGVySGVhcFNuYXBzaG90RGF0YSk6CisgICAgICAgIChK
U0M6OkdhdGhlckhlYXBTbmFwc2hvdERhdGE6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpS
ZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXM6OlJlbW92ZURlYWRIZWFwU25hcHNob3ROb2Rlcyk6
CisgICAgICAgIChKU0M6OlJlbW92ZURlYWRIZWFwU25hcHNob3ROb2Rlczo6b3BlcmF0b3IoKSk6
CisgICAgICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpw
cm90ZWN0ZWRPYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OkhlYXA6OnByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlQWxsQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU25hcHNob3RGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKEpTQzo6Wm9tYmlmeTo6dmlzaXQpOgorICAgICAgICAoSlNDOjpab21iaWZ5OjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6SGVhcDo6em9tYmlmeURlYWRPYmplY3RzKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpoYW5kbGVTZXQpOgorICAgICAgICAoSlNDOjpI
ZWFwOjpoYW5kbGVTdGFjayk6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBoZWFwL0hlYXBDZWxsLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpIZWFwQ2VsbDo6SGVhcENlbGwpOgorICAgICAgICAoSlND
OjpIZWFwQ2VsbDo6emFwKToKKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OmlzWmFwcGVkKToKKyAg
ICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmRlcHJlY2F0
ZWRSZXBvcnRFeHRyYU1lbW9yeSk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCk6CisgICAgICAg
IChKU0M6OkhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3IpOgorICAgICAgICAqIGhlYXAvSGVh
cFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoSlNDOjpTdG9yYWdlU3RhdGlzdGljczo6dmlzaXQp
OgorICAgICAgICAoSlNDOjpTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKSk6CisgICAgICAg
ICogaGVhcC9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpHYXRoZXJMaXZlT2JqRnVu
Y3Rvcjo6dmlzaXQpOgorICAgICAgICAoSlNDOjpHYXRoZXJMaXZlT2JqRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpNYXJrZWRBbGxvY2F0b3I6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRB
bGxvY2F0b3I6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZXNl
dCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpMYXN0Q2hhbmNlVG9GaW5hbGl6ZTo6b3BlcmF0b3IoKSk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFy
a2VkQWxsb2NhdG9yOjp0YWtlTGFzdEFjdGl2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QWxsb2NhdG9yOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2Nh
dG9yOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmRlc3Ryb3kpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6TWFya2VkQmxvY2spOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2FsbERlc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6CisgICAgICAgIChKU0M6OlNldE5ld2x5
QWxsb2NhdGVkRnVuY3Rvcjo6U2V0TmV3bHlBbGxvY2F0ZWRGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6U2V0TmV3bHlBbGxvY2F0ZWRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmRpZFJldGlyZUJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OkNvdW50RnVuY3Rvcik6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OmNvdW50KToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkNvdW50RnVuY3Rvcjo6cmV0dXJuVmFsdWUpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6bmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpjZWxsS2luZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzaXplKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxs
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmZvckVhY2hMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpmb3JFYWNoRGVhZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Omxh
c3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN3ZWVwKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnpvbWJpZnlTd2VlcCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1Nl
dHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OmlzUGFnZWRPdXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c2hyaW5rKToKKyAgICAg
ICAgKEpTQzo6Y2xlYXJOZXdseUFsbG9jYXRlZEluQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
OjpjbGVhck1hcmtzKToKKyAgICAgICAgKEpTQzo6RnJlZTo6RnJlZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZyZWU6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGcmVl
T3JTaHJpbms6OkZyZWVPclNocmluayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZyZWVPclNo
cmluazo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZpc2l0V2Vha1NldDo6
VmlzaXRXZWFrU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VmlzaXRXZWFrU2V0OjpvcGVy
YXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVhcFdlYWtTZXQ6Om9wZXJhdG9yKCkp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMYXN0Q2hhbmNlVG9GaW5hbGl6ZTo6b3BlcmF0b3Io
KSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0b3BBbGxvY2F0aW5nRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlc3VtZUFsbG9jYXRpbmdGdW5jdG9yOjpv
cGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q2xlYXJOZXdseUFsbG9jYXRlZDo6
b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZlcmlmeU5ld2x5QWxsb2NhdGVk
OjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmFsbG9jYXRvckZvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZVdp
dGhEZXN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayk6
CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpz
aXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNhcGFjaXR5KToKKyAgICAgICAgKEpT
Qzo6Q2xlYXJNYXJrczo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN3ZWVw
OjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Wm9tYmlmeVN3ZWVwOjpvcGVy
YXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya0NvdW50OjpvcGVyYXRvcigpKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2l6ZTo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp6YXApOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzWmFwcGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6YWxsb2NhdGVDZWxsKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OmlzWmFwcGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKiB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Q2VsbEFk
ZHJlc3NDaGVja0Z1bmN0b3I6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yKToKKyAgICAgICAgKEpT
Qzo6Q2VsbEFkZHJlc3NDaGVja0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorCiAyMDE2LTA3LTEyICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
RU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLIGZsYWcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAgICAgaGVhcC9I
YW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCisgICAgaGVhcC9IZWFwQ2VsbC5jcHAK
ICAgICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAog
ICAgIGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYg
KzE5OTIsOCBAQAogCQlEQzE3RTgxQTFDOUM5MUU5MDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMTdFODE2
MUM5QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovOyB9OwogCQlEQzIxNDMwNzFD
QTMyRTU1MDAwQTg4NjkgLyogSUNTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAq
LzsgfTsKIAkJREMyMTQzMDgxQ0EzMkU1ODAwMEE4ODY5IC8qIElDU3RhdHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMyMTQzMDUxQ0EzMkU1MjAw
MEE4ODY5IC8qIElDU3RhdHMuY3BwICovOyB9OworCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMg
LyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURDM0QyQjBDMUQzNDM3NzAwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovOyB9
OwogCQlEQzQ1NEI4QzFEMDBFODIyMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLzsgfTsKIAkJREM0NTRCOEQxRDAwRTgyNDAwNEMx
OEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLzsg
fTsKIAkJREM2MDVCNUQxQ0UyNkVBMDAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5
ODAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovOyB9OwpAQCAtNDIyNCw2ICs0MjI2LDgg
QEAKIAkJREMxN0U4MTYxQzlDODAyQjAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQ2FsbEhlbHBlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNTFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8q
IElDU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyog
SGVhcENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8q
IEhlYXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBD
ZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM0NTRCOEExRDAwRTgxRjAw
NEMxOEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBB
aXJEdW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNK
Uy5oOyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MTkxLDYgKzUxOTUsOCBAQAogCQkJCTE0NkZBNUE4MTM3OEY2QjAwMDM2MjdBMyAvKiBI
YW5kbGVUeXBlcy5oICovLAogCQkJCTE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNw
cCAqLywKIAkJCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oICovLAorCQkJCURD
M0QyQjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8sCisJCQkJREMzRDJCMDkx
RDM0MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8sCiAJCQkJMEYzMkJEMEUxQkIzNEYxOTAw
OTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCAqLywKIAkJCQkwRjMyQkQwRjFCQjM0RjE5MDA5
M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCAqLywKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZD
QjYgLyogSGVhcElubGluZXMuaCAqLywKQEAgLTcyNzAsNiArNzI3Niw3IEBACiAJCQkJMEZGQjky
MUExNkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJCRDk2MUM1RkYzRjUwMDIzRUYyMyAvKiBCM1NwYXJz
ZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4
QyAvKiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFD
NzJBIC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEw
MDA2QUM3MkEgLyogREZHQmxvY2tNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMz
Q0NGRTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLApAQCAt
OTQxMiw2ICs5NDE5LDcgQEAKIAkJCQlEQzYwNUI1RjFDRTI2RUE1MDA1OTM3MTggLyogUHJvZmls
ZXJVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQ0E2MDcxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTMxODE0NTU5
MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEQzNE
MkIwQzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZBMkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNT
dGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICoKQEAgLTQwLDE0ICs0MCwyMSBAQCBu
YW1lc3BhY2UgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RydWN0IEdhdGhlclNvdXJjZVBy
b3ZpZGVycyA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEhhc2hTZXQ8
U291cmNlUHJvdmlkZXIqPiBzb3VyY2VQcm92aWRlcnM7CisgICAgLy8gRklYTUU6IFRoaXMgaXMg
YSBtdXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgbXV0YWJs
ZSBIYXNoU2V0PFNvdXJjZVByb3ZpZGVyKj4gc291cmNlUHJvdmlkZXJzOwogICAgIEpTR2xvYmFs
T2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKIAogICAgIEdhdGhlclNvdXJjZVByb3ZpZGVycyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCkgeyB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNl
bGwpCisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGhlYXBDZWxsLCBI
ZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gSGVh
cENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRp
bnVlOworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxs
Kj4oaGVhcENlbGwpOworICAgICAgICAKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikK
ICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpAQCAtMTkxLDcg
KzE5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENv
ZGVCbG9jayogY29kZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVC
bG9jaykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2RlYnVnZ2VyID09IGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
U3RlcHBpbmdNb2RlRW5hYmxlZCkKQEAgLTI5OCw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBi
b29sIG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigp
KQogICAgICAgICAgICAgbV9kZWJ1Z2dlci0+dG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssIG1f
YnJlYWtwb2ludCwgbV9lbmFibGVkT3JOb3QpOwpAQCAtNDc0LDcgKzQ4MSw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2Nr
KQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAmJiBtX2RlYnVn
Z2VyID09IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCiAgICAgICAgICAg
ICBjb2RlQmxvY2stPmNsZWFyRGVidWdnZXJSZXF1ZXN0cygpOwpAQCAtNTA0LDcgKzUxMSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayog
Y29kZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29u
c3QKICAgICB7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAm
JiBtX2dsb2JhbE9iamVjdCA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAg
ICAgY29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDMxMjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gVmlzaXRzIGVhY2ggQ29kZUJsb2NrIGluIHRo
ZSBoZWFwIHVudGlsIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZQogICAgIC8vIHRv
IGluZGljYXRlIHRoYXQgaXQgaXMgZG9uZSBpdGVyYXRpbmcsIG9yIHVudGlsIGV2ZXJ5IENvZGVC
bG9jayBoYXMgYmVlbgogICAgIC8vIHZpc2l0ZWQuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdm9pZCBpdGVyYXRlKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewog
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGNv
ZGVCbG9jayA6IG1fb2xkQ29kZUJsb2NrcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGFuZGxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU2V0LmgJKHJldmlzaW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJIYW5kbGUuaCIKICNpbmNsdWRlICJIYW5kbGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBD
ZWxsLmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBA
IC03OSw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHByb3RlY3RlZEdsb2JhbE9i
amVjdENvdW50KCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVh
Y2hTdHJvbmdIYW5kbGUoRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBz
a2lwU2V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdHJv
bmdIYW5kbGUoY29uc3QgRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBz
a2lwU2V0KTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhbmRsZU5vZGUgTm9kZTsKQEAgLTE4
MCw3ICsxODEsNyBAQCBpbmxpbmUgSGFuZGxlTm9kZSogSGFuZGxlTm9kZTo6bmV4dCgpCiAgICAg
cmV0dXJuIG1fbmV4dDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5k
bGVTZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFzaENv
dW50ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIEhhbmRsZVNldDo6Zm9yRWFjaFN0cm9uZ0hhbmRsZShjb25zdCBGdW5jdG9yJiBmdW5jdG9y
LCBjb25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCkKIHsKICAgICBIYW5kbGVT
ZXQ6Ok5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKICAgICBmb3IgKEhhbmRsZVNldDo6
Tm9kZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5v
ZGUtPm5leHQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTIsNjEgKzI1MiwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxp
ZFRocmVhZFN0YXRlKFZNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0cnVjdCBDb3VudCA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoSlND
ZWxsKikgeyBjb3VudCgxKTsgfQotfTsKLQotc3RydWN0IENvdW50SWZHbG9iYWxPYmplY3QgOiBN
YXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICBpbmxpbmUgdm9pZCB2aXNpdChKU0NlbGwq
IGNlbGwpCi0gICAgewotICAgICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICghYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvdW50KDEpOwotICAgIH0KLSAgICBJdGVy
YXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICB2aXNp
dChjZWxsKTsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAg
fQotfTsKLQotY2xhc3MgUmVjb3JkVHlwZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5UeXBlOwotCi0gICAgUmVjb3JkVHlwZSgpOwot
ICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOwotICAgIFJldHVyblR5cGUg
cmV0dXJuVmFsdWUoKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiB0eXBlTmFtZShKU0Nl
bGwqKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBtX3R5cGVDb3VudFNldDsK
LX07Ci0KLWlubGluZSBSZWNvcmRUeXBlOjpSZWNvcmRUeXBlKCkKLSAgICA6IG1fdHlwZUNvdW50
U2V0KHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpKQotewotfQotCi1pbmxpbmUgY29u
c3QgY2hhciogUmVjb3JkVHlwZTo6dHlwZU5hbWUoSlNDZWxsKiBjZWxsKQorc3RhdGljIGlubGlu
ZSB2b2lkIHJlY29yZFR5cGUoVHlwZUNvdW50U2V0JiBzZXQsIEpTQ2VsbCogY2VsbCkKIHsKKyAg
ICBjb25zdCBjaGFyKiB0eXBlTmFtZSA9ICJbdW5rbm93bl0iOwogICAgIGNvbnN0IENsYXNzSW5m
byogaW5mbyA9IGNlbGwtPmNsYXNzSW5mbygpOwotICAgIGlmICghaW5mbyB8fCAhaW5mby0+Y2xh
c3NOYW1lKQotICAgICAgICByZXR1cm4gIlt1bmtub3duXSI7Ci0gICAgcmV0dXJuIGluZm8tPmNs
YXNzTmFtZTsKLX0KLQotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBSZWNvcmRUeXBlOjpvcGVyYXRv
cigpKEpTQ2VsbCogY2VsbCkKLXsKLSAgICBtX3R5cGVDb3VudFNldC0+YWRkKHR5cGVOYW1lKGNl
bGwpKTsKLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5l
IHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IFJlY29yZFR5cGU6OnJldHVyblZhbHVlKCkK
LXsKLSAgICByZXR1cm4gV1RGTW92ZShtX3R5cGVDb3VudFNldCk7CisgICAgaWYgKGluZm8gJiYg
aW5mby0+Y2xhc3NOYW1lKQorICAgICAgICB0eXBlTmFtZSA9IGluZm8tPmNsYXNzTmFtZTsKKyAg
ICBzZXQuYWRkKHR5cGVOYW1lKTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC03
NjYsOSArNzE4LDEyIEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRhIDogTWFya2VkQmwK
ICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBj
ZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwg
SGVhcENlbGw6OktpbmQga2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIGNlbGwtPm1ldGhvZFRh
YmxlKCktPmhlYXBTbmFwc2hvdChjZWxsLCBtX2J1aWxkZXIpOworICAgICAgICBpZiAoa2luZCA9
PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihoZWFwQ2VsbCk7CisgICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgp
LT5oZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKQEAgLTc5MSw5ICs3NDYsMTAg
QEAgc3RydWN0IFJlbW92ZURlYWRIZWFwU25hcHNob3ROb2RlcyA6IE1hcgogICAgIHsKICAgICB9
CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtp
bmQpIGNvbnN0CiAgICAgewotICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2VsbChjZWxsKTsKKyAg
ICAgICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIG1fc25hcHNo
b3Quc3dlZXBDZWxsKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC05OTMsMjkgKzk0OSw2NCBA
QCBzaXplX3QgSGVhcDo6Y2FwYWNpdHkoKQogCiBzaXplX3QgSGVhcDo6cHJvdGVjdGVkR2xvYmFs
T2JqZWN0Q291bnQoKQogewotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbDxDb3VudElm
R2xvYmFsT2JqZWN0PigpOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90
ZWN0ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgeworICAgICAgICAgICAgaWYg
KGNlbGwtPmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisg
ICAgICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHNpemVfdCBIZWFwOjpnbG9iYWxPYmplY3RDb3VudCgpCiB7CiAgICAgSGVhcEl0ZXJh
dGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFj
ZS5mb3JFYWNoTGl2ZUNlbGw8Q291bnRJZkdsb2JhbE9iamVjdD4oaXRlcmF0aW9uU2NvcGUpOwor
ICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxs
KAorICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAgICAgWyZdIChIZWFwQ2VsbCogaGVhcENl
bGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAg
ICBpZiAoa2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOworICAgICAgICAgICAgaWYgKGNlbGwtPmlzT2Jq
ZWN0KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAgICAg
ICAgcmVzdWx0Kys7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc2l6ZV90IEhlYXA6OnBy
b3RlY3RlZE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8
Q291bnQ+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yRWFjaFByb3RlY3RlZENl
bGwoCisgICAgICAgIFsmXSAoSlNDZWxsKikgeworICAgICAgICAgICAgcmVzdWx0Kys7CisgICAg
ICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291
bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHJldHVybiBm
b3JFYWNoUHJvdGVjdGVkQ2VsbDxSZWNvcmRUeXBlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOwor
ICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewor
ICAgICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBjZWxsKTsKKyAgICAgICAgfSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6
b2JqZWN0VHlwZUNvdW50cygpCiB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJh
dGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFj
ZS5mb3JFYWNoTGl2ZUNlbGw8UmVjb3JkVHlwZT4oaXRlcmF0aW9uU2NvcGUpOworICAgIG1fb2Jq
ZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAorICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAg
ICAgWyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0aW9u
U3RhdHVzIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAg
ICAgICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxs
KSk7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAg
ICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVBbGxDb2Rl
QmxvY2tzKCkKQEAgLTEzMDAsOSArMTI5MSwxMSBAQCBzdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hv
dEZ1bmN0b3IgOiBwdWJsCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJr
ZWRCbG9jayogYmxvY2spIHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2NrOyB9CisgICAgdm9p
ZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgY29uc3QgeyBtX2Jsb2Nrc1ttX2luZGV4
KytdID0gYmxvY2s7IH0KIAotICAgIHNpemVfdCBtX2luZGV4OworICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgbXV0YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11
dGFibGUgc2l6ZV90IG1faW5kZXg7CiAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4mIG1fYmxvY2tz
OwogfTsKIApAQCAtMTU3Myw3ICsxNTY2LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFn
ZUlmTm90RG9uZVJlYwogCiBjbGFzcyBab21iaWZ5IDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lk
RnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQor
ICAgIGlubGluZSB2b2lkIHZpc2l0KEhlYXBDZWxsKiBjZWxsKSBjb25zdAogICAgIHsKICAgICAg
ICAgdm9pZCoqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PHZvaWQqKj4oY2VsbCk7CiAKQEAg
LTE1ODYsNyArMTU3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICg7IGN1cnJlbnQgPCBsaW1p
dDsgY3VycmVudCsrKQogICAgICAgICAgICAgKmN1cnJlbnQgPSB6b21iaWZpZWRCaXRzOwogICAg
IH0KLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBj
b25zdAogICAgIHsKICAgICAgICAgdmlzaXQoY2VsbCk7CiAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOwpAQCAtMTU5OCw3ICsxNTkxLDcgQEAgdm9pZCBIZWFwOjp6b21i
aWZ5RGVhZE9iamVjdHMoKQogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdp
bGwgY3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCiAgICAgbV9vYmplY3RTcGFjZS56b21iaWZ5
U3dlZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwot
ICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPFpvbWJpZnk+KGl0ZXJhdGlvblNjb3Bl
KTsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9t
YmlmeSgpKTsKIH0KIAogdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0NlbGwq
IGNlbGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDMxMjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwNSw5ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKj4mIG1hcmtMaXN0U2V0KCk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5j
dG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6
UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoUHJvdGVjdGVkQ2VsbChjb25zdCBGdW5jdG9y
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ29kZUJsb2Nr
KGNvbnN0IEZ1bmN0b3ImKTsKIAogICAgIEhhbmRsZVNldCogaGFuZGxlU2V0KCkgeyByZXR1cm4g
Jm1faGFuZGxlU2V0OyB9CiAgICAgSGFuZGxlU3RhY2sqIGhhbmRsZVN0YWNrKCkgeyByZXR1cm4g
Jm1faGFuZGxlU3RhY2s7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBD
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2Vs
bC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSGVhcENlbGwuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEhlYXBDZWxsOjpLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5k
KSB7CisgICAgY2FzZSBIZWFwQ2VsbDo6SlNDZWxsOgorICAgICAgICBvdXQucHJpbnQoIkpTQ2Vs
bCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIZWFwQ2VsbDo6U3RvcmFnZToKKyAgICAg
ICAgb3V0LnByaW50KCJTdG9yYWdlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXBDZWxsIHsKK3B1
YmxpYzoKKyAgICBlbnVtIEtpbmQgOiBpbnQ4X3QgeworICAgICAgICBKU0NlbGwsCisgICAgICAg
IFN0b3JhZ2UKKyAgICB9OworICAgIAorICAgIEhlYXBDZWxsKCkgeyB9CisgICAgCisgICAgdm9p
ZCB6YXAoKSB7ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0KKyAg
ICBib29sIGlzWmFwcGVkKCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdCogY29uc3QqPih0aGlzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpIZWFwQ2VsbDo6S2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlzaW9u
IDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXByZWNh
dGVkUmVwb3J0RXh0cmFNCiAgICAgICAgIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNsb3dD
YXNlKHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBI
ZWFwOjpmb3JFYWNoQ29kZUJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7CiAgICAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgZnVsbCBzZXQgb2YgQ29k
ZUJsb2NrcyB1bnRpbCBjb21waWxhdGlvbiBoYXMgdGVybWluYXRlZC4KICAgICBjb21wbGV0ZUFs
bEpJVFBsYW5zKCk7CkBAIC0xNzMsMTkgKzE3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBICiAgICAgcmV0dXJuIG1fY29kZUJsb2Nrcy5pdGVyYXRlPEZ1bmN0
b3I+KGZ1bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlw
ZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5j
dG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgSGVh
cDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3Byb3RlY3RlZFZhbHVlcykKICAgICAgICAgZnVuY3RvcihwYWly
LmtleSk7CiAgICAgbV9oYW5kbGVTZXQuZm9yRWFjaFN0cm9uZ0hhbmRsZShmdW5jdG9yLCBtX3By
b3RlY3RlZFZhbHVlcyk7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpCi17Ci0gICAgRnVuY3RvciBmdW5j
dG9yOwotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKIH0KIAogaW5s
aW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2
aXNpb24gMjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3Rp
Y3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgU3RvcmFnZVN0YXRp
c3RpY3MgOiBwdWJsaWMgTWFya2VkQgogcHVibGljOgogICAgIFN0b3JhZ2VTdGF0aXN0aWNzKCk7
CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKKyAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCosIEhlYXBDZWxsOjpLaW5kKSBjb25zdDsKIAog
ICAgIHNpemVfdCBvYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCk7CiAgICAgc2l6ZV90
IG9iamVjdENvdW50KCk7CkBAIC0xOTAsOSArMTkwLDEzIEBAIGlubGluZSB2b2lkIFN0b3JhZ2VT
dGF0aXN0aWNzOjp2aXNpdChKU0MKICAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0
cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pOyAKIH0KIAotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3RhdGlz
dGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIFN0
b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2lu
ZCBraW5kKSBjb25zdAogewotICAgIHZpc2l0KGNlbGwpOworICAgIGlmIChraW5kID09IEhlYXBD
ZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29uc3RfY2FzdCBleGlzdHMg
YmVjYXVzZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgICAgICBjb25zdF9jYXN0PFN0
b3JhZ2VTdGF0aXN0aWNzKj4odGhpcyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwp
KTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2aXNp
b24gMjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCwxMyBAQCBzdHJ1Y3QgR2F0aGVyTGl2ZU9i
akZ1bmN0b3IgOiBNYXJrZWRCbG9jCiAgICAgICAgIG1fbGlzdC5saXZlT2JqZWN0cy5hcHBlbmQo
ZGF0YSk7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBj
ZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFw
Q2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7CisgICAg
ICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEu
CisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5NjQ0CisgICAgICAgICAgICBjb25zdF9jYXN0PEdhdGhlckxpdmVPYmpGdW5jdG9yKj4odGhp
cyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg2LDcgKzE4NiwxMCBAQCBNYXJrZWRCbG9j
ayogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsCiAKICAgICBzaXplX3QgY2VsbFNpemUgPSBt
X2NlbGxTaXplID8gbV9jZWxsU2l6ZSA6IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRC
bG9jazo6YXRvbVNpemU+KGJ5dGVzKTsKIAotICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3JlYXRl
KCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVlZHNEZXN0cnVjdGlvbik7
CisgICAgLy8gRklYTUU6IFN1cHBvcnQgYWxsb2NhdGluZyBzdG9yYWdlIGluIG1hcmtlZCBibG9j
a3MuIFRoaXMgd291bGQgbWVhbiB0aGF0IGFsbG9jYXRlQmxvY2soKQorICAgIC8vIHRha2VzIGEg
SGVhcENlbGw6OktpbmQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY1OAorICAgIHJldHVybiBNYXJrZWRC
bG9jazo6Y3JlYXRlKCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVlZHNE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2NhdG9y
OjphZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yMzMsMTUgKzIzNiwxMyBAQCB2b2lk
IE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQogICAgIH0KIH0KIAotc3RydWN0IExhc3RDaGFuY2VU
b0ZpbmFsaXplIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyB9
Ci19OwotCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewog
ICAgIG1fYmxvY2tMaXN0LmFwcGVuZChtX3JldGlyZWRCbG9ja3MpOwotICAgIExhc3RDaGFuY2VU
b0ZpbmFsaXplIGZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZvckVh
Y2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAg
IGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxv
Y2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAkocmV2aXNpb24gMjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJik7CiAg
ICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVtb3ZlQmxv
Y2soTWFya2VkQmxvY2sqKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OnJlc3VtZUFsbG9jCiAgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9yOjpm
b3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewogICAgIE1hcmtlZEJsb2NrKiBuZXh0OwogICAgIGZvciAoTWFya2VkQmxv
Y2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lv
biAyMDMxMjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRp
YyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJhbGFu
Y2U7CiAKLU1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAsIE1hcmtl
ZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUo
SGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kIGNl
bGxLaW5kKQogewogICAgIGlmIChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNlKys7
CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJNYXJr
ZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9Ci0gICAgTWFya2VkQmxv
Y2sqIGJsb2NrID0gbmV3IChOb3ROdWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhibG9ja1NpemUsIGNh
cGFjaXR5KSkgTWFya2VkQmxvY2soYWxsb2NhdG9yLCBjYXBhY2l0eSwgY2VsbFNpemUsIG5lZWRz
RGVzdHJ1Y3Rpb24pOworICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG5ldyAoTm90TnVsbCwgZmFz
dEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFsbG9jYXRv
ciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uLCBjZWxsS2luZCk7CiAgICAg
aGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGNhcGFjaXR5KTsKICAgICByZXR1cm4gYmxvY2s7CiB9CkBA
IC02MCwxMiArNjAsMTMgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShIZWFwJiBoZWFwLCBN
YQogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGNhcGFjaXR5KTsKIH0KIAotTWFya2VkQmxvY2s6Ok1h
cmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVf
dCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxsS2lu
ZCkKICAgICA6IERvdWJseUxpbmtlZExpc3ROb2RlPE1hcmtlZEJsb2NrPigpCiAgICAgLCBtX2F0
b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAgLCBt
X2VuZEF0b20oKGFsbG9jYXRvci0+Y2VsbFNpemUoKSA/IGF0b21zUGVyQmxvY2sgLSBtX2F0b21z
UGVyQ2VsbCA6IGZpcnN0QXRvbSgpKSArIDEpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQog
ICAgICwgbV9uZWVkc0Rlc3RydWN0aW9uKG5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgLCBtX2NlbGxL
aW5kKGNlbGxLaW5kKQogICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwgbV9zdGF0
ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCiAgICAgLCBtX3dlYWtTZXQo
YWxsb2NhdG9yLT5oZWFwKCktPnZtKCksICp0aGlzKQpAQCAtNzQsMTcgKzc1LDE5IEBAIE1hcmtl
ZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IKICAgICBIRUFQX0xPR19CTE9DS19T
VEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2Fs
bERlc3RydWN0b3IoSlNDZWxsKiBjZWxsKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNhbGxE
ZXN0cnVjdG9yKEhlYXBDZWxsKiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIgc3dl
ZXAgbWF5IGFscmVhZHkgaGF2ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNlbGwt
PmlzWmFwcGVkKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0NlbGwqIGpzQ2VsbCA9
IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpOwogCi0gICAgQVNTRVJUKGNlbGwtPnN0cnVjdHVy
ZUlEKCkpOwotICAgIGlmIChjZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlzSW1t
b3J0YWwpCi0gICAgICAgIGNlbGwtPnN0cnVjdHVyZSgqdm0oKSktPmNsYXNzSW5mbygpLT5tZXRo
b2RUYWJsZS5kZXN0cm95KGNlbGwpOworICAgIEFTU0VSVChqc0NlbGwtPnN0cnVjdHVyZUlEKCkp
OworICAgIGlmIChqc0NlbGwtPmlubGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1vcnRh
bCkKKyAgICAgICAganNDZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGVsc2UKLSAgICAgICAganNDYXN0PEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Kj4oY2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95KGNl
bGwpOworICAgICAgICBqc0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihqc0NlbGwpLT5jbGFz
c0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGNlbGwtPnphcCgpOwog
fQogCkBAIC0xMDMsNyArMTA2LDcgQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2Nr
OjpzcGVjaQogICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQgJiYgKG1fbWFya3MuZ2V0
KGkpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnBy
ZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICBIZWFwQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogCiAgICAg
ICAgIGlmIChjYWxsRGVzdHJ1Y3RvcnMgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCiAgICAgICAgICAg
ICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKQEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkK
KyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6
OktpbmQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmJsb2NrRm9y
KGNlbGwpID09IG1fYmxvY2spOwogICAgICAgICBtX2Jsb2NrLT5zZXROZXdseUFsbG9jYXRlZChj
ZWxsKTsKQEAgLTIxMyw3ICsyMTYsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpzdG9wQWxsb2NhdGlu
Zyhjb25zdCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9yIChGcmVlQ2VsbCogY3VycmVu
dCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBjdXJy
ZW50LT5uZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGN1cnJlbnQpLT56
YXAoKTsKKyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikKKyAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7CiAgICAgICAgIGNsZWFyTmV3
bHlBbGxvY2F0ZWQoY3VycmVudCk7CiAgICAgfQogICAgIApAQCAtMjkwLDcgKzI5NCw4IEBAIHZv
aWQgTWFya2VkQmxvY2s6OmRpZFJldGlyZUJsb2NrKGNvbnN0IEYKICAgICBGcmVlQ2VsbCogbmV4
dDsKICAgICBmb3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9
IG5leHQpIHsKICAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQ7Ci0gICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4oY3VycmVudCktPnphcCgpOworICAgICAgICBpZiAobV9uZWVkc0Rl
c3RydWN0aW9uKQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KGN1cnJl
bnQpLT56YXAoKTsKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24g
MjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBNYXJrZWRCbG9ja19oCiAjZGVm
aW5lIE1hcmtlZEJsb2NrX2gKIAorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSGVh
cE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1cy5oIgogI2luY2x1ZGUgIldl
YWtTZXQuaCIKQEAgLTUzLDggKzU0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBlZGVm
IHVpbnRwdHJfdCBCaXRzOwogCi0gICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsKLSAg
ICAKICAgICAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9y
IGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAgICAgLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdp
dGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogICAgIC8vIG1hcmtl
ZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRo
YW4gdGhlCkBAIC05OSwxNCArOTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB0
eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwogCiAgICAgICAgICAgICBDb3VudEZ1bmN0b3IoKSA6
IG1fY291bnQoMCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkgeyBt
X2NvdW50ICs9IGNvdW50OyB9Ci0gICAgICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCkg
eyByZXR1cm4gbV9jb3VudDsgfQorICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291bnQp
IGNvbnN0IHsgbV9jb3VudCArPSBjb3VudDsgfQorICAgICAgICAgICAgUmV0dXJuVHlwZSByZXR1
cm5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KIAogICAgICAgICBwcml2YXRlOgot
ICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OworICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgbXV0YWJsZSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgZnVuY3RvciByYXRoZXIgdGhhbiBD
KysgbGFtYmRhcy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2NvdW50
OwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhlYXAm
LCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVhdGUo
SGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxTaXpl
LCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShIZWFwJiwgTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMgYm9v
bCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKQEAgLTE0NywxNiArMTQ4LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQo
KSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2FwYWNp
dHkoKTsKIAogICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgYm9v
bCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc0xpdmUoY29u
c3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAg
ICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNBdG9tKGNv
bnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3Qg
SlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEhl
YXBDZWxsKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
dm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CiAKQEAgLTE3MCw5ICsxNzIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlzdCYp
OwogICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwogCi0gICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoRnVuY3RvciYpOwot
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVh
Y2hMaXZlQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImKTsKKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25z
dCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRp
b25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29u
c3QgRnVuY3RvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTE4MiwxMCArMTg0LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXplXTsK
IAotICAgICAgICBNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHks
IHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgTWFya2Vk
QmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQpOwogICAgICAgICBBdG9tKiBh
dG9tcygpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAgICAg
IHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7CisgICAgICAgIHZvaWQgY2FsbERlc3RydWN0
b3IoSGVhcENlbGwqKTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2RlLCBi
b29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAgICAg
ICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fcHJldjsKQEAgLTE5OCw2ICsyMDAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICAgICAgYm9vbCBt
X25lZWRzRGVzdHJ1Y3Rpb247CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIG1fY2VsbEtpbmQ7CiAg
ICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3RhdGUg
bV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBAIC0zMDMsNiArMzA2LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwogICAg
IH0KIAorICAgIGlubGluZSBIZWFwQ2VsbDo6S2luZCBNYXJrZWRCbG9jazo6Y2VsbEtpbmQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VsbEtpbmQ7CisgICAgfQorCiAgICAgaW5s
aW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gbWFy
a0NvdW50KCkgKiBjZWxsU2l6ZSgpOwpAQCAtMzYzLDEzICszNzEsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKKyAg
ICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmV0aXJl
ZCB8fCBtX3N0YXRlID09IE1hcmtlZCk7CiAgICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9t
TnVtYmVyKGNlbGwpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVkKGNl
bGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0
IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0
IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAg
ICAgIGNhc2UgQWxsb2NhdGVkOgpAQCAtNDA3LDQwICs0MTUsNDMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgICAgICBpZiAoIWlzQXRvbShwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihwKSk7
CisgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7
CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRp
b25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2Vk
QmxvY2s6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAgICAg
ICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0g
ICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwqPigm
YXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25T
dGF0dXM6OkRvbmUpCisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICAgICAgaWYgKGZ1bmN0b3Io
Y2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hMaXZl
Q2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBt
X2NlbGxLaW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2Vu
ZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAg
IEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMo
KVtpXSk7CiAgICAgICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9uU3Rh
dHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5jdG9y
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAg
ICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9tc1Bl
ckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0gcmVp
bnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAgICBp
ZiAoaXNMaXZlKGNlbGwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAgICAg
ICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwMzEyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNywz
MSArMjcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEZyZWUgOiBNYXJrZWRCbG9j
azo6Vm9pZEZ1bmN0b3IgewotICAgIEZyZWUoTWFya2VkU3BhY2UmIHNwYWNlKSA6IG1fbWFya2Vk
U3BhY2Uoc3BhY2UpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2sp
IHsgbV9tYXJrZWRTcGFjZS5mcmVlQmxvY2soYmxvY2spOyB9Ci1wcml2YXRlOgotICAgIE1hcmtl
ZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3RydWN0IEZyZWVPclNocmluayA6IE1hcmtl
ZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgRnJlZU9yU2hyaW5rKE1hcmtlZFNwYWNlJiBzcGFj
ZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNlKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2Vk
QmxvY2sqIGJsb2NrKSB7IG1fbWFya2VkU3BhY2UuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2spOyB9
Ci1wcml2YXRlOgotICAgIE1hcmtlZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3RydWN0
IFZpc2l0V2Vha1NldCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgVmlzaXRXZWFr
U2V0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKSA6IG1faGVhcFJvb3RWaXNpdG9y
KGhlYXBSb290VmlzaXRvcikgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBi
bG9jaykgeyBibG9jay0+dmlzaXRXZWFrU2V0KG1faGVhcFJvb3RWaXNpdG9yKTsgfQotcHJpdmF0
ZToKLSAgICBIZWFwUm9vdFZpc2l0b3ImIG1faGVhcFJvb3RWaXNpdG9yOwotfTsKLQotc3RydWN0
IFJlYXBXZWFrU2V0IDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5yZWFwV2Vha1NldCgpOyB9Ci19Owot
CiBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1faGVhcChoZWFw
KQogICAgICwgbV9jYXBhY2l0eSgwKQpAQCAtNzMsMjUgKzQ4LDI5IEBAIE1hcmtlZFNwYWNlOjpN
YXJrZWRTcGFjZShIZWFwKiBoZWFwKQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkKIHsK
LSAgICBGcmVlIGZyZWUoKnRoaXMpOwotICAgIGZvckVhY2hCbG9jayhmcmVlKTsKKyAgICBmb3JF
YWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAg
ICBmcmVlQmxvY2soYmxvY2spOworICAgICAgICB9KTsKICAgICBBU1NFUlQoIW1fYmxvY2tzLnNl
dCgpLnNpemUoKSk7CiB9CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSB7Ci0gICAgdm9p
ZCBvcGVyYXRvcigpKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7IGFsbG9jYXRvci5sYXN0
Q2hhbmNlVG9GaW5hbGl6ZSgpOyB9Ci19OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpCiB7CiAgICAgc3RvcEFsbG9jYXRpbmcoKTsKLSAgICBmb3JFYWNoQWxsb2Nh
dG9yPExhc3RDaGFuY2VUb0ZpbmFsaXplPigpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgICAgIGFsbG9j
YXRvci5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBNYXJr
ZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dl
ZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2s8U3dlZXA+KCk7CisgICAgZm9yRWFjaEJsb2NrKAor
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgYmxvY2stPnN3
ZWVwKCk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXAo
KQpAQCAtOTksNyArNzgsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkKICAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBzd2Vl
cC4uLiIpOwogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsKLSAg
ICBmb3JFYWNoQmxvY2s8Wm9tYmlmeVN3ZWVwPigpOworICAgIGZvckVhY2hCbG9jaygKKyAgICAg
ICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChibG9jay0+bmVl
ZHNTd2VlcGluZygpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAgICB9
KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKQEAgLTEyMiwxMiAr
MTA1LDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiAKIHZvaWQgTWFy
a2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3Ip
CiB7Ci0gICAgVmlzaXRXZWFrU2V0IHZpc2l0V2Vha1NldChoZWFwUm9vdFZpc2l0b3IpOwogICAg
IGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0cy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgIHZpc2l0V2Vha1NldChtX2Jsb2Nrc1dpdGhOZXdPYmpl
Y3RzW2ldKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrKHZpc2l0V2Vha1NldCk7
CisgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT52aXNpdFdlYWtTZXQoaGVh
cFJvb3RWaXNpdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAg
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgICAgIGJsb2Nr
LT52aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIH0pOworICAgIH0K
IH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKQEAgLTEzNSwxOSArMTIxLDE2
IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgaWYgKG1faGVhcC0+b3Bl
cmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQogICAg
ICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+cmVhcFdlYWtTZXQoKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPFJlYXBXZWFrU2V0PigpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0b3Io
KQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBmb3JFYWNoQWxsb2NhdG9yKGZ1bmN0b3Ip
OworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAo
TWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPnJlYXBXZWFrU2V0
KCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPgotdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJiBmdW5jdG9y
KQordm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXpl
IDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAgIGZ1
bmN0b3IoYWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7CkBAIC0xNjMsMjQgKzE0NiwyMiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0CiAgICAgZnVuY3RvcihtX2Rlc3Ry
dWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7CiB9CiAKLXN0cnVjdCBTdG9wQWxsb2NhdGluZ0Z1
bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikg
eyBhbGxvY2F0b3Iuc3RvcEFsbG9jYXRpbmcoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFjZTo6
c3RvcEFsbG9jYXRpbmcoKQogewogICAgIEFTU0VSVCghaXNJdGVyYXRpbmcoKSk7Ci0gICAgZm9y
RWFjaEFsbG9jYXRvcjxTdG9wQWxsb2NhdGluZ0Z1bmN0b3I+KCk7CisgICAgZm9yRWFjaEFsbG9j
YXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAgICAg
ICAgICAgYWxsb2NhdG9yLnN0b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIH0pOwogfQogCi1zdHJ1
Y3QgUmVzdW1lQWxsb2NhdGluZ0Z1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgeyBhbGxvY2F0b3IucmVzdW1lQWxsb2NhdGluZygpOyB9Ci19
OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBBU1NFUlQo
aXNJdGVyYXRpbmcoKSk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxSZXN1bWVBbGxvY2F0aW5nRnVu
Y3Rvcj4oKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFsbG9j
YXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgICAgICBhbGxvY2F0b3IucmVzdW1lQWxsb2NhdGlu
ZygpOworICAgICAgICB9KTsKIH0KIAogYm9vbCBNYXJrZWRTcGFjZTo6aXNQYWdlZE91dChkb3Vi
bGUgZGVhZGxpbmUpCkBAIC0yMjQsOCArMjA1LDEwIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZyZWVP
clNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAgICBG
cmVlT3JTaHJpbmsgZnJlZU9yU2hyaW5rKCp0aGlzKTsKLSAgICBmb3JFYWNoQmxvY2soZnJlZU9y
U2hyaW5rKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJs
b2NrKSB7CisgICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgICAgIH0p
OwogfQogCiBzdGF0aWMgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhNYXJrZWRCbG9j
ayogYmxvY2spCkBAIC0yMzUsMTYgKzIxOCw2IEBAIHN0YXRpYyB2b2lkIGNsZWFyTmV3bHlBbGxv
Y2F0ZWRJbkJsb2NrKE0KICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogfQogCi1z
dHJ1Y3QgQ2xlYXJOZXdseUFsbG9jYXRlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0g
ICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+Y2xlYXJOZXds
eUFsbG9jYXRlZCgpOyB9Ci19OwotCi0jaWZuZGVmIE5ERUJVRwotc3RydWN0IFZlcmlmeU5ld2x5
QWxsb2NhdGVkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9y
KCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKSk7IH0KLX07Ci0jZW5kaWYKLQogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9j
YXRlZCgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkg
ewpAQCAtMjYwLDE0ICsyMzMsMTggQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9j
YXRlZCgpCiAgICAgLy8gV2UgaGF2ZSB0byBpdGVyYXRlIGFsbCBvZiB0aGUgYmxvY2tzIGluIHRo
ZSBsYXJnZSBhbGxvY2F0b3JzIGJlY2F1c2UgdGhleSBhcmUKICAgICAvLyBjYW5vbmljYWxpemVk
IGFzIHRoZXkgYXJlIHVzZWQgdXAgKHNlZSBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVs
cGVyKQogICAgIC8vIHdoaWNoIGNyZWF0ZXMgdGhlIG1fbmV3bHlBbGxvY2F0ZWQgYml0bWFwLgot
ICAgIENsZWFyTmV3bHlBbGxvY2F0ZWQgZnVuY3RvcjsKLSAgICBtX25vcm1hbFNwYWNlLmxhcmdl
QWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX2Rlc3RydWN0b3JTcGFjZS5s
YXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgVmVyaWZ5TmV3bHlBbGxvY2F0ZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxvY2so
dmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBhdXRvIGNsZWFyTmV3bHlBbGxvY2F0ZWQgPSBb
Jl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9j
YXRlZCgpOworICAgIH07CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNo
QmxvY2soY2xlYXJOZXdseUFsbG9jYXRlZCk7CisgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFyZ2VB
bGxvY2F0b3IuZm9yRWFjaEJsb2NrKGNsZWFyTmV3bHlBbGxvY2F0ZWQpOworCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayog
YmxvY2spIHsKKyAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQo
KSk7CisgICAgICAgIH0pOworI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH0KIAogI2lmbmRl
ZiBOREVCVUcgCkBAIC0yOTAsOCArMjY3LDEyIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTWFy
a3MoKQogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVj
dGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3
T2JqZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNb
aV0tPmNsZWFyTWFya3MoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPENsZWFy
TWFya3M+KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAg
ICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBibG9jay0+Y2xl
YXJNYXJrcygpOworICAgICAgICAgICAgfSk7CisgICAgfQogCiAjaWZuZGVmIE5ERUJVRwogICAg
IFZlcmlmeU1hcmtlZE9yUmV0aXJlZCB2ZXJpZnlGdW5jdG9yOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDMxMjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTM3LDMzICszNyw2IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwSXRlcmF0aW9uU2Nv
cGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLXN0cnVjdCBDbGVhck1hcmtzIDog
TWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxv
Y2sqIGJsb2NrKQotICAgIHsKLSAgICAgICAgYmxvY2stPmNsZWFyTWFya3MoKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgU3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxvY2stPnN3ZWVwKCk7IH0KLX07Ci0K
LXN0cnVjdCBab21iaWZ5U3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZv
aWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi0gICAgewotICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgIH0K
LX07Ci0KLXN0cnVjdCBNYXJrQ291bnQgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGNvdW50KGJsb2NrLT5tYXJr
Q291bnQoKSk7IH0KLX07Ci0KLXN0cnVjdCBTaXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3Rv
ciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChibG9j
ay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKSk7IH0KLX07Ci0KIGNsYXNzIE1hcmtl
ZFNwYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7CiBwdWJsaWM6
CkBAIC0xMTIsMTIgKzg1LDkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtl
ZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hMaXZlQ2VsbChI
ZWFwSXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0
ZXJhdGlvblNjb3BlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwg
RnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29w
ZSYsIGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3QgRnVu
Y3RvciYpOwogCiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICB2b2lkIGZyZWVCbG9jayhNYXJrZWRC
bG9jayopOwpAQCAtMTQzLDggKzExMyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0b3ImKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3Qg
RnVuY3RvciYpOwogCiAgICAgU3Vic3BhY2UgbV9kZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3Bh
Y2UgbV9ub3JtYWxTcGFjZTsKQEAgLTE1Niw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxNYXJrZWRCbG9jayo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1
bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJsb2NrSXRlcmF0b3Ig
ZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0xNjQsMTYgKzEzMyw5IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYgKCgqaXQpLT5mb3JF
YWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiBz
Y29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hMaXZlQ2Vs
bChzY29wZSwgZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENl
bGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVh
cEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBBU1NFUlQo
aXNJdGVyYXRpbmcoKSk7CiAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5l
bmQoKTsKQEAgLTE4MSwxMyArMTQzLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYQogICAgICAgICBpZiAoKCppdCktPmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
cmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZv
ckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmIHNjb3BlKQotewotICAgIEZ1bmN0b3Ig
ZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaERlYWRDZWxsKHNjb3BlLCBmdW5jdG9yKTsKIH0K
IAogaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihzaXpl
X3QgYnl0ZXMpCkBAIC0yMjAsNyArMTc1LDcgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjph
bGxvY2F0ZVdpdGhEZQogICAgIHJldHVybiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5h
bGxvY2F0ZShieXRlcyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1
bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9y
bWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwpAQCAt
MjMzLDE0ICsxODgsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQogICAgICAg
ICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKICAgICBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jaygpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9y
OwotICAgIHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkIE1h
cmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yNTYsMTIgKzIw
MywyMiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsCiAKIGlubGlu
ZSBzaXplX3QgTWFya2VkU3BhY2U6Om9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFj
aEJsb2NrPE1hcmtDb3VudD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNo
QmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBy
ZXN1bHQgKz0gYmxvY2stPm1hcmtDb3VudCgpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpzaXplKCkKIHsKLSAgICByZXR1
cm4gZm9yRWFjaEJsb2NrPFNpemU+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9y
RWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAg
ICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291bnQoKSAqIGJsb2NrLT5jZWxsU2l6ZSgpOworICAg
ICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNw
YWNlOjpjYXBhY2l0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMjAzMTIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25zdHJ1
Y3REYXRhLmgiCiAjaW5jbHVkZSAiRW51bWVyYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgpAQCAtNjQsNyArNjUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoCiAgICAgcHVibGljOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQogCi1jbGFzcyBKU0NlbGwgeworY2xhc3MgSlNDZWxsIDogcHVibGljIEhl
YXBDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRl
Q2VsbChIZWFwJik7CkBAIC0xNTUsOSArMTU2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
VmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAotICAgIHZvaWQg
emFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9Ci0gICAg
Ym9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3QqIGNvbnN0Kj4odGhpcyk7IH0KLQogICAgIHN0YXRpYyBib29sIGNhblVzZUZhc3RHZXRPd25Q
cm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmKTsKICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0
eShWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDIwMzEyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDExICsxNDUsNiBAQCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkK
ICAgICByZXR1cm4gYWxsb2NhdGVDZWxsPFQ+KGhlYXAsIHNpemVvZihUKSk7CiB9CiAgICAgCi1p
bmxpbmUgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCi17Ci0gICAgcmV0dXJuIGNl
bGwtPmlzWmFwcGVkKCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25z
dAogewogICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwMzEyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY5LDcgKzg2OSw3IEBAIG5hbWVzcGFjZSB7CiBj
bGFzcyBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyIDogcHVibGljIE1hcmtlZEJsb2Nr
OjpWb2lkRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0Zp
bmRlcihNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJh
dG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2aXNpdChKU0NlbGwqKTsKQEAgLTkyNiw5ICs5MjYsMTMgQEAgaW5saW5lIHZvaWQgT2Jq
ZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIG1fZm91bmRPYmplY3RzLmFwcGVuZChvYmpl
Y3QpOwogfQogCi1JdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRl
cjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitJdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dpdGhC
cm9rZW5JbmRleGluZ0ZpbmRlcjo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6
OktpbmQga2luZCkgY29uc3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9PSBI
ZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhp
c3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3RfY2Fz
dDxPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyKj4odGhpcyktPnZpc2l0KHN0YXRpY19j
YXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwMzEyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0cnVjdCBDZWxsQWRkcmVzc0NoZWNrRnVuY3RvciA6IE1h
cmtlZEIKICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlND
ZWxsKiBjZWxsKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxs
KiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjZWxsID09
IGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283918</attachid>
            <date>2016-07-18 13:01:54 -0700</date>
            <delta_ts>2016-07-18 13:52:09 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>64625</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxNi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrcyBzaG91bGQga25vdyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIG1vcmUg
dGhhbiBKU0NlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTk2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgdGVhY2hlcyB0aGUgSGVhcCB0aGF0IGEgTWFya2VkQmxvY2sgbWF5
IGhvbGQgZWl0aGVyIEpTQ2VsbHMsIG9yIEF1eGlsaWFyeSwgd2hpY2ggaXMKKyAgICAgICAgbm90
IGEgSlNDZWxsLiBJdCB0ZWFjaGVzIHRoZSBoZWFwIGFuZCBhbGwgb2YgdGhlIHRoaW5ncyB0aGF0
IHdhbGsgdGhlIGhlYXAgdG8gaWdub3JlCisgICAgICAgIG5vbi1KU0NlbGxzIHdoZW5ldmVyIHRo
ZXkgYXJlIGxvb2tpbmcgZm9yIGdsb2JhbCBvYmplY3RzLCBKU09iamVjdHMsIGFuZCB0aGluZ3Mg
dG8gdHJhY2UKKyAgICAgICAgZm9yIGRlYnVnZ2luZyBvciBwcm9maWxpbmcuIFRoZSBpZGVhIGlz
IHRoYXQgd2Ugd2lsbCBiZSBhYmxlIHRvIGFsbG9jYXRlIGJ1dHRlcmZsaWVzIGFuZAorICAgICAg
ICB0eXBlZCBhcnJheSBiYWNraW5nIHN0b3JlcyBhcyBBdXhpbGlhcnkgaW4gTWFya2VkU3BhY2Ug
cmF0aGVyIHRoYW4gYWxsb2NhdGluZyB0aG9zZSB0aGluZ3MKKyAgICAgICAgaW4gQ29waWVkU3Bh
Y2UuIFRoYXQncyB3aGF0IGJ1ZyAxNTk2NTggaXMgYWxsIGFib3V0LgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBnaXZlcyB1cyBhIG5ldyB0eXBlLCBjYWxsZWQgSGVhcENlbGwsIHdoaWNoIGlzIGp1
c3QgbWVhbnQgdG8gYmUgYSBjbGFzcyBkaXN0aW5jdCBmcm9tCisgICAgICAgIEpTQ2VsbCBvciBh
bnkgdHlwZSB3ZSB3b3VsZCB1c2UgZm9yIEF1eGlsaWFyeS4gRm9yIGNvbnZlbmllbmNlLCBKU0Nl
bGwgaXMgYSBzdWJjbGFzcyBvZgorICAgICAgICBIZWFwQ2VsbC4gSGVhcENlbGwgaGFzIGFuIGVu
dW0gY2FsbGVkIEhlYXBDZWxsOjpLaW5kLCB3aGljaCBpcyBlaXRoZXIgSGVhcENlbGw6OkpTQ2Vs
bCBvcgorICAgICAgICBIZWFwQ2VsbDo6QXV4aWxpYXJ5LiBNYXJrZWRTcGFjZSBubyBsb25nZXIg
c3BlYWtzIG9mIEpTQ2VsbHMgZGlyZWN0bHkgZXhjZXB0IHdoZW4gZGVhbGluZworICAgICAgICB3
aXRoIGRlc3RydWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVxdWlyZWQg
ZG9pbmcgYSBsb3Qgb2Ygc3R1ZmYgdG8gYWxsIG9mIHRob3NlIGZ1bmN0b3IgY2FsbGJhY2tzLCBz
aW5jZSB0aGV5CisgICAgICAgIG5vdyB0YWtlIEhlYXBDZWxsKiBpbnN0ZWFkIG9mIEpTQ2VsbCog
YW5kIHRoZXkgdGFrZSBhbiBleHRyYSBIZWFwQ2VsbDo6S2luZCBhcmd1bWVudCB0bworICAgICAg
ICB0ZWxsIHRoZW0gaWYgdGhleSBhcmUgZGVhbGluZyB3aXRoIEpTQ2VsbHMgb3IgQXV4aWxpYXJ5
LiBJIGZpZ3VyZWQgdGhhdCB0aGlzIHdvdWxkIGJlIGFzCisgICAgICAgIGdvb2QgYSB0aW1lIGFz
IGFueSB0byBjb252ZXJ0IHRob3NlIGZ1bmN0b3JzIHRvIGJlaW5nIGxhbWJkYS1jb21wYXRpYmxl
LiBUaGlzIG1lYW5zIHRoYXQKKyAgICAgICAgb3BlcmF0b3IoKSBtdXN0IGJlIGNvbnN0LiBJbiBz
b21lIGNhc2VzLCBjb252ZXJ0aW5nIHRoZSBvcGVyYXRvcigpIHRvIGJlIGNvbnN0IHdvdWxkIGhh
dmUKKyAgICAgICAgdGFrZW4gbW9yZSB3b3JrIHRoYW4ganVzdCB0dXJuaW5nIHRoZSB3aG9sZSB0
aGluZyBpbnRvIGEgbGFtYmRhLiBXaGVuZXZlciB0aGlzIHdhcyB0aGUKKyAgICAgICAgY2FzZSwg
SSBjb252ZXJ0ZWQgdGhlIGNvZGUgdG8gdXNlIGxhbWJkYXMuIEkgbGVmdCBhIGxvdCBvZiBmdW5j
dG9ycyBhbG9uZS4gSW4gY2FzZXMgd2hlcmUKKyAgICAgICAgdGhlIGZ1bmN0b3Igd291bGQgYmVu
ZWZpdCBmcm9tIGJlaW5nIGEgbGFtYmRhLCBmb3IgZXhhbXBsZSBiZWNhdXNlIGl0IHdvdWxkIGdl
dCByaWQgb2YKKyAgICAgICAgY29uc3RfY2FzdHMgb3IgbXV0YWJsZXMsIEkgcHV0IGluIGEgRklY
TUUgcmVmZXJlbmNpbmcgYnVnIDE1OTY0NC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6U2V0
U3RlcHBpbmdNb2RlRnVuY3Rvcjo6U2V0U3RlcHBpbmdNb2RlRnVuY3Rvcik6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpTZXRTdGVwcGluZ01vZGVGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yOjpUb2dnbGVCcmVha3Bv
aW50RnVuY3Rvcik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUb2dnbGVCcmVha3BvaW50RnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckNvZGVCbG9j
a0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOjpDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNG
dW5jdG9yKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Q2xl
YXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rvcjo6Q2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rvcik6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUpOgorICAgICAgICAqIGhlYXAvSGFuZGxlU2V0Lmg6Cisg
ICAgICAgIChKU0M6OkhhbmRsZU5vZGU6Om5leHQpOgorICAgICAgICAoSlNDOjpIYW5kbGVTZXQ6
OmZvckVhY2hTdHJvbmdIYW5kbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkdhdGhlckhlYXBTbmFwc2hvdERhdGE6OkdhdGhlckhlYXBTbmFwc2hvdERhdGEpOgor
ICAgICAgICAoSlNDOjpHYXRoZXJIZWFwU25hcHNob3REYXRhOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6UmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzOjpSZW1vdmVEZWFkSGVhcFNuYXBz
aG90Tm9kZXMpOgorICAgICAgICAoSlNDOjpSZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXM6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3Vu
dCk6CisgICAgICAgIChKU0M6OkhlYXA6Omdsb2JhbE9iamVjdENvdW50KToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90
ZWN0ZWRPYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0VHlwZUNv
dW50cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1
bmN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChKU0M6OlpvbWJpZnk6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6Wm9t
YmlmeTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aGFuZGxlU2V0KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6aGFuZGxlU3RhY2spOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogaGVhcC9I
ZWFwQ2VsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OkhlYXBDZWxsKToKKyAg
ICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxsOjppc1ph
cHBlZCk6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkpOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JF
YWNoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwp
OgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKToKKyAgICAgICAg
KiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKEpTQzo6U3RvcmFnZVN0YXRpc3Rp
Y3M6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2F0aGVy
TGl2ZU9iakZ1bmN0b3I6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6R2F0aGVyTGl2ZU9iakZ1bmN0
b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VU
b0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TGFzdENoYW5jZVRvRmluYWxpemU6Om9wZXJhdG9y
KCkpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dGFrZUxhc3RBY3RpdmVCbG9jayk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAoSlND
OjpTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3I6OlNldE5ld2x5QWxsb2NhdGVkRnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6OlNldE5ld2x5QWxsb2NhdGVkRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpkaWRSZXRpcmVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5o
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yOjpDb3VudEZ1bmN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yOjpjb3VudCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6Om5lZWRzRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6Y2VsbEtpbmQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2l6ZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNw
YWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
Ojpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
cmVhcFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0
b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmlu
ayk6CisgICAgICAgIChKU0M6OmNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Y2xlYXJNYXJrcyk6CisgICAgICAgIChKU0M6OkZyZWU6OkZyZWUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGcmVlOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RnJlZU9yU2hyaW5rOjpGcmVlT3JTaHJpbmspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGcmVlT3JTaHJpbms6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWaXNp
dFdlYWtTZXQ6OlZpc2l0V2Vha1NldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZpc2l0V2Vh
a1NldDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlYXBXZWFrU2V0Ojpv
cGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFzdENoYW5jZVRvRmluYWxpemU6
Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdG9wQWxsb2NhdGluZ0Z1bmN0
b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZXN1bWVBbGxvY2F0aW5n
RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNsZWFyTmV3bHlB
bGxvY2F0ZWQ6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWZXJpZnlOZXds
eUFsbG9jYXRlZDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2spOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6b2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpjYXBhY2l0eSk6Cisg
ICAgICAgIChKU0M6OkNsZWFyTWFya3M6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTd2VlcDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlpvbWJpZnlT
d2VlcDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtDb3VudDo6b3Bl
cmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNpemU6Om9wZXJhdG9yKCkpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
emFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc1phcHBlZCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmFsbG9j
YXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlND
Ojppc1phcHBlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yOjpDZWxsQWRkcmVzc0NoZWNrRnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yOjpvcGVyYXRvcigpKToKKwogMjAx
Ni0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgcmVhbGx5IHN1cHBvcnQgam5lcV9wdHIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5k
bGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAg
ICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAg
IGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5
OTIsOCBAQAogCQlEQzE3RTgxQTFDOUM5MUU5MDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMTdFODE2MUM5
QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovOyB9OwogCQlEQzIxNDMwNzFDQTMy
RTU1MDAwQTg4NjkgLyogSUNTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLzsg
fTsKIAkJREMyMTQzMDgxQ0EzMkU1ODAwMEE4ODY5IC8qIElDU3RhdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMyMTQzMDUxQ0EzMkU1MjAwMEE4
ODY5IC8qIElDU3RhdHMuY3BwICovOyB9OworCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyog
SGVhcENlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURDM0QyQjBDMUQzNDM3NzAwMEJBOTE4
QyAvKiBIZWFwQ2VsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovOyB9Owog
CQlEQzQ1NEI4QzFEMDBFODIyMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEExRDAwRTgxRjAwNEMx
OEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLzsgfTsKIAkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFG
IC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLzsgfTsK
IAkJREM2MDVCNUQxQ0UyNkVBMDAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5ODAw
NTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovOyB9OwpAQCAtNDIyNCw2ICs0MjI2LDggQEAK
IAkJREMxN0U4MTYxQzlDODAyQjAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQ2FsbEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNTFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElD
U3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVh
cENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhl
YXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBDZWxs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM0NTRCOEExRDAwRTgxRjAwNEMx
OEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNKUy5o
OyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRoID0g
cHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MTkxLDYgKzUxOTUsOCBAQAogCQkJCTE0NkZBNUE4MTM3OEY2QjAwMDM2MjdBMyAvKiBIYW5k
bGVUeXBlcy5oICovLAogCQkJCTE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCAq
LywKIAkJCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oICovLAorCQkJCURDM0Qy
QjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8sCisJCQkJREMzRDJCMDkxRDM0
MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8sCiAJCQkJMEYzMkJEMEUxQkIzNEYxOTAwOTNB
NTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCAqLywKIAkJCQkwRjMyQkQwRjFCQjM0RjE5MDA5M0E1
N0YgLyogSGVhcEhlbHBlclBvb2wuaCAqLywKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCAqLywKQEAgLTcyNzAsNiArNzI3Niw3IEBACiAJCQkJMEZGQjkyMUEx
NkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkJCRDk2MUM1RkYzRjUwMDIzRUYyMyAvKiBCM1NwYXJzZUNv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAv
KiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJB
IC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2
QUM3MkEgLyogREZHQmxvY2tNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtOTQx
Miw2ICs5NDE5LDcgQEAKIAkJCQlEQzYwNUI1RjFDRTI2RUE1MDA1OTM3MTggLyogUHJvZmlsZXJV
SUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQ0E2MDcxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTMxODE0NTU5MTAw
MDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEQzNEMkIw
QzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZB
MkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0
dXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAw
MSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICoKQEAgLTQwLDE0ICs0MCwyMSBAQCBuYW1l
c3BhY2UgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RydWN0IEdhdGhlclNvdXJjZVByb3Zp
ZGVycyA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEhhc2hTZXQ8U291
cmNlUHJvdmlkZXIqPiBzb3VyY2VQcm92aWRlcnM7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBt
dXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgbXV0YWJsZSBI
YXNoU2V0PFNvdXJjZVByb3ZpZGVyKj4gc291cmNlUHJvdmlkZXJzOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBtX2dsb2JhbE9iamVjdDsKIAogICAgIEdhdGhlclNvdXJjZVByb3ZpZGVycyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkgeyB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwp
CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFw
Q2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gSGVhcENl
bGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4o
aGVhcENlbGwpOworICAgICAgICAKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikKICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpAQCAtMTkxLDcgKzE5
OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVC
bG9jayogY29kZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9j
aykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2RlYnVnZ2VyID09IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gU3Rl
cHBpbmdNb2RlRW5hYmxlZCkKQEAgLTI5OCw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29s
IG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQog
ICAgICAgICAgICAgbV9kZWJ1Z2dlci0+dG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssIG1fYnJl
YWtwb2ludCwgbV9lbmFibGVkT3JOb3QpOwpAQCAtNDc0LDcgKzQ4MSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKQor
ICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAmJiBtX2RlYnVnZ2Vy
ID09IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCiAgICAgICAgICAgICBj
b2RlQmxvY2stPmNsZWFyRGVidWdnZXJSZXF1ZXN0cygpOwpAQCAtNTA0LDcgKzUxMSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29k
ZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAmJiBt
X2dsb2JhbE9iamVjdCA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAg
Y29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDMzNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NyArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gVmlzaXRzIGVhY2ggQ29kZUJsb2NrIGluIHRoZSBo
ZWFwIHVudGlsIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZQogICAgIC8vIHRvIGlu
ZGljYXRlIHRoYXQgaXQgaXMgZG9uZSBpdGVyYXRpbmcsIG9yIHVudGlsIGV2ZXJ5IENvZGVCbG9j
ayBoYXMgYmVlbgogICAgIC8vIHZpc2l0ZWQuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBpdGVyYXRlKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGNvZGVC
bG9jayA6IG1fb2xkQ29kZUJsb2NrcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlU2V0LmgJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hhbmRsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJIYW5kbGUuaCIKICNpbmNsdWRlICJIYW5kbGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBAIC03
OSw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHByb3RlY3RlZEdsb2JhbE9iamVj
dENvdW50KCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hT
dHJvbmdIYW5kbGUoRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lw
U2V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdHJvbmdI
YW5kbGUoY29uc3QgRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lw
U2V0KTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhbmRsZU5vZGUgTm9kZTsKQEAgLTE4MCw3
ICsxODEsNyBAQCBpbmxpbmUgSGFuZGxlTm9kZSogSGFuZGxlTm9kZTo6bmV4dCgpCiAgICAgcmV0
dXJuIG1fbmV4dDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVT
ZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFzaENvdW50
ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IEhhbmRsZVNldDo6Zm9yRWFjaFN0cm9uZ0hhbmRsZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yLCBj
b25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCkKIHsKICAgICBIYW5kbGVTZXQ6
Ok5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKICAgICBmb3IgKEhhbmRsZVNldDo6Tm9k
ZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5vZGUt
Pm5leHQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTIsNjEgKzI1MiwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFRo
cmVhZFN0YXRlKFZNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0cnVjdCBDb3VudCA6IHB1Ymxp
YyBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxs
KikgeyBjb3VudCgxKTsgfQotfTsKLQotc3RydWN0IENvdW50SWZHbG9iYWxPYmplY3QgOiBNYXJr
ZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICBpbmxpbmUgdm9pZCB2aXNpdChKU0NlbGwqIGNl
bGwpCi0gICAgewotICAgICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICghYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvdW50KDEpOwotICAgIH0KLSAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICB2aXNpdChj
ZWxsKTsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgfQot
fTsKLQotY2xhc3MgUmVjb3JkVHlwZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5UeXBlOwotCi0gICAgUmVjb3JkVHlwZSgpOwotICAg
IEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOwotICAgIFJldHVyblR5cGUgcmV0
dXJuVmFsdWUoKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiB0eXBlTmFtZShKU0NlbGwq
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBtX3R5cGVDb3VudFNldDsKLX07
Ci0KLWlubGluZSBSZWNvcmRUeXBlOjpSZWNvcmRUeXBlKCkKLSAgICA6IG1fdHlwZUNvdW50U2V0
KHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpKQotewotfQotCi1pbmxpbmUgY29uc3Qg
Y2hhciogUmVjb3JkVHlwZTo6dHlwZU5hbWUoSlNDZWxsKiBjZWxsKQorc3RhdGljIGlubGluZSB2
b2lkIHJlY29yZFR5cGUoVHlwZUNvdW50U2V0JiBzZXQsIEpTQ2VsbCogY2VsbCkKIHsKKyAgICBj
b25zdCBjaGFyKiB0eXBlTmFtZSA9ICJbdW5rbm93bl0iOwogICAgIGNvbnN0IENsYXNzSW5mbyog
aW5mbyA9IGNlbGwtPmNsYXNzSW5mbygpOwotICAgIGlmICghaW5mbyB8fCAhaW5mby0+Y2xhc3NO
YW1lKQotICAgICAgICByZXR1cm4gIlt1bmtub3duXSI7Ci0gICAgcmV0dXJuIGluZm8tPmNsYXNz
TmFtZTsKLX0KLQotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBSZWNvcmRUeXBlOjpvcGVyYXRvcigp
KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBtX3R5cGVDb3VudFNldC0+YWRkKHR5cGVOYW1lKGNlbGwp
KTsKLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IFJlY29yZFR5cGU6OnJldHVyblZhbHVlKCkKLXsK
LSAgICByZXR1cm4gV1RGTW92ZShtX3R5cGVDb3VudFNldCk7CisgICAgaWYgKGluZm8gJiYgaW5m
by0+Y2xhc3NOYW1lKQorICAgICAgICB0eXBlTmFtZSA9IGluZm8tPmNsYXNzTmFtZTsKKyAgICBz
ZXQuYWRkKHR5cGVOYW1lKTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC03NjYs
OSArNzE4LDEyIEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRhIDogTWFya2VkQmwKICAg
ICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxs
KQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVh
cENlbGw6OktpbmQga2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIGNlbGwtPm1ldGhvZFRhYmxl
KCktPmhlYXBTbmFwc2hvdChjZWxsLCBtX2J1aWxkZXIpOworICAgICAgICBpZiAoa2luZCA9PSBI
ZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihoZWFwQ2VsbCk7CisgICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5o
ZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKQEAgLTc5MSw5ICs3NDYsMTAgQEAg
c3RydWN0IFJlbW92ZURlYWRIZWFwU25hcHNob3ROb2RlcyA6IE1hcgogICAgIHsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQp
IGNvbnN0CiAgICAgewotICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2VsbChjZWxsKTsKKyAgICAg
ICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIG1fc25hcHNob3Qu
c3dlZXBDZWxsKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC05OTMsMjkgKzk0OSw2NCBAQCBz
aXplX3QgSGVhcDo6Y2FwYWNpdHkoKQogCiBzaXplX3QgSGVhcDo6cHJvdGVjdGVkR2xvYmFsT2Jq
ZWN0Q291bnQoKQogewotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbDxDb3VudElmR2xv
YmFsT2JqZWN0PigpOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90ZWN0
ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgeworICAgICAgICAgICAgaWYgKGNl
bGwtPmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHNpemVfdCBIZWFwOjpnbG9iYWxPYmplY3RDb3VudCgpCiB7CiAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoTGl2ZUNlbGw8Q291bnRJZkdsb2JhbE9iamVjdD4oaXRlcmF0aW9uU2NvcGUpOworICAg
IHNpemVfdCByZXN1bHQgPSAwOworICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAor
ICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAgICAgWyZdIChIZWFwQ2VsbCogaGVhcENlbGws
IEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBp
ZiAoa2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOworICAgICAgICAgICAgaWYgKGNlbGwtPmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0Kys7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
KyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3Rl
Y3RlZE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291
bnQ+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yRWFjaFByb3RlY3RlZENlbGwo
CisgICAgICAgIFsmXSAoSlNDZWxsKikgeworICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHJldHVybiBmb3JF
YWNoUHJvdGVjdGVkQ2VsbDxSZWNvcmRUeXBlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
Q291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAg
IGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgeworICAg
ICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBjZWxsKTsKKyAgICAgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2Jq
ZWN0VHlwZUNvdW50cygpCiB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoTGl2ZUNlbGw8UmVjb3JkVHlwZT4oaXRlcmF0aW9uU2NvcGUpOworICAgIG1fb2JqZWN0
U3BhY2UuZm9yRWFjaExpdmVDZWxsKAorICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAgICAg
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAg
ICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7
CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
fSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxv
Y2tzKCkKQEAgLTEzMDAsOSArMTI5MSwxMSBAQCBzdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1
bmN0b3IgOiBwdWJsCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRC
bG9jayogYmxvY2spIHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2NrOyB9CisgICAgdm9pZCBv
cGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgY29uc3QgeyBtX2Jsb2Nrc1ttX2luZGV4Kytd
ID0gYmxvY2s7IH0KIAotICAgIHNpemVfdCBtX2luZGV4OworICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGEgbXV0YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11dGFi
bGUgc2l6ZV90IG1faW5kZXg7CiAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4mIG1fYmxvY2tzOwog
fTsKIApAQCAtMTU3Myw3ICsxNTY2LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZUlm
Tm90RG9uZVJlYwogCiBjbGFzcyBab21iaWZ5IDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVu
Y3RvciB7CiBwdWJsaWM6Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQorICAg
IGlubGluZSB2b2lkIHZpc2l0KEhlYXBDZWxsKiBjZWxsKSBjb25zdAogICAgIHsKICAgICAgICAg
dm9pZCoqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PHZvaWQqKj4oY2VsbCk7CiAKQEAgLTE1
ODYsNyArMTU3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICg7IGN1cnJlbnQgPCBsaW1pdDsg
Y3VycmVudCsrKQogICAgICAgICAgICAgKmN1cnJlbnQgPSB6b21iaWZpZWRCaXRzOwogICAgIH0K
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBjb25z
dAogICAgIHsKICAgICAgICAgdmlzaXQoY2VsbCk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwpAQCAtMTU5OCw3ICsxNTkxLDcgQEAgdm9pZCBIZWFwOjp6b21iaWZ5
RGVhZE9iamVjdHMoKQogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwg
Y3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCiAgICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dl
ZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAg
IG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPFpvbWJpZnk+KGl0ZXJhdGlvblNjb3BlKTsK
KyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9tYmlm
eSgpKTsKIH0KIAogdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0NlbGwqIGNl
bGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDMzNjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
NSw5ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVy
Kj4mIG1hcmtMaXN0U2V0KCk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5jdG9y
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoUHJvdGVjdGVkQ2VsbChjb25zdCBGdW5jdG9yJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ29kZUJsb2NrKGNv
bnN0IEZ1bmN0b3ImKTsKIAogICAgIEhhbmRsZVNldCogaGFuZGxlU2V0KCkgeyByZXR1cm4gJm1f
aGFuZGxlU2V0OyB9CiAgICAgSGFuZGxlU3RhY2sqIGhhbmRsZVN0YWNrKCkgeyByZXR1cm4gJm1f
aGFuZGxlU3RhY2s7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SGVhcENlbGwuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEhlYXBDZWxsOjpLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7
CisgICAgY2FzZSBIZWFwQ2VsbDo6SlNDZWxsOgorICAgICAgICBvdXQucHJpbnQoIkpTQ2VsbCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIZWFwQ2VsbDo6QXV4aWxpYXJ5OgorICAgICAg
ICBvdXQucHJpbnQoIkF1eGlsaWFyeSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7Citw
dWJsaWM6CisgICAgZW51bSBLaW5kIDogaW50OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAg
ICBBdXhpbGlhcnkKKyAgICB9OworICAgIAorICAgIEhlYXBDZWxsKCkgeyB9CisgICAgCisgICAg
dm9pZCB6YXAoKSB7ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0K
KyAgICBib29sIGlzWmFwcGVkKCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdCogY29uc3QqPih0aGlzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgSlNDOjpIZWFwQ2VsbDo6S2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXBy
ZWNhdGVkUmVwb3J0RXh0cmFNCiAgICAgICAgIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNs
b3dDYXNlKHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgZnVsbCBzZXQgb2Yg
Q29kZUJsb2NrcyB1bnRpbCBjb21waWxhdGlvbiBoYXMgdGVybWluYXRlZC4KICAgICBjb21wbGV0
ZUFsbEpJVFBsYW5zKCk7CkBAIC0xNzMsMTkgKzE3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBICiAgICAgcmV0dXJuIG1fY29kZUJsb2Nrcy5pdGVyYXRlPEZ1
bmN0b3I+KGZ1bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbChG
dW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb3RlY3RlZFZhbHVlcykKICAgICAgICAgZnVuY3Rvcihw
YWlyLmtleSk7CiAgICAgbV9oYW5kbGVTZXQuZm9yRWFjaFN0cm9uZ0hhbmRsZShmdW5jdG9yLCBt
X3Byb3RlY3RlZFZhbHVlcyk7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6
UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpCi17Ci0gICAgRnVuY3RvciBm
dW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKIH0KIAog
aW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAko
cmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRp
c3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgU3RvcmFnZVN0
YXRpc3RpY3MgOiBwdWJsaWMgTWFya2VkQgogcHVibGljOgogICAgIFN0b3JhZ2VTdGF0aXN0aWNz
KCk7CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKKyAgICBJdGVy
YXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCosIEhlYXBDZWxsOjpLaW5kKSBjb25zdDsK
IAogICAgIHNpemVfdCBvYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCk7CiAgICAgc2l6
ZV90IG9iamVjdENvdW50KCk7CkBAIC0xOTAsOSArMTkwLDEzIEBAIGlubGluZSB2b2lkIFN0b3Jh
Z2VTdGF0aXN0aWNzOjp2aXNpdChKU0MKICAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3Qt
PnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4pOyAKIH0KIAotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3Rh
dGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IFN0b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6
S2luZCBraW5kKSBjb25zdAogewotICAgIHZpc2l0KGNlbGwpOworICAgIGlmIChraW5kID09IEhl
YXBDZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29uc3RfY2FzdCBleGlz
dHMgYmVjYXVzZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgICAgICBjb25zdF9jYXN0
PFN0b3JhZ2VTdGF0aXN0aWNzKj4odGhpcyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNl
bGwpKTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2
aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCwxMyBAQCBzdHJ1Y3QgR2F0aGVyTGl2
ZU9iakZ1bmN0b3IgOiBNYXJrZWRCbG9jCiAgICAgICAgIG1fbGlzdC5saXZlT2JqZWN0cy5hcHBl
bmQoZGF0YSk7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxs
KiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBI
ZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Cisg
ICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1i
ZGEuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NjQ0CisgICAgICAgICAgICBjb25zdF9jYXN0PEdhdGhlckxpdmVPYmpGdW5jdG9yKj4o
dGhpcyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg2LDcgKzE4NiwxMCBAQCBNYXJrZWRC
bG9jayogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsCiAKICAgICBzaXplX3QgY2VsbFNpemUg
PSBtX2NlbGxTaXplID8gbV9jZWxsU2l6ZSA6IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJr
ZWRCbG9jazo6YXRvbVNpemU+KGJ5dGVzKTsKIAotICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3Jl
YXRlKCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVlZHNEZXN0cnVjdGlv
bik7CisgICAgLy8gRklYTUU6IFN1cHBvcnQgYWxsb2NhdGluZyBzdG9yYWdlIGluIG1hcmtlZCBi
bG9ja3MuIFRoaXMgd291bGQgbWVhbiB0aGF0IGFsbG9jYXRlQmxvY2soKQorICAgIC8vIHRha2Vz
IGEgSGVhcENlbGw6OktpbmQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY1OAorICAgIHJldHVybiBNYXJr
ZWRCbG9jazo6Y3JlYXRlKCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVl
ZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2Nh
dG9yOjphZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yMzMsMTUgKzIzNiwxMyBAQCB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQogICAgIH0KIH0KIAotc3RydWN0IExhc3RDaGFu
Y2VUb0ZpbmFsaXplIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OyB9Ci19OwotCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ewogICAgIG1fYmxvY2tMaXN0LmFwcGVuZChtX3JldGlyZWRCbG9ja3MpOwotICAgIExhc3RDaGFu
Y2VUb0ZpbmFsaXplIGZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZv
ckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAg
ICAgIGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJik7
CiAgICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVtb3Zl
QmxvY2soTWFya2VkQmxvY2sqKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jCiAgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9y
Ojpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogewogICAgIE1hcmtlZEJsb2NrKiBuZXh0OwogICAgIGZvciAoTWFya2Vk
QmxvY2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAyMDMzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJh
bGFuY2U7CiAKLU1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAsIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6
ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVh
dGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0
eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5k
IGNlbGxLaW5kKQogewogICAgIGlmIChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNl
Kys7CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJN
YXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9Ci0gICAgTWFya2Vk
QmxvY2sqIGJsb2NrID0gbmV3IChOb3ROdWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhibG9ja1NpemUs
IGNhcGFjaXR5KSkgTWFya2VkQmxvY2soYWxsb2NhdG9yLCBjYXBhY2l0eSwgY2VsbFNpemUsIG5l
ZWRzRGVzdHJ1Y3Rpb24pOworICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG5ldyAoTm90TnVsbCwg
ZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFsbG9j
YXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uLCBjZWxsS2luZCk7CiAg
ICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGNhcGFjaXR5KTsKICAgICByZXR1cm4gYmxvY2s7CiB9
CkBAIC02MCwxMiArNjAsMTMgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShIZWFwJiBoZWFw
LCBNYQogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGNhcGFjaXR5KTsKIH0KIAotTWFya2VkQmxvY2s6
Ok1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHks
IHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2s6Ok1h
cmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxs
S2luZCkKICAgICA6IERvdWJseUxpbmtlZExpc3ROb2RlPE1hcmtlZEJsb2NrPigpCiAgICAgLCBt
X2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAg
LCBtX2VuZEF0b20oKGFsbG9jYXRvci0+Y2VsbFNpemUoKSA/IGF0b21zUGVyQmxvY2sgLSBtX2F0
b21zUGVyQ2VsbCA6IGZpcnN0QXRvbSgpKSArIDEpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5
KQogICAgICwgbV9uZWVkc0Rlc3RydWN0aW9uKG5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgLCBtX2Nl
bGxLaW5kKGNlbGxLaW5kKQogICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwgbV9z
dGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCiAgICAgLCBtX3dlYWtT
ZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksICp0aGlzKQpAQCAtNzQsMTcgKzc1LDE5IEBAIE1h
cmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IKICAgICBIRUFQX0xPR19CTE9D
S19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
Y2FsbERlc3RydWN0b3IoSlNDZWxsKiBjZWxsKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNh
bGxEZXN0cnVjdG9yKEhlYXBDZWxsKiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIg
c3dlZXAgbWF5IGFscmVhZHkgaGF2ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNl
bGwtPmlzWmFwcGVkKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0NlbGwqIGpzQ2Vs
bCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpOwogCi0gICAgQVNTRVJUKGNlbGwtPnN0cnVj
dHVyZUlEKCkpOwotICAgIGlmIChjZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlz
SW1tb3J0YWwpCi0gICAgICAgIGNlbGwtPnN0cnVjdHVyZSgqdm0oKSktPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS5kZXN0cm95KGNlbGwpOworICAgIEFTU0VSVChqc0NlbGwtPnN0cnVjdHVyZUlE
KCkpOworICAgIGlmIChqc0NlbGwtPmlubGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1v
cnRhbCkKKyAgICAgICAganNDZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGVsc2UKLSAgICAgICAganNDYXN0PEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Kj4oY2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95
KGNlbGwpOworICAgICAgICBqc0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihqc0NlbGwpLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGNlbGwtPnphcCgp
OwogfQogCkBAIC0xMDMsNyArMTA2LDcgQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpzcGVjaQogICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQgJiYgKG1fbWFya3Mu
Z2V0KGkpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICBIZWFwQ2VsbCog
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogCiAg
ICAgICAgIGlmIChjYWxsRGVzdHJ1Y3RvcnMgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCiAgICAgICAg
ICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKQEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2Vs
bCkKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENl
bGw6OktpbmQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmJsb2Nr
Rm9yKGNlbGwpID09IG1fYmxvY2spOwogICAgICAgICBtX2Jsb2NrLT5zZXROZXdseUFsbG9jYXRl
ZChjZWxsKTsKQEAgLTIxMyw3ICsyMTYsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpzdG9wQWxsb2Nh
dGluZyhjb25zdCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9yIChGcmVlQ2VsbCogY3Vy
cmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBj
dXJyZW50LT5uZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGN1cnJlbnQp
LT56YXAoKTsKKyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikKKyAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7CiAgICAgICAgIGNsZWFy
TmV3bHlBbGxvY2F0ZWQoY3VycmVudCk7CiAgICAgfQogICAgIApAQCAtMjkwLDcgKzI5NCw4IEBA
IHZvaWQgTWFya2VkQmxvY2s6OmRpZFJldGlyZUJsb2NrKGNvbnN0IEYKICAgICBGcmVlQ2VsbCog
bmV4dDsKICAgICBmb3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVu
dCA9IG5leHQpIHsKICAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQ7Ci0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY3VycmVudCktPnphcCgpOworICAgICAgICBpZiAobV9uZWVk
c0Rlc3RydWN0aW9uKQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KGN1
cnJlbnQpLT56YXAoKTsKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNp
b24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBNYXJrZWRCbG9ja19oCiAj
ZGVmaW5lIE1hcmtlZEJsb2NrX2gKIAorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAi
SGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1cy5oIgogI2luY2x1ZGUg
IldlYWtTZXQuaCIKQEAgLTUzLDggKzU0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBl
ZGVmIHVpbnRwdHJfdCBCaXRzOwogCi0gICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsK
LSAgICAKICAgICAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIg
Zm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAgICAgLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVk
IHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogICAgIC8vIG1h
cmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVy
IHRoYW4gdGhlCkBAIC05OSwxNCArOTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwogCiAgICAgICAgICAgICBDb3VudEZ1bmN0b3Io
KSA6IG1fY291bnQoMCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkg
eyBtX2NvdW50ICs9IGNvdW50OyB9Ci0gICAgICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCkgeyByZXR1cm4gbV9jb3VudDsgfQorICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291
bnQpIGNvbnN0IHsgbV9jb3VudCArPSBjb3VudDsgfQorICAgICAgICAgICAgUmV0dXJuVHlwZSBy
ZXR1cm5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KIAogICAgICAgICBwcml2YXRl
OgotICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OworICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgbXV0YWJsZSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgZnVuY3RvciByYXRoZXIgdGhh
biBDKysgbGFtYmRhcy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2Nv
dW50OwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhl
YXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVh
dGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxT
aXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShIZWFwJiwgTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMg
Ym9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKQEAgLTE0NywxNiArMTQ4LDE3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtp
bmQoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2Fw
YWNpdHkoKTsKIAogICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
Ym9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc0xpdmUo
Y29uc3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAg
ICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNBdG9t
KGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29u
c3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CiAKQEAgLTE3MCw5ICsxNzIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlz
dCYpOwogICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwogCi0gICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoRnVuY3RvciYp
OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImKTsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChj
b25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwo
Y29uc3QgRnVuY3RvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTE4MiwxMCArMTg0LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXpl
XTsKIAotICAgICAgICBNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNp
dHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgTWFy
a2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQpOwogICAgICAgICBBdG9t
KiBhdG9tcygpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAg
ICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7CisgICAgICAgIHZvaWQgY2FsbERlc3Ry
dWN0b3IoSGVhcENlbGwqKTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2Rl
LCBib29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAg
ICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fcHJldjsKQEAgLTE5OCw2ICsyMDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICAgICAgYm9v
bCBtX25lZWRzRGVzdHJ1Y3Rpb247CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIG1fY2VsbEtpbmQ7
CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3Rh
dGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBAIC0zMDMsNiArMzA2LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwog
ICAgIH0KIAorICAgIGlubGluZSBIZWFwQ2VsbDo6S2luZCBNYXJrZWRCbG9jazo6Y2VsbEtpbmQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VsbEtpbmQ7CisgICAgfQorCiAgICAg
aW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
bWFya0NvdW50KCkgKiBjZWxsU2l6ZSgpOwpAQCAtMzYzLDEzICszNzEsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkK
KyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmV0
aXJlZCB8fCBtX3N0YXRlID09IE1hcmtlZCk7CiAgICAgICAgIHJldHVybiBtX21hcmtzLmdldChh
dG9tTnVtYmVyKGNlbGwpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVk
KGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNv
bnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAg
ICAgICAgIGNhc2UgQWxsb2NhdGVkOgpAQCAtNDA3LDQwICs0MTUsNDMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgICAgICBpZiAoIWlzQXRvbShwKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihw
KSk7CisgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihw
KSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFy
a2VkQmxvY2s6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAg
ICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7
Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwq
PigmYXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRp
b25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hM
aXZlQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQg
PSBtX2NlbGxLaW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBt
X2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAg
ICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRv
bXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJ
dGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5j
dG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3Rh
dHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAg
ICBpZiAoaXNMaXZlKGNlbGwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAg
ICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAo
QykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0y
NywzMSArMjcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEZyZWUgOiBNYXJrZWRC
bG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEZyZWUoTWFya2VkU3BhY2UmIHNwYWNlKSA6IG1fbWFy
a2VkU3BhY2Uoc3BhY2UpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxv
Y2spIHsgbV9tYXJrZWRTcGFjZS5mcmVlQmxvY2soYmxvY2spOyB9Ci1wcml2YXRlOgotICAgIE1h
cmtlZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3RydWN0IEZyZWVPclNocmluayA6IE1h
cmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgRnJlZU9yU2hyaW5rKE1hcmtlZFNwYWNlJiBz
cGFjZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNlKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFy
a2VkQmxvY2sqIGJsb2NrKSB7IG1fbWFya2VkU3BhY2UuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2sp
OyB9Ci1wcml2YXRlOgotICAgIE1hcmtlZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3Ry
dWN0IFZpc2l0V2Vha1NldCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgVmlzaXRX
ZWFrU2V0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKSA6IG1faGVhcFJvb3RWaXNp
dG9yKGhlYXBSb290VmlzaXRvcikgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
KiBibG9jaykgeyBibG9jay0+dmlzaXRXZWFrU2V0KG1faGVhcFJvb3RWaXNpdG9yKTsgfQotcHJp
dmF0ZToKLSAgICBIZWFwUm9vdFZpc2l0b3ImIG1faGVhcFJvb3RWaXNpdG9yOwotfTsKLQotc3Ry
dWN0IFJlYXBXZWFrU2V0IDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5yZWFwV2Vha1NldCgpOyB9Ci19
OwotCiBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1faGVhcCho
ZWFwKQogICAgICwgbV9jYXBhY2l0eSgwKQpAQCAtNzMsMjUgKzQ4LDI5IEBAIE1hcmtlZFNwYWNl
OjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkK
IHsKLSAgICBGcmVlIGZyZWUoKnRoaXMpOwotICAgIGZvckVhY2hCbG9jayhmcmVlKTsKKyAgICBm
b3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAg
ICAgICBmcmVlQmxvY2soYmxvY2spOworICAgICAgICB9KTsKICAgICBBU1NFUlQoIW1fYmxvY2tz
LnNldCgpLnNpemUoKSk7CiB9CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSB7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7IGFsbG9jYXRvci5s
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyB9Ci19OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgc3RvcEFsbG9jYXRpbmcoKTsKLSAgICBmb3JFYWNoQWxs
b2NhdG9yPExhc3RDaGFuY2VUb0ZpbmFsaXplPigpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgICAgIGFs
bG9jYXRvci5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBN
YXJrZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNo
U3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2s8U3dlZXA+KCk7CisgICAgZm9yRWFjaEJsb2Nr
KAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgYmxvY2st
PnN3ZWVwKCk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp6b21iaWZ5U3dl
ZXAoKQpAQCAtOTksNyArNzgsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkK
ICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBz
d2VlcC4uLiIpOwogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsK
LSAgICBmb3JFYWNoQmxvY2s8Wm9tYmlmeVN3ZWVwPigpOworICAgIGZvckVhY2hCbG9jaygKKyAg
ICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChibG9jay0+
bmVlZHNTd2VlcGluZygpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAg
ICB9KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKQEAgLTEyMiwx
MiArMTA1LDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiAKIHZvaWQg
TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0
b3IpCiB7Ci0gICAgVmlzaXRXZWFrU2V0IHZpc2l0V2Vha1NldChoZWFwUm9vdFZpc2l0b3IpOwog
ICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZpc2l0V2Vha1NldChtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzW2ldKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrKHZpc2l0V2Vha1Nl
dCk7CisgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT52aXNpdFdlYWtTZXQo
aGVhcFJvb3RWaXNpdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQmxvY2soCisg
ICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgICAgIGJs
b2NrLT52aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIH0pOworICAg
IH0KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKQEAgLTEzNSwxOSArMTIx
LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgaWYgKG1faGVhcC0+
b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+cmVhcFdlYWtTZXQoKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPFJlYXBXZWFrU2V0PigpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0
b3IoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBmb3JFYWNoQWxsb2NhdG9yKGZ1bmN0
b3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsm
XSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPnJlYXBXZWFr
U2V0KCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPgotdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJiBmdW5j
dG9yKQordm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxT
aXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAg
IGZ1bmN0b3IoYWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7CkBAIC0xNjMsMjQgKzE0NiwyMiBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0CiAgICAgZnVuY3RvcihtX2Rl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7CiB9CiAKLXN0cnVjdCBTdG9wQWxsb2NhdGlu
Z0Z1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgeyBhbGxvY2F0b3Iuc3RvcEFsbG9jYXRpbmcoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFj
ZTo6c3RvcEFsbG9jYXRpbmcoKQogewogICAgIEFTU0VSVCghaXNJdGVyYXRpbmcoKSk7Ci0gICAg
Zm9yRWFjaEFsbG9jYXRvcjxTdG9wQWxsb2NhdGluZ0Z1bmN0b3I+KCk7CisgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAg
ICAgICAgICAgYWxsb2NhdG9yLnN0b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIH0pOwogfQogCi1z
dHJ1Y3QgUmVzdW1lQWxsb2NhdGluZ0Z1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJr
ZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyBhbGxvY2F0b3IucmVzdW1lQWxsb2NhdGluZygpOyB9
Ci19OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBBU1NF
UlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxSZXN1bWVBbGxvY2F0aW5n
RnVuY3Rvcj4oKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgICAgICBhbGxvY2F0b3IucmVzdW1lQWxsb2Nh
dGluZygpOworICAgICAgICB9KTsKIH0KIAogYm9vbCBNYXJrZWRTcGFjZTo6aXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpCkBAIC0yMjQsOCArMjA1LDEwIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZy
ZWVPclNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAg
ICBGcmVlT3JTaHJpbmsgZnJlZU9yU2hyaW5rKCp0aGlzKTsKLSAgICBmb3JFYWNoQmxvY2soZnJl
ZU9yU2hyaW5rKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sq
IGJsb2NrKSB7CisgICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgICAg
IH0pOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhNYXJrZWRC
bG9jayogYmxvY2spCkBAIC0yMzUsMTYgKzIxOCw2IEBAIHN0YXRpYyB2b2lkIGNsZWFyTmV3bHlB
bGxvY2F0ZWRJbkJsb2NrKE0KICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogfQog
Ci1zdHJ1Y3QgQ2xlYXJOZXdseUFsbG9jYXRlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpOyB9Ci19OwotCi0jaWZuZGVmIE5ERUJVRwotc3RydWN0IFZlcmlmeU5l
d2x5QWxsb2NhdGVkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxv
Y2F0ZWQoKSk7IH0KLX07Ci0jZW5kaWYKLQogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFs
bG9jYXRlZCgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsr
aSkgewpAQCAtMjYwLDE0ICsyMzMsMTggQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFs
bG9jYXRlZCgpCiAgICAgLy8gV2UgaGF2ZSB0byBpdGVyYXRlIGFsbCBvZiB0aGUgYmxvY2tzIGlu
IHRoZSBsYXJnZSBhbGxvY2F0b3JzIGJlY2F1c2UgdGhleSBhcmUKICAgICAvLyBjYW5vbmljYWxp
emVkIGFzIHRoZXkgYXJlIHVzZWQgdXAgKHNlZSBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
SGVscGVyKQogICAgIC8vIHdoaWNoIGNyZWF0ZXMgdGhlIG1fbmV3bHlBbGxvY2F0ZWQgYml0bWFw
LgotICAgIENsZWFyTmV3bHlBbGxvY2F0ZWQgZnVuY3RvcjsKLSAgICBtX25vcm1hbFNwYWNlLmxh
cmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX2Rlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0gICAgVmVyaWZ5TmV3bHlBbGxvY2F0ZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxv
Y2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBhdXRvIGNsZWFyTmV3bHlBbGxvY2F0ZWQg
PSBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOworICAgIH07CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JF
YWNoQmxvY2soY2xlYXJOZXdseUFsbG9jYXRlZCk7CisgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGNsZWFyTmV3bHlBbGxvY2F0ZWQpOworCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9j
ayogYmxvY2spIHsKKyAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKSk7CisgICAgICAgIH0pOworI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH0KIAogI2lm
bmRlZiBOREVCVUcgCkBAIC0yOTAsOCArMjY3LDEyIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFy
TWFya3MoKQogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29s
bGVjdGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRo
TmV3T2JqZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVj
dHNbaV0tPmNsZWFyTWFya3MoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPENs
ZWFyTWFya3M+KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAg
ICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBibG9jay0+
Y2xlYXJNYXJrcygpOworICAgICAgICAgICAgfSk7CisgICAgfQogCiAjaWZuZGVmIE5ERUJVRwog
ICAgIFZlcmlmeU1hcmtlZE9yUmV0aXJlZCB2ZXJpZnlGdW5jdG9yOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDMzNjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM3LDMzICszNyw2IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwSXRlcmF0aW9u
U2NvcGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLXN0cnVjdCBDbGVhck1hcmtz
IDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2Vk
QmxvY2sqIGJsb2NrKQotICAgIHsKLSAgICAgICAgYmxvY2stPmNsZWFyTWFya3MoKTsKLSAgICB9
Ci19OwotCi1zdHJ1Y3QgU3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZv
aWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxvY2stPnN3ZWVwKCk7IH0KLX07
Ci0KLXN0cnVjdCBab21iaWZ5U3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAg
IHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi0gICAgewotICAgICAgICBpZiAo
YmxvY2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAg
IH0KLX07Ci0KLXN0cnVjdCBNYXJrQ291bnQgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsK
LSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGNvdW50KGJsb2NrLT5t
YXJrQ291bnQoKSk7IH0KLX07Ci0KLXN0cnVjdCBTaXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVu
Y3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChi
bG9jay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKSk7IH0KLX07Ci0KIGNsYXNzIE1h
cmtlZFNwYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7CiBwdWJs
aWM6CkBAIC0xMTIsMTIgKzg1LDkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoU2V0PE1h
cmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hMaXZlQ2Vs
bChIZWFwSXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVh
cEl0ZXJhdGlvblNjb3BlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3Bl
JiwgRnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5
cGUgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25T
Y29wZSYsIGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2
b2lkIGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3Qg
RnVuY3RvciYpOwogCiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICB2b2lkIGZyZWVCbG9jayhNYXJr
ZWRCbG9jayopOwpAQCAtMTQzLDggKzExMyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0b3ImKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29u
c3QgRnVuY3RvciYpOwogCiAgICAgU3Vic3BhY2UgbV9kZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vi
c3BhY2UgbV9ub3JtYWxTcGFjZTsKQEAgLTE1Niw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxNYXJrZWRCbG9jayo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBN
YXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3Im
IGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRT
cGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJsb2NrSXRlcmF0
b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0xNjQsMTYgKzEzMyw5IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYgKCgqaXQpLT5m
b3JFYWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3Bl
JiBzY29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hMaXZl
Q2VsbChzY29wZSwgZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVh
ZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwo
SGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBBU1NF
UlQoaXNJdGVyYXRpbmcoKSk7CiAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQo
KS5lbmQoKTsKQEAgLTE4MSwxMyArMTQzLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
aW5saW5lIHR5cGVuYQogICAgICAgICBpZiAoKCppdCktPmZvckVhY2hEZWFkQ2VsbChmdW5jdG9y
KSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6
OmZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmIHNjb3BlKQotewotICAgIEZ1bmN0
b3IgZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaERlYWRDZWxsKHNjb3BlLCBmdW5jdG9yKTsK
IH0KIAogaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihz
aXplX3QgYnl0ZXMpCkBAIC0yMjAsNyArMTc1LDcgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNl
OjphbGxvY2F0ZVdpdGhEZQogICAgIHJldHVybiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVz
KS5hbGxvY2F0ZShieXRlcyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2Nr
KEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1f
bm9ybWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwpA
QCAtMjMzLDE0ICsxODgsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5
cGVuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQogICAg
ICAgICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9j
ayhmdW5jdG9yKTsKICAgICBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJl
dHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jaygpCi17Ci0gICAgRnVuY3RvciBmdW5j
dG9yOwotICAgIHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lk
IE1hcmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yNTYsMTIg
KzIwMywyMiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsCiAKIGlu
bGluZSBzaXplX3QgTWFya2VkU3BhY2U6Om9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9y
RWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JF
YWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAg
ICByZXN1bHQgKz0gYmxvY2stPm1hcmtDb3VudCgpOworICAgICAgICB9KTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpzaXplKCkKIHsKLSAgICBy
ZXR1cm4gZm9yRWFjaEJsb2NrPFNpemU+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAg
Zm9yRWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAg
ICAgICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291bnQoKSAqIGJsb2NrLT5jZWxsU2l6ZSgpOwor
ICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtl
ZFNwYWNlOjpjYXBhY2l0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25z
dHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiRW51bWVyYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgpAQCAtNjQsNyArNjUs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoCiAgICAgcHVibGlj
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyBy
ZXR1cm4gJnNfaW5mbzsgfQogCi1jbGFzcyBKU0NlbGwgeworY2xhc3MgSlNDZWxsIDogcHVibGlj
IEhlYXBDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICBmcmllbmQgY2xhc3Mg
TWFya2VkQmxvY2s7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9j
YXRlQ2VsbChIZWFwJik7CkBAIC0xNTUsOSArMTU2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAotICAgIHZv
aWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9Ci0g
ICAgYm9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3QqIGNvbnN0Kj4odGhpcyk7IH0KLQogICAgIHN0YXRpYyBib29sIGNhblVzZUZhc3RHZXRP
d25Qcm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmKTsKICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9w
ZXJ0eShWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDIwMzM2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDExICsxNDUsNiBAQCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVh
cCkKICAgICByZXR1cm4gYWxsb2NhdGVDZWxsPFQ+KGhlYXAsIHNpemVvZihUKSk7CiB9CiAgICAg
Ci1pbmxpbmUgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCi17Ci0gICAgcmV0dXJu
IGNlbGwtPmlzWmFwcGVkKCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBj
b25zdAogewogICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY5LDcgKzg2OSw3IEBAIG5hbWVzcGFjZSB7
CiBjbGFzcyBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyIDogcHVibGljIE1hcmtlZEJs
b2NrOjpWb2lkRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGlu
Z0ZpbmRlcihNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSXRl
cmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9w
ZXJhdG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCB2aXNpdChKU0NlbGwqKTsKQEAgLTkyNiw5ICs5MjYsMTMgQEAgaW5saW5lIHZvaWQg
T2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIG1fZm91bmRPYmplY3RzLmFwcGVuZChv
YmplY3QpOwogfQogCi1JdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0Zp
bmRlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitJdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dp
dGhCcm9rZW5JbmRleGluZ0ZpbmRlcjo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENl
bGw6OktpbmQga2luZCkgY29uc3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9
PSBIZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3Qg
ZXhpc3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3Rf
Y2FzdDxPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyKj4odGhpcyktPnZpc2l0KHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0cnVjdCBDZWxsQWRkcmVzc0NoZWNrRnVuY3RvciA6
IE1hcmtlZEIKICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
SlNDZWxsKiBjZWxsKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBD
ZWxsKiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjZWxs
ID09IGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283927</attachid>
            <date>2016-07-18 13:52:09 -0700</date>
            <delta_ts>2016-07-18 13:52:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>64850</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NiBA
QAorMjAxNi0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrcyBzaG91bGQga25vdyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yIG1vcmUg
dGhhbiBKU0NlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTk2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgdGVhY2hlcyB0aGUgSGVhcCB0aGF0IGEgTWFya2VkQmxvY2sgbWF5
IGhvbGQgZWl0aGVyIEpTQ2VsbHMsIG9yIEF1eGlsaWFyeSwgd2hpY2ggaXMKKyAgICAgICAgbm90
IGEgSlNDZWxsLiBJdCB0ZWFjaGVzIHRoZSBoZWFwIGFuZCBhbGwgb2YgdGhlIHRoaW5ncyB0aGF0
IHdhbGsgdGhlIGhlYXAgdG8gaWdub3JlCisgICAgICAgIG5vbi1KU0NlbGxzIHdoZW5ldmVyIHRo
ZXkgYXJlIGxvb2tpbmcgZm9yIGdsb2JhbCBvYmplY3RzLCBKU09iamVjdHMsIGFuZCB0aGluZ3Mg
dG8gdHJhY2UKKyAgICAgICAgZm9yIGRlYnVnZ2luZyBvciBwcm9maWxpbmcuIFRoZSBpZGVhIGlz
IHRoYXQgd2Ugd2lsbCBiZSBhYmxlIHRvIGFsbG9jYXRlIGJ1dHRlcmZsaWVzIGFuZAorICAgICAg
ICB0eXBlZCBhcnJheSBiYWNraW5nIHN0b3JlcyBhcyBBdXhpbGlhcnkgaW4gTWFya2VkU3BhY2Ug
cmF0aGVyIHRoYW4gYWxsb2NhdGluZyB0aG9zZSB0aGluZ3MKKyAgICAgICAgaW4gQ29waWVkU3Bh
Y2UuIFRoYXQncyB3aGF0IGJ1ZyAxNTk2NTggaXMgYWxsIGFib3V0LgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBnaXZlcyB1cyBhIG5ldyB0eXBlLCBjYWxsZWQgSGVhcENlbGwsIHdoaWNoIGlzIGp1
c3QgbWVhbnQgdG8gYmUgYSBjbGFzcyBkaXN0aW5jdCBmcm9tCisgICAgICAgIEpTQ2VsbCBvciBh
bnkgdHlwZSB3ZSB3b3VsZCB1c2UgZm9yIEF1eGlsaWFyeS4gRm9yIGNvbnZlbmllbmNlLCBKU0Nl
bGwgaXMgYSBzdWJjbGFzcyBvZgorICAgICAgICBIZWFwQ2VsbC4gSGVhcENlbGwgaGFzIGFuIGVu
dW0gY2FsbGVkIEhlYXBDZWxsOjpLaW5kLCB3aGljaCBpcyBlaXRoZXIgSGVhcENlbGw6OkpTQ2Vs
bCBvcgorICAgICAgICBIZWFwQ2VsbDo6QXV4aWxpYXJ5LiBNYXJrZWRTcGFjZSBubyBsb25nZXIg
c3BlYWtzIG9mIEpTQ2VsbHMgZGlyZWN0bHkgZXhjZXB0IHdoZW4gZGVhbGluZworICAgICAgICB3
aXRoIGRlc3RydWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVxdWlyZWQg
ZG9pbmcgYSBsb3Qgb2Ygc3R1ZmYgdG8gYWxsIG9mIHRob3NlIGZ1bmN0b3IgY2FsbGJhY2tzLCBz
aW5jZSB0aGV5CisgICAgICAgIG5vdyB0YWtlIEhlYXBDZWxsKiBpbnN0ZWFkIG9mIEpTQ2VsbCog
YW5kIHRoZXkgdGFrZSBhbiBleHRyYSBIZWFwQ2VsbDo6S2luZCBhcmd1bWVudCB0bworICAgICAg
ICB0ZWxsIHRoZW0gaWYgdGhleSBhcmUgZGVhbGluZyB3aXRoIEpTQ2VsbHMgb3IgQXV4aWxpYXJ5
LiBJIGZpZ3VyZWQgdGhhdCB0aGlzIHdvdWxkIGJlIGFzCisgICAgICAgIGdvb2QgYSB0aW1lIGFz
IGFueSB0byBjb252ZXJ0IHRob3NlIGZ1bmN0b3JzIHRvIGJlaW5nIGxhbWJkYS1jb21wYXRpYmxl
LiBUaGlzIG1lYW5zIHRoYXQKKyAgICAgICAgb3BlcmF0b3IoKSBtdXN0IGJlIGNvbnN0LiBJbiBz
b21lIGNhc2VzLCBjb252ZXJ0aW5nIHRoZSBvcGVyYXRvcigpIHRvIGJlIGNvbnN0IHdvdWxkIGhh
dmUKKyAgICAgICAgdGFrZW4gbW9yZSB3b3JrIHRoYW4ganVzdCB0dXJuaW5nIHRoZSB3aG9sZSB0
aGluZyBpbnRvIGEgbGFtYmRhLiBXaGVuZXZlciB0aGlzIHdhcyB0aGUKKyAgICAgICAgY2FzZSwg
SSBjb252ZXJ0ZWQgdGhlIGNvZGUgdG8gdXNlIGxhbWJkYXMuIEkgbGVmdCBhIGxvdCBvZiBmdW5j
dG9ycyBhbG9uZS4gSW4gY2FzZXMgd2hlcmUKKyAgICAgICAgdGhlIGZ1bmN0b3Igd291bGQgYmVu
ZWZpdCBmcm9tIGJlaW5nIGEgbGFtYmRhLCBmb3IgZXhhbXBsZSBiZWNhdXNlIGl0IHdvdWxkIGdl
dCByaWQgb2YKKyAgICAgICAgY29uc3RfY2FzdHMgb3IgbXV0YWJsZXMsIEkgcHV0IGluIGEgRklY
TUUgcmVmZXJlbmNpbmcgYnVnIDE1OTY0NC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6U2V0
U3RlcHBpbmdNb2RlRnVuY3Rvcjo6U2V0U3RlcHBpbmdNb2RlRnVuY3Rvcik6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpTZXRTdGVwcGluZ01vZGVGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yOjpUb2dnbGVCcmVha3Bv
aW50RnVuY3Rvcik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpUb2dnbGVCcmVha3BvaW50RnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckNvZGVCbG9j
a0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOjpDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNG
dW5jdG9yKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Q2xl
YXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rvcjo6Q2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rvcik6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2tTZXQ6Oml0ZXJhdGUpOgorICAgICAgICAqIGhlYXAvSGFuZGxlU2V0Lmg6Cisg
ICAgICAgIChKU0M6OkhhbmRsZU5vZGU6Om5leHQpOgorICAgICAgICAoSlNDOjpIYW5kbGVTZXQ6
OmZvckVhY2hTdHJvbmdIYW5kbGUpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkdhdGhlckhlYXBTbmFwc2hvdERhdGE6OkdhdGhlckhlYXBTbmFwc2hvdERhdGEpOgor
ICAgICAgICAoSlNDOjpHYXRoZXJIZWFwU25hcHNob3REYXRhOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6UmVtb3ZlRGVhZEhlYXBTbmFwc2hvdE5vZGVzOjpSZW1vdmVEZWFkSGVhcFNuYXBz
aG90Tm9kZXMpOgorICAgICAgICAoSlNDOjpSZW1vdmVEZWFkSGVhcFNuYXBzaG90Tm9kZXM6Om9w
ZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3Vu
dCk6CisgICAgICAgIChKU0M6OkhlYXA6Omdsb2JhbE9iamVjdENvdW50KToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90
ZWN0ZWRPYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0VHlwZUNv
dW50cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvZGVCbG9ja3MpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6TWFya2VkQmxvY2tTbmFwc2hvdEZ1
bmN0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChKU0M6OlpvbWJpZnk6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6Wm9t
YmlmeTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkhlYXA6OnpvbWJpZnlEZWFkT2JqZWN0
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aGFuZGxlU2V0KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6aGFuZGxlU3RhY2spOgorICAgICAgICAqIGhlYXAvSGVhcENlbGwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogaGVhcC9I
ZWFwQ2VsbC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SGVhcENlbGw6OkhlYXBDZWxsKToKKyAg
ICAgICAgKEpTQzo6SGVhcENlbGw6OnphcCk6CisgICAgICAgIChKU0M6OkhlYXBDZWxsOjppc1ph
cHBlZCk6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFw
OjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkpOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JF
YWNoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwp
OgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKToKKyAgICAgICAg
KiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKEpTQzo6U3RvcmFnZVN0YXRpc3Rp
Y3M6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGhlYXAvSGVhcFZlcmlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2F0aGVy
TGl2ZU9iakZ1bmN0b3I6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6R2F0aGVyTGl2ZU9iakZ1bmN0
b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQWxsb2NhdG9yOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9j
YXRvcjo6cmVzZXQpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6Omxhc3RDaGFuY2VU
b0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TGFzdENoYW5jZVRvRmluYWxpemU6Om9wZXJhdG9y
KCkpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAgICAg
IChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6dGFrZUxhc3RBY3RpdmVCbG9jayk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEFsbG9jYXRvcjo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAoSlND
OjpTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3I6OlNldE5ld2x5QWxsb2NhdGVkRnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6OlNldE5ld2x5QWxsb2NhdGVkRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpkaWRSZXRpcmVCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5o
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yOjpDb3VudEZ1bmN0b3Ip
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yOjpjb3VudCk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpDb3VudEZ1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6Om5lZWRzRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6Y2VsbEtpbmQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2l6ZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck5ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoQ2VsbCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6Zm9yRWFjaERlYWRDZWxsKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNw
YWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6On5NYXJrZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNl
Ojpzd2VlcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp6b21iaWZ5U3dlZXApOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKToKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
cmVhcFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0
b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3RvcEFsbG9jYXRpbmcpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1h
cmtlZFNwYWNlOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnNocmlu
ayk6CisgICAgICAgIChKU0M6OmNsZWFyTmV3bHlBbGxvY2F0ZWRJbkJsb2NrKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Y2xlYXJNYXJrcyk6CisgICAgICAgIChKU0M6OkZyZWU6OkZyZWUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGcmVlOjpvcGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RnJlZU9yU2hyaW5rOjpGcmVlT3JTaHJpbmspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGcmVlT3JTaHJpbms6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWaXNp
dFdlYWtTZXQ6OlZpc2l0V2Vha1NldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZpc2l0V2Vh
a1NldDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlYXBXZWFrU2V0Ojpv
cGVyYXRvcigpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGFzdENoYW5jZVRvRmluYWxpemU6
Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdG9wQWxsb2NhdGluZ0Z1bmN0
b3I6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZXN1bWVBbGxvY2F0aW5n
RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNsZWFyTmV3bHlB
bGxvY2F0ZWQ6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWZXJpZnlOZXds
eUFsbG9jYXRlZDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hEZWFkQ2VsbCk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
YWxsb2NhdGVXaXRoRGVzdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JF
YWNoQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2spOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6b2JqZWN0Q291bnQpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6c2l6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpjYXBhY2l0eSk6Cisg
ICAgICAgIChKU0M6OkNsZWFyTWFya3M6Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpTd2VlcDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlpvbWJpZnlT
d2VlcDo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtDb3VudDo6b3Bl
cmF0b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNpemU6Om9wZXJhdG9yKCkpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
emFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc1phcHBlZCk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmFsbG9j
YXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlND
Ojppc1phcHBlZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yOjpDZWxsQWRkcmVzc0NoZWNrRnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6OkNlbGxBZGRyZXNzQ2hlY2tGdW5jdG9yOjpvcGVyYXRvcigpKToKKwogMjAx
Ni0wNy0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgcmVhbGx5IHN1cHBvcnQgam5lcV9wdHIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5k
bGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCisgICAgaGVhcC9IZWFwQ2VsbC5jcHAKICAg
ICBoZWFwL0hlYXBIZWxwZXJQb29sLmNwcAogICAgIGhlYXAvSGVhcFByb2ZpbGVyLmNwcAogICAg
IGhlYXAvSGVhcFNuYXBzaG90LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5
OTIsOCBAQAogCQlEQzE3RTgxQTFDOUM5MUU5MDA4QTZBQjMgLyogQ0NhbGxIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDMTdFODE2MUM5
QzgwMkIwMDhBNkFCMyAvKiBDQ2FsbEhlbHBlcnMuY3BwICovOyB9OwogCQlEQzIxNDMwNzFDQTMy
RTU1MDAwQTg4NjkgLyogSUNTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElDU3RhdHMuaCAqLzsg
fTsKIAkJREMyMTQzMDgxQ0EzMkU1ODAwMEE4ODY5IC8qIElDU3RhdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREMyMTQzMDUxQ0EzMkU1MjAwMEE4
ODY5IC8qIElDU3RhdHMuY3BwICovOyB9OworCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyog
SGVhcENlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERDM0QyQjA5MUQzNDMxNjEwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURDM0QyQjBDMUQzNDM3NzAwMEJBOTE4
QyAvKiBIZWFwQ2VsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEQzNEMkIwQjFEMzQzNzZFMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwICovOyB9Owog
CQlEQzQ1NEI4QzFEMDBFODIyMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM0NTRCOEExRDAwRTgxRjAwNEMx
OEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLzsgfTsKIAkJREM0NTRCOEQxRDAwRTgyNDAwNEMxOEFG
IC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEQzQ1NEI4QjFEMDBFODFGMDA0QzE4QUYgLyogQWlyRHVtcEFzSlMuaCAqLzsgfTsK
IAkJREM2MDVCNUQxQ0UyNkVBMDAwNTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREM2MDVCNTkxQ0UyNkU5ODAw
NTkzNzE4IC8qIFByb2ZpbGVyRXZlbnQuY3BwICovOyB9OwpAQCAtNDIyNCw2ICs0MjI2LDggQEAK
IAkJREMxN0U4MTYxQzlDODAyQjAwOEE2QUIzIC8qIENDYWxsSGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQ2FsbEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEQzIxNDMwNTFDQTMyRTUyMDAwQTg4NjkgLyogSUNTdGF0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREMyMTQzMDYxQ0EzMkU1MjAwMEE4ODY5IC8qIElD
U3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSUNTdGF0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzNEMkIwOTFEMzQzMTYxMDBCQTkxOEMgLyogSGVh
cENlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcENlbGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREMzRDJCMEIxRDM0Mzc2RTAwQkE5MThDIC8qIEhl
YXBDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBDZWxs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM0NTRCOEExRDAwRTgxRjAwNEMx
OEFGIC8qIEFpckR1bXBBc0pTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFpckR1bXBBc0pTLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJEdW1wQXNKUy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNDU0QjhCMUQwMEU4MUYwMDRDMThBRiAvKiBBaXJE
dW1wQXNKUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJEdW1wQXNKUy5o
OyBwYXRoID0gYjMvYWlyL0FpckR1bXBBc0pTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURDNjA1QjU5MUNFMjZFOTgwMDU5MzcxOCAvKiBQcm9maWxlckV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyRXZlbnQuY3BwOyBwYXRoID0g
cHJvZmlsZXIvUHJvZmlsZXJFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MTkxLDYgKzUxOTUsOCBAQAogCQkJCTE0NkZBNUE4MTM3OEY2QjAwMDM2MjdBMyAvKiBIYW5k
bGVUeXBlcy5oICovLAogCQkJCTE0QkE3QTk1MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCAq
LywKIAkJCQkxNEJBN0E5NjEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oICovLAorCQkJCURDM0Qy
QjBCMUQzNDM3NkUwMEJBOTE4QyAvKiBIZWFwQ2VsbC5jcHAgKi8sCisJCQkJREMzRDJCMDkxRDM0
MzE2MTAwQkE5MThDIC8qIEhlYXBDZWxsLmggKi8sCiAJCQkJMEYzMkJEMEUxQkIzNEYxOTAwOTNB
NTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCAqLywKIAkJCQkwRjMyQkQwRjFCQjM0RjE5MDA5M0E1
N0YgLyogSGVhcEhlbHBlclBvb2wuaCAqLywKIAkJCQlDMkRBNzc4MjE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCAqLywKQEAgLTcyNzAsNiArNzI3Niw3IEBACiAJCQkJMEZGQjkyMUEx
NkQwMkVDNTAwNTVBNURCIC8qIERGR0Jhc2ljQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkJCRDk2MUM1RkYzRjUwMDIzRUYyMyAvKiBCM1NwYXJzZUNv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAv
KiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJB
IC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2
QUM3MkEgLyogREZHQmxvY2tNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtOTQx
Miw2ICs5NDE5LDcgQEAKIAkJCQlEQzYwNUI1RjFDRTI2RUE1MDA1OTM3MTggLyogUHJvZmlsZXJV
SUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzBFQ0E2MDcxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTMxODE0NTU5MTAw
MDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEQzNEMkIw
QzFEMzQzNzcwMDBCQTkxOEMgLyogSGVhcENlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZB
MkMxN0IxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkQ0REU4MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0
dXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAw
MSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICoKQEAgLTQwLDE0ICs0MCwyMSBAQCBuYW1l
c3BhY2UgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RydWN0IEdhdGhlclNvdXJjZVByb3Zp
ZGVycyA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEhhc2hTZXQ8U291
cmNlUHJvdmlkZXIqPiBzb3VyY2VQcm92aWRlcnM7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBt
dXRhYmxlIGZpZWxkIGJlY2F1ZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NjQ0CisgICAgbXV0YWJsZSBI
YXNoU2V0PFNvdXJjZVByb3ZpZGVyKj4gc291cmNlUHJvdmlkZXJzOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBtX2dsb2JhbE9iamVjdDsKIAogICAgIEdhdGhlclNvdXJjZVByb3ZpZGVycyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkgeyB9CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwp
CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFw
Q2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gSGVhcENl
bGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4o
aGVhcENlbGwpOworICAgICAgICAKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5
bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbikKICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwpAQCAtMTkxLDcgKzE5
OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVC
bG9jayogY29kZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9j
aykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2RlYnVnZ2VyID09IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gU3Rl
cHBpbmdNb2RlRW5hYmxlZCkKQEAgLTI5OCw3ICszMDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICBib29s
IG9wZXJhdG9yKCkoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAobV9kZWJ1Z2dlciA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQog
ICAgICAgICAgICAgbV9kZWJ1Z2dlci0+dG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssIG1fYnJl
YWtwb2ludCwgbV9lbmFibGVkT3JOb3QpOwpAQCAtNDc0LDcgKzQ4MSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29kZUJsb2NrKQor
ICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAmJiBtX2RlYnVnZ2Vy
ID09IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCiAgICAgICAgICAgICBj
b2RlQmxvY2stPmNsZWFyRGVidWdnZXJSZXF1ZXN0cygpOwpAQCAtNTA0LDcgKzUxMSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKENvZGVCbG9jayogY29k
ZUJsb2NrKQorICAgIGJvb2wgb3BlcmF0b3IoKShDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmIChjb2RlQmxvY2stPmhhc0RlYnVnZ2VyUmVxdWVzdHMoKSAmJiBt
X2dsb2JhbE9iamVjdCA9PSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAg
Y29kZUJsb2NrLT5jbGVhckRlYnVnZ2VyUmVxdWVzdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDMzNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NyArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gVmlzaXRzIGVhY2ggQ29kZUJsb2NrIGluIHRoZSBo
ZWFwIHVudGlsIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZQogICAgIC8vIHRvIGlu
ZGljYXRlIHRoYXQgaXQgaXMgZG9uZSBpdGVyYXRpbmcsIG9yIHVudGlsIGV2ZXJ5IENvZGVCbG9j
ayBoYXMgYmVlbgogICAgIC8vIHZpc2l0ZWQuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4gdm9pZCBpdGVyYXRlKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBpdGVyYXRlKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8mIGNvZGVC
bG9jayA6IG1fb2xkQ29kZUJsb2NrcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlU2V0LmgJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hhbmRsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJIYW5kbGUuaCIKICNpbmNsdWRlICJIYW5kbGVCbG9jay5oIgorI2luY2x1ZGUgIkhlYXBDZWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CkBAIC03
OSw3ICs4MCw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHByb3RlY3RlZEdsb2JhbE9iamVj
dENvdW50KCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hT
dHJvbmdIYW5kbGUoRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lw
U2V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hTdHJvbmdI
YW5kbGUoY29uc3QgRnVuY3RvciYsIGNvbnN0IEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+JiBza2lw
U2V0KTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhbmRsZU5vZGUgTm9kZTsKQEAgLTE4MCw3
ICsxODEsNyBAQCBpbmxpbmUgSGFuZGxlTm9kZSogSGFuZGxlTm9kZTo6bmV4dCgpCiAgICAgcmV0
dXJuIG1fbmV4dDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBIYW5kbGVT
ZXQ6OmZvckVhY2hTdHJvbmdIYW5kbGUoRnVuY3RvciYgZnVuY3RvciwgY29uc3QgSGFzaENvdW50
ZWRTZXQ8SlNDZWxsKj4mIHNraXBTZXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IEhhbmRsZVNldDo6Zm9yRWFjaFN0cm9uZ0hhbmRsZShjb25zdCBGdW5jdG9yJiBmdW5jdG9yLCBj
b25zdCBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiYgc2tpcFNldCkKIHsKICAgICBIYW5kbGVTZXQ6
Ok5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKICAgICBmb3IgKEhhbmRsZVNldDo6Tm9k
ZSogbm9kZSA9IG1fc3Ryb25nTGlzdC5iZWdpbigpOyBub2RlICE9IGVuZDsgbm9kZSA9IG5vZGUt
Pm5leHQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTIsNjEgKzI1MiwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFRo
cmVhZFN0YXRlKFZNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0cnVjdCBDb3VudCA6IHB1Ymxp
YyBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxs
KikgeyBjb3VudCgxKTsgfQotfTsKLQotc3RydWN0IENvdW50SWZHbG9iYWxPYmplY3QgOiBNYXJr
ZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAgICBpbmxpbmUgdm9pZCB2aXNpdChKU0NlbGwqIGNl
bGwpCi0gICAgewotICAgICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICghYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvdW50KDEpOwotICAgIH0KLSAgICBJdGVyYXRp
b25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi0gICAgewotICAgICAgICB2aXNpdChj
ZWxsKTsKLSAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgfQot
fTsKLQotY2xhc3MgUmVjb3JkVHlwZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5UeXBlOwotCi0gICAgUmVjb3JkVHlwZSgpOwotICAg
IEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCopOwotICAgIFJldHVyblR5cGUgcmV0
dXJuVmFsdWUoKTsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiB0eXBlTmFtZShKU0NlbGwq
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBtX3R5cGVDb3VudFNldDsKLX07
Ci0KLWlubGluZSBSZWNvcmRUeXBlOjpSZWNvcmRUeXBlKCkKLSAgICA6IG1fdHlwZUNvdW50U2V0
KHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpKQotewotfQotCi1pbmxpbmUgY29uc3Qg
Y2hhciogUmVjb3JkVHlwZTo6dHlwZU5hbWUoSlNDZWxsKiBjZWxsKQorc3RhdGljIGlubGluZSB2
b2lkIHJlY29yZFR5cGUoVHlwZUNvdW50U2V0JiBzZXQsIEpTQ2VsbCogY2VsbCkKIHsKKyAgICBj
b25zdCBjaGFyKiB0eXBlTmFtZSA9ICJbdW5rbm93bl0iOwogICAgIGNvbnN0IENsYXNzSW5mbyog
aW5mbyA9IGNlbGwtPmNsYXNzSW5mbygpOwotICAgIGlmICghaW5mbyB8fCAhaW5mby0+Y2xhc3NO
YW1lKQotICAgICAgICByZXR1cm4gIlt1bmtub3duXSI7Ci0gICAgcmV0dXJuIGluZm8tPmNsYXNz
TmFtZTsKLX0KLQotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBSZWNvcmRUeXBlOjpvcGVyYXRvcigp
KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBtX3R5cGVDb3VudFNldC0+YWRkKHR5cGVOYW1lKGNlbGwp
KTsKLSAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLX0KLQotaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IFJlY29yZFR5cGU6OnJldHVyblZhbHVlKCkKLXsK
LSAgICByZXR1cm4gV1RGTW92ZShtX3R5cGVDb3VudFNldCk7CisgICAgaWYgKGluZm8gJiYgaW5m
by0+Y2xhc3NOYW1lKQorICAgICAgICB0eXBlTmFtZSA9IGluZm8tPmNsYXNzTmFtZTsKKyAgICBz
ZXQuYWRkKHR5cGVOYW1lKTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBAIC03NjYs
OSArNzE4LDEyIEBAIHN0cnVjdCBHYXRoZXJIZWFwU25hcHNob3REYXRhIDogTWFya2VkQmwKICAg
ICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxs
KQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBoZWFwQ2VsbCwgSGVh
cENlbGw6OktpbmQga2luZCkgY29uc3QKICAgICB7Ci0gICAgICAgIGNlbGwtPm1ldGhvZFRhYmxl
KCktPmhlYXBTbmFwc2hvdChjZWxsLCBtX2J1aWxkZXIpOworICAgICAgICBpZiAoa2luZCA9PSBI
ZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSBzdGF0aWNfY2Fz
dDxKU0NlbGwqPihoZWFwQ2VsbCk7CisgICAgICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5o
ZWFwU25hcHNob3QoY2VsbCwgbV9idWlsZGVyKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKQEAgLTc5MSw5ICs3NDYsMTAgQEAg
c3RydWN0IFJlbW92ZURlYWRIZWFwU25hcHNob3ROb2RlcyA6IE1hcgogICAgIHsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kIGtpbmQp
IGNvbnN0CiAgICAgewotICAgICAgICBtX3NuYXBzaG90LnN3ZWVwQ2VsbChjZWxsKTsKKyAgICAg
ICAgaWYgKGtpbmQgPT0gSGVhcENlbGw6OkpTQ2VsbCkKKyAgICAgICAgICAgIG1fc25hcHNob3Qu
c3dlZXBDZWxsKHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCkBAIC05OTMsMjkgKzk0OSw2NCBAQCBz
aXplX3QgSGVhcDo6Y2FwYWNpdHkoKQogCiBzaXplX3QgSGVhcDo6cHJvdGVjdGVkR2xvYmFsT2Jq
ZWN0Q291bnQoKQogewotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbDxDb3VudElmR2xv
YmFsT2JqZWN0PigpOworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvckVhY2hQcm90ZWN0
ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgeworICAgICAgICAgICAgaWYgKGNl
bGwtPmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHNpemVfdCBIZWFwOjpnbG9iYWxPYmplY3RDb3VudCgpCiB7CiAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoTGl2ZUNlbGw8Q291bnRJZkdsb2JhbE9iamVjdD4oaXRlcmF0aW9uU2NvcGUpOworICAg
IHNpemVfdCByZXN1bHQgPSAwOworICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAor
ICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAgICAgWyZdIChIZWFwQ2VsbCogaGVhcENlbGws
IEhlYXBDZWxsOjpLaW5kIGtpbmQpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBp
ZiAoa2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gc3RhdGlj
X2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpOworICAgICAgICAgICAgaWYgKGNlbGwtPmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoY2VsbCktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0Kys7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
KyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3Rl
Y3RlZE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENlbGw8Q291
bnQ+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yRWFjaFByb3RlY3RlZENlbGwo
CisgICAgICAgIFsmXSAoSlNDZWxsKikgeworICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHJldHVybiBmb3JF
YWNoUHJvdGVjdGVkQ2VsbDxSZWNvcmRUeXBlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
Q291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAg
IGZvckVhY2hQcm90ZWN0ZWRDZWxsKAorICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgeworICAg
ICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBjZWxsKTsKKyAgICAgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2Jq
ZWN0VHlwZUNvdW50cygpCiB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlv
blNjb3BlIGl0ZXJhdGlvblNjb3BlKCp0aGlzKTsKLSAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoTGl2ZUNlbGw8UmVjb3JkVHlwZT4oaXRlcmF0aW9uU2NvcGUpOworICAgIG1fb2JqZWN0
U3BhY2UuZm9yRWFjaExpdmVDZWxsKAorICAgICAgICBpdGVyYXRpb25TY29wZSwKKyAgICAgICAg
WyZdIChIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQga2luZCkgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpCisgICAgICAg
ICAgICAgICAgcmVjb3JkVHlwZSgqcmVzdWx0LCBzdGF0aWNfY2FzdDxKU0NlbGwqPihjZWxsKSk7
CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAg
fSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVBbGxDb2RlQmxv
Y2tzKCkKQEAgLTEzMDAsOSArMTI5MSwxMSBAQCBzdHJ1Y3QgTWFya2VkQmxvY2tTbmFwc2hvdEZ1
bmN0b3IgOiBwdWJsCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRC
bG9jayogYmxvY2spIHsgbV9ibG9ja3NbbV9pbmRleCsrXSA9IGJsb2NrOyB9CisgICAgdm9pZCBv
cGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgY29uc3QgeyBtX2Jsb2Nrc1ttX2luZGV4Kytd
ID0gYmxvY2s7IH0KIAotICAgIHNpemVfdCBtX2luZGV4OworICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGEgbXV0YWJsZSBmaWVsZCBiZWNhdWUgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgIG11dGFi
bGUgc2l6ZV90IG1faW5kZXg7CiAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4mIG1fYmxvY2tzOwog
fTsKIApAQCAtMTU3Myw3ICsxNTY2LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZUlm
Tm90RG9uZVJlYwogCiBjbGFzcyBab21iaWZ5IDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVu
Y3RvciB7CiBwdWJsaWM6Ci0gICAgaW5saW5lIHZvaWQgdmlzaXQoSlNDZWxsKiBjZWxsKQorICAg
IGlubGluZSB2b2lkIHZpc2l0KEhlYXBDZWxsKiBjZWxsKSBjb25zdAogICAgIHsKICAgICAgICAg
dm9pZCoqIGN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PHZvaWQqKj4oY2VsbCk7CiAKQEAgLTE1
ODYsNyArMTU3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZm9yICg7IGN1cnJlbnQgPCBsaW1pdDsg
Y3VycmVudCsrKQogICAgICAgICAgICAgKmN1cnJlbnQgPSB6b21iaWZpZWRCaXRzOwogICAgIH0K
LSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCisgICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSGVhcENlbGwqIGNlbGwsIEhlYXBDZWxsOjpLaW5kKSBjb25z
dAogICAgIHsKICAgICAgICAgdmlzaXQoY2VsbCk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwpAQCAtMTU5OCw3ICsxNTkxLDcgQEAgdm9pZCBIZWFwOjp6b21iaWZ5
RGVhZE9iamVjdHMoKQogICAgIC8vIFN3ZWVwIG5vdyBiZWNhdXNlIGRlc3RydWN0b3JzIHdpbGwg
Y3Jhc2ggb25jZSB3ZSdyZSB6b21iaWZpZWQuCiAgICAgbV9vYmplY3RTcGFjZS56b21iaWZ5U3dl
ZXAoKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwotICAg
IG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPFpvbWJpZnk+KGl0ZXJhdGlvblNjb3BlKTsK
KyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbChpdGVyYXRpb25TY29wZSwgWm9tYmlm
eSgpKTsKIH0KIAogdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0NlbGwqIGNl
bGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDMzNjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
NSw5ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVy
Kj4mIG1hcmtMaXN0U2V0KCk7CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5jdG9y
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgZm9yRWFjaENvZGVCbG9jayhGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoUHJvdGVjdGVkQ2VsbChjb25zdCBGdW5jdG9yJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQ29kZUJsb2NrKGNv
bnN0IEZ1bmN0b3ImKTsKIAogICAgIEhhbmRsZVNldCogaGFuZGxlU2V0KCkgeyByZXR1cm4gJm1f
aGFuZGxlU2V0OyB9CiAgICAgSGFuZGxlU3RhY2sqIGhhbmRsZVN0YWNrKCkgeyByZXR1cm4gJm1f
aGFuZGxlU3RhY2s7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SGVhcENlbGwuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEhlYXBDZWxsOjpLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7
CisgICAgY2FzZSBIZWFwQ2VsbDo6SlNDZWxsOgorICAgICAgICBvdXQucHJpbnQoIkpTQ2VsbCIp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBIZWFwQ2VsbDo6QXV4aWxpYXJ5OgorICAgICAg
ICBvdXQucHJpbnQoIkF1eGlsaWFyeSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwQ2VsbCB7Citw
dWJsaWM6CisgICAgZW51bSBLaW5kIDogaW50OF90IHsKKyAgICAgICAgSlNDZWxsLAorICAgICAg
ICBBdXhpbGlhcnkKKyAgICB9OworICAgIAorICAgIEhlYXBDZWxsKCkgeyB9CisgICAgCisgICAg
dm9pZCB6YXAoKSB7ICpyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdCoqPih0aGlzKSA9IDA7IH0K
KyAgICBib29sIGlzWmFwcGVkKCkgY29uc3QgeyByZXR1cm4gISpyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdCogY29uc3QqPih0aGlzKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgSlNDOjpIZWFwQ2VsbDo6S2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXBy
ZWNhdGVkUmVwb3J0RXh0cmFNCiAgICAgICAgIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNs
b3dDYXNlKHNpemUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgLy8gV2UgZG9uJ3Qga25vdyB0aGUgZnVsbCBzZXQgb2Yg
Q29kZUJsb2NrcyB1bnRpbCBjb21waWxhdGlvbiBoYXMgdGVybWluYXRlZC4KICAgICBjb21wbGV0
ZUFsbEpJVFBsYW5zKCk7CkBAIC0xNzMsMTkgKzE3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBICiAgICAgcmV0dXJuIG1fY29kZUJsb2Nrcy5pdGVyYXRlPEZ1
bmN0b3I+KGZ1bmN0b3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbChG
dW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb3RlY3RlZFZhbHVlcykKICAgICAgICAgZnVuY3Rvcihw
YWlyLmtleSk7CiAgICAgbV9oYW5kbGVTZXQuZm9yRWFjaFN0cm9uZ0hhbmRsZShmdW5jdG9yLCBt
X3Byb3RlY3RlZFZhbHVlcyk7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6
UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpCi17Ci0gICAgRnVuY3RvciBm
dW5jdG9yOwotICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVkQ2VsbChmdW5jdG9yKTsKIH0KIAog
aW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAko
cmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRp
c3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgU3RvcmFnZVN0
YXRpc3RpY3MgOiBwdWJsaWMgTWFya2VkQgogcHVibGljOgogICAgIFN0b3JhZ2VTdGF0aXN0aWNz
KCk7CiAKLSAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShKU0NlbGwqKTsKKyAgICBJdGVy
YXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCosIEhlYXBDZWxsOjpLaW5kKSBjb25zdDsK
IAogICAgIHNpemVfdCBvYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCk7CiAgICAgc2l6
ZV90IG9iamVjdENvdW50KCk7CkBAIC0xOTAsOSArMTkwLDEzIEBAIGlubGluZSB2b2lkIFN0b3Jh
Z2VTdGF0aXN0aWNzOjp2aXNpdChKU0MKICAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3Qt
PnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4pOyAKIH0KIAotaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBTdG9yYWdlU3Rh
dGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitpbmxpbmUgSXRlcmF0aW9uU3RhdHVz
IFN0b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBIZWFwQ2VsbDo6
S2luZCBraW5kKSBjb25zdAogewotICAgIHZpc2l0KGNlbGwpOworICAgIGlmIChraW5kID09IEhl
YXBDZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29uc3RfY2FzdCBleGlz
dHMgYmVjYXVzZSB0aGlzIGlzbid0IGEgQysrIGxhbWJkYS4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY0NAorICAgICAgICBjb25zdF9jYXN0
PFN0b3JhZ2VTdGF0aXN0aWNzKj4odGhpcyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNl
bGwpKTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBWZXJpZmllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVyLmNwcAkocmV2
aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFZlcmlmaWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCwxMyBAQCBzdHJ1Y3QgR2F0aGVyTGl2
ZU9iakZ1bmN0b3IgOiBNYXJrZWRCbG9jCiAgICAgICAgIG1fbGlzdC5saXZlT2JqZWN0cy5hcHBl
bmQoZGF0YSk7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxs
KiBjZWxsKQorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxsKiBjZWxsLCBI
ZWFwQ2VsbDo6S2luZCBraW5kKSBjb25zdAogICAgIHsKLSAgICAgICAgdmlzaXQoY2VsbCk7Cisg
ICAgICAgIGlmIChraW5kID09IEhlYXBDZWxsOjpKU0NlbGwpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhpc3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1i
ZGEuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NjQ0CisgICAgICAgICAgICBjb25zdF9jYXN0PEdhdGhlckxpdmVPYmpGdW5jdG9yKj4o
dGhpcyktPnZpc2l0KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg2LDcgKzE4NiwxMCBAQCBNYXJrZWRC
bG9jayogTWFya2VkQWxsb2NhdG9yOjphbGxvY2F0ZUJsCiAKICAgICBzaXplX3QgY2VsbFNpemUg
PSBtX2NlbGxTaXplID8gbV9jZWxsU2l6ZSA6IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJr
ZWRCbG9jazo6YXRvbVNpemU+KGJ5dGVzKTsKIAotICAgIHJldHVybiBNYXJrZWRCbG9jazo6Y3Jl
YXRlKCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVlZHNEZXN0cnVjdGlv
bik7CisgICAgLy8gRklYTUU6IFN1cHBvcnQgYWxsb2NhdGluZyBzdG9yYWdlIGluIG1hcmtlZCBi
bG9ja3MuIFRoaXMgd291bGQgbWVhbiB0aGF0IGFsbG9jYXRlQmxvY2soKQorICAgIC8vIHRha2Vz
IGEgSGVhcENlbGw6OktpbmQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTY1OAorICAgIHJldHVybiBNYXJr
ZWRCbG9jazo6Y3JlYXRlKCptX2hlYXAsIHRoaXMsIGJsb2NrU2l6ZSwgY2VsbFNpemUsIG1fbmVl
ZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCk7CiB9CiAKIHZvaWQgTWFya2VkQWxsb2Nh
dG9yOjphZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yMzMsMTUgKzIzNiwxMyBAQCB2
b2lkIE1hcmtlZEFsbG9jYXRvcjo6cmVzZXQoKQogICAgIH0KIH0KIAotc3RydWN0IExhc3RDaGFu
Y2VUb0ZpbmFsaXplIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OyB9Ci19OwotCiB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ewogICAgIG1fYmxvY2tMaXN0LmFwcGVuZChtX3JldGlyZWRCbG9ja3MpOwotICAgIExhc3RDaGFu
Y2VUb0ZpbmFsaXplIGZ1bmN0b3I7Ci0gICAgZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZv
ckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAg
ICAgIGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJik7
CiAgICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVtb3Zl
QmxvY2soTWFya2VkQmxvY2sqKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBpbmxpbmUgdm9pZCBNYXJr
ZWRBbGxvY2F0b3I6OnJlc3VtZUFsbG9jCiAgICAgbV9sYXN0QWN0aXZlQmxvY2sgPSAwOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkQWxsb2NhdG9y
Ojpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OmZvckVhY2hCbG9jayhjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQogewogICAgIE1hcmtlZEJsb2NrKiBuZXh0OwogICAgIGZvciAoTWFya2Vk
QmxvY2sqIGJsb2NrID0gbV9ibG9ja0xpc3QuaGVhZCgpOyBibG9jazsgYmxvY2sgPSBuZXh0KSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZp
c2lvbiAyMDMzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
YXRpYyBjb25zdCBib29sIGNvbXB1dGVCYWxhbmNlID0gZmFsc2U7CiBzdGF0aWMgc2l6ZV90IGJh
bGFuY2U7CiAKLU1hcmtlZEJsb2NrKiBNYXJrZWRCbG9jazo6Y3JlYXRlKEhlYXAmIGhlYXAsIE1h
cmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6
ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVh
dGUoSGVhcCYgaGVhcCwgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjYXBhY2l0
eSwgc2l6ZV90IGNlbGxTaXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5k
IGNlbGxLaW5kKQogewogICAgIGlmIChjb21wdXRlQmFsYW5jZSkgewogICAgICAgICBiYWxhbmNl
Kys7CiAgICAgICAgIGlmICghKGJhbGFuY2UgJSAxMCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJN
YXJrZWRCbG9jayBCYWxhbmNlOiAiLCBiYWxhbmNlLCAiXG4iKTsKICAgICB9Ci0gICAgTWFya2Vk
QmxvY2sqIGJsb2NrID0gbmV3IChOb3ROdWxsLCBmYXN0QWxpZ25lZE1hbGxvYyhibG9ja1NpemUs
IGNhcGFjaXR5KSkgTWFya2VkQmxvY2soYWxsb2NhdG9yLCBjYXBhY2l0eSwgY2VsbFNpemUsIG5l
ZWRzRGVzdHJ1Y3Rpb24pOworICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IG5ldyAoTm90TnVsbCwg
ZmFzdEFsaWduZWRNYWxsb2MoYmxvY2tTaXplLCBjYXBhY2l0eSkpIE1hcmtlZEJsb2NrKGFsbG9j
YXRvciwgY2FwYWNpdHksIGNlbGxTaXplLCBuZWVkc0Rlc3RydWN0aW9uLCBjZWxsS2luZCk7CiAg
ICAgaGVhcC5kaWRBbGxvY2F0ZUJsb2NrKGNhcGFjaXR5KTsKICAgICByZXR1cm4gYmxvY2s7CiB9
CkBAIC02MCwxMiArNjAsMTMgQEAgdm9pZCBNYXJrZWRCbG9jazo6ZGVzdHJveShIZWFwJiBoZWFw
LCBNYQogICAgIGhlYXAuZGlkRnJlZUJsb2NrKGNhcGFjaXR5KTsKIH0KIAotTWFya2VkQmxvY2s6
Ok1hcmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHks
IHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKQorTWFya2VkQmxvY2s6Ok1h
cmtlZEJsb2NrKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6S2luZCBjZWxs
S2luZCkKICAgICA6IERvdWJseUxpbmtlZExpc3ROb2RlPE1hcmtlZEJsb2NrPigpCiAgICAgLCBt
X2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9tU2l6ZSAtIDEpIC8gYXRvbVNpemUpCiAgICAg
LCBtX2VuZEF0b20oKGFsbG9jYXRvci0+Y2VsbFNpemUoKSA/IGF0b21zUGVyQmxvY2sgLSBtX2F0
b21zUGVyQ2VsbCA6IGZpcnN0QXRvbSgpKSArIDEpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5
KQogICAgICwgbV9uZWVkc0Rlc3RydWN0aW9uKG5lZWRzRGVzdHJ1Y3Rpb24pCisgICAgLCBtX2Nl
bGxLaW5kKGNlbGxLaW5kKQogICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgICwgbV9z
dGF0ZShOZXcpIC8vIEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCiAgICAgLCBtX3dlYWtT
ZXQoYWxsb2NhdG9yLT5oZWFwKCktPnZtKCksICp0aGlzKQpAQCAtNzQsMTcgKzc1LDE5IEBAIE1h
cmtlZEJsb2NrOjpNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IKICAgICBIRUFQX0xPR19CTE9D
S19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
Y2FsbERlc3RydWN0b3IoSlNDZWxsKiBjZWxsKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNh
bGxEZXN0cnVjdG9yKEhlYXBDZWxsKiBjZWxsKQogewogICAgIC8vIEEgcHJldmlvdXMgZWFnZXIg
c3dlZXAgbWF5IGFscmVhZHkgaGF2ZSBydW4gY2VsbCdzIGRlc3RydWN0b3IuCiAgICAgaWYgKGNl
bGwtPmlzWmFwcGVkKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0NlbGwqIGpzQ2Vs
bCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGNlbGwpOwogCi0gICAgQVNTRVJUKGNlbGwtPnN0cnVj
dHVyZUlEKCkpOwotICAgIGlmIChjZWxsLT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFN0cnVjdHVyZUlz
SW1tb3J0YWwpCi0gICAgICAgIGNlbGwtPnN0cnVjdHVyZSgqdm0oKSktPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS5kZXN0cm95KGNlbGwpOworICAgIEFTU0VSVChqc0NlbGwtPnN0cnVjdHVyZUlE
KCkpOworICAgIGlmIChqc0NlbGwtPmlubGluZVR5cGVGbGFncygpICYgU3RydWN0dXJlSXNJbW1v
cnRhbCkKKyAgICAgICAganNDZWxsLT5zdHJ1Y3R1cmUoKnZtKCkpLT5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGVsc2UKLSAgICAgICAganNDYXN0PEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Kj4oY2VsbCktPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZXN0cm95
KGNlbGwpOworICAgICAgICBqc0Nhc3Q8SlNEZXN0cnVjdGlibGVPYmplY3QqPihqc0NlbGwpLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVzdHJveShqc0NlbGwpOwogICAgIGNlbGwtPnphcCgp
OwogfQogCkBAIC0xMDMsNyArMTA2LDcgQEAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpzcGVjaQogICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBNYXJrZWQgJiYgKG1fbWFya3Mu
Z2V0KGkpIHx8IChtX25ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRl
cnByZXRfY2FzdF9wdHI8SlNDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICBIZWFwQ2VsbCog
Y2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOwogCiAg
ICAgICAgIGlmIChjYWxsRGVzdHJ1Y3RvcnMgJiYgYmxvY2tTdGF0ZSAhPSBOZXcpCiAgICAgICAg
ICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxsKTsKQEAgLTE3MSw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEpTQ2VsbCogY2Vs
bCkKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENl
bGw6OktpbmQpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoTWFya2VkQmxvY2s6OmJsb2Nr
Rm9yKGNlbGwpID09IG1fYmxvY2spOwogICAgICAgICBtX2Jsb2NrLT5zZXROZXdseUFsbG9jYXRl
ZChjZWxsKTsKQEAgLTIxMyw3ICsyMTYsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpzdG9wQWxsb2Nh
dGluZyhjb25zdCBGCiAgICAgRnJlZUNlbGwqIG5leHQ7CiAgICAgZm9yIChGcmVlQ2VsbCogY3Vy
cmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBj
dXJyZW50LT5uZXh0OwotICAgICAgICByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGN1cnJlbnQp
LT56YXAoKTsKKyAgICAgICAgaWYgKG1fbmVlZHNEZXN0cnVjdGlvbikKKyAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8SGVhcENlbGwqPihjdXJyZW50KS0+emFwKCk7CiAgICAgICAgIGNsZWFy
TmV3bHlBbGxvY2F0ZWQoY3VycmVudCk7CiAgICAgfQogICAgIApAQCAtMjkwLDcgKzI5NCw4IEBA
IHZvaWQgTWFya2VkQmxvY2s6OmRpZFJldGlyZUJsb2NrKGNvbnN0IEYKICAgICBGcmVlQ2VsbCog
bmV4dDsKICAgICBmb3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVu
dCA9IG5leHQpIHsKICAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQ7Ci0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY3VycmVudCktPnphcCgpOworICAgICAgICBpZiAobV9uZWVk
c0Rlc3RydWN0aW9uKQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxIZWFwQ2VsbCo+KGN1
cnJlbnQpLT56YXAoKTsKICAgICB9CiAKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNp
b24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBNYXJrZWRCbG9ja19oCiAj
ZGVmaW5lIE1hcmtlZEJsb2NrX2gKIAorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAi
SGVhcE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkl0ZXJhdGlvblN0YXR1cy5oIgogI2luY2x1ZGUg
IldlYWtTZXQuaCIKQEAgLTUzLDggKzU0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB0eXBl
ZGVmIHVpbnRwdHJfdCBCaXRzOwogCi0gICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsK
LSAgICAKICAgICAvLyBBIG1hcmtlZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIg
Zm9yIGhlYXAtYWxsb2NhdGVkIG9iamVjdHMuCiAgICAgLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVk
IHdpdGhpbiBjZWxscyBvZiB0aGUgbWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogICAgIC8vIG1h
cmtlZCBibG9jaywgYWxsIGNlbGxzIGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVy
IHRoYW4gdGhlCkBAIC05OSwxNCArOTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICB0eXBlZGVmIHNpemVfdCBSZXR1cm5UeXBlOwogCiAgICAgICAgICAgICBDb3VudEZ1bmN0b3Io
KSA6IG1fY291bnQoMCkgeyB9Ci0gICAgICAgICAgICB2b2lkIGNvdW50KHNpemVfdCBjb3VudCkg
eyBtX2NvdW50ICs9IGNvdW50OyB9Ci0gICAgICAgICAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCkgeyByZXR1cm4gbV9jb3VudDsgfQorICAgICAgICAgICAgdm9pZCBjb3VudChzaXplX3QgY291
bnQpIGNvbnN0IHsgbV9jb3VudCArPSBjb3VudDsgfQorICAgICAgICAgICAgUmV0dXJuVHlwZSBy
ZXR1cm5WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KIAogICAgICAgICBwcml2YXRl
OgotICAgICAgICAgICAgUmV0dXJuVHlwZSBtX2NvdW50OworICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgbXV0YWJsZSBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgZnVuY3RvciByYXRoZXIgdGhh
biBDKysgbGFtYmRhcy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgICAgIG11dGFibGUgUmV0dXJuVHlwZSBtX2Nv
dW50OwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBNYXJrZWRCbG9jayogY3JlYXRlKEhl
YXAmLCBNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBjZWxsU2l6ZSwg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBjcmVh
dGUoSGVhcCYsIE1hcmtlZEFsbG9jYXRvciosIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IGNlbGxT
aXplLCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpLaW5kKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShIZWFwJiwgTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMg
Ym9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKQEAgLTE0NywxNiArMTQ4LDE3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtp
bmQoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2Fw
YWNpdHkoKTsKIAogICAgICAgICBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
Ym9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc0xpdmUo
Y29uc3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAg
ICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgaXNBdG9t
KGNvbnN0IHZvaWQqKTsKLSAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29u
c3QgSlNDZWxsKik7CisgICAgICAgIGJvb2wgaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0
IEhlYXBDZWxsKik7CiAgICAgICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lkKik7CiAKQEAgLTE3MCw5ICsxNzIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRSZXRpcmVCbG9jayhjb25zdCBGcmVlTGlz
dCYpOwogICAgICAgICB2b2lkIHdpbGxSZW1vdmVCbG9jaygpOwogCi0gICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoRnVuY3RvciYp
OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZv
ckVhY2hMaXZlQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKEZ1bmN0b3ImKTsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChj
b25zdCBGdW5jdG9yJik7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKKyAgICAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwo
Y29uc3QgRnVuY3RvciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTE4MiwxMCArMTg0LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHR5cGVkZWYgY2hhciBBdG9tW2F0b21TaXpl
XTsKIAotICAgICAgICBNYXJrZWRCbG9jayhNYXJrZWRBbGxvY2F0b3IqLCBzaXplX3QgY2FwYWNp
dHksIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICAgICAgTWFy
a2VkQmxvY2soTWFya2VkQWxsb2NhdG9yKiwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OktpbmQpOwogICAgICAgICBBdG9t
KiBhdG9tcygpOwogICAgICAgICBzaXplX3QgYXRvbU51bWJlcihjb25zdCB2b2lkKik7Ci0gICAg
ICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlNDZWxsKik7CisgICAgICAgIHZvaWQgY2FsbERlc3Ry
dWN0b3IoSGVhcENlbGwqKTsKICAgICAgICAgdGVtcGxhdGU8QmxvY2tTdGF0ZSwgU3dlZXBNb2Rl
LCBib29sIGNhbGxEZXN0cnVjdG9ycz4gRnJlZUxpc3Qgc3BlY2lhbGl6ZWRTd2VlcCgpOwogICAg
ICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fcHJldjsKQEAgLTE5OCw2ICsyMDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICAgICAgYm9v
bCBtX25lZWRzRGVzdHJ1Y3Rpb247CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIG1fY2VsbEtpbmQ7
CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3I7CiAgICAgICAgIEJsb2NrU3Rh
dGUgbV9zdGF0ZTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CkBAIC0zMDMsNiArMzA2LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOwog
ICAgIH0KIAorICAgIGlubGluZSBIZWFwQ2VsbDo6S2luZCBNYXJrZWRCbG9jazo6Y2VsbEtpbmQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2VsbEtpbmQ7CisgICAgfQorCiAgICAg
aW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
bWFya0NvdW50KCkgKiBjZWxsU2l6ZSgpOwpAQCAtMzYzLDEzICszNzEsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkK
KyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gUmV0
aXJlZCB8fCBtX3N0YXRlID09IE1hcmtlZCk7CiAgICAgICAgIHJldHVybiBtX21hcmtzLmdldChh
dG9tTnVtYmVyKGNlbGwpKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBpc05ld2x5QWxsb2NhdGVk
KGNlbGwpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNv
bnN0IEpTQ2VsbCogY2VsbCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAg
ICAgICAgIGNhc2UgQWxsb2NhdGVkOgpAQCAtNDA3LDQwICs0MTUsNDMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgICAgICBpZiAoIWlzQXRvbShwKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIGlzTGl2ZShzdGF0aWNfY2FzdDxjb25zdCBKU0NlbGwqPihw
KSk7CisgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihw
KSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFy
a2VkQmxvY2s6OmZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgeworICAg
ICAgICBIZWFwQ2VsbDo6S2luZCBraW5kID0gbV9jZWxsS2luZDsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7
Ci0gICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSByZWludGVycHJldF9jYXN0X3B0cjxKU0NlbGwq
PigmYXRvbXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRp
b25TdGF0dXM6OkRvbmUpCisgICAgICAgICAgICBIZWFwQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPEhlYXBDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICAgICAgaWYgKGZ1bmN0
b3IoY2VsbCwga2luZCkgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hM
aXZlQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQg
PSBtX2NlbGxLaW5kOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBt
X2VuZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2Vs
bCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAg
ICAgIEhlYXBDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRv
bXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAoIWlzTGl2ZShjZWxsKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCkgPT0gSXRlcmF0aW9u
U3RhdHVzOjpEb25lKQorICAgICAgICAgICAgaWYgKGZ1bmN0b3IoY2VsbCwga2luZCkgPT0gSXRl
cmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJ
dGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OmZvckVhY2hEZWFkQ2VsbChGdW5jdG9yJiBmdW5j
dG9yKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3Rh
dHVzIE1hcmtlZEJsb2NrOjpmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7CisgICAgICAgIEhlYXBDZWxsOjpLaW5kIGtpbmQgPSBtX2NlbGxLaW5kOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0gbV9hdG9t
c1BlckNlbGwpIHsKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPEpTQ2VsbCo+KCZhdG9tcygpW2ldKTsKKyAgICAgICAgICAgIEhlYXBDZWxsKiBjZWxsID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8SGVhcENlbGwqPigmYXRvbXMoKVtpXSk7CiAgICAgICAgICAg
ICBpZiAoaXNMaXZlKGNlbGwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAoZnVuY3RvcihjZWxsKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCisgICAgICAg
ICAgICBpZiAoZnVuY3RvcihjZWxsLCBraW5kKSA9PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAo
QykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0y
NywzMSArMjcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEZyZWUgOiBNYXJrZWRC
bG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIEZyZWUoTWFya2VkU3BhY2UmIHNwYWNlKSA6IG1fbWFy
a2VkU3BhY2Uoc3BhY2UpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxv
Y2spIHsgbV9tYXJrZWRTcGFjZS5mcmVlQmxvY2soYmxvY2spOyB9Ci1wcml2YXRlOgotICAgIE1h
cmtlZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3RydWN0IEZyZWVPclNocmluayA6IE1h
cmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgRnJlZU9yU2hyaW5rKE1hcmtlZFNwYWNlJiBz
cGFjZSkgOiBtX21hcmtlZFNwYWNlKHNwYWNlKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFy
a2VkQmxvY2sqIGJsb2NrKSB7IG1fbWFya2VkU3BhY2UuZnJlZU9yU2hyaW5rQmxvY2soYmxvY2sp
OyB9Ci1wcml2YXRlOgotICAgIE1hcmtlZFNwYWNlJiBtX21hcmtlZFNwYWNlOwotfTsKLQotc3Ry
dWN0IFZpc2l0V2Vha1NldCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgVmlzaXRX
ZWFrU2V0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKSA6IG1faGVhcFJvb3RWaXNp
dG9yKGhlYXBSb290VmlzaXRvcikgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
KiBibG9jaykgeyBibG9jay0+dmlzaXRXZWFrU2V0KG1faGVhcFJvb3RWaXNpdG9yKTsgfQotcHJp
dmF0ZToKLSAgICBIZWFwUm9vdFZpc2l0b3ImIG1faGVhcFJvb3RWaXNpdG9yOwotfTsKLQotc3Ry
dWN0IFJlYXBXZWFrU2V0IDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9w
ZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGJsb2NrLT5yZWFwV2Vha1NldCgpOyB9Ci19
OwotCiBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKICAgICA6IG1faGVhcCho
ZWFwKQogICAgICwgbV9jYXBhY2l0eSgwKQpAQCAtNzMsMjUgKzQ4LDI5IEBAIE1hcmtlZFNwYWNl
OjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQogCiBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNlKCkK
IHsKLSAgICBGcmVlIGZyZWUoKnRoaXMpOwotICAgIGZvckVhY2hCbG9jayhmcmVlKTsKKyAgICBm
b3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAg
ICAgICBmcmVlQmxvY2soYmxvY2spOworICAgICAgICB9KTsKICAgICBBU1NFUlQoIW1fYmxvY2tz
LnNldCgpLnNpemUoKSk7CiB9CiAKLXN0cnVjdCBMYXN0Q2hhbmNlVG9GaW5hbGl6ZSB7Ci0gICAg
dm9pZCBvcGVyYXRvcigpKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7IGFsbG9jYXRvci5s
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyB9Ci19OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgc3RvcEFsbG9jYXRpbmcoKTsKLSAgICBmb3JFYWNoQWxs
b2NhdG9yPExhc3RDaGFuY2VUb0ZpbmFsaXplPigpOworICAgIGZvckVhY2hBbGxvY2F0b3IoCisg
ICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKKyAgICAgICAgICAgIGFs
bG9jYXRvci5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBN
YXJrZWRTcGFjZTo6c3dlZXAoKQogewogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNo
U3dlZXBpbmcoKTsKLSAgICBmb3JFYWNoQmxvY2s8U3dlZXA+KCk7CisgICAgZm9yRWFjaEJsb2Nr
KAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgYmxvY2st
PnN3ZWVwKCk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp6b21iaWZ5U3dl
ZXAoKQpAQCAtOTksNyArNzgsMTEgQEAgdm9pZCBNYXJrZWRTcGFjZTo6em9tYmlmeVN3ZWVwKCkK
ICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZygiWm9tYmlmeWluZyBz
d2VlcC4uLiIpOwogICAgIG1faGVhcC0+c3dlZXBlcigpLT53aWxsRmluaXNoU3dlZXBpbmcoKTsK
LSAgICBmb3JFYWNoQmxvY2s8Wm9tYmlmeVN3ZWVwPigpOworICAgIGZvckVhY2hCbG9jaygKKyAg
ICAgICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgIGlmIChibG9jay0+
bmVlZHNTd2VlcGluZygpKQorICAgICAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOworICAgICAg
ICB9KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVzZXRBbGxvY2F0b3JzKCkKQEAgLTEyMiwx
MiArMTA1LDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiAKIHZvaWQg
TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0
b3IpCiB7Ci0gICAgVmlzaXRXZWFrU2V0IHZpc2l0V2Vha1NldChoZWFwUm9vdFZpc2l0b3IpOwog
ICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlvbikg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2JqZWN0
cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHZpc2l0V2Vha1NldChtX2Jsb2Nrc1dpdGhOZXdP
YmplY3RzW2ldKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrKHZpc2l0V2Vha1Nl
dCk7CisgICAgICAgICAgICBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzW2ldLT52aXNpdFdlYWtTZXQo
aGVhcFJvb3RWaXNpdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3JFYWNoQmxvY2soCisg
ICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAgICAgICAgIGJs
b2NrLT52aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIH0pOworICAg
IH0KIH0KIAogdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKQEAgLTEzNSwxOSArMTIx
LDE2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBXZWFrU2V0cygpCiAgICAgaWYgKG1faGVhcC0+
b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9uKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmplY3RzLnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+cmVhcFdlYWtTZXQoKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPFJlYXBXZWFrU2V0PigpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hBbGxvY2F0
b3IoKQotewotICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICBmb3JFYWNoQWxsb2NhdG9yKGZ1bmN0
b3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsm
XSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICAgICAgYmxvY2stPnJlYXBXZWFr
U2V0KCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPgotdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihGdW5jdG9yJiBmdW5j
dG9yKQordm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaEFsbG9jYXRvcihjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gcHJlY2lzZVN0ZXA7IGNlbGxT
aXplIDw9IHByZWNpc2VDdXRvZmY7IGNlbGxTaXplICs9IHByZWNpc2VTdGVwKSB7CiAgICAgICAg
IGZ1bmN0b3IoYWxsb2NhdG9yRm9yKGNlbGxTaXplKSk7CkBAIC0xNjMsMjQgKzE0NiwyMiBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0CiAgICAgZnVuY3RvcihtX2Rl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvcik7CiB9CiAKLXN0cnVjdCBTdG9wQWxsb2NhdGlu
Z0Z1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
cikgeyBhbGxvY2F0b3Iuc3RvcEFsbG9jYXRpbmcoKTsgfQotfTsKLQogdm9pZCBNYXJrZWRTcGFj
ZTo6c3RvcEFsbG9jYXRpbmcoKQogewogICAgIEFTU0VSVCghaXNJdGVyYXRpbmcoKSk7Ci0gICAg
Zm9yRWFjaEFsbG9jYXRvcjxTdG9wQWxsb2NhdGluZ0Z1bmN0b3I+KCk7CisgICAgZm9yRWFjaEFs
bG9jYXRvcigKKyAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeworICAg
ICAgICAgICAgYWxsb2NhdG9yLnN0b3BBbGxvY2F0aW5nKCk7CisgICAgICAgIH0pOwogfQogCi1z
dHJ1Y3QgUmVzdW1lQWxsb2NhdGluZ0Z1bmN0b3IgewotICAgIHZvaWQgb3BlcmF0b3IoKShNYXJr
ZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyBhbGxvY2F0b3IucmVzdW1lQWxsb2NhdGluZygpOyB9
Ci19OwotCiB2b2lkIE1hcmtlZFNwYWNlOjpyZXN1bWVBbGxvY2F0aW5nKCkKIHsKICAgICBBU1NF
UlQoaXNJdGVyYXRpbmcoKSk7Ci0gICAgZm9yRWFjaEFsbG9jYXRvcjxSZXN1bWVBbGxvY2F0aW5n
RnVuY3Rvcj4oKTsKKyAgICBmb3JFYWNoQWxsb2NhdG9yKAorICAgICAgICBbJl0gKE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yKSB7CisgICAgICAgICAgICBhbGxvY2F0b3IucmVzdW1lQWxsb2Nh
dGluZygpOworICAgICAgICB9KTsKIH0KIAogYm9vbCBNYXJrZWRTcGFjZTo6aXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpCkBAIC0yMjQsOCArMjA1LDEwIEBAIHZvaWQgTWFya2VkU3BhY2U6OmZy
ZWVPclNocmlua0Jsb2NrKE1hcmsKIAogdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIHsKLSAg
ICBGcmVlT3JTaHJpbmsgZnJlZU9yU2hyaW5rKCp0aGlzKTsKLSAgICBmb3JFYWNoQmxvY2soZnJl
ZU9yU2hyaW5rKTsKKyAgICBmb3JFYWNoQmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sq
IGJsb2NrKSB7CisgICAgICAgICAgICBmcmVlT3JTaHJpbmtCbG9jayhibG9jayk7CisgICAgICAg
IH0pOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkSW5CbG9jayhNYXJrZWRC
bG9jayogYmxvY2spCkBAIC0yMzUsMTYgKzIxOCw2IEBAIHN0YXRpYyB2b2lkIGNsZWFyTmV3bHlB
bGxvY2F0ZWRJbkJsb2NrKE0KICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogfQog
Ci1zdHJ1Y3QgQ2xlYXJOZXdseUFsbG9jYXRlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+Y2xlYXJO
ZXdseUFsbG9jYXRlZCgpOyB9Ci19OwotCi0jaWZuZGVmIE5ERUJVRwotc3RydWN0IFZlcmlmeU5l
d2x5QWxsb2NhdGVkIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJh
dG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxv
Y2F0ZWQoKSk7IH0KLX07Ci0jZW5kaWYKLQogdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFs
bG9jYXRlZCgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsr
aSkgewpAQCAtMjYwLDE5ICsyMzMsMjMgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFs
bG9jYXRlZCgpCiAgICAgLy8gV2UgaGF2ZSB0byBpdGVyYXRlIGFsbCBvZiB0aGUgYmxvY2tzIGlu
IHRoZSBsYXJnZSBhbGxvY2F0b3JzIGJlY2F1c2UgdGhleSBhcmUKICAgICAvLyBjYW5vbmljYWxp
emVkIGFzIHRoZXkgYXJlIHVzZWQgdXAgKHNlZSBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
SGVscGVyKQogICAgIC8vIHdoaWNoIGNyZWF0ZXMgdGhlIG1fbmV3bHlBbGxvY2F0ZWQgYml0bWFw
LgotICAgIENsZWFyTmV3bHlBbGxvY2F0ZWQgZnVuY3RvcjsKLSAgICBtX25vcm1hbFNwYWNlLmxh
cmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICBtX2Rlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0gICAgVmVyaWZ5TmV3bHlBbGxvY2F0ZWQgdmVyaWZ5RnVuY3RvcjsKLSAgICBmb3JFYWNoQmxv
Y2sodmVyaWZ5RnVuY3Rvcik7Ci0jZW5kaWYKKyAgICBhdXRvIGNsZWFyTmV3bHlBbGxvY2F0ZWQg
PSBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOworICAgIH07CisgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JF
YWNoQmxvY2soY2xlYXJOZXdseUFsbG9jYXRlZCk7CisgICAgbV9kZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGNsZWFyTmV3bHlBbGxvY2F0ZWQpOworCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgWyZdIChNYXJrZWRCbG9j
ayogYmxvY2spIHsKKyAgICAgICAgICAgIEFTU0VSVCghYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKSk7CisgICAgICAgIH0pOworI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIH0KIAogI2lm
bmRlZiBOREVCVUcgCiBzdHJ1Y3QgVmVyaWZ5TWFya2VkT3JSZXRpcmVkIDogTWFya2VkQmxvY2s6
OlZvaWRGdW5jdG9yIHsgCi0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykK
KyAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSBjb25zdAogICAgIHsKICAg
ICAgICAgc3dpdGNoIChibG9jay0+bV9zdGF0ZSkgewogICAgICAgICBjYXNlIE1hcmtlZEJsb2Nr
OjpNYXJrZWQ6CkBAIC0yOTAsOCArMjY3LDEyIEBAIHZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTWFy
a3MoKQogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVj
dGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3
T2JqZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNb
aV0tPmNsZWFyTWFya3MoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZm9yRWFjaEJsb2NrPENsZWFy
TWFya3M+KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAg
ICAgWyZdIChNYXJrZWRCbG9jayogYmxvY2spIHsKKyAgICAgICAgICAgICAgICBibG9jay0+Y2xl
YXJNYXJrcygpOworICAgICAgICAgICAgfSk7CisgICAgfQogCiAjaWZuZGVmIE5ERUJVRwogICAg
IFZlcmlmeU1hcmtlZE9yUmV0aXJlZCB2ZXJpZnlGdW5jdG9yOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDMzNjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTM3LDMzICszNyw2IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBIZWFwSXRlcmF0aW9uU2Nv
cGU7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLXN0cnVjdCBDbGVhck1hcmtzIDog
TWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxv
Y2sqIGJsb2NrKQotICAgIHsKLSAgICAgICAgYmxvY2stPmNsZWFyTWFya3MoKTsKLSAgICB9Ci19
OwotCi1zdHJ1Y3QgU3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZvaWQg
b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spIHsgYmxvY2stPnN3ZWVwKCk7IH0KLX07Ci0K
LXN0cnVjdCBab21iaWZ5U3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotICAgIHZv
aWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi0gICAgewotICAgICAgICBpZiAoYmxv
Y2stPm5lZWRzU3dlZXBpbmcoKSkKLSAgICAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgIH0K
LX07Ci0KLXN0cnVjdCBNYXJrQ291bnQgOiBNYXJrZWRCbG9jazo6Q291bnRGdW5jdG9yIHsKLSAg
ICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqIGJsb2NrKSB7IGNvdW50KGJsb2NrLT5tYXJr
Q291bnQoKSk7IH0KLX07Ci0KLXN0cnVjdCBTaXplIDogTWFya2VkQmxvY2s6OkNvdW50RnVuY3Rv
ciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBjb3VudChibG9j
ay0+bWFya0NvdW50KCkgKiBibG9jay0+Y2VsbFNpemUoKSk7IH0KLX07Ci0KIGNsYXNzIE1hcmtl
ZFNwYWNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrZWRTcGFjZSk7CiBwdWJsaWM6
CkBAIC0xMTIsMTIgKzg1LDkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtl
ZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hMaXZlQ2VsbChI
ZWFwSXRlcmF0aW9uU2NvcGUmLCBGdW5jdG9yJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0
ZXJhdGlvblNjb3BlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoRGVhZENlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwg
RnVuY3RvciYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0
b3I6OlJldHVyblR5cGUgZm9yRWFjaERlYWRDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29w
ZSYsIGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lk
IGZvckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQmxvY2soY29uc3QgRnVu
Y3RvciYpOwogCiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICB2b2lkIGZyZWVCbG9jayhNYXJrZWRC
bG9jayopOwpAQCAtMTQzLDggKzExMyw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoQWxsb2NhdG9yKEZ1bmN0b3ImKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2hBbGxvY2F0b3IoY29uc3Qg
RnVuY3RvciYpOwogCiAgICAgU3Vic3BhY2UgbV9kZXN0cnVjdG9yU3BhY2U7CiAgICAgU3Vic3Bh
Y2UgbV9ub3JtYWxTcGFjZTsKQEAgLTE1Niw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxNYXJrZWRCbG9jayo+IG1fYmxvY2tzV2l0aE5ld09iamVjdHM7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJr
ZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIEZ1bmN0b3ImIGZ1
bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFj
ZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5nKCkpOwogICAgIEJsb2NrSXRlcmF0b3Ig
ZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CkBAIC0xNjQsMTYgKzEzMyw5IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICAgICAgaWYgKCgqaXQpLT5mb3JF
YWNoTGl2ZUNlbGwoZnVuY3RvcikgPT0gSXRlcmF0aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1
cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiBz
Y29wZSkKLXsKLSAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgcmV0dXJuIGZvckVhY2hMaXZlQ2Vs
bChzY29wZSwgZnVuY3Rvcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENl
bGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoRGVhZENlbGwoSGVh
cEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBBU1NFUlQo
aXNJdGVyYXRpbmcoKSk7CiAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5l
bmQoKTsKQEAgLTE4MSwxMyArMTQzLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYQogICAgICAgICBpZiAoKCppdCktPmZvckVhY2hEZWFkQ2VsbChmdW5jdG9yKSA9
PSBJdGVyYXRpb25TdGF0dXM6OkRvbmUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAg
cmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZv
ckVhY2hEZWFkQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmIHNjb3BlKQotewotICAgIEZ1bmN0b3Ig
ZnVuY3RvcjsKLSAgICByZXR1cm4gZm9yRWFjaERlYWRDZWxsKHNjb3BlLCBmdW5jdG9yKTsKIH0K
IAogaW5saW5lIE1hcmtlZEFsbG9jYXRvciYgTWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihzaXpl
X3QgYnl0ZXMpCkBAIC0yMjAsNyArMTc1LDcgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjph
bGxvY2F0ZVdpdGhEZQogICAgIHJldHVybiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVzKS5h
bGxvY2F0ZShieXRlcyk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1
bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9y
bWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwpAQCAt
MjMzLDE0ICsxODgsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQogICAgICAg
ICBtX2Rlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKICAgICBtX2Rlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7Ci0KLSAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jaygpCi17Ci0gICAgRnVuY3RvciBmdW5jdG9y
OwotICAgIHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7CiB9CiAKIGlubGluZSB2b2lkIE1h
cmtlZFNwYWNlOjpkaWRBZGRCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCkBAIC0yNTYsMTIgKzIw
MywyMiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWxsb2NhdGVJbkJsCiAKIGlubGlu
ZSBzaXplX3QgTWFya2VkU3BhY2U6Om9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFj
aEJsb2NrPE1hcmtDb3VudD4oKTsKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNo
QmxvY2soCisgICAgICAgIFsmXSAoTWFya2VkQmxvY2sqIGJsb2NrKSB7CisgICAgICAgICAgICBy
ZXN1bHQgKz0gYmxvY2stPm1hcmtDb3VudCgpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpzaXplKCkKIHsKLSAgICByZXR1
cm4gZm9yRWFjaEJsb2NrPFNpemU+KCk7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9y
RWFjaEJsb2NrKAorICAgICAgICBbJl0gKE1hcmtlZEJsb2NrKiBibG9jaykgeworICAgICAgICAg
ICAgcmVzdWx0ICs9IGJsb2NrLT5tYXJrQ291bnQoKSAqIGJsb2NrLT5jZWxsU2l6ZSgpOworICAg
ICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBpbmxpbmUgc2l6ZV90IE1hcmtlZFNw
YWNlOjpjYXBhY2l0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMjAzMzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25zdHJ1
Y3REYXRhLmgiCiAjaW5jbHVkZSAiRW51bWVyYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgpAQCAtNjQsNyArNjUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoCiAgICAgcHVibGljOiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIHN0YXRpYyBjb25zdCA6OkpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkgeyByZXR1
cm4gJnNfaW5mbzsgfQogCi1jbGFzcyBKU0NlbGwgeworY2xhc3MgSlNDZWxsIDogcHVibGljIEhl
YXBDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRl
Q2VsbChIZWFwJik7CkBAIC0xNTUsOSArMTU2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
VmFsdWUgdG9UaGlzKEpTQ2VsbCosIEV4ZWNTdGF0ZSosIEVDTUFNb2RlKTsKIAotICAgIHZvaWQg
emFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykgPSAwOyB9Ci0gICAg
Ym9vbCBpc1phcHBlZCgpIGNvbnN0IHsgcmV0dXJuICEqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3QqIGNvbnN0Kj4odGhpcyk7IH0KLQogICAgIHN0YXRpYyBib29sIGNhblVzZUZhc3RHZXRPd25Q
cm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmKTsKICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0
eShWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDIwMzM2MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDExICsxNDUsNiBAQCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkK
ICAgICByZXR1cm4gYWxsb2NhdGVDZWxsPFQ+KGhlYXAsIHNpemVvZihUKSk7CiB9CiAgICAgCi1p
bmxpbmUgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCi17Ci0gICAgcmV0dXJuIGNl
bGwtPmlzWmFwcGVkKCk7Ci19Ci0KIGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25z
dAogewogICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwMzM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY5LDcgKzg2OSw3IEBAIG5hbWVzcGFjZSB7CiBj
bGFzcyBPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyIDogcHVibGljIE1hcmtlZEJsb2Nr
OjpWb2lkRnVuY3RvciB7CiBwdWJsaWM6CiAgICAgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0Zp
bmRlcihNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSXRlcmF0
aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlNDZWxsKik7CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJh
dG9yKCkoSGVhcENlbGwqLCBIZWFwQ2VsbDo6S2luZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2aXNpdChKU0NlbGwqKTsKQEAgLTkyNiw5ICs5MjYsMTMgQEAgaW5saW5lIHZvaWQgT2Jq
ZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbgogICAgIG1fZm91bmRPYmplY3RzLmFwcGVuZChvYmpl
Y3QpOwogfQogCi1JdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dpdGhCcm9rZW5JbmRleGluZ0ZpbmRl
cjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCitJdGVyYXRpb25TdGF0dXMgT2JqZWN0c1dpdGhC
cm9rZW5JbmRleGluZ0ZpbmRlcjo6b3BlcmF0b3IoKShIZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6
OktpbmQga2luZCkgY29uc3QKIHsKLSAgICB2aXNpdChjZWxsKTsKKyAgICBpZiAoa2luZCA9PSBI
ZWFwQ2VsbDo6SlNDZWxsKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvbnN0X2Nhc3QgZXhp
c3RzIGJlY2F1c2UgdGhpcyBpc24ndCBhIEMrKyBsYW1iZGEuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk2NDQKKyAgICAgICAgY29uc3RfY2Fz
dDxPYmplY3RzV2l0aEJyb2tlbkluZGV4aW5nRmluZGVyKj4odGhpcyktPnZpc2l0KHN0YXRpY19j
YXN0PEpTQ2VsbCo+KGNlbGwpKTsKKyAgICB9CiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwMzM2MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0cnVjdCBDZWxsQWRkcmVzc0NoZWNrRnVuY3RvciA6IE1h
cmtlZEIKICAgICB7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoSlND
ZWxsKiBjZWxsKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKEhlYXBDZWxs
KiBjZWxsLCBIZWFwQ2VsbDo6S2luZCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChjZWxsID09
IGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>