<?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>102018</bug_id>
          
          <creation_ts>2012-11-12 17:28:18 -0800</creation_ts>
          <short_desc>IndexedDB: simplify RecordIdentifier</short_desc>
          <delta_ts>2012-11-19 17:10:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102450</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>765021</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-12 17:28:18 -0800</bug_when>
    <thetext>IndexedDB: simplify RecordIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765027</commentid>
    <comment_count>1</comment_count>
      <attachid>173771</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-12 17:30:51 -0800</bug_when>
    <thetext>Created attachment 173771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765028</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-12 17:31:48 -0800</bug_when>
    <thetext>jsbell/dgrogan - quick once-over?

tony - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765612</commentid>
    <comment_count>3</comment_count>
      <attachid>173771</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 08:08:31 -0800</bug_when>
    <thetext>Comment on attachment 173771
Patch

Attachment 173771 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14813822

New failing tests:
storage/indexeddb/mozilla/object-store-remove-values.html
storage/indexeddb/index-unique.html
storage/indexeddb/cursor-skip-deleted.html
storage/indexeddb/mozilla/cursor-mutation.html
storage/indexeddb/cursor-delete.html
storage/indexeddb/cursor-index-delete.html
storage/indexeddb/mozilla/cursors.html
storage/indexeddb/delete-range.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768586</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-15 15:46:07 -0800</bug_when>
    <thetext>Sorry, just getting a chance to look at this now. The source of the test failures isn&apos;t obvious - were you able to track it down?

Overall the change looks good, although you may want to mark the constructors explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768722</commentid>
    <comment_count>5</comment_count>
      <attachid>174566</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-15 17:15:23 -0800</bug_when>
    <thetext>Created attachment 174566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768758</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-15 17:42:04 -0800</bug_when>
    <thetext>thanks for the pointer on explicit-ness. I ended up spinning that out into bug 102450 since the actual classes missing explicitness weren&apos;t from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769076</commentid>
    <comment_count>7</comment_count>
      <attachid>174566</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 03:35:02 -0800</bug_when>
    <thetext>Comment on attachment 174566
Patch

Attachment 174566 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14873080

New failing tests:
storage/indexeddb/mozilla/object-store-remove-values.html
storage/indexeddb/index-unique.html
storage/indexeddb/cursor-skip-deleted.html
storage/indexeddb/mozilla/cursor-mutation.html
storage/indexeddb/cursor-delete.html
storage/indexeddb/cursor-index-delete.html
storage/indexeddb/mozilla/cursors.html
storage/indexeddb/delete-range.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769712</commentid>
    <comment_count>8</comment_count>
      <attachid>174770</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 15:23:49 -0800</bug_when>
    <thetext>Created attachment 174770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769720</commentid>
    <comment_count>9</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 15:30:15 -0800</bug_when>
    <thetext>*** Bug 101668 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769721</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 15:30:51 -0800</bug_when>
    <thetext>ok, the breakage was a stupid typo on my part (declared a subclass with a variable name that was identical to the parent class, etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769723</commentid>
    <comment_count>11</comment_count>
      <attachid>174771</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 15:33:06 -0800</bug_when>
    <thetext>Created attachment 174771
Patch

One other minor optimization to avoid a Vector&lt;char&gt; copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769726</commentid>
    <comment_count>12</comment_count>
      <attachid>174771</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-16 15:36:33 -0800</bug_when>
    <thetext>Comment on attachment 174771
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:119
&gt; +        virtual const RecordIdentifier&amp; recordIdentifier() const  { return m_recordIdentifier; }

Nit: extra space between const and {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769727</commentid>
    <comment_count>13</comment_count>
      <attachid>174773</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 15:36:50 -0800</bug_when>
    <thetext>Created attachment 174773
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769744</commentid>
    <comment_count>14</comment_count>
      <attachid>174773</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 16:01:36 -0800</bug_when>
    <thetext>Comment on attachment 174773
Patch for landing

Rejecting attachment 174773 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14860431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769799</commentid>
    <comment_count>15</comment_count>
      <attachid>174788</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-16 17:34:24 -0800</bug_when>
    <thetext>Created attachment 174788
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769822</commentid>
    <comment_count>16</comment_count>
      <attachid>174788</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 18:11:08 -0800</bug_when>
    <thetext>Comment on attachment 174788
Patch for landing

Rejecting attachment 174788 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
mit-queue/Source/WebKit/chromium/third_party/skia/src --revision 6424 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 6424.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/14880036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770853</commentid>
    <comment_count>17</comment_count>
      <attachid>175005</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-19 10:38:16 -0800</bug_when>
    <thetext>Created attachment 175005
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770874</commentid>
    <comment_count>18</comment_count>
      <attachid>175005</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 11:16:06 -0800</bug_when>
    <thetext>Comment on attachment 175005
Patch for landing

Clearing flags on attachment: 175005

Committed r135177: &lt;http://trac.webkit.org/changeset/135177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770875</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 11:16:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771236</commentid>
    <comment_count>20</comment_count>
      <attachid>175005</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 17:10:43 -0800</bug_when>
    <thetext>Comment on attachment 175005
Patch for landing

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:76
&gt; +        DISALLOW_COPY_AND_ASSIGN(RecordIdentifier);

Isn&apos;t this a Chromium macro rather than a WebKit macro?  /me is getting compile failures on this line.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173771</attachid>
            <date>2012-11-12 17:30:51 -0800</date>
            <delta_ts>2012-11-15 17:15:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102018-20121112172853.patch</filename>
            <type>text/plain</type>
            <size>30164</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM2ZDk3ZTI0ZGNmZTBj
YWEwZWNkOTFiYWUxMTA2ODM0MDc2OGNkYy4uYzRiZGY0YmE3MTExODg0NjhiM2M2ZDgxZDZhZTBj
ZmRmYzUxNjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgSURCQmFja2luZ1N0b3JlJ3MgUmVjb3JkSWRlbnRpZmllciBi
ZSBhIHNpbXBsZQorICAgICAgICBjbGFzcywgZXhpc3Rpbmcgb25seSBhcyBhbiBpbmxpbmUgb3Ig
c3RhY2stYmFzZWQgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgbWFrZXMgbXVjaCBvZiB0aGUgY29w
eSBzZW1hbnRpY3MgbW9yZSBleHBsaWNpdCwgYW5kCisgICAgICAgIHJlbW92ZXMgcmVmY291bnRp
bmcgZnJvbSBhbiBvYmplY3QgdGhhdCBvbmx5IGV2ZXIgaGFkIGEgcmVmY291bnQKKyAgICAgICAg
b2YgMSBvciAyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KToKKyAgICAgICAgKE9iamVjdFN0b3JlQ3Vyc29ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4S2V5Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEN1cnNvckltcGw6OnJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpSZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OnJlc2V0KToK
KyAgICAgICAgKFJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpyZWNvcmRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3Ip
OgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToK
KwogMjAxMi0xMS0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDE0NC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZmJiNWEyMmZmNjkwYmJmN2VjOThjYWE4NGVhNmQwZWY0NWFjNGJh
Ni4uZmRkYjkxOWNiMTdlNzQ3YTVhM2JjZTgxOWNjZWFjYjUyMzRmOTQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0xMiAgQWxlYyBGbGV0dCAg
PGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBzaW1wbGlmeSBS
ZWNvcmRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIwMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgSURCRmFrZUJhY2tpbmdTdG9yZSB0byBtYXRjaCBpdHMgcGFyZW50IGNs
YXNzLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorCiAyMDEyLTEx
LTExICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEV4cG9zZSBDdXN0b21FdmVudCB0aHJvdWdoIFdlYkRPTUN1c3RvbUV2
ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUwOWI4MGYzN2ZjYjdlMDdj
YS4uZmZmNzJkYWY3ODUwNzY5YzllYTc5MmRiYmVhY2JlYjUwMmQyZDJjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBA
IC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gdmVy
c2lvbjsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBS
ZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6
OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVy
KQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQiKTsKICAgICBB
U1NFUlQoa2V5LmlzVmFsaWQoKSk7CkBAIC02NzMsOSArNjczLDcgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjQKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNF
bnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgbGV2
ZWxEQlRyYW5zYWN0aW9uLT5wdXQoZXhpc3RzRW50cnlLZXksIGVuY29kZUludCh2ZXJzaW9uKSk7
CiAKLSAgICByZWNvcmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkp
KTsKLSAgICByZWNvcmRJZGVudGlmaWVyLT5zZXRWZXJzaW9uKHZlcnNpb24pOwotICAgIHJldHVy
biB0cnVlOworICAgIHJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2
ZXJzaW9uKTsKIH0KIAogdm9pZCBJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQpAQCAtNjg4LDE1ICs2ODYsMTUgQEAgdm9pZCBJREJC
YWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0
S2V5LCBzdG9wS2V5KTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29y
ZElkZW50aWZpZXIpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRp
ZmllcikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkIik7
CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsK
IAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9y
ZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlm
aWVyLT5wcmltYXJ5S2V5KCkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURh
dGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0
aW9uLT5yZW1vdmUob2JqZWN0U3RvcmVEYXRhS2V5KTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAg
ICBsZXZlbERCVHJhbnNhY3Rpb24tPnJlbW92ZShleGlzdHNFbnRyeUtleSk7CiB9CiAKQEAgLTc0
MywxOSArNzQxLDE4IEBAIGludDY0X3QgSURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3RpCiAgICAgcmV0dXJuIGtleUdl
bmVyYXRvckN1cnJlbnROdW1iZXI7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjptYXliZVVw
ZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpCit2b2lkIElEQkJhY2tpbmdT
dG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQogewog
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAK
ICAgICBpZiAoY2hlY2tDdXJyZW50KSB7CiAgICAgICAgIGludDY0X3QgY3VycmVudE51bWJlciA9
IGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQpOwogICAgICAgICBpZiAobmV3TnVtYmVyIDw9IGN1cnJlbnROdW1iZXIpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsKICAgICBwdXRJ
bnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdO
dW1iZXIpOwotICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5
RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYga2V5LCBSZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpCkBAIC03
NzIsOCArNzY5LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnMKICAgICBpZiAoIWRlY29kZVZh
ckludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBmb3VuZFJlY29yZElkZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2Rl
SURCS2V5KGtleSkpOwotICAgIGZvdW5kUmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJz
aW9uKTsKKyAgICBmb3VuZFJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkp
LCB2ZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODk3LDIxICs4OTMsMjAgQEAg
dm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rp
b24sIGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFFbmQpOwogfQogCi1ib29sIElEQkJhY2tpbmdT
dG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmll
ciogcmVjb3JkSWRlbnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFG
b3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYga2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVy
KQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNv
cmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0g
TWluaW11bUluZGV4SWQpOwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNh
Y3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25G
cm9tKHRyYW5zYWN0aW9uKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0g
SW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
ZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNv
cmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAg
ICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci0+dmVyc2lvbigpKSk7
Ci0gICAgZGF0YS5hcHBlbmQocmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBk
YXRhLmFwcGVuZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAg
ICBkYXRhLmFwcGVuZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZl
bERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwotICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiB0YXJnZXQsIFZl
Y3RvcjxjaGFyPiYgZm91bmRLZXkpCkBAIC05NDIsMTAgKzkzNyw5IEBAIHN0YXRpYyBib29sIGZp
bmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QsIGludDY0X3QsIGludDY0X3QsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKQordm9pZCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCwgY29uc3QgUmVjb3JkSWRl
bnRpZmllciYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgbmVlZGVkIHNpbmNlIHdlIGlu
dmFsaWRhdGUgaW5kZXggZGF0YSB2aWEgdGhlIHZlcnNpb24gbnVtYmVyIG1lY2hhbmlzbS4KLSAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgdmVyc2lvbkV4aXN0cyhMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCB2ZXJzaW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRQcmlt
YXJ5S2V5KQpAQCAtMTE4OCwxMCArMTE4Miw2IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyKCkg
T1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7Ci0gICAgfQogICAg
IHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpAQCAtMTIwNSw3ICsx
MTk1LDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyOwogfTsKIAogYm9vbCBPYmplY3RT
dG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKQEAgLTEyMzAsNyArMTIxOSw3IEBA
IGJvb2wgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgfQog
CiAgICAgLy8gRklYTUU6IFRoaXMgcmUtZW5jb2RlcyB3aGF0IHdhcyBqdXN0IGRlY29kZWQ7IHRy
eSBhbmQgb3B0aW1pemUuCi0gICAgbV9pZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3JlOjpSZWNv
cmRJZGVudGlmaWVyOjpjcmVhdGUoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJzaW9u
KTsKKyAgICBtX3JlY29yZElkZW50aWZpZXIucmVzZXQoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRL
ZXkpLCB2ZXJzaW9uKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI0OSwxMCArMTIzOCw2
IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVh
bCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29y
ZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmll
cjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZhdGU6
CkBAIC0xMjY4LDcgKzEyNTMsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFN0cmluZyBtX2N1
cnJlbnRWYWx1ZTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVy
PiBtX2lkZW50aWZpZXI7CisgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1f
cmVjb3JkSWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2Fk
Q3VycmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzgsNyBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29y
SW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVu
Y29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgotICAgIG1faWRl
bnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKGVuY29k
ZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9yZWNvcmRJZGVudGlmaWVy
LnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CiAKICAgICBtX2N1
cnJlbnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBtX2l0ZXJhdG9yLT52YWx1
ZSgpLmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMzAwLDcgQEAgcHVibGljOgogICAgIC8vIElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmll
cj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJl
Y29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9y
ZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAK
IHByaXZhdGU6CkBAIC0xMzk0LDcgKzEzNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gSURCQmFja2lu
Z1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNr
aW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgYm9v
bCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAyNTJkZWUxZjVhMjg5MWY3
NDY3NmUxNWJiNzNlMzAxOTM1YTg1YThiLi5hYTNlMjllYmNkYzY3Mjc3YmU4M2FjODI3YTNkMmE0
NGMwNGUwYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDM2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogCi0gICAgY2xhc3MgUmVj
b3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElkZW50aWZpZXI+IHsKKyAg
ICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHBy
aW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlY29yZElk
ZW50aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWNv
cmRJZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29yZElkZW50aWZpZXIoKSB7
IH0KKyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlL
ZXksIGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lv
bih2ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9CisgICAgICAgIFJl
Y29yZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5
LmlzRW1wdHkoKTsgfQorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3By
aW1hcnlLZXkuaXNFbXB0eSgpOyB9CiAgICAgICAgIFZlY3RvcjxjaGFyPiBwcmltYXJ5S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgICAgIHZvaWQgc2V0UHJpbWFyeUtl
eShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXkpIHsgbV9wcmltYXJ5S2V5ID0gcHJpbWFy
eUtleTsgfQogICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNp
b247IH0KLSAgICAgICAgdm9pZCBzZXRWZXJzaW9uKGludDY0X3QgdmVyc2lvbikgeyBtX3ZlcnNp
b24gPSB2ZXJzaW9uOyB9CisgICAgICAgIHZvaWQgcmVzZXQoY29uc3QgVmVjdG9yPGNoYXI+JiBw
cmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgbV9wcmltYXJ5S2V5ID0gcHJpbWFyeUtleTsg
bV92ZXJzaW9uID0gdmVyc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVjb3JkSWRl
bnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikg
OiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lvbih2ZXJzaW9uKSB7IEFTU0VSVCgh
cHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9Ci0gICAgICAgIFJlY29yZElkZW50aWZpZXIoKSA6IG1f
cHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQotCiAgICAgICAgIFZlY3RvcjxjaGFyPiBt
X3ByaW1hcnlLZXk7IC8vIEZJWE1FOiBNYWtlIGl0IG1vcmUgY2xlYXIgdGhhdCB0aGlzIGlzIHRo
ZSAqZW5jb2RlZCogdmVyc2lvbiBvZiB0aGUga2V5LgogICAgICAgICBpbnQ2NF90IG1fdmVyc2lv
bjsKKworICAgICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjb3JkSWRlbnRpZmllcik7
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IElEQktleSYpOwotICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVy
Kik7CisgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVy
Kik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFJlY29yZElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIGludDY0X3QgZ2V0S2V5R2VuZXJhdG9y
Q3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIHZpcnR1YWwgYm9vbCBtYXliZVVw
ZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5l
d1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCk7CisgICAgdmlydHVhbCB2b2lkIG1heWJlVXBkYXRl
S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3U3Rh
dGUsIGJvb2wgY2hlY2tDdXJyZW50KTsKICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlY29yZElkZW50aWZpZXIq
IGZvdW5kUmVjb3JkSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxJREJJbmRleE1l
dGFkYXRhPiBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkKTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
aXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwotICAgIHZpcnR1YWwgYm9vbCBw
dXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wg
ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKik7CisgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0
YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRl
eERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFJl
Y29yZElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBnZXRQcmlt
YXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYpOwogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5
PiYgZm91bmRQcmltYXJ5S2V5KTsKIApAQCAtMTEzLDEzICsxMTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBib29sIHVuaXF1ZTsKICAgICAgICAgfTsKIAotICAgICAgICBDdXJzb3IoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0
aW9ucykKLSAgICAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAg
ICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlvbnMpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICBDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0b3JlOjpDdXJzb3IqIG90aGVyKTsK
LQogICAgICAgICBQYXNzUmVmUHRyPElEQktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50S2V5OyB9CiAgICAgICAgIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0g
MCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWspOwogICAgICAgICBib29sIGFkdmFuY2UodW5zaWduZWQg
bG9uZyk7CkBAIC0xMjgsMTEgKzExOCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29u
c3QgIHsgcmV0dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsgfQogICAgICAgICB2aXJ0dWFsIH5DdXJz
b3IoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCkgPSAwOwogCiAg
ICAgcHJvdGVjdGVkOgorICAgICAgICBDdXJzb3IoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKKyAgICAgICAgICAgIDog
bV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKKyAgICAgICAgICAgICwgbV9jdXJzb3JPcHRpb25z
KGN1cnNvck9wdGlvbnMpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBDdXJzb3IoY29u
c3QgSURCQmFja2luZ1N0b3JlOjpDdXJzb3IqIG90aGVyKTsKKwogICAgICAgICBib29sIGlzUGFz
dEJvdW5kcygpIGNvbnN0OwogICAgICAgICBib29sIGhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdDsK
IApAQCAtMTQwLDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQ3Vyc29yT3B0aW9u
cyBtX2N1cnNvck9wdGlvbnM7CiAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRl
cmF0b3I7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKKyAgICAgICAgSURC
QmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9
OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vy
c29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVj
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDNkOTVkNDMwMzFiZTI3Mjdk
OTUyYmQxZTUxMzQyZTcxMTc3YmI0M2EuLjg3M2RhMGI3OTJhM2U2NzcxOWRmNmI5N2ExOGJkOTIy
MmEwNmUzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xNTUsMTYgKzE1NSwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgd3Jp
dGVJbmRleEtleXMoY29uc3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyKiByZWNv
cmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKSBjb25zdAorICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURC
QmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNr
aW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25z
dAogICAgIHsKICAgICAgICAgaW50NjRfdCBpbmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZS5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQo
dHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIHJlY29yZElk
ZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlm
ICghYmFja2luZ1N0b3JlLnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJl
Y29yZElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJhY2tpbmdTdG9yZS5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIHJlY29yZElkZW50aWZpZXIpOworICAg
ICAgICAgICAgYmFja2luZ1N0b3JlLnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwg
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0
KCksIHJlY29yZElkZW50aWZpZXIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTIzMiw4ICsyMjksOCBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtl
eSwgYwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9
IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogCiAgICAg
Ly8gRklYTUU6IFRoaXMgbWV0aG9kIGNvdWxkIGJlIGFzeW5jaHJvbm91cywgYnV0IHdlIG5lZWQg
dG8gZXZhbHVhdGUgaWYgaXQncyB3b3J0aCB0aGUgZXh0cmEgY29tcGxleGl0eS4KLSAgICBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0g
SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKTsKLSAgICBpZiAoIWJh
Y2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIGlkKCksICpwcmltYXJ5S2V5LCByZWNv
cmRJZGVudGlmaWVyLmdldCgpKSkgeworICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRp
ZmllciByZWNvcmRJZGVudGlmaWVyOworICAgIGlmICghYmFja2luZ1N0b3JlKCktPmtleUV4aXN0
c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRh
dGFiYXNlSWQoKSwgaWQoKSwgKnByaW1hcnlLZXksICZyZWNvcmRJZGVudGlmaWVyKSkgewogICAg
ICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0
OCwxMCArMjQ1LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtl
eXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEluZGV4V3Jp
dGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKCFp
bmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3JkSWRlbnRpZmllci5nZXQoKSwgKmJhY2tp
bmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJh
c2VJZCgpLCBtX21ldGFkYXRhLmlkKSkgewotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaW5kZXhXcml0ZXIt
PndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIsICpiYWNraW5nU3RvcmUoKSwgdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgbV9tZXRhZGF0
YS5pZCk7CiAgICAgfQogfQogCkBAIC0zMDMsOCArMjk3LDggQEAgdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjwKIAogICAgIEFTU0VSVChrZXkgJiYga2V5LT5pc1ZhbGlkKCkpOwogCi0gICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllciA9IElE
QkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKHB1dE1v
ZGUgPT0gQWRkT25seSAmJiBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0lu
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVj
dFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCByZWNvcmRJZGVu
dGlmaWVyLmdldCgpKSkgeworICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciBy
ZWNvcmRJZGVudGlmaWVyOworICAgIGlmIChwdXRNb2RlID09IEFkZE9ubHkgJiYgb2JqZWN0U3Rv
cmUtPmJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5i
YWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmpl
Y3RTdG9yZS0+aWQoKSwgKmtleSwgJnJlY29yZElkZW50aWZpZXIpKSB7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OkNPTlNUUkFJTlRfRVJSLCAiS2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3Rv
cmUuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE4LDIyICszMTIsMTEgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAgIC8vIEJlZm9yZSB0aGlzIHBvaW50LCBkb24ndCBk
byBhbnkgbXV0YXRpb24uICBBZnRlciB0aGlzIHBvaW50LCByb2xsYmFjayB0aGUgdHJhbnNhY3Rp
b24gaW4gY2FzZSBvZiBlcnJvci4KIAotICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9i
amVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCB2YWx1ZS0+
dG9XaXJlU3RyaW5nKCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgIFJlZlB0
cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3Rh
YmxlIHN0b3JhZ2UuIik7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7Ci0gICAg
ICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVj
dFN0b3JlLT5pZCgpLCAqa2V5LCB2YWx1ZS0+dG9XaXJlU3RyaW5nKCksICZyZWNvcmRJZGVudGlm
aWVyKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIEluZGV4V3JpdGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tp
XS5nZXQoKTsKLSAgICAgICAgaWYgKCFpbmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3Jk
SWRlbnRpZmllci5nZXQoKSwgKm9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCks
IG9iamVjdFN0b3JlLT5tX21ldGFkYXRhLmlkKSkgewotCi0gICAgICAgICAgICBSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBz
dG9yYWdlLiIpOwotICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50
aWZpZXIsICpvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9y
ZS0+bV9tZXRhZGF0YS5pZCk7CiAgICAgfQogCiAgICAgaWYgKGF1dG9JbmNyZW1lbnQgJiYgcHV0
TW9kZSAhPSBDdXJzb3JVcGRhdGUgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBl
KQpAQCAtMzYxLDIwICszNDQsMTYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW4KIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVs
ZXRlSW50ZXJuYWwiKTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlm
aWVyPiByZWNvcmRJZGVudGlmaWVyOwogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPm9w
ZW5PYmplY3RTdG9yZUN1cnNvcih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGtleVJhbmdl
LmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsK
IAogICAgICAgICBkbyB7Ci0gICAgICAgICAgICByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0
b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCk7Ci0KICAgICAgICAgICAgIGZvciAoSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6SW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmUt
Pm1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmVuZCgpOyAr
K2l0KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3Jl
LT5pZCgpLCBpdC0+a2V5LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKTsKLSAgICAgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgICAgICAgICAgICAgIG9iamVj
dFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgp
LCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPmtleSwgYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJ
ZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBvYmplY3RTdG9yZS0+
YmFja2luZ1N0b3JlKCktPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
IHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBiYWNr
aW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSk7CiAKICAgICAgICAgfSB3aGlsZSAo
YmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDAyZDJkNWQ0MjBjZjMzMzkxODUwNTQ2OGQ0NTk1ZGEzM2RhODlhNDQuLjU2MWE3NWVhZDY0Mjgy
OGY4MDNiZjRjYTFjMThiZDJlOTVmODM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC00NCwxOCArNDQsMTggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCBpbnQ2NF90IGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1i
ZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJy
ZW50KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtYXliZVVw
ZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hl
Y2tDdXJyZW50KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBSZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50
aWZpZXIpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxJ
REJJbmRleE1ldGFkYXRhPiBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiBWZWN0b3I8SURCSW5kZXhNZXRhZGF0YT4o
KTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNN
dWx0aUVudHJ5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFJl
Y29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
S2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
KSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPElEQktleT4oKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBrZXlFeGlzdHNJbkluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZWlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRl
eEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174566</attachid>
            <date>2012-11-15 17:15:23 -0800</date>
            <delta_ts>2012-11-16 15:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102018-20121115171319.patch</filename>
            <type>text/plain</type>
            <size>29474</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkzOWM5NjBlMWU2ZDQ1
NGY2NjFmYzBlN2M5Y2NlYmE2MTQ1MjgzYS4uMjU3ZmUzNDM2MmQ0Yjg3MTdmMDM4MDYwNzMyZjgy
MmYxNzY5M2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgSURCQmFja2luZ1N0b3JlJ3MgUmVjb3JkSWRlbnRpZmllciBi
ZSBhIHNpbXBsZQorICAgICAgICBjbGFzcywgZXhpc3Rpbmcgb25seSBhcyBhbiBpbmxpbmUgb3Ig
c3RhY2stYmFzZWQgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgbWFrZXMgbXVjaCBvZiB0aGUgY29w
eSBzZW1hbnRpY3MgbW9yZSBleHBsaWNpdCwgYW5kCisgICAgICAgIHJlbW92ZXMgcmVmY291bnRp
bmcgZnJvbSBhbiBvYmplY3QgdGhhdCBvbmx5IGV2ZXIgaGFkIGEgcmVmY291bnQKKyAgICAgICAg
b2YgMSBvciAyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KToKKyAgICAgICAgKE9iamVjdFN0b3JlQ3Vyc29ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4S2V5Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEN1cnNvckltcGw6OnJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpSZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OnJlc2V0KToK
KyAgICAgICAgKFJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpyZWNvcmRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3Ip
OgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToK
KwogMjAxMi0xMS0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbnN1cmUgdGhhdCBzY3JvbGxiYXIgbGF5ZXJzIHNob3cgZGVidWcgYm9yZGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiY2M2MTU3MjRiYjg2NTYzMjcxNmVkYWJmMzI2
MjUwN2M1NTY4MWQ3Li4zOTA1MjNmMzYyMzI2YTk4M2FkNjk2ZjRmODBiOWMxZTJkMWNjYzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTEyICBB
bGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6
IHNpbXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBJREJGYWtlQmFja2luZ1N0b3JlIHRvIG1hdGNoIGl0
cyBwYXJlbnQgY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6
CisKIDIwMTItMTEtMTUgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBDcmVhdGUgZGVmYXVsdCBkaXJlY3Rvcnkgc28gdGhhdCBjcSBjYW4gYXBw
bHkgcGF0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuY3BwCmluZGV4IDFlYTNjOTQ0NGEzZmE5ODM3OWI5Y2Y1MDliODBmMzdmY2I3
ZTA3Y2EuLmY5Y2M2MzQzZjkzYmJmNDczZWE5OTg3Mjg0MmNmY2MwZDMyNTA3MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtNjU2LDcgKzY1Niw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJu
IHZlcnNpb247CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0
b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRp
ZmllcikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkIik7CiAg
ICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkpOwpAQCAtNjczLDkgKzY3Myw3IEBAIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGludDY0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGV4aXN0c0VudHJ5S2V5ID0gRXhp
c3RzRW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXkpOwogICAg
IGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGV4aXN0c0VudHJ5S2V5LCBlbmNvZGVJbnQodmVyc2lv
bikpOwogCi0gICAgcmVjb3JkSWRlbnRpZmllci0+c2V0UHJpbWFyeUtleShlbmNvZGVJREJLZXko
a2V5KSk7Ci0gICAgcmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZWNvcmRJZGVudGlmaWVyLT5yZXNldChlbmNvZGVJREJLZXkoa2V5
KSwgdmVyc2lvbik7CiB9CiAKIHZvaWQgSURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3Jl
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKQEAgLTY4OCwxNSArNjg2LDE1IEBAIHZvaWQg
SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uCiAgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBz
dGFydEtleSwgc3RvcEtleSk7CiB9CiAKLXZvaWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNv
cmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKiBy
ZWNvcmRJZGVudGlmaWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImIHJlY29yZElk
ZW50aWZpZXIpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29y
ZCIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlv
bik7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVEYXRhS2V5ID0gT2JqZWN0
U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmVjb3JkSWRl
bnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3Rv
cmVEYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkpOwogICAgIGxldmVsREJUcmFu
c2FjdGlvbi0+cmVtb3ZlKG9iamVjdFN0b3JlRGF0YUtleSk7CiAKLSAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29u
c3QgVmVjdG9yPGNoYXI+IGV4aXN0c0VudHJ5S2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7
CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUoZXhpc3RzRW50cnlLZXkpOwogfQogCkBA
IC03NDMsMTkgKzc0MSwxOCBAQCBpbnQ2NF90IElEQkJhY2tpbmdTdG9yZTo6Z2V0S2V5R2VuZXJh
dG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aQogICAgIHJldHVybiBr
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6bWF5
YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQordm9pZCBJREJCYWNr
aW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVudCkK
IHsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24p
OwogCiAgICAgaWYgKGNoZWNrQ3VycmVudCkgewogICAgICAgICBpbnQ2NF90IGN1cnJlbnROdW1i
ZXIgPSBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkKTsKICAgICAgICAgaWYgKG5ld051bWJlciA8PSBjdXJyZW50TnVtYmVy
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXkgPSBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CiAgICAg
cHV0SW50KGxldmVsREJUcmFuc2FjdGlvbiwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwg
bmV3TnVtYmVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJREJCYWNraW5nU3RvcmU6
OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXkmIGtleSwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKQpA
QCAtNzcyLDggKzc2OSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVj
dFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zCiAgICAgaWYgKCFkZWNv
ZGVWYXJJbnQoZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgZm91bmRSZWNvcmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVu
Y29kZUlEQktleShrZXkpKTsKLSAgICBmb3VuZFJlY29yZElkZW50aWZpZXItPnNldFZlcnNpb24o
dmVyc2lvbik7CisgICAgZm91bmRSZWNvcmRJZGVudGlmaWVyLT5yZXNldChlbmNvZGVJREJLZXko
a2V5KSwgdmVyc2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg5NywyMSArODkzLDIw
IEBAIHZvaWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50CiAgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5z
YWN0aW9uLCBpbmRleERhdGFTdGFydCwgaW5kZXhEYXRhRW5kKTsKIH0KIAotYm9vbCBJREJCYWNr
aW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0IFJlY29yZElkZW50
aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhE
YXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRp
ZmllcikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9y
UmVjb3JkIik7CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVChpbmRleElk
ID49IE1pbmltdW1JbmRleElkKTsKIAogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRy
YW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0
aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtl
eSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5KCkpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFLZXkgPSBJbmRleERhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBlbmNvZGVJREJLZXkoa2V5KSwg
cmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkpOwogCiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7
Ci0gICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFySW50KHJlY29yZElkZW50aWZpZXItPnZlcnNpb24o
KSkpOwotICAgIGRhdGEuYXBwZW5kKHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7Cisg
ICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFySW50KHJlY29yZElkZW50aWZpZXIudmVyc2lvbigpKSk7
CisgICAgZGF0YS5hcHBlbmQocmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkpOwogCiAgICAg
bGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoaW5kZXhEYXRhS2V5LCBkYXRhKTsKLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0
LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQpAQCAtOTQyLDEyICs5MzcsNiBAQCBzdGF0aWMgYm9v
bCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBuZWVkZWQgc2luY2Ugd2UgaW52YWxpZGF0ZSBpbmRl
eCBkYXRhIHZpYSB0aGUgdmVyc2lvbiBudW1iZXIgbWVjaGFuaXNtLgotICAgIHJldHVybiB0cnVl
OwotfQotCiBzdGF0aWMgYm9vbCB2ZXJzaW9uRXhpc3RzKExldmVsREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IHZlcnNpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5jb2RlZFByaW1hcnlLZXkpCiB7CiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgZW5jb2RlZFByaW1hcnlLZXkpOwpAQCAtMTE4OCwxMCArMTE3
Nyw2IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmly
dHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
U3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNv
cmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2lkZW50aWZpZXI7Ci0gICAgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVu
dFJvdygpOwogCiBwcml2YXRlOgpAQCAtMTIwNSw3ICsxMTkwLDYgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4g
bV9pZGVudGlmaWVyOwogfTsKIAogYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRD
dXJyZW50Um93KCkKQEAgLTEyMzAsNyArMTIxNCw3IEBAIGJvb2wgT2JqZWN0U3RvcmVLZXlDdXJz
b3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgcmUt
ZW5jb2RlcyB3aGF0IHdhcyBqdXN0IGRlY29kZWQ7IHRyeSBhbmQgb3B0aW1pemUuCi0gICAgbV9p
ZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoZW5j
b2RlSURCS2V5KCptX2N1cnJlbnRLZXkpLCB2ZXJzaW9uKTsKKyAgICBtX3JlY29yZElkZW50aWZp
ZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIoZW5jb2RlSURCS2V5KCptX2N1
cnJlbnRLZXkpLCB2ZXJzaW9uKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI0OSwxMCAr
MTIzMyw2IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAg
dmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+
IHJlY29yZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRl
bnRpZmllcjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHBy
aXZhdGU6CkBAIC0xMjY4LDcgKzEyNDgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFN0cmlu
ZyBtX2N1cnJlbnRWYWx1ZTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVu
dGlmaWVyPiBtX2lkZW50aWZpZXI7CisgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlm
aWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBs
Ojpsb2FkQ3VycmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzMsNyBAQCBib29sIE9iamVjdFN0b3Jl
Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlz
IHJlLWVuY29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgotICAg
IG1faWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRl
KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9yZWNvcmRJZGVu
dGlmaWVyLnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CiAKICAg
ICBtX2N1cnJlbnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBtX2l0ZXJhdG9y
LT52YWx1ZSgpLmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMjk1LDcgQEAgcHVibGljOgogICAgIC8v
IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5
S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRl
bnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZp
ZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93
KCk7CiAKIHByaXZhdGU6CkBAIC0xMzk0LDcgKzEzNzQsNyBAQCBwdWJsaWM6CiAgICAgLy8gSURC
QmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJ
REJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAg
ICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAyNTJkZWUxZjVh
Mjg5MWY3NDY3NmUxNWJiNzNlMzAxOTM1YTg1YThiLi42ZjAzYzhjMDAxOTUzZThmNDc4YTQxY2E4
MmYwMDJiNzUyMDVkZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDMzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogCi0gICAgY2xh
c3MgUmVjb3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElkZW50aWZpZXI+
IHsKKyAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hh
cj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJl
Y29yZElkZW50aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZWNvcmRJZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29yZElkZW50aWZp
ZXIoKSB7IH0KKyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHBy
aW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1f
dmVyc2lvbih2ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9CisgICAg
ICAgIFJlY29yZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsg
fQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wcmlt
YXJ5S2V5LmlzRW1wdHkoKTsgfQorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1hcnlLZXkuaXNFbXB0eSgpOyB9CiAgICAgICAgIFZlY3RvcjxjaGFyPiBwcmltYXJ5
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgICAgIHZvaWQgc2V0UHJp
bWFyeUtleShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXkpIHsgbV9wcmltYXJ5S2V5ID0g
cHJpbWFyeUtleTsgfQogICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
X3ZlcnNpb247IH0KLSAgICAgICAgdm9pZCBzZXRWZXJzaW9uKGludDY0X3QgdmVyc2lvbikgeyBt
X3ZlcnNpb24gPSB2ZXJzaW9uOyB9CisgICAgICAgIHZvaWQgcmVzZXQoY29uc3QgVmVjdG9yPGNo
YXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgbV9wcmltYXJ5S2V5ID0gcHJpbWFy
eUtleTsgbV92ZXJzaW9uID0gdmVyc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVj
b3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVy
c2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lvbih2ZXJzaW9uKSB7IEFT
U0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9Ci0gICAgICAgIFJlY29yZElkZW50aWZpZXIo
KSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQotCiAgICAgICAgIFZlY3Rvcjxj
aGFyPiBtX3ByaW1hcnlLZXk7IC8vIEZJWE1FOiBNYWtlIGl0IG1vcmUgY2xlYXIgdGhhdCB0aGlz
IGlzIHRoZSAqZW5jb2RlZCogdmVyc2lvbiBvZiB0aGUga2V5LgogICAgICAgICBpbnQ2NF90IG1f
dmVyc2lvbjsKICAgICB9OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7Ci0gICAgdmlydHVhbCBib29sIHB1dFJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElk
ZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElk
ZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwogICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlH
ZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVhbCBib29s
IG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgbWF5
YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBuZXdTdGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpOwogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlz
dHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVjb3JkSWRl
bnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPElE
QkluZGV4TWV0YWRhdGE+IGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7Ci0gICAgdmlydHVh
bCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopOwotICAgIHZpcnR1
YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0
SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmKTsKICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5J
bmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRl
eEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSk7CiAKQEAgLTExMywxMyArMTA3
LDYgQEAgcHVibGljOgogICAgICAgICAgICAgYm9vbCB1bmlxdWU7CiAgICAgICAgIH07CiAKLSAg
ICAgICAgQ3Vyc29yKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNv
ck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCi0gICAgICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24pCi0gICAgICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQ3Vyc29yKGNvbnN0IElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yKiBvdGhlcik7Ci0KICAgICAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgICAgICBib29sIGNvbnRpbnVlRnVuY3Rp
b24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKTsKICAgICAgICAgYm9v
bCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpOwpAQCAtMTI4LDExICsxMTUsMTggQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudEtleTsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsK
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50
aWZpZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVj
b3JkSWRlbnRpZmllcigpIGNvbnN0ICB7IHJldHVybiBtX3JlY29yZElkZW50aWZpZXI7IH0KICAg
ICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3Vy
cmVudFJvdygpID0gMDsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgQ3Vyc29yKExldmVsREJU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlv
bnMpCisgICAgICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgICAgICAg
ICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQorICAgICAgICB7CisgICAgICAgIH0K
KyAgICAgICAgQ3Vyc29yKGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yKiBvdGhlcik7CisK
ICAgICAgICAgYm9vbCBpc1Bhc3RCb3VuZHMoKSBjb25zdDsKICAgICAgICAgYm9vbCBoYXZlRW50
ZXJlZFJhbmdlKCkgY29uc3Q7CiAKQEAgLTE0MCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEN1cnNvck9wdGlvbnMgbV9jdXJzb3JPcHRpb25zOwogICAgICAgICBPd25QdHI8TGV2
ZWxEQkl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJl
bnRLZXk7CisgICAgICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciBtX3JlY29y
ZElkZW50aWZpZXI7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9w
ZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdl
KiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCA3NmZiYTI3YjlkZWJhOTgyZDUzMjVkMDNjODkwNDdkZmRmZWFmOWM4Li43NDcxY2FjNDdlN2I1
NGZiNDc5ZDhjNTE5NjgxZjcxYmU2NjMzMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cApAQCAtMTU1LDE2ICsxNTUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBib29sIHdyaXRlSW5kZXhLZXlzKGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllciwgSURCQmFja2luZ1N0b3JlJiBiYWNraW5n
U3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgY29uc3QKKyAgICB2b2lkIHdyaXRl
SW5kZXhLZXlzKGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciYgcmVjb3Jk
SWRlbnRpZmllciwgSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkgY29uc3QKICAgICB7CiAgICAgICAgIGludDY0X3QgaW5kZXhJZCA9IG1f
aW5kZXhNZXRhZGF0YS5pZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luZGV4
S2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmUuZGVsZXRl
SW5kZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCByZWNvcmRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZS5wdXRJbmRleERhdGFGb3JSZWNvcmQo
dHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICoobV9pbmRl
eEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBiYWNraW5nU3RvcmUucHV0SW5kZXhEYXRhRm9yUmVjb3Jk
KHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAqKG1faW5k
ZXhLZXlzKVtpXS5nZXQoKSwgcmVjb3JkSWRlbnRpZmllcik7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjMyLDggKzIyOCw4IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlv
blB0cik7CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9ub3Vz
LCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21wbGV4
aXR5LgotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29y
ZElkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZSgp
OwotICAgIGlmICghYmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgKnBy
aW1hcnlLZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7CisgICAgSURCQmFja2luZ1N0b3Jl
OjpSZWNvcmRJZGVudGlmaWVyIHJlY29yZElkZW50aWZpZXI7CisgICAgaWYgKCFiYWNraW5nU3Rv
cmUoKS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBpZCgpLCAqcHJpbWFyeUtleSwgJnJlY29yZElkZW50
aWZpZXIpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ4LDEwICsyNDQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgSW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0gaW5kZXhXcml0ZXJzW2ldLmdldCgpOwot
ICAgICAgICBpZiAoIWluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVy
LmdldCgpLCAqYmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBkYXRhYmFzZUlkKCksIG1fbWV0YWRhdGEuaWQpKSB7Ci0gICAgICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAg
ICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3JkSWRlbnRpZmllciwgKmJhY2tpbmdT
dG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJ
ZCgpLCBtX21ldGFkYXRhLmlkKTsKICAgICB9CiB9CiAKQEAgLTMwMyw4ICsyOTYsOCBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAgQVNTRVJUKGtleSAmJiBrZXktPmlzVmFsaWQoKSk7
CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJ
ZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKTsK
LSAgICBpZiAocHV0TW9kZSA9PSBBZGRPbmx5ICYmIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUo
KS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICpr
ZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7CisgICAgSURCQmFja2luZ1N0b3JlOjpSZWNv
cmRJZGVudGlmaWVyIHJlY29yZElkZW50aWZpZXI7CisgICAgaWYgKHB1dE1vZGUgPT0gQWRkT25s
eSAmJiBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCAmcmVjb3JkSWRlbnRpZmllcikpIHsK
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4g
dGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTgsMjIg
KzMxMSwxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAgLy8gQmVmb3JlIHRoaXMg
cG9pbnQsIGRvbid0IGRvIGFueSBtdXRhdGlvbi4gIEFmdGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNr
IHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9mIGVycm9yLgogCi0gICAgaWYgKCFvYmplY3RTdG9y
ZS0+YmFja2luZ1N0b3JlKCktPnB1dFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
ICprZXksIHZhbHVlLT50b1dpcmVTdHJpbmcoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsK
LSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRp
bmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KGVycm9yKTsKLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dFJlY29yZCh0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFi
YXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksIHZhbHVlLT50b1dpcmVTdHJpbmcoKSwg
JnJlY29yZElkZW50aWZpZXIpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdy
aXRlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0g
aW5kZXhXcml0ZXJzW2ldLmdldCgpOwotICAgICAgICBpZiAoIWluZGV4V3JpdGVyLT53cml0ZUlu
ZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLmdldCgpLCAqb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUt
PmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPm1fbWV0YWRhdGEuaWQpKSB7Ci0KLSAgICAgICAg
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
ZXJyb3IpOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtl
eXMocmVjb3JkSWRlbnRpZmllciwgKm9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKSwgdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlk
KCksIG9iamVjdFN0b3JlLT5tX21ldGFkYXRhLmlkKTsKICAgICB9CiAKICAgICBpZiAoYXV0b0lu
Y3JlbWVudCAmJiBwdXRNb2RlICE9IEN1cnNvclVwZGF0ZSAmJiBrZXktPnR5cGUoKSA9PSBJREJL
ZXk6Ok51bWJlclR5cGUpCkBAIC0zNjEsMjAgKzM0MywxMiBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtl
eVJhbgogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbCIpOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXI7CiAKICAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5iYWNr
aW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+
aWQoKSwga2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CiAgICAgaWYgKGJhY2tpbmdT
dG9yZUN1cnNvcikgewogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHJlY29yZElkZW50aWZp
ZXIgPSBiYWNraW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKTsKLQotICAgICAgICAg
ICAgZm9yIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJbmRleE1hcDo6aXRlcmF0b3IgaXQg
PSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2lu
ZGV4ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBvYmpl
Y3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCh0cmFuc2Fj
dGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQo
KSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5rZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRl
UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9y
ZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQo
KSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0ZVJlY29y
ZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRh
dGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3Jk
SWRlbnRpZmllcigpKTsKIAogICAgICAgICB9IHdoaWxlIChiYWNraW5nU3RvcmVDdXJzb3ItPmNv
bnRpbnVlRnVuY3Rpb24oMCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggMDJkMmQ1ZDQyMGNmMzMzOTE4NTA1
NDY4ZDQ1OTVkYTMzZGE4OWE0NC4uMzQ2MzYzYWMzZTU0NmEwMjMxMTY4ZmI2MTcwOGM1MWY5Yzlk
M2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKQEAgLTQ0LDE4ICs0NCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAg
dmlydHVhbCBib29sIHB1dFJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcHV0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJl
Y29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmpl
Y3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKFRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFs
IGludDY0X3QgZ2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiAw
OyB9Ci0gICAgdmlydHVhbCBib29sIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJl
cihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVu
dE51bWJlcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpIE9WRVJSSURFIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYs
IFJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IGdldElu
ZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURF
IHsgcmV0dXJuIFZlY3RvcjxJREJJbmRleE1ldGFkYXRhPigpOyB9CiAgICAgdmlydHVhbCBib29s
IGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpIE9WRVJSSURFIHsg
cmV0dXJuIGZhbHNlOyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNv
cmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVy
KikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5k
ZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciop
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0
YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElk
ZW50aWZpZXImKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBn
ZXRQcmltYXJ5S2V5VmlhSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVS
UklERSB7IHJldHVybiBQYXNzUmVmUHRyPElEQktleT4oKTsgfQogICAgIHZpcnR1YWwgYm9vbCBr
ZXlFeGlzdHNJbkluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwg
UmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174770</attachid>
            <date>2012-11-16 15:23:49 -0800</date>
            <delta_ts>2012-11-16 15:33:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102018-20121116152144.patch</filename>
            <type>text/plain</type>
            <size>29497</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJiOTA3ZDE0ZDcxM2Iy
ZTc4NjI1M2NjNTU0MDU3Y2E5ZWYwMzk0NC4uMTkxOTBjYjllYzI3NDMzOTZiNjZkNzk4Y2QzMWQz
YjRkOWNmMTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgSURCQmFja2luZ1N0b3JlJ3MgUmVjb3JkSWRlbnRpZmllciBi
ZSBhIHNpbXBsZQorICAgICAgICBjbGFzcywgZXhpc3Rpbmcgb25seSBhcyBhbiBpbmxpbmUgb3Ig
c3RhY2stYmFzZWQgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgbWFrZXMgbXVjaCBvZiB0aGUgY29w
eSBzZW1hbnRpY3MgbW9yZSBleHBsaWNpdCwgYW5kCisgICAgICAgIHJlbW92ZXMgcmVmY291bnRp
bmcgZnJvbSBhbiBvYmplY3QgdGhhdCBvbmx5IGV2ZXIgaGFkIGEgcmVmY291bnQKKyAgICAgICAg
b2YgMSBvciAyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KToKKyAgICAgICAgKE9iamVjdFN0b3JlQ3Vyc29ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4S2V5Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEN1cnNvckltcGw6OnJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpSZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OnJlc2V0KToK
KyAgICAgICAgKFJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpyZWNvcmRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3Ip
OgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToK
KwogMjAxMi0xMS0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkIG1pc3NpbmcgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBiNDg1OWM5NWE5MTdhYzcyNjdiZDMwODI3NjNkOTEyMzJl
YWJiZmE1Li4zYjBmY2YyNmI4ZWI1YmJiNWRjMTUxYzhiODYzYzk1MDZjODI1MmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTEyICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNpbXBs
aWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBJREJGYWtlQmFja2luZ1N0b3JlIHRvIG1hdGNoIGl0cyBwYXJl
bnQgY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisKIDIw
MTItMTEtMTYgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVsdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUwOWI4MGYzN2ZjYjdlMDdjYS4uOTkwNWQ1YjUz
M2QxMzNhZmM5OWQ4MTUyNGJhYzVmMDBkMDc0NTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NTYsNyArNjU2
LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAot
Ym9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlm
aWVyKiByZWNvcmRJZGVudGlmaWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSk7CkBAIC02NzMsOSArNjczLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0
aW9uLT5wdXQoZXhpc3RzRW50cnlLZXksIGVuY29kZUludCh2ZXJzaW9uKSk7CiAKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRWZXJzaW9uKHZlcnNpb24pOwotICAgIHJldHVybiB0cnVlOworICAg
IHJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsKIH0K
IAogdm9pZCBJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQpAQCAtNjg4LDE1ICs2ODYsMTUgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6
OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0S2V5LCBzdG9wS2V5
KTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIp
Cit2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkIik7CiAgICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5
S2V5KCkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmpl
Y3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJ
ZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUo
b2JqZWN0U3RvcmVEYXRhS2V5KTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRy
eUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
cmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
ZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAgICBsZXZlbERCVHJh
bnNhY3Rpb24tPnJlbW92ZShleGlzdHNFbnRyeUtleSk7CiB9CiAKQEAgLTc0MywxOSArNzQxLDE4
IEBAIGludDY0X3QgSURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3RpCiAgICAgcmV0dXJuIGtleUdlbmVyYXRvckN1cnJl
bnROdW1iZXI7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5l
d051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hl
Y2tDdXJyZW50KSB7CiAgICAgICAgIGludDY0X3QgY3VycmVudE51bWJlciA9IGdldEtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
OwogICAgICAgICBpZiAobmV3TnVtYmVyIDw9IGN1cnJlbnROdW1iZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsKICAgICBwdXRJbnQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwotICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBS
ZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpCkBAIC03NzIsOCArNzY5LDcg
QEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnMKICAgICBpZiAoIWRlY29kZVZhckludChkYXRhLmJl
Z2luKCksIGRhdGEuZW5kKCksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmb3VuZFJlY29yZElkZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkp
OwotICAgIGZvdW5kUmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKKyAgICBm
b3VuZFJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODk3LDIxICs4OTMsMjAgQEAgdm9pZCBJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0
YVN0YXJ0LCBpbmRleERhdGFFbmQpOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRl
bnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
a2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBB
U1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4
SWQpOwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0
aW9uKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5
KGtleSksIHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVy
LnByaW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVu
ZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci0+dmVyc2lvbigpKSk7Ci0gICAgZGF0YS5h
cHBlbmQocmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERCVHJhbnNhY3Rp
b24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwotICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiB0YXJnZXQsIFZlY3RvcjxjaGFyPiYg
Zm91bmRLZXkpCkBAIC05NDIsMTIgKzkzNyw2IEBAIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtl
eUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleERh
dGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QsIGludDY0
X3QsIGludDY0X3QsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKQotewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzbid0IG5lZWRlZCBzaW5jZSB3ZSBpbnZhbGlkYXRlIGluZGV4IGRhdGEgdmlhIHRoZSB2
ZXJzaW9uIG51bWJlciBtZWNoYW5pc20uCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBi
b29sIHZlcnNpb25FeGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkUHJpbWFyeUtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBlbmNvZGVkUHJpbWFyeUtleSk7CkBAIC0xMTg4LDEwICsxMTc3LDYgQEAgcHVibGljOgog
CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJl
Y29yZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZh
dGU6CkBAIC0xMjA1LDcgKzExOTAsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiB9
OwogCiBib29sIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQpAQCAt
MTIzMCw3ICsxMjE0LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJy
ZW50Um93KCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2Fz
IGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KLSAgICBtX2lkZW50aWZpZXIgPSBJREJC
YWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3Vy
cmVudEtleSksIHZlcnNpb24pOworICAgIG1fcmVjb3JkSWRlbnRpZmllci5yZXNldChlbmNvZGVJ
REJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xMjQ5LDEwICsxMjMzLDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIE9WRVJSSURFCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pZGVudGlmaWVyOwotICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRS
b3coKTsKIAogcHJpdmF0ZToKQEAgLTEyNjgsNyArMTI0OCw2IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OlJlY29yZElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzIsNyBAQCBib29sIE9i
amVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHJlLWVuY29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGlt
aXplLgotICAgIG1faWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmll
cjo6Y3JlYXRlKGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9y
ZWNvcmRJZGVudGlmaWVyLnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lv
bik7CiAKICAgICBtX2N1cnJlbnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBt
X2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMjk0LDcgQEAgcHVibGlj
OgogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRD
dXJyZW50Um93KCk7CiAKIHByaXZhdGU6CkBAIC0xMzk0LDcgKzEzNzMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRl
bnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZp
ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlm
aWVyOyB9CiAgICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAx
MzM3MDI2ZjEyZDRmODlkZWRmN2UyY2EyY2QyZmI5NDJmYmJkNDI0Li5iOWE4OWFmMmRkNTUzY2Ni
YjAwNDZhZWQ3NzViYjQyZjA0OGI1NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDM0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwog
Ci0gICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElk
ZW50aWZpZXI+IHsKKyAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlY29yZElkZW50aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZWNvcmRJZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29y
ZElkZW50aWZpZXIoKSB7IH0KKyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8
Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFy
eUtleSksIG1fdmVyc2lvbih2ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkp
OyB9CisgICAgICAgIFJlY29yZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNp
b24oLTEpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltYXJ5S2V5LmlzRW1wdHkoKTsgfQorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1hcnlLZXkuaXNFbXB0eSgpOyB9CiAgICAgICAgIFZlY3RvcjxjaGFy
PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgICAgIHZv
aWQgc2V0UHJpbWFyeUtleShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXkpIHsgbV9wcmlt
YXJ5S2V5ID0gcHJpbWFyeUtleTsgfQogICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb247IH0KLSAgICAgICAgdm9pZCBzZXRWZXJzaW9uKGludDY0X3QgdmVy
c2lvbikgeyBtX3ZlcnNpb24gPSB2ZXJzaW9uOyB9CisgICAgICAgIHZvaWQgcmVzZXQoY29uc3Qg
VmVjdG9yPGNoYXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgbV9wcmltYXJ5S2V5
ID0gcHJpbWFyeUtleTsgbV92ZXJzaW9uID0gdmVyc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGlu
dDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lvbih2ZXJz
aW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9Ci0gICAgICAgIFJlY29yZElk
ZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQotCiAgICAgICAg
IFZlY3RvcjxjaGFyPiBtX3ByaW1hcnlLZXk7IC8vIEZJWE1FOiBNYWtlIGl0IG1vcmUgY2xlYXIg
dGhhdCB0aGlzIGlzIHRoZSAqZW5jb2RlZCogdmVyc2lvbiBvZiB0aGUga2V5LgogICAgICAgICBp
bnQ2NF90IG1fdmVyc2lvbjsKKyAgICAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlY29y
ZElkZW50aWZpZXIpOwogICAgIH07CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVj
b3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVj
b3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBpbnQ2NF90IGdl
dEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKLSAgICB2aXJ0dWFs
IGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBuZXdTdGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpOworICAgIHZpcnR1YWwgdm9p
ZCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCk7CiAgICAgdmlydHVhbCBib29sIGtl
eUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBSZWNv
cmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCBWZWN0
b3I8SURCSW5kZXhNZXRhZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSk7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKLSAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKik7Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9p
ZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpOwogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlz
dHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
IGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KTsKIApAQCAtMTEzLDEz
ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBib29sIHVuaXF1ZTsKICAgICAgICAgfTsK
IAotICAgICAgICBDdXJzb3IoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3Qg
Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKLSAgICAgICAgICAgIDogbV90cmFuc2FjdGlv
bih0cmFuc2FjdGlvbikKLSAgICAgICAgICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlv
bnMpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3Qg
SURCQmFja2luZ1N0b3JlOjpDdXJzb3IqIG90aGVyKTsKLQogICAgICAgICBQYXNzUmVmUHRyPElE
QktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgICAgIGJvb2wg
Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWsp
OwogICAgICAgICBib29sIGFkdmFuY2UodW5zaWduZWQgbG9uZyk7CkBAIC0xMjgsMTEgKzExNiwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVl
KCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVjb3JkSWRlbnRpZmll
cj4gcmVjb3JkSWRlbnRpZmllcigpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBSZWNvcmRJ
ZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgIHsgcmV0dXJuIG1fcmVjb3JkSWRl
bnRpZmllcjsgfQogICAgICAgICB2aXJ0dWFsIH5DdXJzb3IoKSB7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGxvYWRDdXJyZW50Um93KCkgPSAwOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBD
dXJzb3IoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9u
cyYgY3Vyc29yT3B0aW9ucykKKyAgICAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlv
bikKKyAgICAgICAgICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlvbnMpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0
b3JlOjpDdXJzb3IqIG90aGVyKTsKKwogICAgICAgICBib29sIGlzUGFzdEJvdW5kcygpIGNvbnN0
OwogICAgICAgICBib29sIGhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdDsKIApAQCAtMTQwLDYgKzEz
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlv
bnM7CiAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7CiAgICAgICAg
IFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKKyAgICAgICAgSURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDc2ZmJhMjdiOWRlYmE5ODJkNTMyNWQwM2M4OTA0N2Rm
ZGZlYWY5YzguLjc0NzFjYWM0N2U3YjU0ZmI0NzlkOGM1MTk2ODFmNzFiZTY2MzMyMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xNTUsMTYgKzE1NSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgd3JpdGVJbmRleEtleXMoY29u
c3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJ
REJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBjb25zdAorICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdAogICAgIHsKICAgICAg
ICAgaW50NjRfdCBpbmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWJhY2tpbmdTdG9yZS5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIHJlY29yZElkZW50aWZpZXIpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghYmFja2luZ1N0b3Jl
LnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29yZElkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZS5wdXRJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIGluZGV4SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlmaWVy
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yMzIsOCArMjI4LDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBjb3VsZCBiZSBhc3luY2hyb25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mg
d29ydGggdGhlIGV4dHJhIGNvbXBsZXhpdHkuCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUoKS0+a2V5RXhp
c3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
ZGF0YWJhc2VJZCgpLCBpZCgpLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkp
IHsKKyAgICBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmll
cjsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIGlkKCksICpw
cmltYXJ5S2V5LCAmcmVjb3JkSWRlbnRpZmllcikpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFi
b3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDgsMTAgKzI0NCw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3Jp
dGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBp
bmRleFdyaXRlcnNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghaW5kZXhXcml0ZXItPndyaXRlSW5k
ZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpiYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgbV9tZXRhZGF0YS5p
ZCkpIHsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNv
cmRJZGVudGlmaWVyLCAqYmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIG1fbWV0YWRhdGEuaWQpOwogICAgIH0KIH0KIApA
QCAtMzAzLDggKzI5Niw4IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKICAgICBBU1NFUlQo
a2V5ICYmIGtleS0+aXNWYWxpZCgpKTsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJl
Y29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXI6OmNyZWF0ZSgpOwotICAgIGlmIChwdXRNb2RlID09IEFkZE9ubHkgJiYgb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgp
LCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAg
ICBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmllcjsKKyAg
ICBpZiAocHV0TW9kZSA9PSBBZGRPbmx5ICYmIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+
a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXks
ICZyZWNvcmRJZGVudGlmaWVyKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwg
IktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTMxOCwyMiArMzExLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
CiAKICAgICAvLyBCZWZvcmUgdGhpcyBwb2ludCwgZG9uJ3QgZG8gYW55IG11dGF0aW9uLiAgQWZ0
ZXIgdGhpcyBwb2ludCwgcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3Iu
CiAKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJ
ZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgdmFsdWUtPnRvV2lyZVN0cmluZygpLCByZWNv
cmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOwotICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwotICAgICAgICB0cmFuc2FjdGlvbi0+YWJv
cnQoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG9iamVjdFN0b3JlLT5iYWNr
aW5nU3RvcmUoKS0+cHV0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwg
dmFsdWUtPnRvV2lyZVN0cmluZygpLCAmcmVjb3JkSWRlbnRpZmllcik7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbmRl
eFdyaXRlciogaW5kZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNbaV0uZ2V0KCk7Ci0gICAgICAgIGlm
ICghaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpv
YmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+bV9tZXRh
ZGF0YS5pZCkpIHsKLQotICAgICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
ID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlu
ZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLCAqb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
b2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPm1fbWV0YWRhdGEuaWQpOwog
ICAgIH0KIAogICAgIGlmIChhdXRvSW5jcmVtZW50ICYmIHB1dE1vZGUgIT0gQ3Vyc29yVXBkYXRl
ICYmIGtleS0+dHlwZSgpID09IElEQktleTo6TnVtYmVyVHlwZSkKQEAgLTM2MSwyMCArMzQzLDEy
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsIik7Ci0gICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmll
cjsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vy
c29yID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3Io
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBrZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpO
RVhUKTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgcmVjb3JkSWRlbnRpZmllciA9IGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRl
bnRpZmllcigpOwotCi0gICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OkluZGV4TWFwOjppdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5k
ZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPmtleSwgcmVj
b3JkSWRlbnRpZmllci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgp
LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5iYWNr
aW5nU3RvcmUoKS0+ZGVsZXRlUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgYmFj
a2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIH0gd2hpbGUg
KGJhY2tpbmdTdG9yZUN1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRl
eCAwMmQyZDVkNDIwY2YzMzM5MTg1MDU0NjhkNDU5NWRhMzNkYTg5YTQ0Li4zNDYzNjNhYzNlNTQ2
YTAyMzExNjhmYjYxNzA4YzUxZjljOWQzYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNDQsMTggKzQ0LDE3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9W
RVJSSURFIHsgfQogICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVL
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3Vy
cmVudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNo
ZWNrQ3VycmVudCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVu
dGlmaWVyKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBWZWN0b3I8
SURCSW5kZXhNZXRhZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+
KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlz
TXVsdGlFbnRyeSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBi
b29sIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYs
IGNvbnN0IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURCS2V5Pigp
OyB9CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlaWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KSBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174771</attachid>
            <date>2012-11-16 15:33:06 -0800</date>
            <delta_ts>2012-11-16 15:36:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102018-20121116153101.patch</filename>
            <type>text/plain</type>
            <size>29497</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJiOTA3ZDE0ZDcxM2Iy
ZTc4NjI1M2NjNTU0MDU3Y2E5ZWYwMzk0NC4uMTkxOTBjYjllYzI3NDMzOTZiNjZkNzk4Y2QzMWQz
YjRkOWNmMTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgSURCQmFja2luZ1N0b3JlJ3MgUmVjb3JkSWRlbnRpZmllciBi
ZSBhIHNpbXBsZQorICAgICAgICBjbGFzcywgZXhpc3Rpbmcgb25seSBhcyBhbiBpbmxpbmUgb3Ig
c3RhY2stYmFzZWQgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgbWFrZXMgbXVjaCBvZiB0aGUgY29w
eSBzZW1hbnRpY3MgbW9yZSBleHBsaWNpdCwgYW5kCisgICAgICAgIHJlbW92ZXMgcmVmY291bnRp
bmcgZnJvbSBhbiBvYmplY3QgdGhhdCBvbmx5IGV2ZXIgaGFkIGEgcmVmY291bnQKKyAgICAgICAg
b2YgMSBvciAyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KToKKyAgICAgICAgKE9iamVjdFN0b3JlQ3Vyc29ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4S2V5Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEN1cnNvckltcGw6OnJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpSZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OnJlc2V0KToK
KyAgICAgICAgKFJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpyZWNvcmRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3Ip
OgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToK
KwogMjAxMi0xMS0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkIG1pc3NpbmcgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBiNDg1OWM5NWE5MTdhYzcyNjdiZDMwODI3NjNkOTEyMzJl
YWJiZmE1Li4zYjBmY2YyNmI4ZWI1YmJiNWRjMTUxYzhiODYzYzk1MDZjODI1MmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTEyICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNpbXBs
aWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBJREJGYWtlQmFja2luZ1N0b3JlIHRvIG1hdGNoIGl0cyBwYXJl
bnQgY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisKIDIw
MTItMTEtMTYgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVsdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUwOWI4MGYzN2ZjYjdlMDdjYS4uOTkwNWQ1YjUz
M2QxMzNhZmM5OWQ4MTUyNGJhYzVmMDBkMDc0NTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NTYsNyArNjU2
LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAot
Ym9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlm
aWVyKiByZWNvcmRJZGVudGlmaWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSk7CkBAIC02NzMsOSArNjczLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0
aW9uLT5wdXQoZXhpc3RzRW50cnlLZXksIGVuY29kZUludCh2ZXJzaW9uKSk7CiAKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRWZXJzaW9uKHZlcnNpb24pOwotICAgIHJldHVybiB0cnVlOworICAg
IHJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsKIH0K
IAogdm9pZCBJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQpAQCAtNjg4LDE1ICs2ODYsMTUgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6
OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0S2V5LCBzdG9wS2V5
KTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIp
Cit2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkIik7CiAgICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5
S2V5KCkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmpl
Y3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJ
ZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUo
b2JqZWN0U3RvcmVEYXRhS2V5KTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRy
eUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
cmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
ZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAgICBsZXZlbERCVHJh
bnNhY3Rpb24tPnJlbW92ZShleGlzdHNFbnRyeUtleSk7CiB9CiAKQEAgLTc0MywxOSArNzQxLDE4
IEBAIGludDY0X3QgSURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3RpCiAgICAgcmV0dXJuIGtleUdlbmVyYXRvckN1cnJl
bnROdW1iZXI7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5l
d051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hl
Y2tDdXJyZW50KSB7CiAgICAgICAgIGludDY0X3QgY3VycmVudE51bWJlciA9IGdldEtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
OwogICAgICAgICBpZiAobmV3TnVtYmVyIDw9IGN1cnJlbnROdW1iZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsKICAgICBwdXRJbnQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwotICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBS
ZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpCkBAIC03NzIsOCArNzY5LDcg
QEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnMKICAgICBpZiAoIWRlY29kZVZhckludChkYXRhLmJl
Z2luKCksIGRhdGEuZW5kKCksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmb3VuZFJlY29yZElkZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkp
OwotICAgIGZvdW5kUmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKKyAgICBm
b3VuZFJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODk3LDIxICs4OTMsMjAgQEAgdm9pZCBJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0
YVN0YXJ0LCBpbmRleERhdGFFbmQpOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRl
bnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
a2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBB
U1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4
SWQpOwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0
aW9uKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5
KGtleSksIHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVy
LnByaW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVu
ZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci0+dmVyc2lvbigpKSk7Ci0gICAgZGF0YS5h
cHBlbmQocmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERCVHJhbnNhY3Rp
b24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwotICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiB0YXJnZXQsIFZlY3RvcjxjaGFyPiYg
Zm91bmRLZXkpCkBAIC05NDIsMTIgKzkzNyw2IEBAIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtl
eUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleERh
dGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QsIGludDY0
X3QsIGludDY0X3QsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKQotewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzbid0IG5lZWRlZCBzaW5jZSB3ZSBpbnZhbGlkYXRlIGluZGV4IGRhdGEgdmlhIHRoZSB2
ZXJzaW9uIG51bWJlciBtZWNoYW5pc20uCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBi
b29sIHZlcnNpb25FeGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkUHJpbWFyeUtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBlbmNvZGVkUHJpbWFyeUtleSk7CkBAIC0xMTg4LDEwICsxMTc3LDYgQEAgcHVibGljOgog
CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJl
Y29yZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZh
dGU6CkBAIC0xMjA1LDcgKzExOTAsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiB9
OwogCiBib29sIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQpAQCAt
MTIzMCw3ICsxMjE0LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJy
ZW50Um93KCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2Fz
IGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KLSAgICBtX2lkZW50aWZpZXIgPSBJREJC
YWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3Vy
cmVudEtleSksIHZlcnNpb24pOworICAgIG1fcmVjb3JkSWRlbnRpZmllci5yZXNldChlbmNvZGVJ
REJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xMjQ5LDEwICsxMjMzLDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIE9WRVJSSURFCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pZGVudGlmaWVyOwotICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRS
b3coKTsKIAogcHJpdmF0ZToKQEAgLTEyNjgsNyArMTI0OCw2IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OlJlY29yZElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzIsNyBAQCBib29sIE9i
amVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHJlLWVuY29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGlt
aXplLgotICAgIG1faWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmll
cjo6Y3JlYXRlKGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9y
ZWNvcmRJZGVudGlmaWVyLnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lv
bik7CiAKICAgICBtX2N1cnJlbnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBt
X2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMjk0LDcgQEAgcHVibGlj
OgogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRD
dXJyZW50Um93KCk7CiAKIHByaXZhdGU6CkBAIC0xMzk0LDcgKzEzNzMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRl
bnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZp
ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlm
aWVyOyB9CiAgICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAx
MzM3MDI2ZjEyZDRmODlkZWRmN2UyY2EyY2QyZmI5NDJmYmJkNDI0Li5iOWE4OWFmMmRkNTUzY2Ni
YjAwNDZhZWQ3NzViYjQyZjA0OGI1NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDM0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwog
Ci0gICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElk
ZW50aWZpZXI+IHsKKyAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlY29yZElkZW50aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZWNvcmRJZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29y
ZElkZW50aWZpZXIoKSB7IH0KKyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8
Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFy
eUtleSksIG1fdmVyc2lvbih2ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkp
OyB9CisgICAgICAgIFJlY29yZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNp
b24oLTEpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltYXJ5S2V5LmlzRW1wdHkoKTsgfQorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1hcnlLZXkuaXNFbXB0eSgpOyB9CiAgICAgICAgIFZlY3RvcjxjaGFy
PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgICAgIHZv
aWQgc2V0UHJpbWFyeUtleShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXkpIHsgbV9wcmlt
YXJ5S2V5ID0gcHJpbWFyeUtleTsgfQogICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX3ZlcnNpb247IH0KLSAgICAgICAgdm9pZCBzZXRWZXJzaW9uKGludDY0X3QgdmVy
c2lvbikgeyBtX3ZlcnNpb24gPSB2ZXJzaW9uOyB9CisgICAgICAgIHZvaWQgcmVzZXQoY29uc3Qg
VmVjdG9yPGNoYXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgbV9wcmltYXJ5S2V5
ID0gcHJpbWFyeUtleTsgbV92ZXJzaW9uID0gdmVyc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGlu
dDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lvbih2ZXJz
aW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9Ci0gICAgICAgIFJlY29yZElk
ZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQotCiAgICAgICAg
IFZlY3RvcjxjaGFyPiBtX3ByaW1hcnlLZXk7IC8vIEZJWE1FOiBNYWtlIGl0IG1vcmUgY2xlYXIg
dGhhdCB0aGlzIGlzIHRoZSAqZW5jb2RlZCogdmVyc2lvbiBvZiB0aGUga2V5LgogICAgICAgICBp
bnQ2NF90IG1fdmVyc2lvbjsKKyAgICAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlY29y
ZElkZW50aWZpZXIpOwogICAgIH07CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVj
b3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVj
b3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBpbnQ2NF90IGdl
dEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKLSAgICB2aXJ0dWFs
IGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBuZXdTdGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpOworICAgIHZpcnR1YWwgdm9p
ZCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCk7CiAgICAgdmlydHVhbCBib29sIGtl
eUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBSZWNv
cmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCBWZWN0
b3I8SURCSW5kZXhNZXRhZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSk7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKLSAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKik7Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopOworICAgIHZpcnR1YWwgdm9p
ZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYpOwogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlz
dHNJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
IGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KTsKIApAQCAtMTEzLDEz
ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBib29sIHVuaXF1ZTsKICAgICAgICAgfTsK
IAotICAgICAgICBDdXJzb3IoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3Qg
Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKLSAgICAgICAgICAgIDogbV90cmFuc2FjdGlv
bih0cmFuc2FjdGlvbikKLSAgICAgICAgICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlv
bnMpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3Qg
SURCQmFja2luZ1N0b3JlOjpDdXJzb3IqIG90aGVyKTsKLQogICAgICAgICBQYXNzUmVmUHRyPElE
QktleT4ga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgICAgIGJvb2wg
Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCwgSXRlcmF0b3JTdGF0ZSA9IFNlZWsp
OwogICAgICAgICBib29sIGFkdmFuY2UodW5zaWduZWQgbG9uZyk7CkBAIC0xMjgsMTEgKzExNiwx
OCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVl
KCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVjb3JkSWRlbnRpZmll
cj4gcmVjb3JkSWRlbnRpZmllcigpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBSZWNvcmRJ
ZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgIHsgcmV0dXJuIG1fcmVjb3JkSWRl
bnRpZmllcjsgfQogICAgICAgICB2aXJ0dWFsIH5DdXJzb3IoKSB7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGxvYWRDdXJyZW50Um93KCkgPSAwOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBD
dXJzb3IoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9u
cyYgY3Vyc29yT3B0aW9ucykKKyAgICAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlv
bikKKyAgICAgICAgICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlvbnMpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0
b3JlOjpDdXJzb3IqIG90aGVyKTsKKwogICAgICAgICBib29sIGlzUGFzdEJvdW5kcygpIGNvbnN0
OwogICAgICAgICBib29sIGhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdDsKIApAQCAtMTQwLDYgKzEz
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlv
bnM7CiAgICAgICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7CiAgICAgICAg
IFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKKyAgICAgICAgSURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDc2ZmJhMjdiOWRlYmE5ODJkNTMyNWQwM2M4OTA0N2Rm
ZGZlYWY5YzguLjc0NzFjYWM0N2U3YjU0ZmI0NzlkOGM1MTk2ODFmNzFiZTY2MzMyMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xNTUsMTYgKzE1NSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgd3JpdGVJbmRleEtleXMoY29u
c3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJ
REJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBjb25zdAorICAgIHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdAogICAgIHsKICAgICAg
ICAgaW50NjRfdCBpbmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1faW5kZXhLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIWJhY2tpbmdTdG9yZS5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIHJlY29yZElkZW50aWZpZXIpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghYmFja2luZ1N0b3Jl
LnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29yZElkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZS5wdXRJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIGluZGV4SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlmaWVy
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yMzIsOCArMjI4LDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRl
eEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBjb3VsZCBiZSBhc3luY2hyb25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mg
d29ydGggdGhlIGV4dHJhIGNvbXBsZXhpdHkuCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUoKS0+a2V5RXhp
c3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
ZGF0YWJhc2VJZCgpLCBpZCgpLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkp
IHsKKyAgICBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmll
cjsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIGlkKCksICpw
cmltYXJ5S2V5LCAmcmVjb3JkSWRlbnRpZmllcikpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFi
b3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDgsMTAgKzI0NCw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBQcmltYXJ5S2V5LCBjCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3Jp
dGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBp
bmRleFdyaXRlcnNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghaW5kZXhXcml0ZXItPndyaXRlSW5k
ZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpiYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgbV9tZXRhZGF0YS5p
ZCkpIHsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNv
cmRJZGVudGlmaWVyLCAqYmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIG1fbWV0YWRhdGEuaWQpOwogICAgIH0KIH0KIApA
QCAtMzAzLDggKzI5Niw4IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKICAgICBBU1NFUlQo
a2V5ICYmIGtleS0+aXNWYWxpZCgpKTsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJl
Y29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXI6OmNyZWF0ZSgpOwotICAgIGlmIChwdXRNb2RlID09IEFkZE9ubHkgJiYgb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgp
LCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAg
ICBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmllcjsKKyAg
ICBpZiAocHV0TW9kZSA9PSBBZGRPbmx5ICYmIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+
a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXks
ICZyZWNvcmRJZGVudGlmaWVyKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwg
IktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTMxOCwyMiArMzExLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
CiAKICAgICAvLyBCZWZvcmUgdGhpcyBwb2ludCwgZG9uJ3QgZG8gYW55IG11dGF0aW9uLiAgQWZ0
ZXIgdGhpcyBwb2ludCwgcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3Iu
CiAKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJ
ZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgdmFsdWUtPnRvV2lyZVN0cmluZygpLCByZWNv
cmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOwotICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwotICAgICAgICB0cmFuc2FjdGlvbi0+YWJv
cnQoZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG9iamVjdFN0b3JlLT5iYWNr
aW5nU3RvcmUoKS0+cHV0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwg
dmFsdWUtPnRvV2lyZVN0cmluZygpLCAmcmVjb3JkSWRlbnRpZmllcik7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbmRl
eFdyaXRlciogaW5kZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNbaV0uZ2V0KCk7Ci0gICAgICAgIGlm
ICghaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpv
YmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+bV9tZXRh
ZGF0YS5pZCkpIHsKLQotICAgICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
ID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlu
ZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLCAqb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
b2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPm1fbWV0YWRhdGEuaWQpOwog
ICAgIH0KIAogICAgIGlmIChhdXRvSW5jcmVtZW50ICYmIHB1dE1vZGUgIT0gQ3Vyc29yVXBkYXRl
ICYmIGtleS0+dHlwZSgpID09IElEQktleTo6TnVtYmVyVHlwZSkKQEAgLTM2MSwyMCArMzQzLDEy
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsIik7Ci0gICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmll
cjsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vy
c29yID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3Io
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBrZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpO
RVhUKTsKICAgICBpZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgcmVjb3JkSWRlbnRpZmllciA9IGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRl
bnRpZmllcigpOwotCi0gICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OkluZGV4TWFwOjppdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5k
ZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPmtleSwgcmVj
b3JkSWRlbnRpZmllci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb2JqZWN0U3RvcmUt
PmJhY2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgp
LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5iYWNr
aW5nU3RvcmUoKS0+ZGVsZXRlUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgYmFj
a2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIH0gd2hpbGUg
KGJhY2tpbmdTdG9yZUN1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRl
eCAwMmQyZDVkNDIwY2YzMzM5MTg1MDU0NjhkNDU5NWRhMzNkYTg5YTQ0Li4zNDYzNjNhYzNlNTQ2
YTAyMzExNjhmYjYxNzA4YzUxZjljOWQzYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNDQsMTggKzQ0LDE3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAK
ICAgICB2aXJ0dWFsIFN0cmluZyBnZXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktl
eSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9W
RVJSSURFIHsgfQogICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVL
ZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3Vy
cmVudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNo
ZWNrQ3VycmVudCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVu
dGlmaWVyKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBWZWN0b3I8
SURCSW5kZXhNZXRhZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyByZXR1cm4gVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+
KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlz
TXVsdGlFbnRyeSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBi
b29sIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYs
IGNvbnN0IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IElEQktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURCS2V5Pigp
OyB9CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlaWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KSBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174773</attachid>
            <date>2012-11-16 15:36:50 -0800</date>
            <delta_ts>2012-11-16 17:34:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102018-20121116153445.patch</filename>
            <type>text/plain</type>
            <size>29504</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJiOTA3ZDE0ZDcxM2Iy
ZTc4NjI1M2NjNTU0MDU3Y2E5ZWYwMzk0NC4uMTkxOTBjYjllYzI3NDMzOTZiNjZkNzk4Y2QzMWQz
YjRkOWNmMTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgSURCQmFja2luZ1N0b3JlJ3MgUmVjb3JkSWRlbnRpZmllciBi
ZSBhIHNpbXBsZQorICAgICAgICBjbGFzcywgZXhpc3Rpbmcgb25seSBhcyBhbiBpbmxpbmUgb3Ig
c3RhY2stYmFzZWQgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgbWFrZXMgbXVjaCBvZiB0aGUgY29w
eSBzZW1hbnRpY3MgbW9yZSBleHBsaWNpdCwgYW5kCisgICAgICAgIHJlbW92ZXMgcmVmY291bnRp
bmcgZnJvbSBhbiBvYmplY3QgdGhhdCBvbmx5IGV2ZXIgaGFkIGEgcmVmY291bnQKKyAgICAgICAg
b2YgMSBvciAyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KToKKyAgICAgICAgKE9iamVjdFN0b3JlQ3Vyc29ySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpP
YmplY3RTdG9yZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4S2V5Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEN1cnNvckltcGw6OnJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpSZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6aXNWYWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OnJlc2V0KToK
KyAgICAgICAgKFJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpyZWNvcmRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3Ip
OgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKToK
KwogMjAxMi0xMS0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQWRkIG1pc3NpbmcgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBiNDg1OWM5NWE5MTdhYzcyNjdiZDMwODI3NjNkOTEyMzJl
YWJiZmE1Li4zYjBmY2YyNmI4ZWI1YmJiNWRjMTUxYzhiODYzYzk1MDZjODI1MmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTEyICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNpbXBs
aWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBJREJGYWtlQmFja2luZ1N0b3JlIHRvIG1hdGNoIGl0cyBwYXJl
bnQgY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisKIDIw
MTItMTEtMTYgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBDb3B5IGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgdG8gZGVmYXVsdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMWVhM2M5NDQ0YTNmYTk4Mzc5YjljZjUwOWI4MGYzN2ZjYjdlMDdjYS4uOTkwNWQ1YjUz
M2QxMzNhZmM5OWQ4MTUyNGJhYzVmMDBkMDc0NTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NTYsNyArNjU2
LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAot
Ym9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlm
aWVyKiByZWNvcmRJZGVudGlmaWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSk7CkBAIC02NzMsOSArNjczLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0
aW9uLT5wdXQoZXhpc3RzRW50cnlLZXksIGVuY29kZUludCh2ZXJzaW9uKSk7CiAKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICByZWNv
cmRJZGVudGlmaWVyLT5zZXRWZXJzaW9uKHZlcnNpb24pOwotICAgIHJldHVybiB0cnVlOworICAg
IHJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsKIH0K
IAogdm9pZCBJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQpAQCAtNjg4LDE1ICs2ODYsMTUgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6
OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0S2V5LCBzdG9wS2V5
KTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIp
Cit2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkIik7CiAgICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5
S2V5KCkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmpl
Y3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJ
ZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUo
b2JqZWN0U3RvcmVEYXRhS2V5KTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRy
eUtleSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
cmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
ZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAgICBsZXZlbERCVHJh
bnNhY3Rpb24tPnJlbW92ZShleGlzdHNFbnRyeUtleSk7CiB9CiAKQEAgLTc0MywxOSArNzQxLDE4
IEBAIGludDY0X3QgSURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3RpCiAgICAgcmV0dXJuIGtleUdlbmVyYXRvckN1cnJl
bnROdW1iZXI7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5l
d051bWJlciwgYm9vbCBjaGVja0N1cnJlbnQpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hl
Y2tDdXJyZW50KSB7CiAgICAgICAgIGludDY0X3QgY3VycmVudE51bWJlciA9IGdldEtleUdlbmVy
YXRvckN1cnJlbnROdW1iZXIodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
OwogICAgICAgICBpZiAobmV3TnVtYmVyIDw9IGN1cnJlbnROdW1iZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjpLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsKICAgICBwdXRJbnQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwotICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBS
ZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpCkBAIC03NzIsOCArNzY5LDcg
QEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnMKICAgICBpZiAoIWRlY29kZVZhckludChkYXRhLmJl
Z2luKCksIGRhdGEuZW5kKCksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBmb3VuZFJlY29yZElkZW50aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkp
OwotICAgIGZvdW5kUmVjb3JkSWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKKyAgICBm
b3VuZFJlY29yZElkZW50aWZpZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODk3LDIxICs4OTMsMjAgQEAgdm9pZCBJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQKICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0
YVN0YXJ0LCBpbmRleERhdGFFbmQpOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRl
bnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
a2V5LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElE
Ql9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBB
U1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4
SWQpOwogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0
aW9uKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5
KGtleSksIHJlY29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVy
LnByaW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVu
ZChlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci0+dmVyc2lvbigpKSk7Ci0gICAgZGF0YS5h
cHBlbmQocmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERCVHJhbnNhY3Rp
b24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwotICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiB0YXJnZXQsIFZlY3RvcjxjaGFyPiYg
Zm91bmRLZXkpCkBAIC05NDIsMTIgKzkzNyw2IEBAIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtl
eUxlc3NUaGFuT3JFcXVhbChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleERh
dGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QsIGludDY0
X3QsIGludDY0X3QsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKQotewotICAgIC8vIEZJWE1FOiBU
aGlzIGlzbid0IG5lZWRlZCBzaW5jZSB3ZSBpbnZhbGlkYXRlIGluZGV4IGRhdGEgdmlhIHRoZSB2
ZXJzaW9uIG51bWJlciBtZWNoYW5pc20uCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBi
b29sIHZlcnNpb25FeGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBlbmNvZGVkUHJpbWFyeUtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBlbmNvZGVkUHJpbWFyeUtleSk7CkBAIC0xMTg4LDEwICsxMTc3LDYgQEAgcHVibGljOgog
CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1
ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJl
Y29yZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRp
ZmllcjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZh
dGU6CkBAIC0xMjA1LDcgKzExOTAsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiB9
OwogCiBib29sIE9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQpAQCAt
MTIzMCw3ICsxMjE0LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJy
ZW50Um93KCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2Fz
IGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KLSAgICBtX2lkZW50aWZpZXIgPSBJREJC
YWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3Vy
cmVudEtleSksIHZlcnNpb24pOworICAgIG1fcmVjb3JkSWRlbnRpZmllci5yZXNldChlbmNvZGVJ
REJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xMjQ5LDEwICsxMjMzLDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpD
dXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFZhbHVlOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIE9WRVJSSURFCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pZGVudGlmaWVyOwotICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRS
b3coKTsKIAogcHJpdmF0ZToKQEAgLTEyNjgsNyArMTI0OCw2IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OlJlY29yZElkZW50aWZpZXI+IG1faWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzIsNyBAQCBib29sIE9i
amVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHJlLWVuY29kZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGlt
aXplLgotICAgIG1faWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmll
cjo6Y3JlYXRlKGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9y
ZWNvcmRJZGVudGlmaWVyLnJlc2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lv
bik7CiAKICAgICBtX2N1cnJlbnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBt
X2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMjk0LDcgQEAgcHVibGlj
OgogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6
UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRD
dXJyZW50Um93KCk7CiAKIHByaXZhdGU6CkBAIC0xMzk0LDcgKzEzNzMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRl
bnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZp
ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlm
aWVyOyB9CiAgICAgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAx
MzM3MDI2ZjEyZDRmODlkZWRmN2UyY2EyY2QyZmI5NDJmYmJkNDI0Li4xNzdmNWE2M2VlMTg5NWZh
MTVmYjcyZjdlZGIxMDU1YTc5MGZmYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDMzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwog
Ci0gICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElk
ZW50aWZpZXI+IHsKKyAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlY29yZElkZW50aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZWNvcmRJZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29y
ZElkZW50aWZpZXIoKSB7IH0KKyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8
Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFy
eUtleSksIG1fdmVyc2lvbih2ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkp
OyB9CisgICAgICAgIFJlY29yZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNp
b24oLTEpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltYXJ5S2V5LmlzRW1wdHkoKTsgfQotICAgICAgICBWZWN0b3I8Y2hhcj4gcHJpbWFy
eUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQotICAgICAgICB2b2lkIHNldFBy
aW1hcnlLZXkoY29uc3QgVmVjdG9yPGNoYXI+JiBwcmltYXJ5S2V5KSB7IG1fcHJpbWFyeUtleSA9
IHByaW1hcnlLZXk7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHByaW1hcnlLZXkoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KICAgICAgICAgaW50NjRfdCB2ZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9Ci0gICAgICAgIHZvaWQgc2V0VmVyc2lvbihpbnQ2
NF90IHZlcnNpb24pIHsgbV92ZXJzaW9uID0gdmVyc2lvbjsgfQorICAgICAgICB2b2lkIHJlc2V0
KGNvbnN0IFZlY3RvcjxjaGFyPiYgcHJpbWFyeUtleSwgaW50NjRfdCB2ZXJzaW9uKSB7IG1fcHJp
bWFyeUtleSA9IHByaW1hcnlLZXk7IG1fdmVyc2lvbiA9IHZlcnNpb247IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIFJlY29yZElkZW50aWZpZXIoY29uc3QgVmVjdG9yPGNoYXI+JiBwcmltYXJ5
S2V5LCBpbnQ2NF90IHZlcnNpb24pIDogbV9wcmltYXJ5S2V5KHByaW1hcnlLZXkpLCBtX3ZlcnNp
b24odmVyc2lvbikgeyBBU1NFUlQoIXByaW1hcnlLZXkuaXNFbXB0eSgpKTsgfQotICAgICAgICBS
ZWNvcmRJZGVudGlmaWVyKCkgOiBtX3ByaW1hcnlLZXkoKSwgbV92ZXJzaW9uKC0xKSB7IH0KLQog
ICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wcmltYXJ5S2V5OyAvLyBGSVhNRTogTWFrZSBpdCBtb3Jl
IGNsZWFyIHRoYXQgdGhpcyBpcyB0aGUgKmVuY29kZWQqIHZlcnNpb24gb2YgdGhlIGtleS4KICAg
ICAgICAgaW50NjRfdCBtX3ZlcnNpb247CisgICAgICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
TihSZWNvcmRJZGVudGlmaWVyKTsKICAgICB9OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVj
b3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7Ci0gICAgdmlydHVhbCBib29sIHB1
dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRl
bnRpZmllciopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwogICAgIHZpcnR1YWwgaW50
NjRfdCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAg
dmlydHVhbCBib29sIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBuZXdTdGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpOwogICAgIHZpcnR1YWwg
Ym9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1
YWwgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7
Ci0gICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciop
OwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmKTsKICAgICB2aXJ0dWFsIGJvb2wg
a2V5RXhpc3RzSW5JbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3Qg
SURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSk7CiAKQEAg
LTExMywxMyArMTA3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgYm9vbCB1bmlxdWU7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgQ3Vyc29yKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCi0gICAgICAgICAgICA6IG1fdHJh
bnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJz
b3JPcHRpb25zKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgZXhwbGljaXQgQ3Vyc29y
KGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yKiBvdGhlcik7Ci0KICAgICAgICAgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgICAg
ICBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUg
PSBTZWVrKTsKICAgICAgICAgYm9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpOwpAQCAtMTI4LDEx
ICsxMTUsMTggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBj
bG9uZSgpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyB2YWx1ZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlY29yZElk
ZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3Qg
UmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcigpIGNvbnN0ICB7IHJldHVybiBtX3Jl
Y29yZElkZW50aWZpZXI7IH0KICAgICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpID0gMDsKIAogICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgQ3Vyc29yKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNv
ck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCisgICAgICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24pCisgICAgICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgZXhwbGljaXQgQ3Vyc29yKGNvbnN0IElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yKiBvdGhlcik7CisKICAgICAgICAgYm9vbCBpc1Bhc3RCb3VuZHMo
KSBjb25zdDsKICAgICAgICAgYm9vbCBoYXZlRW50ZXJlZFJhbmdlKCkgY29uc3Q7CiAKQEAgLTE0
MCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEN1cnNvck9wdGlvbnMgbV9jdXJz
b3JPcHRpb25zOwogICAgICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwog
ICAgICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7CisgICAgICAgIElEQkJhY2tpbmdT
dG9yZTo6UmVjb3JkSWRlbnRpZmllciBtX3JlY29yZElkZW50aWZpZXI7CiAgICAgfTsKIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IG9wZW5PYmplY3RTdG9yZUtleUN1cnNvcihJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3NmZiYTI3YjlkZWJhOTgyZDUzMjVkMDNj
ODkwNDdkZmRmZWFmOWM4Li43NDcxY2FjNDdlN2I1NGZiNDc5ZDhjNTE5NjgxZjcxYmU2NjMzMjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMTU1LDE2ICsxNTUsMTIgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHdyaXRlSW5kZXhL
ZXlzKGNvbnN0IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRp
ZmllciwgSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkgY29uc3QKKyAgICB2b2lkIHdyaXRlSW5kZXhLZXlzKGNvbnN0IElEQkJhY2tpbmdT
dG9yZTo6UmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllciwgSURCQmFja2luZ1N0b3Jl
JiBiYWNraW5nU3RvcmUsIElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgY29uc3QKICAgICB7
CiAgICAgICAgIGludDY0X3QgaW5kZXhJZCA9IG1faW5kZXhNZXRhZGF0YS5pZDsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2luZGV4S2V5cy5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCFiYWNraW5nU3RvcmUuZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0
aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCByZWNvcmRJZGVudGlmaWVy
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWJhY2tp
bmdTdG9yZS5wdXRJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVu
dGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBiYWNr
aW5nU3RvcmUucHV0SW5kZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkLCAqKG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcmVjb3JkSWRl
bnRpZmllcik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMjMyLDggKzIyOCw4IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAKICAgICAvLyBGSVhNRTogVGhp
cyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9ub3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBp
ZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21wbGV4aXR5LgotICAgIFJlZlB0cjxJREJCYWNraW5n
U3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIgPSBJREJCYWNraW5nU3Rv
cmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0ZSgpOwotICAgIGlmICghYmFja2luZ1N0b3JlKCkt
PmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgKnByaW1hcnlLZXksIHJlY29yZElkZW50aWZpZXIu
Z2V0KCkpKSB7CisgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIHJlY29yZElk
ZW50aWZpZXI7CisgICAgaWYgKCFiYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBp
ZCgpLCAqcHJpbWFyeUtleSwgJnJlY29yZElkZW50aWZpZXIpKSB7CiAgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ4LDEwICsyNDQsNyBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRy
PElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW5kZXhXcml0ZXIqIGluZGV4V3Jp
dGVyID0gaW5kZXhXcml0ZXJzW2ldLmdldCgpOwotICAgICAgICBpZiAoIWluZGV4V3JpdGVyLT53
cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLmdldCgpLCAqYmFja2luZ1N0b3JlKCksIHRy
YW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIG1fbWV0
YWRhdGEuaWQpKSB7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtl
eXMocmVjb3JkSWRlbnRpZmllciwgKmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBtX21ldGFkYXRhLmlkKTsKICAgICB9
CiB9CiAKQEAgLTMwMyw4ICsyOTYsOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAg
QVNTRVJUKGtleSAmJiBrZXktPmlzVmFsaWQoKSk7CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3Jl
OjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoKTsKLSAgICBpZiAocHV0TW9kZSA9PSBBZGRPbmx5
ICYmIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFi
YXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkp
KSB7CisgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIHJlY29yZElkZW50aWZp
ZXI7CisgICAgaWYgKHB1dE1vZGUgPT0gQWRkT25seSAmJiBvYmplY3RTdG9yZS0+YmFja2luZ1N0
b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgp
LCAqa2V5LCAmcmVjb3JkSWRlbnRpZmllcikpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlO
VF9FUlIsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zMTgsMjIgKzMxMSwxMSBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPAogCiAgICAgLy8gQmVmb3JlIHRoaXMgcG9pbnQsIGRvbid0IGRvIGFueSBtdXRhdGlv
bi4gIEFmdGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9m
IGVycm9yLgogCi0gICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPnB1dFJlY29y
ZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRh
dGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksIHZhbHVlLT50b1dpcmVTdHJpbmco
KSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4i
KTsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKLSAgICAgICAgdHJhbnNhY3Rp
b24tPmFib3J0KGVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBvYmplY3RTdG9y
ZS0+YmFja2luZ1N0b3JlKCktPnB1dFJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
ICprZXksIHZhbHVlLT50b1dpcmVTdHJpbmcoKSwgJnJlY29yZElkZW50aWZpZXIpOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleFdyaXRlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgSW5kZXhXcml0ZXIqIGluZGV4V3JpdGVyID0gaW5kZXhXcml0ZXJzW2ldLmdldCgpOwotICAg
ICAgICBpZiAoIWluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLmdl
dCgpLCAqb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUt
Pm1fbWV0YWRhdGEuaWQpKSB7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9y
PiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0g
ICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgdHJhbnNh
Y3Rpb24tPmFib3J0KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAg
ICAgICBpbmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3JkSWRlbnRpZmllciwgKm9iamVj
dFN0b3JlLT5iYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5tX21ldGFkYXRh
LmlkKTsKICAgICB9CiAKICAgICBpZiAoYXV0b0luY3JlbWVudCAmJiBwdXRNb2RlICE9IEN1cnNv
clVwZGF0ZSAmJiBrZXktPnR5cGUoKSA9PSBJREJLZXk6Ok51bWJlclR5cGUpCkBAIC0zNjEsMjAg
KzM0MywxMiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbgogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbCIp
OwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29yZElk
ZW50aWZpZXI7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdT
dG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3Jl
Q3Vyc29yKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9y
ZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwga2V5UmFuZ2UuZ2V0KCksIElEQkN1
cnNvcjo6TkVYVCk7CiAgICAgaWYgKGJhY2tpbmdTdG9yZUN1cnNvcikgewogCiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIHJlY29yZElkZW50aWZpZXIgPSBiYWNraW5nU3RvcmVDdXJzb3ItPnJl
Y29yZElkZW50aWZpZXIoKTsKLQotICAgICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmJl
Z2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRl
bGV0ZUluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5r
ZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG9iamVj
dFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9y
ZS0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAgICBvYmplY3RTdG9y
ZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlk
KCksIGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRlbnRpZmllcigpKTsKIAogICAgICAgICB9
IHdoaWxlIChiYWNraW5nU3RvcmVDdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oMCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3Jl
LmgKaW5kZXggMDJkMmQ1ZDQyMGNmMzMzOTE4NTA1NDY4ZDQ1OTVkYTMzZGE4OWE0NC4uMzQ2MzYz
YWMzZTU0NmEwMjMxMTY4ZmI2MTcwOGM1MWY5YzlkM2JjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTQ0LDE4ICs0NCwx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURF
IHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpIE9WRVJS
SURFIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBib29sIHB1dFJlY29yZChUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZp
ZXImKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIGludDY0X3QgZ2V0S2V5R2VuZXJhdG9yQ3Vy
cmVudE51bWJlcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBib29sIG1heWJl
VXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBj
aGVja0N1cnJlbnQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld051bWJlciwg
Ym9vbCBjaGVja0N1cnJlbnQpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlz
dHNJbk9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVj
b3JkSWRlbnRpZmllcikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
VmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIFZlY3RvcjxJREJJbmRleE1l
dGFkYXRhPigpOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwg
Ym9vbCBpc011bHRpRW50cnkpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHB1dEluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKSBPVkVSUklERSB7IH0KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBnZXRQcmltYXJ5S2V5VmlhSW5kZXgoVHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPElE
QktleT4oKTsgfQogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbkluZGV4KFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZWlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFy
eUtleSkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174788</attachid>
            <date>2012-11-16 17:34:24 -0800</date>
            <delta_ts>2012-11-19 10:38:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102018-20121116173219.patch</filename>
            <type>text/plain</type>
            <size>29496</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJiOTA3ZDE0ZDcxM2Iy
ZTc4NjI1M2NjNTU0MDU3Y2E5ZWYwMzk0NC4uMjYwMWFmMDNmYzEzYjhkOWEyODEzMmRlY2ZjMzVm
NmRhMjIxNWQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CisKKyAgICAgICAgTWFrZSBJREJCYWNraW5nU3RvcmUncyBSZWNvcmRJZGVudGlmaWVyIGJlIGEg
c2ltcGxlCisgICAgICAgIGNsYXNzLCBleGlzdGluZyBvbmx5IGFzIGFuIGlubGluZSBvciBzdGFj
ay1iYXNlZCBpbnN0YW5jZS4KKyAgICAgICAgVGhpcyBtYWtlcyBtdWNoIG9mIHRoZSBjb3B5IHNl
bWFudGljcyBtb3JlIGV4cGxpY2l0LCBhbmQKKyAgICAgICAgcmVtb3ZlcyByZWZjb3VudGluZyBm
cm9tIGFuIG9iamVjdCB0aGF0IG9ubHkgZXZlciBoYWQgYSByZWZjb3VudAorICAgICAgICBvZiAx
IG9yIDIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0
b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpt
YXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3cpOgor
ICAgICAgICAoT2JqZWN0U3RvcmVDdXJzb3JJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVj
dFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZXhLZXlDdXJzb3JJbXBsOjpyZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
ZGV4Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OlJlY29yZElkZW50aWZpZXI6OlJlY29yZElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjppc1ZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6cmVzZXQpOgorICAg
ICAgICAoUmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OnJlY29yZElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvcik6Cisg
ICAgICAgIChDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwpOgorCiAy
MDEyLTExLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGQgbWlzc2luZyBXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQ6OmRpZEFkZFJlbW90ZURhdGFDaGFubmVsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGI0ODU5Yzk1YTkxN2FjNzI2N2JkMzA4Mjc2M2Q5MTIzMmVhYmJm
YTUuLjA0ODdlNzgyMDM2MzM1YzVkNWM0ZDQyY2Q4NjE1ZWFjMTcwY2Q4NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMTIgIEFsZWMgRmxldHQg
IDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogc2ltcGxpZnkg
UmVjb3JkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyMDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAg
ICAgICBVcGRhdGUgSURCRmFrZUJhY2tpbmdTdG9yZSB0byBtYXRjaCBpdHMgcGFyZW50IGNsYXNz
LgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorCiAyMDEyLTExLTE2
ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
Q29weSBsaW51eCB0aGVtZSByZWxhdGVkIGZpbGVzIHRvIGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDFl
YTNjOTQ0NGEzZmE5ODM3OWI5Y2Y1MDliODBmMzdmY2I3ZTA3Y2EuLjk5MDVkNWI1MzNkMTMzYWZj
OTlkODE1MjRiYWM1ZjAwZDA3NDU5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIHN0
YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhCiAgICAgcmV0dXJuIHZlcnNpb247CiB9CiAKLWJvb2wgSURC
QmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJLZXkmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciogcmVj
b3JkSWRlbnRpZmllcikKK3ZvaWQgSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkIik7CiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkp
OwpAQCAtNjczLDkgKzY3Myw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0CiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IGV4aXN0c0VudHJ5S2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXkpOwogICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0
KGV4aXN0c0VudHJ5S2V5LCBlbmNvZGVJbnQodmVyc2lvbikpOwogCi0gICAgcmVjb3JkSWRlbnRp
Zmllci0+c2V0UHJpbWFyeUtleShlbmNvZGVJREJLZXkoa2V5KSk7Ci0gICAgcmVjb3JkSWRlbnRp
Zmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZWNvcmRJ
ZGVudGlmaWVyLT5yZXNldChlbmNvZGVJREJLZXkoa2V5KSwgdmVyc2lvbik7CiB9CiAKIHZvaWQg
SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCkKQEAgLTY4OCwxNSArNjg2LDE1IEBAIHZvaWQgSURCQmFja2luZ1N0b3JlOjpjbGVhck9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uCiAgICAg
ZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBzdGFydEtleSwgc3RvcEtleSk7CiB9CiAK
LXZvaWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQordm9pZCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCIpOwogICAgIExldmVsREJUcmFuc2Fj
dGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6
bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKLSAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gb2JqZWN0U3RvcmVEYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci0+cHJpbWFyeUtleSgpKTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVEYXRhS2V5ID0gT2JqZWN0U3RvcmVE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmll
ci5wcmltYXJ5S2V5KCkpOwogICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cmVtb3ZlKG9iamVjdFN0
b3JlRGF0YUtleSk7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBF
eGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHJlY29yZElk
ZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGV4aXN0c0Vu
dHJ5S2V5ID0gRXhpc3RzRW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9u
LT5yZW1vdmUoZXhpc3RzRW50cnlLZXkpOwogfQogCkBAIC03NDMsMTkgKzc0MSwxOCBAQCBpbnQ2
NF90IElEQkJhY2tpbmdTdG9yZTo6Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aQogICAgIHJldHVybiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
OwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JDdXJy
ZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIs
IGJvb2wgY2hlY2tDdXJyZW50KQordm9pZCBJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5
R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVudCkKIHsKICAgICBMZXZlbERCVHJhbnNhY3Rp
b24qIGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246Omxl
dmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogCiAgICAgaWYgKGNoZWNrQ3VycmVu
dCkgewogICAgICAgICBpbnQ2NF90IGN1cnJlbnROdW1iZXIgPSBnZXRLZXlHZW5lcmF0b3JDdXJy
ZW50TnVtYmVyKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKICAgICAg
ICAgaWYgKG5ld051bWJlciA8PSBjdXJyZW50TnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+
IGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CiAgICAgcHV0SW50KGxldmVsREJUcmFuc2FjdGlv
biwga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwgbmV3TnVtYmVyKTsKLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYm9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgUmVjb3JkSWRl
bnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKQpAQCAtNzcyLDggKzc2OSw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qIHRyYW5zCiAgICAgaWYgKCFkZWNvZGVWYXJJbnQoZGF0YS5iZWdpbigpLCBk
YXRhLmVuZCgpLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm91bmRS
ZWNvcmRJZGVudGlmaWVyLT5zZXRQcmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICBm
b3VuZFJlY29yZElkZW50aWZpZXItPnNldFZlcnNpb24odmVyc2lvbik7CisgICAgZm91bmRSZWNv
cmRJZGVudGlmaWVyLT5yZXNldChlbmNvZGVJREJLZXkoa2V5KSwgdmVyc2lvbik7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTg5NywyMSArODkzLDIwIEBAIHZvaWQgSURCQmFja2luZ1N0b3Jl
OjpkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50CiAgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBpbmRleERhdGFTdGFydCwg
aW5kZXhEYXRhRW5kKTsKIH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZv
clJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5JiBrZXksIGNvbnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIp
Cit2b2lkIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSwgY29u
c3QgUmVjb3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkIik7CiAgICAgQVNTRVJUKGtl
eS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVChpbmRleElkID49IE1pbmltdW1JbmRleElkKTsKIAog
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0g
ICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCBy
ZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5KCkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBp
bmRleERhdGFLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBlbmNvZGVJREJLZXkoa2V5KSwgcmVjb3JkSWRlbnRpZmllci5wcmltYXJ5
S2V5KCkpOwogCiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgZGF0YS5hcHBlbmQoZW5jb2Rl
VmFySW50KHJlY29yZElkZW50aWZpZXItPnZlcnNpb24oKSkpOwotICAgIGRhdGEuYXBwZW5kKHJl
Y29yZElkZW50aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFy
SW50KHJlY29yZElkZW50aWZpZXIudmVyc2lvbigpKSk7CisgICAgZGF0YS5hcHBlbmQocmVjb3Jk
SWRlbnRpZmllci5wcmltYXJ5S2V5KCkpOwogCiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQo
aW5kZXhEYXRhS2V5LCBkYXRhKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5
KQpAQCAtOTQyLDEyICs5MzcsNiBAQCBzdGF0aWMgYm9vbCBmaW5kR3JlYXRlc3RLZXlMZXNzVGhh
bk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29ucwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVj
b3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2
NF90LCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBpc24n
dCBuZWVkZWQgc2luY2Ugd2UgaW52YWxpZGF0ZSBpbmRleCBkYXRhIHZpYSB0aGUgdmVyc2lvbiBu
dW1iZXIgbWVjaGFuaXNtLgotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgYm9vbCB2ZXJz
aW9uRXhpc3RzKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IHZlcnNpb24sIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgZW5jb2RlZFByaW1hcnlLZXkpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtl
eSA9IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgZW5j
b2RlZFByaW1hcnlLZXkpOwpAQCAtMTE4OCwxMCArMTE3Nyw2IEBAIHB1YmxpYzoKIAogICAgIC8v
IElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVu
dGlmaWVyKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXI7Ci0g
ICAgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpAQCAt
MTIwNSw3ICsxMTkwLDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gbV9pZGVudGlmaWVyOwogfTsKIAogYm9v
bCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKQEAgLTEyMzAsNyAr
MTIxNCw3IEBAIGJvb2wgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygp
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgcmUtZW5jb2RlcyB3aGF0IHdhcyBqdXN0IGRl
Y29kZWQ7IHRyeSBhbmQgb3B0aW1pemUuCi0gICAgbV9pZGVudGlmaWVyID0gSURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyOjpjcmVhdGUoZW5jb2RlSURCS2V5KCptX2N1cnJlbnRLZXkp
LCB2ZXJzaW9uKTsKKyAgICBtX3JlY29yZElkZW50aWZpZXIucmVzZXQoZW5jb2RlSURCS2V5KCpt
X2N1cnJlbnRLZXkpLCB2ZXJzaW9uKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI0OSwx
MCArMTIzMyw2IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAg
ICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsg
fQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZp
ZXI+IHJlY29yZElkZW50aWZpZXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcjsKLSAgICB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAK
IHByaXZhdGU6CkBAIC0xMjY4LDcgKzEyNDgsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFN0
cmluZyBtX2N1cnJlbnRWYWx1ZTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiB9OwogCiBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3coKQpAQCAtMTI5Myw3ICsxMjcyLDcgQEAgYm9vbCBPYmplY3RTdG9y
ZUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhp
cyByZS1lbmNvZGVzIHdoYXQgd2FzIGp1c3QgZGVjb2RlZDsgdHJ5IGFuZCBvcHRpbWl6ZS4KLSAg
ICBtX2lkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OmNyZWF0
ZShlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOworICAgIG1fcmVjb3JkSWRl
bnRpZmllci5yZXNldChlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24pOwogCiAg
ICAgbV9jdXJyZW50VmFsdWUgPSBkZWNvZGVTdHJpbmcodmFsdWVQb3NpdGlvbiwgbV9pdGVyYXRv
ci0+dmFsdWUoKS5lbmQoKSk7CiAKQEAgLTEzMTUsNyArMTI5NCw3IEBAIHB1YmxpYzoKICAgICAv
LyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFy
eUtleTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElk
ZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgY29uc3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlm
aWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsgfQogICAgIHZpcnR1YWwgYm9vbCBsb2FkQ3VycmVudFJv
dygpOwogCiBwcml2YXRlOgpAQCAtMTM5NCw3ICsxMzczLDcgQEAgcHVibGljOgogICAgIC8vIElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIo
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgY29uc3Qg
SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsgfQog
ICAgIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMTMzNzAyNmYx
MmQ0Zjg5ZGVkZjdlMmNhMmNkMmZiOTQyZmJiZDQyNC4uMTc3ZjVhNjNlZTE4OTVmYTE1ZmI3MmY3
ZWRiMTA1NWE3OTBmZmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTYxLDM5ICs2MSwzMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKIAotICAgIGNs
YXNzIFJlY29yZElkZW50aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWNvcmRJZGVudGlmaWVy
PiB7CisgICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNo
YXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWNvcmRJZGVudGlmaWVyKHByaW1hcnlLZXksIHZlcnNpb24pKTsgfQotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZWNvcmRJZGVudGlmaWVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgUmVjb3JkSWRlbnRpZmllcigpKTsgfQotICAgICAgICB2aXJ0dWFsIH5SZWNvcmRJZGVudGlm
aWVyKCkgeyB9CisgICAgICAgIFJlY29yZElkZW50aWZpZXIoY29uc3QgVmVjdG9yPGNoYXI+JiBw
cmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNpb24pIDogbV9wcmltYXJ5S2V5KHByaW1hcnlLZXkpLCBt
X3ZlcnNpb24odmVyc2lvbikgeyBBU1NFUlQoIXByaW1hcnlLZXkuaXNFbXB0eSgpKTsgfQorICAg
ICAgICBSZWNvcmRJZGVudGlmaWVyKCkgOiBtX3ByaW1hcnlLZXkoKSwgbV92ZXJzaW9uKC0xKSB7
IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWFyeUtleS5pc0VtcHR5KCk7IH0KLSAgICAgICAgVmVjdG9yPGNoYXI+IHByaW1hcnlLZXkoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KLSAgICAgICAgdm9pZCBzZXRQcmltYXJ5S2V5
KGNvbnN0IFZlY3RvcjxjaGFyPiYgcHJpbWFyeUtleSkgeyBtX3ByaW1hcnlLZXkgPSBwcmltYXJ5
S2V5OyB9CisgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBwcmltYXJ5S2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltYXJ5S2V5OyB9CiAgICAgICAgIGludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVyc2lvbjsgfQotICAgICAgICB2b2lkIHNldFZlcnNpb24oaW50NjRfdCB2ZXJz
aW9uKSB7IG1fdmVyc2lvbiA9IHZlcnNpb247IH0KKyAgICAgICAgdm9pZCByZXNldChjb25zdCBW
ZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXksIGludDY0X3QgdmVyc2lvbikgeyBtX3ByaW1hcnlLZXkg
PSBwcmltYXJ5S2V5OyBtX3ZlcnNpb24gPSB2ZXJzaW9uOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWNvcmRJZGVudGlmaWVyKGNvbnN0IFZlY3RvcjxjaGFyPiYgcHJpbWFyeUtleSwgaW50
NjRfdCB2ZXJzaW9uKSA6IG1fcHJpbWFyeUtleShwcmltYXJ5S2V5KSwgbV92ZXJzaW9uKHZlcnNp
b24pIHsgQVNTRVJUKCFwcmltYXJ5S2V5LmlzRW1wdHkoKSk7IH0KLSAgICAgICAgUmVjb3JkSWRl
bnRpZmllcigpIDogbV9wcmltYXJ5S2V5KCksIG1fdmVyc2lvbigtMSkgeyB9Ci0KICAgICAgICAg
VmVjdG9yPGNoYXI+IG1fcHJpbWFyeUtleTsgLy8gRklYTUU6IE1ha2UgaXQgbW9yZSBjbGVhciB0
aGF0IHRoaXMgaXMgdGhlICplbmNvZGVkKiB2ZXJzaW9uIG9mIHRoZSBrZXkuCiAgICAgICAgIGlu
dDY0X3QgbV92ZXJzaW9uOworICAgICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oUmVjb3Jk
SWRlbnRpZmllcik7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpOwotICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNv
cmRJZGVudGlmaWVyKik7CisgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNv
cmRJZGVudGlmaWVyKik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXImKTsKICAgICB2aXJ0dWFsIGludDY0X3QgZ2V0
S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwotICAgIHZpcnR1YWwg
Ym9vbCBtYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IG5ld1N0YXRlLCBib29sIGNoZWNrQ3VycmVudCk7CisgICAgdmlydHVhbCB2b2lk
IG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgbmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KTsKICAgICB2aXJ0dWFsIGJvb2wga2V5
RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIFJlY29y
ZElkZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIFZlY3Rv
cjxJREJJbmRleE1ldGFkYXRhPiBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwotICAgIHZp
cnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKLSAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKik7CisgICAgdmlydHVhbCB2b2lk
IHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jik7CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0
c0luSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
aW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXkpOwogCkBAIC0xMTMsMTMg
KzEwNyw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJvb2wgdW5pcXVlOwogICAgICAgICB9Owog
Ci0gICAgICAgIEN1cnNvcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBD
dXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQotICAgICAgICAgICAgOiBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQotICAgICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9u
cykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIGV4cGxpY2l0IEN1cnNvcihjb25zdCBJ
REJCYWNraW5nU3RvcmU6OkN1cnNvciogb3RoZXIpOwotCiAgICAgICAgIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICAgICAgYm9vbCBj
b250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRlID0gU2Vlayk7
CiAgICAgICAgIGJvb2wgYWR2YW5jZSh1bnNpZ25lZCBsb25nKTsKQEAgLTEyOCwxMSArMTE1LDE4
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUo
KSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZWNvcmRJZGVudGlmaWVy
PiByZWNvcmRJZGVudGlmaWVyKCkgPSAwOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFJlY29yZElk
ZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCAgeyByZXR1cm4gbV9yZWNvcmRJZGVu
dGlmaWVyOyB9CiAgICAgICAgIHZpcnR1YWwgfkN1cnNvcigpIHsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgbG9hZEN1cnJlbnRSb3coKSA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEN1
cnNvcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBDdXJzb3JPcHRpb25z
JiBjdXJzb3JPcHRpb25zKQorICAgICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQorICAgICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9ucykKKyAgICAgICAg
eworICAgICAgICB9CisgICAgICAgIGV4cGxpY2l0IEN1cnNvcihjb25zdCBJREJCYWNraW5nU3Rv
cmU6OkN1cnNvciogb3RoZXIpOworCiAgICAgICAgIGJvb2wgaXNQYXN0Qm91bmRzKCkgY29uc3Q7
CiAgICAgICAgIGJvb2wgaGF2ZUVudGVyZWRSYW5nZSgpIGNvbnN0OwogCkBAIC0xNDAsNiArMTM0
LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBDdXJzb3JPcHRpb25zIG1fY3Vyc29yT3B0aW9u
czsKICAgICAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gbV9pdGVyYXRvcjsKICAgICAgICAg
UmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OworICAgICAgICBJREJCYWNraW5nU3RvcmU6OlJl
Y29yZElkZW50aWZpZXIgbV9yZWNvcmRJZGVudGlmaWVyOwogICAgIH07CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q3Vyc29yPiBvcGVuT2JqZWN0U3RvcmVLZXlDdXJzb3IoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJLZXlSYW5nZSosIElEQkN1cnNvcjo6RGlyZWN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggNzZmYmEyN2I5ZGViYTk4MmQ1MzI1ZDAzYzg5MDQ3ZGZk
ZmVhZjljOC4uNzQ3MWNhYzQ3ZTdiNTRmYjQ3OWQ4YzUxOTY4MWY3MWJlNjYzMzIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTE1NSwxNiArMTU1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCB3cml0ZUluZGV4S2V5cyhjb25z
dCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIsIElE
QkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQp
IGNvbnN0CisgICAgdm9pZCB3cml0ZUluZGV4S2V5cyhjb25zdCBJREJCYWNraW5nU3RvcmU6OlJl
Y29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSYgYmFja2lu
Z1N0b3JlLCBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIGNvbnN0CiAgICAgewogICAgICAg
ICBpbnQ2NF90IGluZGV4SWQgPSBtX2luZGV4TWV0YWRhdGEuaWQ7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9pbmRleEtleXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghYmFja2luZ1N0b3JlLmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgcmVjb3JkSWRlbnRpZmllcikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmUu
cHV0SW5kZXhEYXRhRm9yUmVjb3JkKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCAqKG1faW5kZXhLZXlzKVtpXS5nZXQoKSwgcmVjb3JkSWRlbnRpZmllcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYmFja2luZ1N0b3Jl
LnB1dEluZGV4RGF0YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgaW5kZXhJZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29yZElkZW50aWZpZXIp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTIzMiw4ICsyMjgsOCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4
S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9k
IGNvdWxkIGJlIGFzeW5jaHJvbm91cywgYnV0IHdlIG5lZWQgdG8gZXZhbHVhdGUgaWYgaXQncyB3
b3J0aCB0aGUgZXh0cmEgY29tcGxleGl0eS4KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpS
ZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyID0gSURCQmFja2luZ1N0b3JlOjpSZWNv
cmRJZGVudGlmaWVyOjpjcmVhdGUoKTsKLSAgICBpZiAoIWJhY2tpbmdTdG9yZSgpLT5rZXlFeGlz
dHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBk
YXRhYmFzZUlkKCksIGlkKCksICpwcmltYXJ5S2V5LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkg
eworICAgIElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciByZWNvcmRJZGVudGlmaWVy
OworICAgIGlmICghYmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgKnBy
aW1hcnlLZXksICZyZWNvcmRJZGVudGlmaWVyKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJv
cnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0OCwxMCArMjQ0LDcgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+
IHBycFByaW1hcnlLZXksIGMKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0
ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEluZGV4V3JpdGVyKiBpbmRleFdyaXRlciA9IGlu
ZGV4V3JpdGVyc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKCFpbmRleFdyaXRlci0+d3JpdGVJbmRl
eEtleXMocmVjb3JkSWRlbnRpZmllci5nZXQoKSwgKmJhY2tpbmdTdG9yZSgpLCB0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgpLCBtX21ldGFkYXRhLmlk
KSkgewotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29y
ZElkZW50aWZpZXIsICpiYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgbV9tZXRhZGF0YS5pZCk7CiAgICAgfQogfQogCkBA
IC0zMDMsOCArMjk2LDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAgIEFTU0VSVChr
ZXkgJiYga2V5LT5pc1ZhbGlkKCkpOwogCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVj
b3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3Jk
SWRlbnRpZmllcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKHB1dE1vZGUgPT0gQWRkT25seSAmJiBvYmpl
Y3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCks
IG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgeworICAg
IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllciByZWNvcmRJZGVudGlmaWVyOworICAg
IGlmIChwdXRNb2RlID09IEFkZE9ubHkgJiYgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5r
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwg
JnJlY29yZElkZW50aWZpZXIpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAi
S2V5IGFscmVhZHkgZXhpc3RzIGluIHRoZSBvYmplY3Qgc3RvcmUuIikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMzE4LDIyICszMTEsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwK
IAogICAgIC8vIEJlZm9yZSB0aGlzIHBvaW50LCBkb24ndCBkbyBhbnkgbXV0YXRpb24uICBBZnRl
ciB0aGlzIHBvaW50LCByb2xsYmFjayB0aGUgdHJhbnNhY3Rpb24gaW4gY2FzZSBvZiBlcnJvci4K
IAotICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5wdXRSZWNvcmQodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlk
KCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCB2YWx1ZS0+dG9XaXJlU3RyaW5nKCksIHJlY29y
ZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBl
cnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5L
Tk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7Ci0gICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dChlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5LCB2
YWx1ZS0+dG9XaXJlU3RyaW5nKCksICZyZWNvcmRJZGVudGlmaWVyKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEluZGV4
V3JpdGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5nZXQoKTsKLSAgICAgICAgaWYg
KCFpbmRleFdyaXRlci0+d3JpdGVJbmRleEtleXMocmVjb3JkSWRlbnRpZmllci5nZXQoKSwgKm9i
amVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5tX21ldGFk
YXRhLmlkKSkgewotCi0gICAgICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3Ig
PSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05f
RVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOwotICAgICAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydChlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaW5k
ZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIsICpvYmplY3RTdG9yZS0+
YmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+bV9tZXRhZGF0YS5pZCk7CiAg
ICAgfQogCiAgICAgaWYgKGF1dG9JbmNyZW1lbnQgJiYgcHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUg
JiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKQpAQCAtMzYxLDIwICszNDMsMTIg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW4KIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwiKTsKLSAgICBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVy
OwogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJz
b3IgPSBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPm9wZW5PYmplY3RTdG9yZUN1cnNvcih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFi
YXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGtleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5F
WFQpOwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKIAogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICByZWNvcmRJZGVudGlmaWVyID0gYmFja2luZ1N0b3JlQ3Vyc29yLT5yZWNvcmRJZGVu
dGlmaWVyKCk7Ci0KLSAgICAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
SW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5iZWdpbigpOyBp
dCAhPSBvYmplY3RTdG9yZS0+bV9pbmRleGVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRl
eERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9i
amVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpdC0+a2V5LCByZWNv
cmRJZGVudGlmaWVyLmdldCgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nl
c3MsIHN1Y2Nlc3MpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBvYmplY3RTdG9yZS0+
YmFja2luZ1N0b3JlKCktPmRlbGV0ZVJlY29yZCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCks
IHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBiYWNr
aW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSk7CiAKICAgICAgICAgfSB3aGlsZSAo
YmFja2luZ1N0b3JlQ3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDAyZDJkNWQ0MjBjZjMzMzkxODUwNTQ2OGQ0NTk1ZGEzM2RhODlhNDQuLjM0NjM2M2FjM2U1NDZh
MDIzMTE2OGZiNjE3MDhjNTFmOWM5ZDNiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC00NCwxOCArNDQsMTcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0KIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKSBPVkVSUklERSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCBpbnQ2NF90IGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1i
ZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBtYXliZVVwZGF0ZUtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hlY2tDdXJy
ZW50KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtYXliZVVw
ZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1iZXIsIGJvb2wgY2hl
Y2tDdXJyZW50KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBjb25zdCBJREJLZXkmLCBSZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50
aWZpZXIpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxJ
REJJbmRleE1ldGFkYXRhPiBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiBWZWN0b3I8SURCSW5kZXhNZXRhZGF0YT4o
KTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNN
dWx0aUVudHJ5KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJ
ZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyByZXR1cm4gUGFzc1JlZlB0cjxJREJLZXk+KCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VpZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNv
bnN0IElEQktleSYgaW5kZXhLZXksIFJlZlB0cjxJREJLZXk+JiBmb3VuZFByaW1hcnlLZXkpIE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175005</attachid>
            <date>2012-11-19 10:38:16 -0800</date>
            <delta_ts>2012-11-19 17:10:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102018-20121119103606.patch</filename>
            <type>text/plain</type>
            <size>29485</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVhMTRjNGZmZTlmNGFj
MWJmNjM4ZDQ1NjYwNGQ3NzkyNzI5ZGZmMi4uM2VhMTI3NThhOWMwZDRhOTE1OTIzYWFmODAzNmFh
NmJkNWEzMjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTExLTEyICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHNp
bXBsaWZ5IFJlY29yZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcu
CisKKyAgICAgICAgTWFrZSBJREJCYWNraW5nU3RvcmUncyBSZWNvcmRJZGVudGlmaWVyIGJlIGEg
c2ltcGxlCisgICAgICAgIGNsYXNzLCBleGlzdGluZyBvbmx5IGFzIGFuIGlubGluZSBvciBzdGFj
ay1iYXNlZCBpbnN0YW5jZS4KKyAgICAgICAgVGhpcyBtYWtlcyBtdWNoIG9mIHRoZSBjb3B5IHNl
bWFudGljcyBtb3JlIGV4cGxpY2l0LCBhbmQKKyAgICAgICAgcmVtb3ZlcyByZWZjb3VudGluZyBm
cm9tIGFuIG9iamVjdCB0aGF0IG9ubHkgZXZlciBoYWQgYSByZWZjb3VudAorICAgICAgICBvZiAx
IG9yIDIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBqdXN0IGEgcmVmYWN0b3IuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJl
bnRSb3cpOgorICAgICAgICAoT2JqZWN0U3RvcmVDdXJzb3JJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5kZXhLZXlDdXJzb3JJbXBsOjpyZWNvcmRJZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkluZGV4Q3Vyc29ySW1wbDo6cmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJC
YWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6OlJlY29yZElkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyOjppc1ZhbGlkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6cmVz
ZXQpOgorICAgICAgICAoUmVjb3JkSWRlbnRpZmllcik6CisgICAgICAgIChJREJCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OnJlY29yZElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1
cnNvcik6CisgICAgICAgIChDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJu
YWwpOgorCiAyMDEyLTExLTE5ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgTW92ZSBlbXB0eSBsb2FkaW5nIHRvIERvY3VtZW50TG9hZGVyLCBzaW1wbGlmeSBG
cmFtZUxvYWRlcjo6aW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg0ZDY3ZmY1
YjhiMGI0OGE2OWIwYTk5MmQwY2Y4NzA0YjRhNDAwYjkuLjY5MGQ4YWYzYmY0MTk1ZjM2YWU5MmZm
YTZjNDJhN2Q4YjA4NGU5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTItMTEtMTIgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEluZGV4ZWREQjogc2ltcGxpZnkgUmVjb3JkSWRlbnRpZmllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMDE4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBVcGRhdGUgSURCRmFrZUJhY2tpbmdT
dG9yZSB0byBtYXRjaCBpdHMgcGFyZW50IGNsYXNzLgorCisgICAgICAgICogdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oOgorCiAyMDEyLTExLTE5ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgV2ViS2l0OjpXZWJSdW50
aW1lRmVhdHVyZXM6OmVuYWJsZVBvaW50ZXJMb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMWVhM2M5NDQ0YTNm
YTk4Mzc5YjljZjUwOWI4MGYzN2ZjYjdlMDdjYS4uOTkwNWQ1YjUzM2QxMzNhZmM5OWQ4MTUyNGJh
YzVmMDBkMDc0NTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIGludDY0
X3QgZ2V0TmV3VmVyc2lvbk51bWJlcihMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGEKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAotYm9vbCBJREJCYWNraW5nU3Rv
cmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlm
aWVyKQordm9pZCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJ
ZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2lu
Z1N0b3JlOjpwdXRSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CkBAIC02NzMs
OSArNjczLDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gZXhpc3RzRW50cnlLZXkgPSBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGtleSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5wdXQoZXhpc3RzRW50
cnlLZXksIGVuY29kZUludCh2ZXJzaW9uKSk7CiAKLSAgICByZWNvcmRJZGVudGlmaWVyLT5zZXRQ
cmltYXJ5S2V5KGVuY29kZUlEQktleShrZXkpKTsKLSAgICByZWNvcmRJZGVudGlmaWVyLT5zZXRW
ZXJzaW9uKHZlcnNpb24pOwotICAgIHJldHVybiB0cnVlOworICAgIHJlY29yZElkZW50aWZpZXIt
PnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsKIH0KIAogdm9pZCBJREJCYWNraW5n
U3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQpAQCAt
Njg4LDE1ICs2ODYsMTUgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24KICAgICBkZWxldGVSYW5n
ZShsZXZlbERCVHJhbnNhY3Rpb24sIHN0YXJ0S2V5LCBzdG9wS2V5KTsKIH0KIAotdm9pZCBJREJC
YWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCit2b2lkIElEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVj
b3JkSWRlbnRpZmllciYgcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBJREJfVFJBQ0UoIklEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZl
bERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJh
bnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvYmpl
Y3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLT5wcmltYXJ5S2V5KCkpOworICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBvYmplY3RTdG9yZURhdGFLZXkgPSBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlL
ZXkoKSk7CiAgICAgbGV2ZWxEQlRyYW5zYWN0aW9uLT5yZW1vdmUob2JqZWN0U3RvcmVEYXRhS2V5
KTsKIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBleGlzdHNFbnRyeUtleSA9IEV4aXN0c0VudHJ5
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgcmVjb3JkSWRlbnRpZmllci0+
cHJpbWFyeUtleSgpKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXhpc3RzRW50cnlLZXkgPSBF
eGlzdHNFbnRyeUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIHJlY29yZElk
ZW50aWZpZXIucHJpbWFyeUtleSgpKTsKICAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnJlbW92ZShl
eGlzdHNFbnRyeUtleSk7CiB9CiAKQEAgLTc0MywxOSArNzQxLDE4IEBAIGludDY0X3QgSURCQmFj
a2luZ1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3RpCiAgICAgcmV0dXJuIGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXI7CiB9CiAKLWJv
b2wgSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IG5ld051bWJlciwgYm9vbCBjaGVj
a0N1cnJlbnQpCit2b2lkIElEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdOdW1i
ZXIsIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxE
QlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5z
YWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7CiAKICAgICBpZiAoY2hlY2tDdXJyZW50KSB7CiAgICAg
ICAgIGludDY0X3QgY3VycmVudE51bWJlciA9IGdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIo
dHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwogICAgICAgICBpZiAobmV3
TnVtYmVyIDw9IGN1cnJlbnROdW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJh
dG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKTsKICAgICBwdXRJbnQobGV2ZWxEQlRyYW5zYWN0aW9uLCBrZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyS2V5LCBuZXdOdW1iZXIpOwotICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIElEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBSZWNvcmRJZGVudGlmaWVyKiBm
b3VuZFJlY29yZElkZW50aWZpZXIpCkBAIC03NzIsOCArNzY5LDcgQEAgYm9vbCBJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnMKICAgICBpZiAoIWRlY29kZVZhckludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCks
IHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3VuZFJlY29yZElkZW50
aWZpZXItPnNldFByaW1hcnlLZXkoZW5jb2RlSURCS2V5KGtleSkpOwotICAgIGZvdW5kUmVjb3Jk
SWRlbnRpZmllci0+c2V0VmVyc2lvbih2ZXJzaW9uKTsKKyAgICBmb3VuZFJlY29yZElkZW50aWZp
ZXItPnJlc2V0KGVuY29kZUlEQktleShrZXkpLCB2ZXJzaW9uKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtODk3LDIxICs4OTMsMjAgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUlu
ZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICBk
ZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIGluZGV4RGF0YVN0YXJ0LCBpbmRleERhdGFF
bmQpOwogfQogCi1ib29sIElEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
IGtleSwgY29uc3QgUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKK3ZvaWQgSURC
QmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBSZWNvcmRJ
ZGVudGlmaWVyJiByZWNvcmRJZGVudGlmaWVyKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2lu
Z1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQo
KSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOwogCiAgICAgTGV2ZWxE
QlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50
aWZpZXItPnByaW1hcnlLZXkoKSk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGluZGV4RGF0YUtl
eSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAK
ICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQocmVj
b3JkSWRlbnRpZmllci0+dmVyc2lvbigpKSk7Ci0gICAgZGF0YS5hcHBlbmQocmVjb3JkSWRlbnRp
Zmllci0+cHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZChlbmNvZGVWYXJJbnQocmVjb3Jk
SWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRhLmFwcGVuZChyZWNvcmRJZGVudGlmaWVy
LnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFL
ZXksIGRhdGEpOwotICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBmaW5kR3JlYXRl
c3RLZXlMZXNzVGhhbk9yRXF1YWwoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29u
c3QgVmVjdG9yPGNoYXI+JiB0YXJnZXQsIFZlY3RvcjxjaGFyPiYgZm91bmRLZXkpCkBAIC05NDIs
MTIgKzkzNyw2IEBAIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QsIGludDY0X3QsIGludDY0X3QsIGNvbnN0
IFJlY29yZElkZW50aWZpZXIqKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IG5lZWRlZCBz
aW5jZSB3ZSBpbnZhbGlkYXRlIGluZGV4IGRhdGEgdmlhIHRoZSB2ZXJzaW9uIG51bWJlciBtZWNo
YW5pc20uCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBib29sIHZlcnNpb25FeGlzdHMo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgdmVyc2lvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBl
bmNvZGVkUHJpbWFyeUtleSkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRXhpc3Rz
RW50cnlLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBlbmNvZGVkUHJpbWFy
eUtleSk7CkBAIC0xMTg4LDEwICsxMTc3LDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCQmFja2lu
Z1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIoKSBP
VkVSUklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKLSAgICB9CiAgICAg
dmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHByaXZhdGU6CkBAIC0xMjA1LDcgKzEx
OTAsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpSZWNvcmRJZGVudGlmaWVyPiBtX2lkZW50aWZpZXI7CiB9OwogCiBib29sIE9iamVjdFN0
b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQpAQCAtMTIzMCw3ICsxMjE0LDcgQEAg
Ym9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogVGhpcyByZS1lbmNvZGVzIHdoYXQgd2FzIGp1c3QgZGVjb2RlZDsgdHJ5
IGFuZCBvcHRpbWl6ZS4KLSAgICBtX2lkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29y
ZElkZW50aWZpZXI6OmNyZWF0ZShlbmNvZGVJREJLZXkoKm1fY3VycmVudEtleSksIHZlcnNpb24p
OworICAgIG1fcmVjb3JkSWRlbnRpZmllci5yZXNldChlbmNvZGVJREJLZXkoKm1fY3VycmVudEtl
eSksIHZlcnNpb24pOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjQ5LDEwICsxMjMzLDYg
QEAgcHVibGljOgogCiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFs
IFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3Jk
SWRlbnRpZmllcigpIE9WRVJSSURFCi0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
OwotICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1cnJlbnRSb3coKTsKIAogcHJpdmF0ZToK
QEAgLTEyNjgsNyArMTI0OCw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU3RyaW5nIG1fY3Vy
cmVudFZhbHVlOwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI+
IG1faWRlbnRpZmllcjsKIH07CiAKIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3Vy
cmVudFJvdygpCkBAIC0xMjkzLDcgKzEyNzIsNyBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3coKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHJlLWVuY29k
ZXMgd2hhdCB3YXMganVzdCBkZWNvZGVkOyB0cnkgYW5kIG9wdGltaXplLgotICAgIG1faWRlbnRp
ZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcjo6Y3JlYXRlKGVuY29kZUlE
QktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CisgICAgbV9yZWNvcmRJZGVudGlmaWVyLnJl
c2V0KGVuY29kZUlEQktleSgqbV9jdXJyZW50S2V5KSwgdmVyc2lvbik7CiAKICAgICBtX2N1cnJl
bnRWYWx1ZSA9IGRlY29kZVN0cmluZyh2YWx1ZVBvc2l0aW9uLCBtX2l0ZXJhdG9yLT52YWx1ZSgp
LmVuZCgpKTsKIApAQCAtMTMxNSw3ICsxMjk0LDcgQEAgcHVibGljOgogICAgIC8vIElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4g
cmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29y
ZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNv
cmRJZGVudGlmaWVyOyB9CiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCk7CiAKIHBy
aXZhdGU6CkBAIC0xMzk0LDcgKzEzNzMsNyBAQCBwdWJsaWM6CiAgICAgLy8gSURCQmFja2luZ1N0
b3JlOjpDdXJzb3IKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29u
c3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBjb25zdCBJREJCYWNraW5n
U3RvcmU6OlJlY29yZElkZW50aWZpZXImIHJlY29yZElkZW50aWZpZXIoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbV9yZWNvcmRJZGVudGlmaWVyOyB9CiAgICAgYm9vbCBs
b2FkQ3VycmVudFJvdygpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAxMzM3MDI2ZjEyZDRmODlkZWRm
N2UyY2EyY2QyZmI5NDJmYmJkNDI0Li41MjA3Y2M4YjhhMmY1NzQwYTBhY2NlNDg0ODQzM2UxZDY0
OGIxYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJC
YWNraW5nU3RvcmUuaApAQCAtNjEsMzkgKzYxLDMzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwogCi0gICAgY2xhc3MgUmVjb3Jk
SWRlbnRpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlY29yZElkZW50aWZpZXI+IHsKKyAgICBj
bGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1h
cnlLZXksIGludDY0X3QgdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlY29yZElkZW50
aWZpZXIocHJpbWFyeUtleSwgdmVyc2lvbikpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlY29yZElkZW50aWZpZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWNvcmRJ
ZGVudGlmaWVyKCkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflJlY29yZElkZW50aWZpZXIoKSB7IH0K
KyAgICAgICAgUmVjb3JkSWRlbnRpZmllcihjb25zdCBWZWN0b3I8Y2hhcj4mIHByaW1hcnlLZXks
IGludDY0X3QgdmVyc2lvbikgOiBtX3ByaW1hcnlLZXkocHJpbWFyeUtleSksIG1fdmVyc2lvbih2
ZXJzaW9uKSB7IEFTU0VSVCghcHJpbWFyeUtleS5pc0VtcHR5KCkpOyB9CisgICAgICAgIFJlY29y
ZElkZW50aWZpZXIoKSA6IG1fcHJpbWFyeUtleSgpLCBtX3ZlcnNpb24oLTEpIHsgfQogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5Lmlz
RW1wdHkoKTsgfQotICAgICAgICBWZWN0b3I8Y2hhcj4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWFyeUtleTsgfQotICAgICAgICB2b2lkIHNldFByaW1hcnlLZXkoY29uc3QgVmVj
dG9yPGNoYXI+JiBwcmltYXJ5S2V5KSB7IG1fcHJpbWFyeUtleSA9IHByaW1hcnlLZXk7IH0KKyAg
ICAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHByaW1hcnlLZXkoKSBjb25zdCB7IHJldHVybiBtX3By
aW1hcnlLZXk7IH0KICAgICAgICAgaW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJzaW9uOyB9Ci0gICAgICAgIHZvaWQgc2V0VmVyc2lvbihpbnQ2NF90IHZlcnNpb24pIHsgbV92
ZXJzaW9uID0gdmVyc2lvbjsgfQorICAgICAgICB2b2lkIHJlc2V0KGNvbnN0IFZlY3RvcjxjaGFy
PiYgcHJpbWFyeUtleSwgaW50NjRfdCB2ZXJzaW9uKSB7IG1fcHJpbWFyeUtleSA9IHByaW1hcnlL
ZXk7IG1fdmVyc2lvbiA9IHZlcnNpb247IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlY29y
ZElkZW50aWZpZXIoY29uc3QgVmVjdG9yPGNoYXI+JiBwcmltYXJ5S2V5LCBpbnQ2NF90IHZlcnNp
b24pIDogbV9wcmltYXJ5S2V5KHByaW1hcnlLZXkpLCBtX3ZlcnNpb24odmVyc2lvbikgeyBBU1NF
UlQoIXByaW1hcnlLZXkuaXNFbXB0eSgpKTsgfQotICAgICAgICBSZWNvcmRJZGVudGlmaWVyKCkg
OiBtX3ByaW1hcnlLZXkoKSwgbV92ZXJzaW9uKC0xKSB7IH0KLQogICAgICAgICBWZWN0b3I8Y2hh
cj4gbV9wcmltYXJ5S2V5OyAvLyBGSVhNRTogTWFrZSBpdCBtb3JlIGNsZWFyIHRoYXQgdGhpcyBp
cyB0aGUgKmVuY29kZWQqIHZlcnNpb24gb2YgdGhlIGtleS4KICAgICAgICAgaW50NjRfdCBtX3Zl
cnNpb247CisgICAgICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihSZWNvcmRJZGVudGlmaWVy
KTsKICAgICB9OwogCiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmVjb3JkKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCS2V5Jik7Ci0gICAgdmlydHVhbCBib29sIHB1dFJlY29yZChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZp
ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRlbGV0ZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFJlY29yZElkZW50aWZp
ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgUmVjb3JkSWRlbnRpZmllciYpOwogICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlHZW5lcmF0
b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7Ci0gICAgdmlydHVhbCBib29sIG1heWJl
VXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
bmV3U3RhdGUsIGJvb2wgY2hlY2tDdXJyZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgbWF5YmVVcGRh
dGVLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBuZXdT
dGF0ZSwgYm9vbCBjaGVja0N1cnJlbnQpOwogICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgUmVjb3JkSWRlbnRpZmll
ciogZm91bmRSZWNvcmRJZGVudGlmaWVyKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPElEQkluZGV4
TWV0YWRhdGE+IGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9v
bCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnkpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJ
bmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7Ci0gICAgdmlydHVhbCBib29s
IHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgSURCS2V5JiwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopOwotICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IFJlY29yZElkZW50aWZpZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0SW5kZXhE
YXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJL
ZXkmLCBjb25zdCBSZWNvcmRJZGVudGlmaWVyJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QktleT4gZ2V0UHJpbWFyeUtleVZpYUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBjb25zdCBJREJLZXkmKTsKICAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5JbmRleChJ
REJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRleEtleSwg
UmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSk7CiAKQEAgLTExMywxMyArMTA3LDYgQEAg
cHVibGljOgogICAgICAgICAgICAgYm9vbCB1bmlxdWU7CiAgICAgICAgIH07CiAKLSAgICAgICAg
Q3Vyc29yKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlv
bnMmIGN1cnNvck9wdGlvbnMpCi0gICAgICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rp
b24pCi0gICAgICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLSAgICAgICAgZXhwbGljaXQgQ3Vyc29yKGNvbnN0IElEQkJhY2tpbmdT
dG9yZTo6Q3Vyc29yKiBvdGhlcik7Ci0KICAgICAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgICAgICBib29sIGNvbnRpbnVlRnVu
Y3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9yU3RhdGUgPSBTZWVrKTsKICAgICAgICAg
Ym9vbCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcpOwpAQCAtMTI4LDExICsxMTUsMTggQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEtleTsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0g
MDsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlY29yZElkZW50aWZpZXI+IHJlY29yZElk
ZW50aWZpZXIoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYg
cmVjb3JkSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVjb3JkSWRlbnRpZmllcjsgfQog
ICAgICAgICB2aXJ0dWFsIH5DdXJzb3IoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvYWRD
dXJyZW50Um93KCkgPSAwOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBDdXJzb3IoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgQ3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0
aW9ucykKKyAgICAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKKyAgICAgICAg
ICAgICwgbV9jdXJzb3JPcHRpb25zKGN1cnNvck9wdGlvbnMpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICBleHBsaWNpdCBDdXJzb3IoY29uc3QgSURCQmFja2luZ1N0b3JlOjpDdXJzb3Iq
IG90aGVyKTsKKwogICAgICAgICBib29sIGlzUGFzdEJvdW5kcygpIGNvbnN0OwogICAgICAgICBi
b29sIGhhdmVFbnRlcmVkUmFuZ2UoKSBjb25zdDsKIApAQCAtMTQwLDYgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY29uc3QgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlvbnM7CiAgICAgICAg
IE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7CiAgICAgICAgIFJlZlB0cjxJREJL
ZXk+IG1fY3VycmVudEtleTsKKyAgICAgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlm
aWVyIG1fcmVjb3JkSWRlbnRpZmllcjsKICAgICB9OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEN1cnNvcj4gb3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwCmluZGV4IDc2ZmJhMjdiOWRlYmE5ODJkNTMyNWQwM2M4OTA0N2RmZGZlYWY5YzguLjc0
NzFjYWM0N2U3YjU0ZmI0NzlkOGM1MTk2ODFmNzFiZTY2MzMyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCkBAIC0xNTUsMTYgKzE1NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGJvb2wgd3JpdGVJbmRleEtleXMoY29uc3QgSURCQmFja2lu
Z1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3Rv
cmUmIGJhY2tpbmdTdG9yZSwgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdAorICAg
IHZvaWQgd3JpdGVJbmRleEtleXMoY29uc3QgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlm
aWVyJiByZWNvcmRJZGVudGlmaWVyLCBJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBjb25zdAogICAgIHsKICAgICAgICAgaW50NjRfdCBp
bmRleElkID0gbV9pbmRleE1ldGFkYXRhLmlkOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1faW5kZXhLZXlzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdT
dG9yZS5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIHJlY29yZElkZW50aWZpZXIpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghYmFja2luZ1N0b3JlLnB1dEluZGV4RGF0
YUZvclJlY29yZCh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJ
ZCwgKihtX2luZGV4S2V5cylbaV0uZ2V0KCksIHJlY29yZElkZW50aWZpZXIpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZS5wdXRJbmRleERh
dGFGb3JSZWNvcmQodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsICoobV9pbmRleEtleXMpW2ldLmdldCgpLCByZWNvcmRJZGVudGlmaWVyKTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMzIsOCArMjI4
LDggQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1Jl
ZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uUHRyKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjb3VsZCBiZSBh
c3luY2hyb25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mgd29ydGggdGhlIGV4
dHJhIGNvbXBsZXhpdHkuCi0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRp
Zmllcj4gcmVjb3JkSWRlbnRpZmllciA9IElEQkJhY2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmll
cjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFiYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5PYmplY3RT
dG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCgp
LCBpZCgpLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAgICBJREJC
YWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmllcjsKKyAgICBpZiAo
IWJhY2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkKCksIGlkKCksICpwcmltYXJ5S2V5LCAm
cmVjb3JkSWRlbnRpZmllcikpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNDgsMTAgKzI0NCw3IEBAIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5
S2V5LCBjCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4V3JpdGVycy5zaXplKCk7
ICsraSkgewogICAgICAgICBJbmRleFdyaXRlciogaW5kZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNb
aV0uZ2V0KCk7Ci0gICAgICAgIGlmICghaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29y
ZElkZW50aWZpZXIuZ2V0KCksICpiYWNraW5nU3RvcmUoKSwgdHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgbV9tZXRhZGF0YS5pZCkpIHsKLSAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGluZGV4V3JpdGVyLT53cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVy
LCAqYmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBkYXRhYmFzZUlkKCksIG1fbWV0YWRhdGEuaWQpOwogICAgIH0KIH0KIApAQCAtMzAzLDggKzI5
Niw4IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKICAgICBBU1NFUlQoa2V5ICYmIGtleS0+
aXNWYWxpZCgpKTsKIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZp
ZXI+IHJlY29yZElkZW50aWZpZXIgPSBJREJCYWNraW5nU3RvcmU6OlJlY29yZElkZW50aWZpZXI6
OmNyZWF0ZSgpOwotICAgIGlmIChwdXRNb2RlID09IEFkZE9ubHkgJiYgb2JqZWN0U3RvcmUtPmJh
Y2tpbmdTdG9yZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9y
ZS0+aWQoKSwgKmtleSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAgICBJREJCYWNraW5n
U3RvcmU6OlJlY29yZElkZW50aWZpZXIgcmVjb3JkSWRlbnRpZmllcjsKKyAgICBpZiAocHV0TW9k
ZSA9PSBBZGRPbmx5ICYmIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5P
YmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0
U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksICZyZWNvcmRJZGVu
dGlmaWVyKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIktleSBhbHJlYWR5
IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTMxOCwyMiArMzExLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKICAgICAvLyBC
ZWZvcmUgdGhpcyBwb2ludCwgZG9uJ3QgZG8gYW55IG11dGF0aW9uLiAgQWZ0ZXIgdGhpcyBwb2lu
dCwgcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGluIGNhc2Ugb2YgZXJyb3IuCiAKLSAgICBpZiAo
IW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RT
dG9yZS0+aWQoKSwgKmtleSwgdmFsdWUtPnRvV2lyZVN0cmluZygpLCByZWNvcmRJZGVudGlmaWVy
LmdldCgpKSkgewotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAi
RXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOwotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoZXJyb3IpOwotICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+
cHV0UmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RT
dG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgdmFsdWUtPnRvV2ly
ZVN0cmluZygpLCAmcmVjb3JkSWRlbnRpZmllcik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluZGV4V3JpdGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbmRleFdyaXRlciogaW5k
ZXhXcml0ZXIgPSBpbmRleFdyaXRlcnNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghaW5kZXhXcml0
ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICpvYmplY3RTdG9yZS0+
YmFja2luZ1N0b3JlKCksIHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+bV9tZXRhZGF0YS5pZCkpIHsK
LQotICAgICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkVycm9y
IHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKLSAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihlcnJvcik7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGluZGV4V3JpdGVyLT53
cml0ZUluZGV4S2V5cyhyZWNvcmRJZGVudGlmaWVyLCAqb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLCB0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUt
PmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPm1fbWV0YWRhdGEuaWQpOwogICAgIH0KIAogICAg
IGlmIChhdXRvSW5jcmVtZW50ICYmIHB1dE1vZGUgIT0gQ3Vyc29yVXBkYXRlICYmIGtleS0+dHlw
ZSgpID09IElEQktleTo6TnVtYmVyVHlwZSkKQEAgLTM2MSwyMCArMzQzLDEyIEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcHJwS2V5UmFuCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsIik7Ci0gICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6UmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcjsKIAogICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gb2JqZWN0
U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IodHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9i
amVjdFN0b3JlLT5pZCgpLCBrZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKICAgICBp
ZiAoYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAKICAgICAgICAgZG8gewotICAgICAgICAgICAgcmVj
b3JkSWRlbnRpZmllciA9IGJhY2tpbmdTdG9yZUN1cnNvci0+cmVjb3JkSWRlbnRpZmllcigpOwot
Ci0gICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkluZGV4TWFwOjpp
dGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0
U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgICAgIGJvb2wgc3Vj
Y2VzcyA9IG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVj
b3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+
ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPmtleSwgcmVjb3JkSWRlbnRpZmll
ci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNz
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLT5kZWxldGVSZWNvcmQodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCks
IG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCByZWNvcmRJZGVu
dGlmaWVyLmdldCgpKTsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+
ZGVsZXRlUmVjb3JkKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmpl
Y3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgYmFja2luZ1N0b3JlQ3Vy
c29yLT5yZWNvcmRJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIH0gd2hpbGUgKGJhY2tpbmdTdG9y
ZUN1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCAwMmQyZDVkNDIw
Y2YzMzM5MTg1MDU0NjhkNDU5NWRhMzNkYTg5YTQ0Li4zNDYzNjNhYzNlNTQ2YTAyMzExNjhmYjYx
NzA4YzUxZjljOWQzYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtNDQsMTggKzQ0LDE3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JikgT1ZFUlJJREUgeyByZXR1cm4gU3RyaW5n
KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVS
ZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgaW50NjRfdCBnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURF
IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVudCkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWF5YmVVcGRhdGVLZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgbmV3TnVtYmVyLCBib29sIGNoZWNrQ3VycmVudCkg
T1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoVHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5JiwgUmVjb3JkSWRlbnRpZmllciogZm91bmRSZWNvcmRJZGVudGlmaWVyKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBWZWN0b3I8SURCSW5kZXhNZXRh
ZGF0YT4gZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgT1ZFUlJJREUgeyByZXR1cm4gVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+KCk7IH0KICAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBib29sIHB1dEluZGV4
RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFJlY29y
ZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBSZWNvcmRJ
ZGVudGlmaWVyKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29u
c3QgUmVjb3JkSWRlbnRpZmllciYpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJLZXk+IGdldFByaW1hcnlLZXlWaWFJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYpIE9WRVJSSURFIHsgcmV0dXJuIFBhc3NSZWZQdHI8SURCS2V5PigpOyB9CiAgICAgdmly
dHVhbCBib29sIGtleUV4aXN0c0luSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
aWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkm
IGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmltYXJ5S2V5KSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>